svn commit: r355822 - in head/sys: conf dev/pccbb modules/cbb

Warner Losh imp at FreeBSD.org
Mon Dec 16 21:34:52 UTC 2019


Author: imp
Date: Mon Dec 16 21:34:51 2019
New Revision: 355822
URL: https://svnweb.freebsd.org/changeset/base/355822

Log:
  We'll never have multiple slots a cardbus bridge. So, replace exca
  array with a singleton.
  
  Also, pccbb isa attachment is never going to happen, do disconnect it from the
  build (will delete this in future commit). It would need to be updated as well,
  but since this code is effectively dead code, remove it from the build instead.

Modified:
  head/sys/conf/files
  head/sys/dev/pccbb/pccbb.c
  head/sys/dev/pccbb/pccbb_pci.c
  head/sys/dev/pccbb/pccbbvar.h
  head/sys/modules/cbb/Makefile

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Mon Dec 16 21:06:24 2019	(r355821)
+++ head/sys/conf/files	Mon Dec 16 21:34:51 2019	(r355822)
@@ -2552,7 +2552,6 @@ dev/pccard/pccard_cis_quirks.c	optional pccard
 dev/pccard/pccard_device.c	optional pccard
 dev/pccard/power_if.m		standard
 dev/pccbb/pccbb.c		optional cbb
-dev/pccbb/pccbb_isa.c		optional cbb isa
 dev/pccbb/pccbb_pci.c		optional cbb pci
 dev/pcf/pcf.c			optional pcf
 dev/pci/fixup_pci.c		optional pci

Modified: head/sys/dev/pccbb/pccbb.c
==============================================================================
--- head/sys/dev/pccbb/pccbb.c	Mon Dec 16 21:06:24 2019	(r355821)
+++ head/sys/dev/pccbb/pccbb.c	Mon Dec 16 21:34:51 2019	(r355822)
@@ -253,9 +253,9 @@ cbb_disable_func_intr(struct cbb_softc *sc)
 #if 0
 	uint8_t reg;
 
-	reg = (exca_getb(&sc->exca[0], EXCA_INTR) & ~EXCA_INTR_IRQ_MASK) | 
+	reg = (exca_getb(&sc->exca, EXCA_INTR) & ~EXCA_INTR_IRQ_MASK) | 
 	    EXCA_INTR_IRQ_RESERVED1;
-	exca_putb(&sc->exca[0], EXCA_INTR, reg);
+	exca_putb(&sc->exca, EXCA_INTR, reg);
 #endif
 }
 
@@ -271,11 +271,9 @@ cbb_enable_func_intr(struct cbb_softc *sc)
 {
 	uint8_t reg;
 
-	reg = (exca_getb(&sc->exca[0], EXCA_INTR) & ~EXCA_INTR_IRQ_MASK) | 
+	reg = (exca_getb(&sc->exca, EXCA_INTR) & ~EXCA_INTR_IRQ_MASK) | 
 	    EXCA_INTR_IRQ_NONE;
-	exca_putb(&sc->exca[0], EXCA_INTR, reg);
-	PCI_MASK_CONFIG(sc->dev, CBBR_BRIDGECTRL,
-	    & ~CBBM_BRIDGECTRL_INTR_IREQ_ISA_EN, 2);
+	exca_putb(&sc->exca, EXCA_INTR, reg);
 }
 
 int
@@ -322,7 +320,7 @@ cbb_detach(device_t brdev)
 	cbb_set(sc, CBB_SOCKET_MASK, 0);
 
 	/* reset 16-bit pcmcia bus */
-	exca_clrb(&sc->exca[0], EXCA_INTR, EXCA_INTR_RESET);
+	exca_clrb(&sc->exca, EXCA_INTR, EXCA_INTR_RESET);
 
 	/* turn off power */
 	cbb_power(brdev, CARD_OFF);
@@ -442,7 +440,7 @@ cbb_child_detached(device_t brdev, device_t child)
 	struct cbb_softc *sc = device_get_softc(brdev);
 
 	/* I'm not sure we even need this */
-	if (child != sc->cbdev && child != sc->exca[0].pccarddev)
+	if (child != sc->cbdev && child != sc->exca.pccarddev)
 		device_printf(brdev, "Unknown child detached: %s\n",
 		    device_get_nameunit(child));
 }
