Skip to contentSkip to conversation

pegasos_eth.c: Fix compile error over MV643XX_ defines

PATCH Applied Luis R. Rodriguez 5 participants 7 messages Oct 29, 2007 – Oct 30, 2007

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 pegasos_eth.c: Fix compile error over MV643XX_ defines

This commit made an incorrect assumption:
--
Author: Lennert Buytenhek <[email protected]>
Date: Fri Oct 19 04:10:10 2007 +0200

mv643xx_eth: Move ethernet register definitions into private header

Move the mv643xx's ethernet-related register definitions from include/linux/mv643xx.h into drivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.

--

arch/powerpc/platforms/chrp/pegasos_eth.c made use of a 3 defines there.

mcgrof@pogo:~/devel/wireless-2.6$ git-describe 

v2.6.24-rc1-138-g0119130

This patch fixes this by internalizing 3 defines onto pegasos which are simply no longer available elsewhere. Without this your compile will fail whenever you enable 'Common Hardware Reference Platform (CHRP) based machines', (CONFIG_PPC_CHRP) as the Makefile for chrp adds it always:

obj-y += setup.o time.o pegasos_eth.o pci.o

If these defines are platform specific then they should later just be added back to include/linux/mv643xx.h.

Compile error:

CC arch/powerpc/platforms/chrp/pegasos_eth.o
arch/powerpc/platforms/chrp/pegasos_eth.c: In function 'Enable_SRAM':
arch/powerpc/platforms/chrp/pegasos_eth.c:150: error: 'MV643XX_ETH_BAR_4' undeclared (first use in this function) arch/powerpc/platforms/chrp/pegasos_eth.c:150: error: (Each undeclared identifier is reported only once arch/powerpc/platforms/chrp/pegasos_eth.c:150: error: for each function it appears in.)
arch/powerpc/platforms/chrp/pegasos_eth.c:152: error:
'MV643XX_ETH_SIZE_REG_4' undeclared (first use in this function) arch/powerpc/platforms/chrp/pegasos_eth.c:154: error:
'MV643XX_ETH_BASE_ADDR_ENABLE_REG' undeclared (first use in this function) make[2]: *** [arch/powerpc/platforms/chrp/pegasos_eth.o] Error 1 make[1]: *** [arch/powerpc/platforms/chrp] Error 2
make: *** [arch/powerpc/platforms] Error 2

---

 arch/powerpc/platforms/chrp/pegasos_eth.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)
arch/powerpc/platforms/chrp/pegasos_eth.c +7 -4
index 5bcc58d..1fc9e8c 100644
@@ -24,6 +24,9 @@
 #define PEGASOS2_SRAM_BASE_ETH0			(PEGASOS2_SRAM_BASE)
 #define PEGASOS2_SRAM_BASE_ETH1			(PEGASOS2_SRAM_BASE_ETH0 + (PEGASOS2_SRAM_SIZE / 2) )
 
+#define PEGASOS2_ETH_BAR_4			0x2220
+#define PEGASOS2_ETH_SIZE_REG_4			0x2224
+#define PEGASOS2_ETH_BASE_ADDR_ENABLE_REG	0x2290
 
 #define PEGASOS2_SRAM_RXRING_SIZE		(PEGASOS2_SRAM_SIZE/4)
 #define PEGASOS2_SRAM_TXRING_SIZE		(PEGASOS2_SRAM_SIZE/4)
@@ -147,13 +150,13 @@ static int Enable_SRAM(void)
 
 	ALong = 0x02;
 	ALong |= PEGASOS2_SRAM_BASE & 0xffff0000;
-	MV_WRITE(MV643XX_ETH_BAR_4, ALong);
+	MV_WRITE(PEGASOS2_ETH_BAR_4, ALong);
 
-	MV_WRITE(MV643XX_ETH_SIZE_REG_4, (PEGASOS2_SRAM_SIZE-1) & 0xffff0000);
+	MV_WRITE(PEGASOS2_ETH_SIZE_REG_4, (PEGASOS2_SRAM_SIZE-1) & 0xffff0000);
 
-	MV_READ(MV643XX_ETH_BASE_ADDR_ENABLE_REG, ALong);
+	MV_READ(PEGASOS2_ETH_BASE_ADDR_ENABLE_REG, ALong);
 	ALong &= ~(1 << 4);
