aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/pccbb
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2015-05-05 04:13:48 +0000
committerWarner Losh <imp@FreeBSD.org>2015-05-05 04:13:48 +0000
commit55d793dc6e723532a8d7d3d9e21c86bf17a5202c (patch)
treef9f1d28c7cdbd40bae048f4b6eca703b36cade1e /sys/dev/pccbb
parent169ff110e892307f7549ef4693d6bb34ea15845b (diff)
Notes
Diffstat (limited to 'sys/dev/pccbb')
-rw-r--r--sys/dev/pccbb/pccbb_pci.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/dev/pccbb/pccbb_pci.c b/sys/dev/pccbb/pccbb_pci.c
index 7dca418249fb..cf9b17f93744 100644
--- a/sys/dev/pccbb/pccbb_pci.c
+++ b/sys/dev/pccbb/pccbb_pci.c
@@ -502,10 +502,19 @@ cbb_chipinit(struct cbb_softc *sc)
* properly initialized.
*
* The TI125X parts have a different register.
+ *
+ * Note: Only the lower two nibbles matter. When set
+ * to 0, the MFUNC{0,1} pins are GPIO, which isn't
+ * going to work out too well because we specifically
+ * program these parts to parallel interrupt signalling
+ * elsewhere. We preserve the upper bits of this
+ * register since changing them have subtle side effects
+ * for different variants of the card and are
+ * extremely difficult to exaustively test.
*/
mux = pci_read_config(sc->dev, CBBR_MFUNC, 4);
sysctrl = pci_read_config(sc->dev, CBBR_SYSCTRL, 4);
- if (mux == 0) {
+ if ((mux & (CBBM_MFUNC_PIN0 | CBBM_MFUNC_PIN1)) == 0) {
mux = (mux & ~CBBM_MFUNC_PIN0) |
CBBM_MFUNC_PIN0_INTA;
if ((sysctrl & CBBM_SYSCTRL_INTRTIE) == 0)
@@ -518,7 +527,8 @@ cbb_chipinit(struct cbb_softc *sc)
/*
* Disable zoom video. Some machines initialize this
* improperly and exerpience has shown that this helps
- * prevent strange behavior.
+ * prevent strange behavior. We don't support zoom
+ * video anyway, so no harm can come from this.
*/
pci_write_config(sc->dev, CBBR_MMCTRL, 0, 4);
break;