@@ -549,9 +547,9 @@ cbb_insert(struct cbb_softc *sc)
 	    sockevent, sockstate));
 
 	if (sockstate & CBB_STATE_R2_CARD) {
-		if (device_is_attached(sc->exca[0].pccarddev)) {
+		if (device_is_attached(sc->exca.pccarddev)) {
 			sc->flags |= CBB_16BIT_CARD;
-			exca_insert(&sc->exca[0]);
+			exca_insert(&sc->exca);
 		} else {
 			device_printf(sc->dev,
 			    "16-bit card inserted, but no pccard bus.\n");
@@ -578,7 +576,7 @@ cbb_removal(struct cbb_softc *sc)
 {
 	sc->cardok = 0;
 	if (sc->flags & CBB_16BIT_CARD) {
-		exca_removal(&sc->exca[0]);
+		exca_removal(&sc->exca);
 	} else {
 		if (device_is_attached(sc->cbdev))
 			CARD_DETACH_CARD(sc->cbdev);
@@ -708,8 +706,8 @@ cbb_o2micro_power_hack(struct cbb_softc *sc)
 	 * keyboard controller's interrupts being suppressed occurred when
 	 * we did this.
 	 */
-	reg = exca_getb(&sc->exca[0], EXCA_INTR);
-	exca_putb(&sc->exca[0], EXCA_INTR, (reg & 0xf0) | 1);
+	reg = exca_getb(&sc->exca, EXCA_INTR);
+	exca_putb(&sc->exca, EXCA_INTR, (reg & 0xf0) | 1);
 	return (reg);
 }
 
@@ -721,7 +719,7 @@ cbb_o2micro_power_hack(struct cbb_softc *sc)
 static void
 cbb_o2micro_power_hack2(struct cbb_softc *sc, uint8_t reg)
 {
-	exca_putb(&sc->exca[0], EXCA_INTR, reg);
+	exca_putb(&sc->exca, EXCA_INTR, reg);
 }
 
 int
@@ -921,7 +919,7 @@ cbb_do_power(device_t brdev)
 	uint32_t status;
 
 	/* Don't enable OE (output enable) until power stable */
-	exca_clrb(&sc->exca[0], EXCA_PWRCTL, EXCA_PWRCTL_OE);
+	exca_clrb(&sc->exca, EXCA_PWRCTL, EXCA_PWRCTL_OE);
 
 	voltage = cbb_detect_voltage(brdev);
 	curpwr = cbb_current_voltage(brdev);
@@ -1312,7 +1310,7 @@ cbb_pcic_power_enable_socket(device_t brdev, device_t 
 	err = cbb_do_power(brdev);
 	if (err)
 		return (err);
-	exca_reset(&sc->exca[0], child);
+	exca_reset(&sc->exca, child);
 
 	return (0);
 }
@@ -1325,18 +1323,18 @@ cbb_pcic_power_disable_socket(device_t brdev, device_t
 	DPRINTF(("cbb_pcic_socket_disable\n"));
 
 	/* Turn off the card's interrupt and leave it in reset, wait 10ms */
-	exca_putb(&sc->exca[0], EXCA_INTR, 0);
+	exca_putb(&sc->exca, EXCA_INTR, 0);
 	pause("cbbP1", hz / 100);
 
 	/* power down the socket */
 	cbb_power(brdev, CARD_OFF);
-	exca_putb(&sc->exca[0], EXCA_PWRCTL, 0);
+	exca_putb(&sc->exca, EXCA_PWRCTL, 0);
 
 	/* wait 300ms until power fails (Tpf). */
 	pause("cbbP2", hz * 300 / 1000);
 
 	/* enable CSC interrupts */
-	exca_putb(&sc->exca[0], EXCA_INTR, EXCA_INTR_ENABLE);
+	exca_putb(&sc->exca, EXCA_INTR, EXCA_INTR_ENABLE);
 	return (0);
 }
 
@@ -1370,7 +1368,7 @@ cbb_pcic_activate_resource(device_t brdev, device_t ch
 	struct cbb_softc *sc = device_get_softc(brdev);
 	int error;
 
-	error = exca_activate_resource(&sc->exca[0], child, type, rid, res);
+	error = exca_activate_resource(&sc->exca, child, type, rid, res);
 	if (error == 0)
 		cbb_activate_window(brdev, type);
 	return (error);
@@ -1381,7 +1379,7 @@ cbb_pcic_deactivate_resource(device_t brdev, device_t 
     int rid, struct resource *res)
 {
 	struct cbb_softc *sc = device_get_softc(brdev);
-	return (exca_deactivate_resource(&sc->exca[0], child, type, rid, res));
+	return (exca_deactivate_resource(&sc->exca, child, type, rid, res));
 }
 
 static struct resource *
@@ -1476,7 +1474,7 @@ cbb_pcic_set_res_flags(device_t brdev, device_t child,
 		    "set_res_flags: specified rid not found\n");
 		return (ENOENT);
 	}
-	return (exca_mem_set_flags(&sc->exca[0], res, flags));
+	return (exca_mem_set_flags(&sc->exca, res, flags));
 }
 
 int
@@ -1492,7 +1490,7 @@ cbb_pcic_set_memory_offset(device_t brdev, device_t ch
 		    "set_memory_offset: specified rid not found\n");
 		return (ENOENT);
 	}
-	return (exca_mem_set_offset(&sc->exca[0], res, cardaddr, deltap));
+	return (exca_mem_set_offset(&sc->exca, res, cardaddr, deltap));
 }
 
 /************************************************************************/

Modified: head/sys/dev/pccbb/pccbb_pci.c
==============================================================================
--- head/sys/dev/pccbb/pccbb_pci.c	Mon Dec 16 21:06:24 2019	(r355821)
+++ head/sys/dev/pccbb/pccbb_pci.c	Mon Dec 16 21:34:51 2019	(r355822)
@@ -294,7 +294,6 @@ cbb_pci_attach(device_t brdev)
 	sc->chipset = cbb_chipset(pci_get_devid(brdev), NULL);
 	sc->dev = brdev;
 	sc->cbdev = NULL;
-	sc->exca[0].pccarddev = NULL;
 	sc->domain = pci_get_domain(brdev);
 	sc->pribus = pcib_get_bus(parent);
 #if defined(NEW_PCIB) && defined(PCI_RES_BUS)
@@ -320,9 +319,9 @@ cbb_pci_attach(device_t brdev)
 
 	sc->bst = rman_get_bustag(sc->base_res);
 	sc->bsh = rman_get_bushandle(sc->base_res);
-	exca_init(&sc->exca[0], brdev, sc->bst, sc->bsh, CBB_EXCA_OFFSET);
-	sc->exca[0].flags |= EXCA_HAS_MEMREG_WIN;
-	sc->exca[0].chipset = EXCA_CARDBUS;
+	exca_init(&sc->exca, brdev, sc->bst, sc->bsh, CBB_EXCA_OFFSET);
+	sc->exca.flags |= EXCA_HAS_MEMREG_WIN;
+	sc->exca.chipset = EXCA_CARDBUS;
 	sc->chipinit = cbb_chipinit;
 	sc->chipinit(sc);
 
@@ -381,10 +380,10 @@ cbb_pci_attach(device_t brdev)
 	else if (device_probe_and_attach(sc->cbdev) != 0)
 		DEVPRINTF((brdev, "WARNING: cannot attach cardbus bus!\n"));
 
-	sc->exca[0].pccarddev = device_add_child(brdev, "pccard", -1);
-	if (sc->exca[0].pccarddev == NULL)
+	sc->exca.pccarddev = device_add_child(brdev, "pccard", -1);
+	if (sc->exca.pccarddev == NULL)
 		DEVPRINTF((brdev, "WARNING: cannot add pccard bus.\n"));
-	else if (device_probe_and_attach(sc->exca[0].pccarddev) != 0)
+	else if (device_probe_and_attach(sc->exca.pccarddev) != 0)
 		DEVPRINTF((brdev, "WARNING: cannot attach pccard bus.\n"));
 
 	/* Map and establish the interrupt. */
@@ -403,7 +402,7 @@ cbb_pci_attach(device_t brdev)
 	}
 
 	/* reset 16-bit pcmcia bus */
