diff options
author | imp <imp@FreeBSD.org> | 2000-01-06 07:30:28 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2000-01-06 07:30:28 +0000 |
commit | a51b4e37806dbeed7c5848f9175b722c1499a113 (patch) | |
tree | 9b16ce22805c1e7d25dc56eea9ad1adfdc14c3b3 /sys/dev/pccard | |
parent | b1cc75416776cc197302c87684a5a10f2a975a9b (diff) | |
download | FreeBSD-src-a51b4e37806dbeed7c5848f9175b722c1499a113.zip FreeBSD-src-a51b4e37806dbeed7c5848f9175b722c1499a113.tar.gz |
Checkpoint of today's changes. We now get to the point where the pccard
layer is trying to access the now unexistant chip functions.
o Added DEVPRINTF which is like DPRINTF only calls device_printf.
o Made it possible to define PCICDEBUG
o Remove ph_parent and use the softc pointer sc instead in pcic_handle.
o Remove all references to dv_xname
o Add some debug messages.
o enable MI attach/detach calling for pccard.
o convert pcic_chip_socket_{en,dis}able to pcic_{dis,en}able_socket
and connect them to the power_{enable,disbale}_socket.
o Remove pccard pointer from pcic_softc.
o GC some unused pccard functions.
o Convert pccard_chip_socket* to POWER_ENABLE_SOCKET
o kill pccard_attach_args.
o power_if.m updates. More to come.
Diffstat (limited to 'sys/dev/pccard')
-rw-r--r-- | sys/dev/pccard/pccard.c | 133 | ||||
-rw-r--r-- | sys/dev/pccard/pccardchip.h | 2 | ||||
-rw-r--r-- | sys/dev/pccard/pccardvar.h | 12 | ||||
-rw-r--r-- | sys/dev/pccard/power_if.m | 13 |
4 files changed, 68 insertions, 92 deletions
diff --git a/sys/dev/pccard/pccard.c b/sys/dev/pccard/pccard.c index 927941d..3aa82c6 100644 --- a/sys/dev/pccard/pccard.c +++ b/sys/dev/pccard/pccard.c @@ -47,15 +47,21 @@ #include <dev/pccard/pccardchip.h> #include <dev/pccard/pccardvar.h> +#include "power_if.h" + +#define PCCARDDEBUG + #ifdef PCCARDDEBUG -int pccard_debug = 0; +int pccard_debug = 1; #define DPRINTF(arg) if (pccard_debug) printf arg +#define DEVPRINTF(arg) if (pccard_debug) device_printf arg int pccardintr_debug = 0; /* this is done this way to avoid doing lots of conditionals at interrupt level. */ #define PCCARD_CARD_INTR (pccardintr_debug?pccard_card_intrdebug:pccard_card_intr) #else #define DPRINTF(arg) +#define DEVPRINTF(arg) #define PCCARD_CARD_INTR (pccard_card_intr) #endif @@ -67,11 +73,6 @@ int pccard_verbose = 0; int pccard_print(void *, const char *); -static __inline void pccard_socket_enable(pccard_chipset_tag_t, - pccard_chipset_handle_t *); -static __inline void pccard_socket_disable(pccard_chipset_tag_t, - pccard_chipset_handle_t *); - int pccard_card_intr(void *); #ifdef PCCARDDEBUG int pccard_card_intrdebug(void *); @@ -107,20 +108,24 @@ pccard_card_attach(device_t dev) struct pccard_softc *sc = (struct pccard_softc *) device_get_softc(dev); struct pccard_function *pf; - struct pccard_attach_args paa; int attached; + DEVPRINTF((dev, "pccard_card_attach\n")); /* * this is here so that when socket_enable calls gettype, trt happens */ STAILQ_INIT(&sc->card.pf_head); - pccard_chip_socket_enable(sc->pct, sc->pch); + DEVPRINTF((dev, "chip_socket_enable\n")); + POWER_ENABLE_SOCKET(device_get_parent(dev), dev); + DEVPRINTF((dev, "read_cis\n")); pccard_read_cis(sc); - pccard_chip_socket_disable(sc->pct, sc->pch); + DEVPRINTF((dev, "chip_socket_disable\n")); + POWER_DISABLE_SOCKET(device_get_parent(dev), dev); + DEVPRINTF((dev, "check_cis_quirks\n")); pccard_check_cis_quirks(dev); /* @@ -138,15 +143,16 @@ pccard_card_attach(device_t dev) attached = 0; + DEVPRINTF((dev, "functions scanning\n")); STAILQ_FOREACH(pf, &sc->card.pf_head, pf_list) { if (STAILQ_EMPTY(&pf->cfe_head)) continue; #ifdef DIAGNOSTIC if (pf->child != NULL) { - printf("%s: %s still attached to function %d!\n", - sc->dev.dv_xname, pf->child->dv_xname, - pf->number); + device_printf(sc->dev, + "%s still attached to function %d!\n", + device_get_name(pf->child), pf->number); panic("pccard_card_attach"); } #endif @@ -161,19 +167,13 @@ pccard_card_attach(device_t dev) if (STAILQ_EMPTY(&pf->cfe_head)) continue; - paa.manufacturer = sc->card.manufacturer; - paa.product = sc->card.product; - paa.card = &sc->card; - paa.pf = pf; - #if XXX if (attach_child()) { attached++; - DPRINTF(("%s: function %d CCR at %d " + DEVPRINTF((sc->dev, "function %d CCR at %d " "offset %lx: %x %x %x %x, %x %x %x %x, %x\n", - sc->dev.dv_xname, pf->number, - pf->pf_ccr_window, pf->pf_ccr_offset, + pf->number, pf->pf_ccr_window, pf->pf_ccr_offset, pccard_ccr_read(pf, 0x00), pccard_ccr_read(pf, 0x02), pccard_ccr_read(pf, 0x04), pccard_ccr_read(pf, 0x06), pccard_ccr_read(pf, 0x0A), @@ -205,13 +205,13 @@ pccard_card_detach(device_t dev, int flags) continue; if (pf->child == NULL) continue; - DPRINTF(("%s: detaching %s (function %d)\n", - sc->dev.dv_xname, pf->child->dv_xname, pf->number)); + DEVPRINTF((sc->dev, "detaching %s (function %d)\n", + device_get_name(pf->child), pf->number)); #if XXX if ((error = config_detach(pf->child, flags)) != 0) { - printf("%s: error %d detaching %s (function %d)\n", - sc->dev.dv_xname, error, pf->child->dv_xname, - pf->number); + device_printf(sc->dev, + "error %d detaching %s (function %d)\n", + error, device_get_name(pf->child), pf->number); } else pf->child = NULL; #endif @@ -235,8 +235,8 @@ pccard_card_deactivate(device_t dev) continue; if (pf->child == NULL) continue; - DPRINTF(("%s: deactivating %s (function %d)\n", - sc->dev.dv_xname, pf->child->dv_xname, pf->number)); + DEVPRINTF((sc->dev, "deactivating %s (function %d)\n", + device_get_name(pf->child), pf->number)); #if XXX config_deactivate(pf->child); #endif @@ -280,20 +280,6 @@ pccard_function_init(pf, cfe) pf->cfe = cfe; } -static __inline void pccard_socket_enable(pct, pch) - pccard_chipset_tag_t pct; - pccard_chipset_handle_t *pch; -{ - pccard_chip_socket_enable(pct, pch); -} - -static __inline void pccard_socket_disable(pct, pch) - pccard_chipset_tag_t pct; - pccard_chipset_handle_t *pch; -{ - pccard_chip_socket_disable(pct, pch); -} - /* Enable a PCCARD function */ int pccard_function_enable(pf) @@ -310,9 +296,10 @@ pccard_function_enable(pf) * necessary. */ if (pf->sc->sc_enabled_count++ == 0) - pccard_chip_socket_enable(pf->sc->pct, pf->sc->pch); - DPRINTF(("%s: ++enabled_count = %d\n", pf->sc->dev.dv_xname, - pf->sc->sc_enabled_count)); + POWER_ENABLE_SOCKET(device_get_parent(pf->sc->dev), + pf->sc->dev); + DEVPRINTF((pf->sc->dev, "++enabled_count = %d\n", + pf->sc->sc_enabled_count)); if (pf->pf_flags & PFF_ENABLED) { /* @@ -403,21 +390,20 @@ pccard_function_enable(pf) #ifdef PCCARDDEBUG if (pccard_debug) { STAILQ_FOREACH(tmp, &pf->sc->card.pf_head, pf_list) { - printf("%s: function %d CCR at %d offset %lx: " - "%x %x %x %x, %x %x %x %x, %x\n", - tmp->sc->dev.dv_xname, tmp->number, - tmp->pf_ccr_window, tmp->pf_ccr_offset, - pccard_ccr_read(tmp, 0x00), - pccard_ccr_read(tmp, 0x02), - pccard_ccr_read(tmp, 0x04), - pccard_ccr_read(tmp, 0x06), - - pccard_ccr_read(tmp, 0x0A), - pccard_ccr_read(tmp, 0x0C), - pccard_ccr_read(tmp, 0x0E), - pccard_ccr_read(tmp, 0x10), - - pccard_ccr_read(tmp, 0x12)); + device_printf(tmp->sc->dev, + "function %d CCR at %d offset %x: " + "%x %x %x %x, %x %x %x %x, %x\n", + tmp->number, tmp->pf_ccr_window, + tmp->pf_ccr_offset, + pccard_ccr_read(tmp, 0x00), + pccard_ccr_read(tmp, 0x02), + pccard_ccr_read(tmp, 0x04), + pccard_ccr_read(tmp, 0x06), + pccard_ccr_read(tmp, 0x0A), + pccard_ccr_read(tmp, 0x0C), + pccard_ccr_read(tmp, 0x0E), + pccard_ccr_read(tmp, 0x10), + pccard_ccr_read(tmp, 0x12)); } } #endif @@ -431,8 +417,9 @@ pccard_function_enable(pf) * necessary. */ if (--pf->sc->sc_enabled_count == 0) - pccard_chip_socket_disable(pf->sc->pct, pf->sc->pch); - DPRINTF(("%s: --enabled_count = %d\n", pf->sc->dev.dv_xname, + POWER_DISABLE_SOCKET(device_get_parent(pf->sc->dev), + pf->sc->dev); + DEVPRINTF((pf->sc->dev, "--enabled_count = %d\n", pf->sc->sc_enabled_count)); return (1); @@ -481,9 +468,10 @@ pccard_function_disable(pf) * necessary. */ if (--pf->sc->sc_enabled_count == 0) - pccard_chip_socket_disable(pf->sc->pct, pf->sc->pch); - DPRINTF(("%s: --enabled_count = %d\n", pf->sc->dev.dv_xname, - pf->sc->sc_enabled_count)); + POWER_DISABLE_SOCKET(device_get_parent(pf->sc->dev), + pf->sc->dev); + DEVPRINTF((pf->sc->dev, "--enabled_count = %d\n", + pf->sc->sc_enabled_count)); } int @@ -582,9 +570,9 @@ pccard_intr_establish(pf, ipl, ih_fct, ih_arg) STAILQ_FOREACH(pf2, &pf->sc->card.pf_head, pf_list) { if (pf2->ih_fct) { - DPRINTF(("%s: function %d has ih_fct %p\n", - pf->sc->dev.dv_xname, pf2->number, - pf2->ih_fct)); + DEVPRINTF((pf2->sc->dev, + "function %d has ih_fct %p\n", + pf2->number, pf2->ih_fct)); if (ihcnt == 0) { hiipl = pf2->ih_ipl; @@ -806,11 +794,12 @@ pccard_card_intrdebug(arg) ret = 0; STAILQ_FOREACH(pf, &sc->card.pf_head, pf_list) { - printf("%s: intr flags=%x fct=%d cor=%02x csr=%02x pin=%02x", - sc->dev.dv_xname, pf->pf_flags, pf->number, - pccard_ccr_read(pf, PCCARD_CCR_OPTION), - pccard_ccr_read(pf, PCCARD_CCR_STATUS), - pccard_ccr_read(pf, PCCARD_CCR_PIN)); + device_printf(sc->dev, + "intr flags=%x fct=%d cor=%02x csr=%02x pin=%02x", + pf->pf_flags, pf->number, + pccard_ccr_read(pf, PCCARD_CCR_OPTION), + pccard_ccr_read(pf, PCCARD_CCR_STATUS), + pccard_ccr_read(pf, PCCARD_CCR_PIN)); if (pf->ih_fct != NULL && (pf->ccr_mask & (1 << (PCCARD_CCR_STATUS / 2)))) { reg = pccard_ccr_read(pf, PCCARD_CCR_STATUS); diff --git a/sys/dev/pccard/pccardchip.h b/sys/dev/pccard/pccardchip.h index 638526a..ca67e68 100644 --- a/sys/dev/pccard/pccardchip.h +++ b/sys/dev/pccard/pccardchip.h @@ -126,11 +126,13 @@ struct pccard_chip_functions { #define pccard_chip_intr_disestablish(tag, handle, ih) \ ((*(tag)->intr_disestablish)((handle), (ih))) +#if 0 /* Socket functions. */ #define pccard_chip_socket_enable(tag, handle) \ ((*(tag)->socket_enable)((handle))) #define pccard_chip_socket_disable(tag, handle) \ ((*(tag)->socket_disable)((handle))) +#endif /* 0 */ struct pccardbus_attach_args { char *paa_busname; /* Bus name */ diff --git a/sys/dev/pccard/pccardvar.h b/sys/dev/pccard/pccardvar.h index e6ad7d3..b454296 100644 --- a/sys/dev/pccard/pccardvar.h +++ b/sys/dev/pccard/pccardvar.h @@ -172,11 +172,12 @@ struct pccard_softc { pccard_chipset_tag_t pct; pccard_chipset_handle_t pch; + device_t dev; + /* this stuff is for the card */ struct pccard_card card; void *ih; - int sc_enabled_count; /* how many functions are - enabled */ + int sc_enabled_count; /* num functions enabled */ /* * These are passed down from the PCCARD chip, and exist only @@ -198,13 +199,6 @@ struct pccard_cis_quirk { struct pccard_config_entry *cfe; }; -struct pccard_attach_args { - int32_t manufacturer; - int32_t product; - struct pccard_card *card; - struct pccard_function *pf; -}; - struct pccard_tuple { unsigned int code; unsigned int length; diff --git a/sys/dev/pccard/power_if.m b/sys/dev/pccard/power_if.m index b77b827..8eb5fcf 100644 --- a/sys/dev/pccard/power_if.m +++ b/sys/dev/pccard/power_if.m @@ -33,21 +33,12 @@ INTERFACE power; # generic enough to be used for other systems in addition to the pccard # <-> pcic interface that it was originally written for. # -METHOD int set_slot { +METHOD int enable_socket { device_t dev; device_t child; - int slot; - int vpp; - int vcc; }; -# -# Gets the current power requirements of the card. -# -METHOD int get_slot { +METHOD int disable_socket { device_t dev; device_t child; - int slot; - int *vpp; - int *vcc; }; |