-	MV_WRITE(MV643XX_ETH_BASE_ADDR_ENABLE_REG, ALong);
+	MV_WRITE(PEGASOS2_ETH_BASE_ADDR_ENABLE_REG, ALong);
 
 #ifdef BE_VERBOSE
 	printk("Pegasos II/Marvell MV64361: register unmapped\n");
#1 lore raw
Quoted 16 lines · Luis R. Rodriguez

This commit made an incorrect assumption:
--
Author: Lennert Buytenhek <[email protected]>
Date: Fri Oct 19 04:10:10 2007 +0200

mv643xx_eth: Move ethernet register definitions into private header

Move the mv643xx's ethernet-related register definitions from include/linux/mv643xx.h into drivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.

--

Quoted 8 lines

arch/powerpc/platforms/chrp/pegasos_eth.c made use of a 3 defines there.

mcgrof@pogo:~/devel/wireless-2.6$ git-describe 

v2.6.24-rc1-138-g0119130

This patch fixes this by internalizing 3 defines onto pegasos which are simply no longer available elsewhere. Without this your compile will fail

That compile failure was fixed in commit 30e69bf4cce16d4c2dcfd629a60fcd8e1aba9fee by Al Viro.

However, as I examine that commit, I see that it defines offsets from the eth block in the chip, rather than the full chip registeri block as the Pegasos 2 code expects. So, I think it fixes the compile failure, but leaves the Pegasos 2 broken.

Luis, do you have Pegasos 2 hardware? Can you (or anyone) verify that the following patch is needed for the Pegasos 2?

Thanks,
-Dale

---------------------------------

mv643xx_eth: Fix MV643XX_ETH offsets used by Pegasos 2

In the mv643xx_eth driver, we now use offsets from the ethernet register block within the chip, but the pegasos 2 platform still needs offsets from the full chip's register base address.

---
 include/linux/mv643xx_eth.h |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
include/linux/mv643xx_eth.h +3 -3
index 8df230a..30e11aa 100644
@@ -8,9 +8,9 @@
 #define MV643XX_ETH_NAME		"mv643xx_eth"
 #define MV643XX_ETH_SHARED_REGS		0x2000
 #define MV643XX_ETH_SHARED_REGS_SIZE	0x2000
