Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Oct 2006 22:13:14 GMT
From:      Olivier Houchard <cognet@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 108117 for review
Message-ID:  <200610192213.k9JMDETE051118@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=108117

Change 108117 by cognet@cognet on 2006/10/19 22:13:02

	Hopefully get the endianness write with pci space operations this time.
	Write the AHB=>PCI addresses the right way.

Affected files ...

.. //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425_pci.c#9 edit
.. //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425_pci_space.c#5 edit

Differences ...

==== //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425_pci.c#9 (text+ko) ====

@@ -93,11 +93,20 @@
         return (0);
 }
 
+void
+ixp425_pci_conf_reg_write(struct ixppcib_softc *sc, uint32_t reg,
+    uint32_t data)
+{
+	PCI_CSR_WRITE_4(sc,
+	    PCI_CRP_AD_CBE, ((reg & ~3) | COMMAND_CRP_WRITE));
+	PCI_CSR_WRITE_4(sc,
+	    PCI_CRP_AD_WDATA, data);
+	printf("DID IT %x %x\n", reg, data);
+}
 static int
 ixppcib_attach(device_t dev)
 {
 	int rid;
-	uint32_t reg;
 	struct ixppcib_softc *sc;
 
 	sc = device_get_softc(dev);
@@ -145,20 +154,20 @@
 		panic("ixppcib_probe: failed to set up memory rman");
 	}
 
-	device_add_child(dev, "pci", -1);
 	/*
 	 * PCI->AHB address translation
 	 * 	begin at the physical memory start + OFFSET
 	 */
 #define	AHB_OFFSET	0x10000000UL
-	reg  = (AHB_OFFSET + 0x00000000) >> 0;
-	reg |= (AHB_OFFSET + 0x01000000) >> 8;
-	reg |= (AHB_OFFSET + 0x02000000) >> 16;
-	reg |= (AHB_OFFSET + 0x03000000) >> 24;
-	PCI_CSR_WRITE_4(sc, PCI_AHBMEMBASE, reg);
+	PCI_CSR_WRITE_4(sc, PCI_AHBMEMBASE,
+	    (AHB_OFFSET & 0xFF000000) +
+	    ((AHB_OFFSET & 0xFF000000) >> 8) +
+	    ((AHB_OFFSET & 0xFF000000) >> 16) +
+	    ((AHB_OFFSET & 0xFF000000) >> 24) +
+	    0x00010203);
 	
 #define IXPPCIB_WRITE_CONF(sc, reg, val) \
-	ixppcib_write_config(dev, 0, 0, 0, (reg), (val), 4)
+	ixp425_pci_conf_reg_write(sc, reg, val)
 	/* Write Mapping registers PCI Configuration Registers */
 	/* Base Address 0 - 3 */
 	IXPPCIB_WRITE_CONF(sc, PCI_MAPREG_BAR0, AHB_OFFSET + 0x00000000);
@@ -194,6 +203,7 @@
 	 */
 	DELAY(50000);
 
+	device_add_child(dev, "pci", -1);
 	return (bus_generic_attach(dev));
 }
 

==== //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425_pci_space.c#5 (text+ko) ====

@@ -163,22 +163,22 @@
 
 #ifdef __ARMEB__
 	/* read (single) */
-	.bs_r_1		= _pci_mem_bs_r_1,
-	.bs_r_2		= _pci_mem_bs_r_2,
-	.bs_r_4		= _pci_mem_bs_r_4,
+	.bs_r_1_s	= _pci_mem_bs_r_1,
+	.bs_r_2_s	= _pci_mem_bs_r_2,
+	.bs_r_4_s	= _pci_mem_bs_r_4,
 
-	.bs_r_1_s	= ixp425_pci_mem_bs_r_1,
-	.bs_r_2_s	= ixp425_pci_mem_bs_r_2,
-	.bs_r_4_s	= ixp425_pci_mem_bs_r_4,
+	.bs_r_1	= 	ixp425_pci_mem_bs_r_1,
+	.bs_r_2	= 	ixp425_pci_mem_bs_r_2,
+	.bs_r_4	= 	ixp425_pci_mem_bs_r_4,
 
 	/* write (single) */
-	.bs_w_1		= _pci_mem_bs_w_1,
-	.bs_w_2		= _pci_mem_bs_w_2,
-	.bs_w_4		= _pci_mem_bs_w_4,
+	.bs_w_1_s	= _pci_mem_bs_w_1,
+	.bs_w_2_s	= _pci_mem_bs_w_2,
+	.bs_w_4_s	= _pci_mem_bs_w_4,
 
-	.bs_w_1_s	= ixp425_pci_mem_bs_w_1,
-	.bs_w_2_s	= ixp425_pci_mem_bs_w_2,
-	.bs_w_4_s	= ixp425_pci_mem_bs_w_4,
+	.bs_w_1	=	 ixp425_pci_mem_bs_w_1,
+	.bs_w_2	= 	ixp425_pci_mem_bs_w_2,
+	.bs_w_4	= 	ixp425_pci_mem_bs_w_4,
 #else
 	/* read (single) */
 	.bs_r_1		= ixp425_pci_mem_bs_r_1,
@@ -460,7 +460,7 @@
 static u_int16_t
 _pci_mem_bs_r_2(void *v, bus_space_handle_t ioh, bus_size_t off)
 {
-	return ixp425_pci_mem_bs_r_2(v, ioh, off);
+	return (ixp425_pci_mem_bs_r_2(v, ioh, off));
 }
 
 static u_int32_t
@@ -469,7 +469,7 @@
 	u_int32_t data;
 
 	data = ixp425_pci_mem_bs_r_4(v, ioh, off);
-	return (data);
+	return (htole32(data));
 }
 
 static void
@@ -490,7 +490,7 @@
 _pci_mem_bs_w_4(void *v, bus_space_handle_t ioh, bus_size_t off,
 	u_int32_t val)
 {
-	ixp425_pci_mem_bs_w_4(v, ioh, off, val);
+	ixp425_pci_mem_bs_w_4(v, ioh, off, htole32(val));
 }
 #endif /* __ARMEB__ */
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610192213.k9JMDETE051118>