Deleted Added
full compact
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 ---