Module Name:    src
Committed By:   msaitoh
Date:           Mon Jan  9 16:27:10 UTC 2023

Modified Files:
        src/sys/dev/pci: piixpm.c

Log Message:
Simplify and modify for following MMIO support. No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 src/sys/dev/pci/piixpm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/piixpm.c
diff -u src/sys/dev/pci/piixpm.c:1.68 src/sys/dev/pci/piixpm.c:1.69
--- src/sys/dev/pci/piixpm.c:1.68	Mon Jan  9 16:26:08 2023
+++ src/sys/dev/pci/piixpm.c	Mon Jan  9 16:27:10 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: piixpm.c,v 1.68 2023/01/09 16:26:08 msaitoh Exp $ */
+/* $NetBSD: piixpm.c,v 1.69 2023/01/09 16:27:10 msaitoh Exp $ */
 /*	$OpenBSD: piixpm.c,v 1.39 2013/10/01 20:06:02 sf Exp $	*/
 
 /*
@@ -22,7 +22,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: piixpm.c,v 1.68 2023/01/09 16:26:08 msaitoh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: piixpm.c,v 1.69 2023/01/09 16:27:10 msaitoh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -83,10 +83,8 @@ struct piixpm_softc {
 	device_t		sc_dev;
 
 	bus_space_tag_t		sc_iot;
-#define	sc_pm_iot sc_iot
-#define sc_smb_iot sc_iot
 	bus_space_handle_t	sc_pm_ioh;
-	bus_space_handle_t	sc_sb800_ioh;
+	bus_space_handle_t	sc_sb800_bh;
 	bus_space_handle_t	sc_smb_ioh;
 	void *			sc_smb_ih;
 	int			sc_poll;
@@ -222,7 +220,7 @@ piixpm_attach(device_t parent, device_t 
 
 	/* Map I/O space */
 	base = pci_conf_read(pa->pa_pc, pa->pa_tag, PIIX_PM_BASE);
