pccard.c (188179) | pccard.c (188212) |
---|---|
1/* $NetBSD: pcmcia.c,v 1.23 2000/07/28 19:17:02 drochner Exp $ */ 2 3/*- 4 * Copyright (c) 1997 Marc Horowitz. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 16 unchanged lines hidden (view full) --- 25 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32#include <sys/cdefs.h> | 1/* $NetBSD: pcmcia.c,v 1.23 2000/07/28 19:17:02 drochner Exp $ */ 2 3/*- 4 * Copyright (c) 1997 Marc Horowitz. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 16 unchanged lines hidden (view full) --- 25 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 29 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32#include <sys/cdefs.h> |
33__FBSDID("$FreeBSD: head/sys/dev/pccard/pccard.c 188179 2009-02-05 19:38:31Z imp $"); | 33__FBSDID("$FreeBSD: head/sys/dev/pccard/pccard.c 188212 2009-02-05 23:51:11Z wkoszek $"); |
34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/malloc.h> 38#include <sys/module.h> 39#include <sys/kernel.h> 40#include <sys/queue.h> 41#include <sys/sysctl.h> --- 126 unchanged lines hidden (view full) --- 168 device_set_desc_copy(dev, str); 169 free(str, M_DEVBUF); 170 } else { 171 if (pccard_get_vendor(dev, &vendor)) 172 return (0); 173 if (pccard_get_product(dev, &prod)) 174 return (0); 175 str = malloc(100, M_DEVBUF, M_WAITOK); | 34 35#include <sys/param.h> 36#include <sys/systm.h> 37#include <sys/malloc.h> 38#include <sys/module.h> 39#include <sys/kernel.h> 40#include <sys/queue.h> 41#include <sys/sysctl.h> --- 126 unchanged lines hidden (view full) --- 168 device_set_desc_copy(dev, str); 169 free(str, M_DEVBUF); 170 } else { 171 if (pccard_get_vendor(dev, &vendor)) 172 return (0); 173 if (pccard_get_product(dev, &prod)) 174 return (0); 175 str = malloc(100, M_DEVBUF, M_WAITOK); |
176 snprintf(str, 100, "vendor=0x%x product=0x%x", vendor, prod); | 176 snprintf(str, 100, "vendor=%#x product=%#x", vendor, prod); |
177 device_set_desc_copy(dev, str); 178 free(str, M_DEVBUF); 179 } 180 return (0); 181} 182 183static int 184pccard_attach_card(device_t dev) --- 107 unchanged lines hidden (view full) --- 292 if (error != 0) 293 goto out; 294 pccard_function_init(pf, -1); 295 if (sc->sc_enabled_count == 0) 296 POWER_ENABLE_SOCKET(device_get_parent(dev), dev); 297 if (pccard_function_enable(pf) == 0 && 298 pccard_set_default_descr(child) == 0 && 299 device_attach(child) == 0) { | 177 device_set_desc_copy(dev, str); 178 free(str, M_DEVBUF); 179 } 180 return (0); 181} 182 183static int 184pccard_attach_card(device_t dev) --- 107 unchanged lines hidden (view full) --- 292 if (error != 0) 293 goto out; 294 pccard_function_init(pf, -1); 295 if (sc->sc_enabled_count == 0) 296 POWER_ENABLE_SOCKET(device_get_parent(dev), dev); 297 if (pccard_function_enable(pf) == 0 && 298 pccard_set_default_descr(child) == 0 && 299 device_attach(child) == 0) { |
300 DEVPRINTF((sc->dev, "function %d CCR at %d offset %x mask %x: " 301 "%x %x %x %x, %x %x %x %x, %x\n", | 300 DEVPRINTF((sc->dev, "function %d CCR at %d offset %#x " 301 "mask %#x: %#x %#x %#x %#x, %#x %#x %#x %#x, %#x\n", |
302 pf->number, pf->pf_ccr_window, pf->pf_ccr_offset, 303 pf->ccr_mask, pccard_ccr_read(pf, 0x00), 304 pccard_ccr_read(pf, 0x02), pccard_ccr_read(pf, 0x04), 305 pccard_ccr_read(pf, 0x06), pccard_ccr_read(pf, 0x0A), 306 pccard_ccr_read(pf, 0x0C), pccard_ccr_read(pf, 0x0E), 307 pccard_ccr_read(pf, 0x10), pccard_ccr_read(pf, 0x12))); 308 return (0); 309 } --- 191 unchanged lines hidden (view full) --- 501 continue; 502 spaces = 0; 503 for (i = 0; i < cfe->num_iospace; i++) { 504 start = cfe->iospace[i].start; 505 if (start) 506 end = start + cfe->iospace[i].length - 1; 507 else 508 end = ~0UL; | 302 pf->number, pf->pf_ccr_window, pf->pf_ccr_offset, 303 pf->ccr_mask, pccard_ccr_read(pf, 0x00), 304 pccard_ccr_read(pf, 0x02), pccard_ccr_read(pf, 0x04), 305 pccard_ccr_read(pf, 0x06), pccard_ccr_read(pf, 0x0A), 306 pccard_ccr_read(pf, 0x0C), pccard_ccr_read(pf, 0x0E), 307 pccard_ccr_read(pf, 0x10), pccard_ccr_read(pf, 0x12))); 308 return (0); 309 } --- 191 unchanged lines hidden (view full) --- 501 continue; 502 spaces = 0; 503 for (i = 0; i < cfe->num_iospace; i++) { 504 start = cfe->iospace[i].start; 505 if (start) 506 end = start + cfe->iospace[i].length - 1; 507 else 508 end = ~0UL; |
509 DEVPRINTF((bus, "I/O rid %d start %lx end %lx\n", | 509 DEVPRINTF((bus, "I/O rid %d start %#lx end %#lx\n", |
510 i, start, end)); 511 rid = i; 512 len = cfe->iospace[i].length; 513 r = bus_alloc_resource(bus, SYS_RES_IOPORT, &rid, 514 start, end, len, rman_make_alignment_flags(len)); 515 if (r == NULL) 516 goto not_this_one; 517 rle = resource_list_add(rl, SYS_RES_IOPORT, --- 5 unchanged lines hidden (view full) --- 523 spaces++; 524 } 525 for (i = 0; i < cfe->num_memspace; i++) { 526 start = cfe->memspace[i].hostaddr; 527 if (start) 528 end = start + cfe->memspace[i].length - 1; 529 else 530 end = ~0UL; | 510 i, start, end)); 511 rid = i; 512 len = cfe->iospace[i].length; 513 r = bus_alloc_resource(bus, SYS_RES_IOPORT, &rid, 514 start, end, len, rman_make_alignment_flags(len)); 515 if (r == NULL) 516 goto not_this_one; 517 rle = resource_list_add(rl, SYS_RES_IOPORT, --- 5 unchanged lines hidden (view full) --- 523 spaces++; 524 } 525 for (i = 0; i < cfe->num_memspace; i++) { 526 start = cfe->memspace[i].hostaddr; 527 if (start) 528 end = start + cfe->memspace[i].length - 1; 529 else 530 end = ~0UL; |
531 DEVPRINTF((bus, "Memory rid %d start %lx end %lx\n", | 531 DEVPRINTF((bus, "Memory rid %d start %#lx end %#lx\n", |
532 i, start, end)); 533 rid = i; 534 len = cfe->memspace[i].length; 535 r = bus_alloc_resource(bus, SYS_RES_MEMORY, &rid, 536 start, end, len, rman_make_alignment_flags(len)); 537 if (r == NULL) 538 goto not_this_one; 539 rle = resource_list_add(rl, SYS_RES_MEMORY, --- 49 unchanged lines hidden (view full) --- 589 } 590 591 STAILQ_FOREACH(rle, &devi->resources, link) { 592 if (rle->res) { 593 if (rman_get_device(rle->res) != pf->sc->dev) 594 device_printf(pf->sc->dev, 595 "function_free: Resource still owned by " 596 "child, oops. " | 532 i, start, end)); 533 rid = i; 534 len = cfe->memspace[i].length; 535 r = bus_alloc_resource(bus, SYS_RES_MEMORY, &rid, 536 start, end, len, rman_make_alignment_flags(len)); 537 if (r == NULL) 538 goto not_this_one; 539 rle = resource_list_add(rl, SYS_RES_MEMORY, --- 49 unchanged lines hidden (view full) --- 589 } 590 591 STAILQ_FOREACH(rle, &devi->resources, link) { 592 if (rle->res) { 593 if (rman_get_device(rle->res) != pf->sc->dev) 594 device_printf(pf->sc->dev, 595 "function_free: Resource still owned by " 596 "child, oops. " |
597 "(type=%d, rid=%d, addr=%lx)\n", | 597 "(type=%d, rid=%d, addr=%#lx)\n", |
598 rle->type, rle->rid, 599 rman_get_start(rle->res)); 600 BUS_RELEASE_RESOURCE(device_get_parent(pf->sc->dev), 601 pf->sc->dev, rle->type, rle->rid, rle->res); 602 rle->res = NULL; 603 } 604 } 605 resource_list_free(&devi->resources); --- 78 unchanged lines hidden (view full) --- 684 } 685 } 686 if (tmp == NULL) { 687 pf->ccr_rid = 0; 688 pf->ccr_res = bus_alloc_resource(dev, SYS_RES_MEMORY, 689 &pf->ccr_rid, 0, ~0, PCCARD_MEM_PAGE_SIZE, RF_ACTIVE); 690 if (!pf->ccr_res) 691 goto bad; | 598 rle->type, rle->rid, 599 rman_get_start(rle->res)); 600 BUS_RELEASE_RESOURCE(device_get_parent(pf->sc->dev), 601 pf->sc->dev, rle->type, rle->rid, rle->res); 602 rle->res = NULL; 603 } 604 } 605 resource_list_free(&devi->resources); --- 78 unchanged lines hidden (view full) --- 684 } 685 } 686 if (tmp == NULL) { 687 pf->ccr_rid = 0; 688 pf->ccr_res = bus_alloc_resource(dev, SYS_RES_MEMORY, 689 &pf->ccr_rid, 0, ~0, PCCARD_MEM_PAGE_SIZE, RF_ACTIVE); 690 if (!pf->ccr_res) 691 goto bad; |
692 DEVPRINTF((dev, "ccr_res == %lx-%lx, base=%x\n", | 692 DEVPRINTF((dev, "ccr_res == %#lx-%#lx, base=%#x\n", |
693 rman_get_start(pf->ccr_res), rman_get_end(pf->ccr_res), 694 pf->ccr_base)); 695 CARD_SET_RES_FLAGS(device_get_parent(dev), dev, SYS_RES_MEMORY, 696 pf->ccr_rid, PCCARD_A_MEM_ATTR); 697 CARD_SET_MEMORY_OFFSET(device_get_parent(dev), dev, 698 pf->ccr_rid, pf->ccr_base, &pf->pf_ccr_offset); 699 pf->pf_ccrt = rman_get_bustag(pf->ccr_res); 700 pf->pf_ccrh = rman_get_bushandle(pf->ccr_res); --- 20 unchanged lines hidden (view full) --- 721 722 if (pccard_mfc(pf->sc)) 723 pccard_mfc_adjust_iobase(pf, 0, 0, 0); 724 725#ifdef PCCARDDEBUG 726 if (pccard_debug) { 727 STAILQ_FOREACH(tmp, &pf->sc->card.pf_head, pf_list) { 728 device_printf(tmp->sc->dev, | 693 rman_get_start(pf->ccr_res), rman_get_end(pf->ccr_res), 694 pf->ccr_base)); 695 CARD_SET_RES_FLAGS(device_get_parent(dev), dev, SYS_RES_MEMORY, 696 pf->ccr_rid, PCCARD_A_MEM_ATTR); 697 CARD_SET_MEMORY_OFFSET(device_get_parent(dev), dev, 698 pf->ccr_rid, pf->ccr_base, &pf->pf_ccr_offset); 699 pf->pf_ccrt = rman_get_bustag(pf->ccr_res); 700 pf->pf_ccrh = rman_get_bushandle(pf->ccr_res); --- 20 unchanged lines hidden (view full) --- 721 722 if (pccard_mfc(pf->sc)) 723 pccard_mfc_adjust_iobase(pf, 0, 0, 0); 724 725#ifdef PCCARDDEBUG 726 if (pccard_debug) { 727 STAILQ_FOREACH(tmp, &pf->sc->card.pf_head, pf_list) { 728 device_printf(tmp->sc->dev, |
729 "function %d CCR at %d offset %x: " 730 "%x %x %x %x, %x %x %x %x, %x\n", | 729 "function %d CCR at %d offset %#x: " 730 "%#x %#x %#x %#x, %#x %#x %#x %#x, %#x\n", |
731 tmp->number, tmp->pf_ccr_window, 732 tmp->pf_ccr_offset, 733 pccard_ccr_read(tmp, 0x00), 734 pccard_ccr_read(tmp, 0x02), 735 pccard_ccr_read(tmp, 0x04), 736 pccard_ccr_read(tmp, 0x06), 737 pccard_ccr_read(tmp, 0x0A), 738 pccard_ccr_read(tmp, 0x0C), --- 441 unchanged lines hidden (view full) --- 1180 type, rid, r); 1181 1182 dinfo = device_get_ivars(child); 1183 1184 rle = resource_list_find(&dinfo->resources, type, rid); 1185 1186 if (!rle) { 1187 device_printf(dev, "Allocated resource not found, " | 731 tmp->number, tmp->pf_ccr_window, 732 tmp->pf_ccr_offset, 733 pccard_ccr_read(tmp, 0x00), 734 pccard_ccr_read(tmp, 0x02), 735 pccard_ccr_read(tmp, 0x04), 736 pccard_ccr_read(tmp, 0x06), 737 pccard_ccr_read(tmp, 0x0A), 738 pccard_ccr_read(tmp, 0x0C), --- 441 unchanged lines hidden (view full) --- 1180 type, rid, r); 1181 1182 dinfo = device_get_ivars(child); 1183 1184 rle = resource_list_find(&dinfo->resources, type, rid); 1185 1186 if (!rle) { 1187 device_printf(dev, "Allocated resource not found, " |
1188 "%d %x %lx %lx\n", | 1188 "%d %#x %#lx %#lx\n", |
1189 type, rid, rman_get_start(r), rman_get_size(r)); 1190 return ENOENT; 1191 } 1192 if (!rle->res) { 1193 device_printf(dev, "Allocated resource not recorded\n"); 1194 return ENOENT; 1195 } 1196 /* --- 285 unchanged lines hidden --- | 1189 type, rid, rman_get_start(r), rman_get_size(r)); 1190 return ENOENT; 1191 } 1192 if (!rle->res) { 1193 device_printf(dev, "Allocated resource not recorded\n"); 1194 return ENOENT; 1195 } 1196 /* --- 285 unchanged lines hidden --- |