-	exca_clrb(&sc->exca[0], EXCA_INTR, EXCA_INTR_RESET);
+	exca_clrb(&sc->exca, EXCA_INTR, EXCA_INTR_RESET);
 
 	/* turn off power */
 	cbb_power(brdev, CARD_OFF);
@@ -580,10 +579,10 @@ cbb_chipinit(struct cbb_softc *sc)
 		 * still be correctly generated if NO ISA IRQ is
 		 * selected (ExCA regs 03h or 05h are cleared).
 		 */
-		reg = exca_getb(&sc->exca[0], EXCA_O2MICRO_CTRL_C);
+		reg = exca_getb(&sc->exca, EXCA_O2MICRO_CTRL_C);
 		reg = (reg & 0x0f) |
 		    EXCA_O2CC_IREQ_INTC | EXCA_O2CC_STSCHG_INTC;
-		exca_putb(&sc->exca[0], EXCA_O2MICRO_CTRL_C, reg);
+		exca_putb(&sc->exca, EXCA_O2MICRO_CTRL_C, reg);
 		break;
 	case CB_TOPIC97:
 		/*
@@ -601,7 +600,7 @@ cbb_chipinit(struct cbb_softc *sc)
 		 * ToPIC97, 100
 		 * Need to assert support for low voltage cards
 		 */