-#define MV643XX_ETH_BAR_4	0x220
-#define MV643XX_ETH_SIZE_REG_4	0x224
-#define MV643XX_ETH_BASE_ADDR_ENABLE_REG	0x0290
+#define MV643XX_ETH_BAR_4		0x2220
+#define MV643XX_ETH_SIZE_REG_4		0x2224
+#define MV643XX_ETH_BASE_ADDR_ENABLE_REG	0x2290
 
 struct mv643xx_eth_platform_data {
 	int		port_number;
#2 lore raw
Quoted 29 lines · Dale Farnsworth
Quoted 16 lines · Luis R. Rodriguez

This commit made an incorrect assumption:
--
Author: Lennert Buytenhek <[email protected]>
Date: Fri Oct 19 04:10:10 2007 +0200

mv643xx_eth: Move ethernet register definitions into private header

Move the mv643xx's ethernet-related register definitions from include/linux/mv643xx.h into drivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.

--

Quoted 8 lines

arch/powerpc/platforms/chrp/pegasos_eth.c made use of a 3 defines there.

mcgrof@pogo:~/devel/wireless-2.6$ git-describe

v2.6.24-rc1-138-g0119130

This patch fixes this by internalizing 3 defines onto pegasos which are simply no longer available elsewhere. Without this your compile will fail

That compile failure was fixed in commit 30e69bf4cce16d4c2dcfd629a60fcd8e1aba9fee by Al Viro.

Quoted 7 lines

However, as I examine that commit, I see that it defines offsets from the eth block in the chip, rather than the full chip registeri block as the Pegasos 2 code expects. So, I think it fixes the compile failure, but leaves the Pegasos 2 broken.

Luis, do you have Pegasos 2 hardware? Can you (or anyone) verify that the following patch is needed for the Pegasos 2?

Nope, sorry.

Luis

#3 lore raw
Quoted 35 lines · Luis R. Rodriguez
Quoted 34 lines · Dale Farnsworth
Quoted 16 lines · Luis R. Rodriguez

This commit made an incorrect assumption:
--
Author: Lennert Buytenhek <[email protected]>
Date: Fri Oct 19 04:10:10 2007 +0200

mv643xx_eth: Move ethernet register definitions into private header

Move the mv643xx's ethernet-related register definitions from include/linux/mv643xx.h into drivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.

--

Quoted 8 lines

arch/powerpc/platforms/chrp/pegasos_eth.c made use of a 3 defines there.

mcgrof@pogo:~/devel/wireless-2.6$ git-describe

v2.6.24-rc1-138-g0119130

This patch fixes this by internalizing 3 defines onto pegasos which are simply no longer available elsewhere. Without this your compile will fail

That compile failure was fixed in commit 30e69bf4cce16d4c2dcfd629a60fcd8e1aba9fee by Al Viro.

However, as I examine that commit, I see that it defines offsets from the eth block in the chip, rather than the full chip registeri block as the Pegasos 2 code expects. So, I think it fixes the compile failure, but leaves the Pegasos 2 broken.

Quoted 4 lines
Quoted 2 lines

Luis, do you have Pegasos 2 hardware? Can you (or anyone) verify that the following patch is needed for the Pegasos 2?

Nope, sorry.

I am busy right now, but have various pegasos machines available for testing. What exactly should i test ?

Friendly,

Sven Luther

#4 lore raw
Quoted 36 lines · Sven Luther
Quoted 35 lines · Luis R. Rodriguez
Quoted 34 lines · Dale Farnsworth
Quoted 16 lines · Luis R. Rodriguez

This commit made an incorrect assumption:
--
Author: Lennert Buytenhek <[email protected]>
Date: Fri Oct 19 04:10:10 2007 +0200

mv643xx_eth: Move ethernet register definitions into private header

Move the mv643xx's ethernet-related register definitions from include/linux/mv643xx.h into drivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.

--

Quoted 8 lines

arch/powerpc/platforms/chrp/pegasos_eth.c made use of a 3 defines there.

mcgrof@pogo:~/devel/wireless-2.6$ git-describe

v2.6.24-rc1-138-g0119130

This patch fixes this by internalizing 3 defines onto pegasos which are simply no longer available elsewhere. Without this your compile will fail

That compile failure was fixed in commit 30e69bf4cce16d4c2dcfd629a60fcd8e1aba9fee by Al Viro.

However, as I examine that commit, I see that it defines offsets from the eth block in the chip, rather than the full chip registeri block as the Pegasos 2 code expects. So, I think it fixes the compile failure, but leaves the Pegasos 2 broken.

Quoted 7 lines
Quoted 4 lines
Quoted 2 lines

Luis, do you have Pegasos 2 hardware? Can you (or anyone) verify that the following patch is needed for the Pegasos 2?

Nope, sorry.

I am busy right now, but have various pegasos machines available for testing. What exactly should i test ?

Thanks Sven.

Test whether an Ethernet port works at all. I think it's currently broken, but should work with the patch I supplied.

-Dale

Applied
#5 lore raw
In reply to Dale Farnsworth
Quoted 58 lines · Dale Farnsworth
Quoted 16 lines · Luis R. Rodriguez

This commit made an incorrect assumption:
--
Author: Lennert Buytenhek <[email protected]>
Date: Fri Oct 19 04:10:10 2007 +0200

mv643xx_eth: Move ethernet register definitions into private header

Move the mv643xx's ethernet-related register definitions from include/linux/mv643xx.h into drivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.

--

Quoted 8 lines

arch/powerpc/platforms/chrp/pegasos_eth.c made use of a 3 defines there.

mcgrof@pogo:~/devel/wireless-2.6$ git-describe 

v2.6.24-rc1-138-g0119130

This patch fixes this by internalizing 3 defines onto pegasos which are simply no longer available elsewhere. Without this your compile will fail

That compile failure was fixed in commit 30e69bf4cce16d4c2dcfd629a60fcd8e1aba9fee by Al Viro.

However, as I examine that commit, I see that it defines offsets from the eth block in the chip, rather than the full chip registeri block as the Pegasos 2 code expects. So, I think it fixes the compile failure, but leaves the Pegasos 2 broken.

Luis, do you have Pegasos 2 hardware? Can you (or anyone) verify that the following patch is needed for the Pegasos 2?

Thanks,
-Dale

---------------------------------

mv643xx_eth: Fix MV643XX_ETH offsets used by Pegasos 2

In the mv643xx_eth driver, we now use offsets from the ethernet register block within the chip, but the pegasos 2 platform still needs offsets from the full chip's register base address.

---
 include/linux/mv643xx_eth.h |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
include/linux/mv643xx_eth.h +0 -0
index 8df230a..30e11aa 100644

include/linux/mv643xx_eth.h line 13

Quoted 9 lines
include/linux/mv643xx_eth.h +3 -3
@@ -8,9 +8,9 @@
 #define MV643XX_ETH_NAME		"mv643xx_eth"
 #define MV643XX_ETH_SHARED_REGS		0x2000
 #define MV643XX_ETH_SHARED_REGS_SIZE	0x2000
-#define MV643XX_ETH_BAR_4	0x220
-#define MV643XX_ETH_SIZE_REG_4	0x224
-#define MV643XX_ETH_BASE_ADDR_ENABLE_REG	0x0290
+#define MV643XX_ETH_BAR_4		0x2220
+#define MV643XX_ETH_SIZE_REG_4		0x2224
+#define MV643XX_ETH_BASE_ADDR_ENABLE_REG	0x2290

applied

#6 lore raw
In reply to Luis R. Rodriguez
Quoted 50 lines · Luis R. Rodriguez

This commit made an incorrect assumption:
--
Author: Lennert Buytenhek <[email protected]>
Date: Fri Oct 19 04:10:10 2007 +0200

mv643xx_eth: Move ethernet register definitions into private header

Move the mv643xx's ethernet-related register definitions from include/linux/mv643xx.h into drivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.

--

arch/powerpc/platforms/chrp/pegasos_eth.c made use of a 3 defines there.

mcgrof@pogo:~/devel/wireless-2.6$ git-describe 

v2.6.24-rc1-138-g0119130

This patch fixes this by internalizing 3 defines onto pegasos which are simply no longer available elsewhere. Without this your compile will fail whenever you enable 'Common Hardware Reference Platform (CHRP) based machines',

[...]

arch/powerpc/platforms/chrp/pegasos_eth.c +4 -2
index 5bcc58d..1fc9e8c 100644
@@ -24,6 +24,9 @@
 #define PEGASOS2_SRAM_BASE_ETH0			(PEGASOS2_SRAM_BASE)
 #define PEGASOS2_SRAM_BASE_ETH1			(PEGASOS2_SRAM_BASE_ETH0 + (PEGASOS2_SRAM_SIZE / 2) )
 
+#define PEGASOS2_ETH_BAR_4			0x2220
+#define PEGASOS2_ETH_SIZE_REG_4			0x2224
+#define PEGASOS2_ETH_BASE_ADDR_ENABLE_REG	0x2290
 
 #define PEGASOS2_SRAM_RXRING_SIZE		(PEGASOS2_SRAM_SIZE/4)
 #define PEGASOS2_SRAM_TXRING_SIZE		(PEGASOS2_SRAM_SIZE/4)
@@ -147,13 +150,13 @@ static int Enable_SRAM(void)
 
 	ALong = 0x02;
 	ALong |= PEGASOS2_SRAM_BASE & 0xffff0000;
-	MV_WRITE(MV643XX_ETH_BAR_4, ALong);
+	MV_WRITE(PEGASOS2_ETH_BAR_4, ALong);
 
-	MV_WRITE(MV643XX_ETH_SIZE_REG_4, (PEGASOS2_SRAM_SIZE-1) & 0xffff0000);

arch/powerpc/platforms/chrp/pegasos_eth.c static int Enable_SRAM(void) · line 162

Quoted 10 lines
arch/powerpc/platforms/chrp/pegasos_eth.c +3 -2
+	MV_WRITE(PEGASOS2_ETH_SIZE_REG_4, (PEGASOS2_SRAM_SIZE-1) & 0xffff0000);
 
-	MV_READ(MV643XX_ETH_BASE_ADDR_ENABLE_REG, ALong);
+	MV_READ(PEGASOS2_ETH_BASE_ADDR_ENABLE_REG, ALong);
 	ALong &= ~(1 << 4);
-	MV_WRITE(MV643XX_ETH_BASE_ADDR_ENABLE_REG, ALong);
+	MV_WRITE(PEGASOS2_ETH_BASE_ADDR_ENABLE_REG, ALong);
 
 #ifdef BE_VERBOSE
 	printk("Pegasos II/Marvell MV64361: register unmapped\n");

Al Viro sent a patch for this breakage a couple of days ago:

	http://marc.info/?l=linux-kernel&m=119351541706811&w=2

(FWIW, I think that code outside of mv643xx_eth.c should not be poking into the mv643xx's registers directly. Ideally, this info should just be passed by pegasos_eth into mv643xx_eth via platform data, and then mv643xx_eth can write the relevant hardware registers.)