-	if (base == 0 || bus_space_map(sc->sc_pm_iot, PCI_MAPREG_IO_ADDR(base),
+	if (base == 0 || bus_space_map(sc->sc_iot, PCI_MAPREG_IO_ADDR(base),
 	    PIIX_PM_SIZE, 0, &sc->sc_pm_ioh)) {
 		aprint_error_dev(self,
 		    "can't map power management I/O space\n");
@@ -234,7 +232,7 @@ piixpm_attach(device_t parent, device_t 
 	 * PIIX4 and PIIX4E have a bug in the timer latch, see Errata #20
 	 * in the "Specification update" (document #297738).
 	 */
-	acpipmtimer_attach(self, sc->sc_pm_iot, sc->sc_pm_ioh, PIIX_PM_PMTMR,
+	acpipmtimer_attach(self, sc->sc_iot, sc->sc_pm_ioh, PIIX_PM_PMTMR,
 	    (PCI_REVISION(pa->pa_class) < 3) ? ACPIPMT_BADLATCH : 0);
 
 nopowermanagement:
@@ -265,7 +263,7 @@ nopowermanagement:
 	/* Map I/O space */
 	base = pci_conf_read(pa->pa_pc, pa->pa_tag, PIIX_SMB_BASE) & 0xffff;
 	if (base == 0 ||
-	    bus_space_map(sc->sc_smb_iot, PCI_MAPREG_IO_ADDR(base),
+	    bus_space_map(sc->sc_iot, PCI_MAPREG_IO_ADDR(base),
 	    PIIX_SMB_SIZE, 0, &sc->sc_smb_ioh)) {
 		aprint_error_dev(self, "can't map smbus I/O space\n");
 		return;
@@ -464,7 +462,7 @@ piixpm_sb800_init(struct piixpm_softc *s
 			sc->sc_sb800_selen = true;
 	}
 
-	sc->sc_sb800_ioh = ioh;
+	sc->sc_sb800_bh = ioh;
 	aprint_debug_dev(sc->sc_dev, "SMBus @ 0x%04x\n", base_addr);
 
 	if (bus_space_map(iot, PCI_MAPREG_IO_ADDR(base_addr),
@@ -505,14 +503,14 @@ piixpm_i2c_sb800_acquire_bus(void *cooki
 	uint8_t sctl, old_sda, index, mask, reg;
 	int i;
 
-	sctl = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_SC);
+	sctl = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_SC);
 	for (i = 0; i < PIIX_SB800_TIMEOUT; i++) {
 		/* Try to acquire the host semaphore */
 		sctl &= ~PIIX_SMB_SC_SEMMASK;
-		bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_SC,
+		bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_SC,
 		    sctl | PIIX_SMB_SC_HOSTSEM);
 
-		sctl = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+		sctl = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh,
 		    PIIX_SMB_SC);
 		if ((sctl & PIIX_SMB_SC_HOSTSEM) != 0)
 			break;
@@ -537,16 +535,16 @@ piixpm_i2c_sb800_acquire_bus(void *cooki
 		mask = SB800_PM_SMBUS0_MASK_C;
 	}
 
-	bus_space_write_1(sc->sc_iot, sc->sc_sb800_ioh,
+	bus_space_write_1(sc->sc_iot, sc->sc_sb800_bh,
 	    SB800_INDIRECTIO_INDEX, index);
-	reg = bus_space_read_1(sc->sc_iot, sc->sc_sb800_ioh,
+	reg = bus_space_read_1(sc->sc_iot, sc->sc_sb800_bh,
 	    SB800_INDIRECTIO_DATA);
 
 	old_sda = __SHIFTOUT(reg, mask);
 	if (smbus->sda != old_sda) {
 		reg &= ~mask;
 		reg |= __SHIFTIN(smbus->sda, mask);
-		bus_space_write_1(sc->sc_iot, sc->sc_sb800_ioh,
+		bus_space_write_1(sc->sc_iot, sc->sc_sb800_bh,
 		    SB800_INDIRECTIO_DATA, reg);
 	}
 
@@ -575,22 +573,22 @@ piixpm_i2c_sb800_release_bus(void *cooki
 		mask = SB800_PM_SMBUS0_MASK_C;
 	}
 
-	bus_space_write_1(sc->sc_iot, sc->sc_sb800_ioh,
+	bus_space_write_1(sc->sc_iot, sc->sc_sb800_bh,
 	    SB800_INDIRECTIO_INDEX, index);
 	if (smbus->sda != smbus->sda_save) {
 		/* Restore the port number */
-		reg = bus_space_read_1(sc->sc_iot, sc->sc_sb800_ioh,
+		reg = bus_space_read_1(sc->sc_iot, sc->sc_sb800_bh,
 		    SB800_INDIRECTIO_DATA);
 		reg &= ~mask;
 		reg |= __SHIFTIN(smbus->sda_save, mask);
-		bus_space_write_1(sc->sc_iot, sc->sc_sb800_ioh,
+		bus_space_write_1(sc->sc_iot, sc->sc_sb800_bh,
 		    SB800_INDIRECTIO_DATA, reg);
 	}
 
 	/* Release the host semaphore */
-	sctl = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_SC);
+	sctl = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_SC);
 	sctl &= ~PIIX_SMB_SC_SEMMASK;
-	bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_SC,
+	bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_SC,
 	    sctl | PIIX_SMB_SC_CLRHOSTSEM);
 }
 
@@ -611,15 +609,15 @@ piixpm_i2c_exec(void *cookie, i2c_op_t o
 	mutex_enter(&sc->sc_exec_lock);
 
 	/* Clear status bits */
-	bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS,
+	bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HS,
 	    PIIX_SMB_HS_INTR | PIIX_SMB_HS_DEVERR |
 	    PIIX_SMB_HS_BUSERR | PIIX_SMB_HS_FAILED);
-	bus_space_barrier(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS, 1,
+	bus_space_barrier(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HS, 1,
 	    BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE);
 
 	/* Wait for bus to be idle */
 	for (retries = 100; retries > 0; retries--) {
-		st = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+		st = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh,
 		    PIIX_SMB_HS);
 		if (!(st & PIIX_SMB_HS_BUSY))
 			break;
@@ -649,27 +647,27 @@ piixpm_i2c_exec(void *cookie, i2c_op_t o
 	sc->sc_i2c_xfer.done = false;
 
 	/* Set slave address and transfer direction */
-	bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_TXSLVA,
+	bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_TXSLVA,
 	    PIIX_SMB_TXSLVA_ADDR(addr) |
 	    (I2C_OP_READ_P(op) ? PIIX_SMB_TXSLVA_READ : 0));
 
 	b = cmdbuf;
 	if (cmdlen > 0)
 		/* Set command byte */
-		bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+		bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh,
 		    PIIX_SMB_HCMD, b[0]);
 
 	if (I2C_OP_WRITE_P(op)) {
 		/* Write data */
 		b = buf;
 		if (cmdlen == 0 && len == 1)
-			bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+			bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh,
 			    PIIX_SMB_HCMD, b[0]);
 		else if (len > 0)
-			bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+			bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh,
 			    PIIX_SMB_HD0, b[0]);
 		if (len > 1)
-			bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+			bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh,
 			    PIIX_SMB_HD1, b[1]);
 	}
 
@@ -691,7 +689,7 @@ piixpm_i2c_exec(void *cookie, i2c_op_t o
 
 	/* Start transaction */
 	ctl |= PIIX_SMB_HC_START;
-	bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HC, ctl);
+	bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HC, ctl);
 
 	if (flags & I2C_F_POLL) {
 		/* Poll for completion */
@@ -700,7 +698,7 @@ piixpm_i2c_exec(void *cookie, i2c_op_t o
 		else
 			DELAY(PIIXPM_DELAY);
 		for (retries = 1000; retries > 0; retries--) {
-			st = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+			st = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh,
 			    PIIX_SMB_HS);
 			if ((st & PIIX_SMB_HS_BUSY) == 0)
 				break;
@@ -728,14 +726,14 @@ timeout:
 	 * Transfer timeout. Kill the transaction and clear status bits.
 	 */
 	aprint_error_dev(sc->sc_dev, "timeout, status 0x%x\n", st);
-	bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HC,
+	bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HC,
 	    PIIX_SMB_HC_KILL);
 	DELAY(PIIXPM_DELAY);
-	st = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS);
+	st = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HS);
 	if ((st & PIIX_SMB_HS_FAILED) == 0)
 		aprint_error_dev(sc->sc_dev,
 		    "transaction abort failed, status 0x%x\n", st);
-	bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS, st);
+	bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HS, st);
 	/*
 	 * CSB5 needs hard reset to unlock the smbus after timeout.
 	 */
@@ -754,7 +752,7 @@ piixpm_intr(void *arg)
 	size_t len;
 
 	/* Read status */
-	st = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS);
+	st = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HS);
 	if ((st & PIIX_SMB_HS_BUSY) != 0 || (st & (PIIX_SMB_HS_INTR |
 	    PIIX_SMB_HS_DEVERR | PIIX_SMB_HS_BUSERR |
 	    PIIX_SMB_HS_FAILED)) == 0)
@@ -767,7 +765,7 @@ piixpm_intr(void *arg)
 		mutex_enter(&sc->sc_exec_lock);
 
 	/* Clear status bits */
-	bus_space_write_1(sc->sc_smb_iot, sc->sc_smb_ioh, PIIX_SMB_HS, st);
+	bus_space_write_1(sc->sc_iot, sc->sc_smb_ioh, PIIX_SMB_HS, st);
 
 	/* Check for errors */
 	if (st & (PIIX_SMB_HS_DEVERR | PIIX_SMB_HS_BUSERR |
@@ -784,10 +782,10 @@ piixpm_intr(void *arg)
 		b = sc->sc_i2c_xfer.buf;
 		len = sc->sc_i2c_xfer.len;
 		if (len > 0)
-			b[0] = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+			b[0] = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh,
 			    PIIX_SMB_HD0);
 		if (len > 1)
-			b[1] = bus_space_read_1(sc->sc_smb_iot, sc->sc_smb_ioh,
+			b[1] = bus_space_read_1(sc->sc_iot, sc->sc_smb_ioh,
 			    PIIX_SMB_HD1);
 	}
 

Reply via email to