pegasos_eth.c: Fix compile error over MV643XX_ defines
Subsystems (3)
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.oarch/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
@@ -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" );
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 headerMove the mv643xx's ethernet-related register definitions from
include/linux/mv643xx.hintodrivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.Signed-off-by Lennert Buytenhek <[email protected]>Signed-off-by Dale Farnsworth <[email protected]>--
Quoted 8 lines
arch/powerpc/platforms/chrp/pegasos_eth.cmade use of a 3 defines there.mcgrof@pogo:~/devel/wireless-2.6$ git-describev2.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
@@ -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 0x2290struct mv643xx_eth_platform_data {int port_number;
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 headerMove the mv643xx's ethernet-related register definitions from
include/linux/mv643xx.hintodrivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.Signed-off-by Lennert Buytenhek <[email protected]>Signed-off-by Dale Farnsworth <[email protected]>--
Quoted 8 lines
arch/powerpc/platforms/chrp/pegasos_eth.cmade use of a 3 defines there.mcgrof@pogo:~/devel/wireless-2.6$ git-describev2.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
30e69bf4cce16d4c2dcfd629a60fcd8e1aba9feeby 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
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 headerMove the mv643xx's ethernet-related register definitions from
include/linux/mv643xx.hintodrivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.Signed-off-by Lennert Buytenhek <[email protected]>Signed-off-by Dale Farnsworth <[email protected]>--
Quoted 8 lines
arch/powerpc/platforms/chrp/pegasos_eth.cmade use of a 3 defines there.mcgrof@pogo:~/devel/wireless-2.6$ git-describev2.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
30e69bf4cce16d4c2dcfd629a60fcd8e1aba9feeby 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
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 headerMove the mv643xx's ethernet-related register definitions from
include/linux/mv643xx.hintodrivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.Signed-off-by Lennert Buytenhek <[email protected]>Signed-off-by Dale Farnsworth <[email protected]>--
Quoted 8 lines
arch/powerpc/platforms/chrp/pegasos_eth.cmade use of a 3 defines there.mcgrof@pogo:~/devel/wireless-2.6$ git-describev2.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
30e69bf4cce16d4c2dcfd629a60fcd8e1aba9feeby 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
Jeff Garzik
AppliedQuoted 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 headerMove the mv643xx's ethernet-related register definitions from
include/linux/mv643xx.hintodrivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.Signed-off-by Lennert Buytenhek <[email protected]>Signed-off-by Dale Farnsworth <[email protected]>--
Quoted 8 lines
arch/powerpc/platforms/chrp/pegasos_eth.cmade use of a 3 defines there.mcgrof@pogo:~/devel/wireless-2.6$ git-describev2.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
30e69bf4cce16d4c2dcfd629a60fcd8e1aba9feeby 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: FixMV643XX_ETHoffsets used by Pegasos 2In the
mv643xx_ethdriver, 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.Signed-off-by Dale Farnsworth <[email protected]>--- include/linux/mv643xx_eth.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)include/linux/mv643xx_eth.h +0
-0
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
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 headerMove the mv643xx's ethernet-related register definitions from
include/linux/mv643xx.hintodrivers/net/mv643xx_eth.h, since they aren't of any use outside the ethernet driver.Signed-off-by Lennert Buytenhek <[email protected]>Signed-off-by Dale Farnsworth <[email protected]>--
arch/powerpc/platforms/chrp/pegasos_eth.cmade use of a 3 defines there.mcgrof@pogo:~/devel/wireless-2.6$ git-describev2.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@@ -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.)