summaryrefslogtreecommitdiffstats
path: root/sys/dev/pccard
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2000-01-06 07:30:28 +0000
committerimp <imp@FreeBSD.org>2000-01-06 07:30:28 +0000
commita51b4e37806dbeed7c5848f9175b722c1499a113 (patch)
tree9b16ce22805c1e7d25dc56eea9ad1adfdc14c3b3 /sys/dev/pccard
parentb1cc75416776cc197302c87684a5a10f2a975a9b (diff)
downloadFreeBSD-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.c133
-rw-r--r--sys/dev/pccard/pccardchip.h2
-rw-r--r--sys/dev/pccard/pccardvar.h12
-rw-r--r--sys/dev/pccard/power_if.m13
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;
};
OpenPOWER on IntegriCloud