-		exca_setb(&sc->exca[0], EXCA_TOPIC97_CTRL,
+		exca_setb(&sc->exca, EXCA_TOPIC97_CTRL,
 		    EXCA_TOPIC97_CTRL_LV_MASK);
 		goto topic_common;
 	case CB_TOPIC95:
@@ -644,8 +643,8 @@ cbb_chipinit(struct cbb_softc *sc)
 	 * INTR_ENABLE and the other is to set CSC to 0.  Since both
 	 * methods are mutually compatible, we do both.
 	 */
-	exca_putb(&sc->exca[0], EXCA_INTR, EXCA_INTR_ENABLE);
-	exca_putb(&sc->exca[0], EXCA_CSC_INTR, 0);
+	exca_putb(&sc->exca, EXCA_INTR, EXCA_INTR_ENABLE);
+	exca_putb(&sc->exca, EXCA_CSC_INTR, 0);
 
 	cbb_disable_func_intr(sc);
 
@@ -684,7 +683,7 @@ cbb_pci_shutdown(device_t brdev)
 	 * down the socket.
 	 */
 	PCI_MASK_CONFIG(brdev, CBBR_BRIDGECTRL, |CBBM_BRIDGECTRL_RESET, 2);
-	exca_clrb(&sc->exca[0], EXCA_INTR, EXCA_INTR_RESET);
+	exca_clrb(&sc->exca, EXCA_INTR, EXCA_INTR_RESET);
 	cbb_set(sc, CBB_SOCKET_MASK, 0);
 	cbb_set(sc, CBB_SOCKET_EVENT, 0xffffffff);
 	cbb_power(brdev, CARD_OFF);
@@ -693,7 +692,7 @@ cbb_pci_shutdown(device_t brdev)
 	 * For paranoia, turn off all address decoding.  Really not needed,
 	 * it seems, but it can't hurt
 	 */
-	exca_putb(&sc->exca[0], EXCA_ADDRWIN_ENABLE, 0);
+	exca_putb(&sc->exca, EXCA_ADDRWIN_ENABLE, 0);
 	pci_write_config(brdev, CBBR_MEMBASE0, 0, 4);
 	pci_write_config(brdev, CBBR_MEMLIMIT0, 0, 4);
 	pci_write_config(brdev, CBBR_MEMBASE1, 0, 4);
@@ -733,7 +732,7 @@ cbb_pci_filt(void *arg)
 	 * in one place and a double wakeup would be benign there.
 	 */
 	if (sc->flags & CBB_16BIT_CARD) {
-		csc = exca_getb(&sc->exca[0], EXCA_CSC);
+		csc = exca_getb(&sc->exca, EXCA_CSC);
 		if (csc & EXCA_CSC_READY) {
 			atomic_add_int(&sc->powerintr, 1);
 			wakeup((void *)&sc->powerintr);

Modified: head/sys/dev/pccbb/pccbbvar.h
==============================================================================
--- head/sys/dev/pccbb/pccbbvar.h	Mon Dec 16 21:06:24 2019	(r355821)
+++ head/sys/dev/pccbb/pccbbvar.h	Mon Dec 16 21:34:51 2019	(r355822)
@@ -53,11 +53,10 @@ struct cbb_reslist {
 };
 
 #define	CBB_AUTO_OPEN_SMALLHOLE 0x100
-#define CBB_NSLOTS		4
 
 struct cbb_softc {
 	device_t	dev;
-	struct exca_softc exca[CBB_NSLOTS];
+	struct exca_softc exca;
 	struct		resource *base_res;
 	struct		resource *irq_res;
 	void		*intrhand;

Modified: head/sys/modules/cbb/Makefile
==============================================================================
--- head/sys/modules/cbb/Makefile	Mon Dec 16 21:06:24 2019	(r355821)
+++ head/sys/modules/cbb/Makefile	Mon Dec 16 21:34:51 2019	(r355822)
@@ -3,8 +3,8 @@
 .PATH: ${SRCTOP}/sys/dev/pccbb
 
 KMOD=	cbb
-SRCS=	pccbb.c pccbb_isa.c pccbb_pci.c \
-	device_if.h bus_if.h power_if.h card_if.h isa_if.h pci_if.h pcib_if.h
+SRCS=	pccbb.c pccbb_pci.c \
+	device_if.h bus_if.h power_if.h card_if.h pci_if.h pcib_if.h
 
 .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "amd64"
 CFLAGS += -DNEW_PCIB


More information about the svn-src-all mailing list