diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2007-10-09 18:59:18 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2007-10-09 18:59:18 +0200 |
commit | a6c86a0b1b19ea7d53f5266bcb78948905a024fc (patch) | |
tree | b0f4c7a5c3dad33f79304e8d8735a9c458663e68 /drivers/net | |
parent | 2bd6a5b54359463382e1b50edc281f67abed23fa (diff) | |
download | barebox-a6c86a0b1b19ea7d53f5266bcb78948905a024fc.tar.gz barebox-a6c86a0b1b19ea7d53f5266bcb78948905a024fc.tar.xz |
remove hardcoded regsiter base addresses
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/fec_mpc5200.c | 29 | ||||
-rw-r--r-- | drivers/net/fec_mpc5200.h | 4 |
2 files changed, 17 insertions, 16 deletions
diff --git a/drivers/net/fec_mpc5200.c b/drivers/net/fec_mpc5200.c index a6f926d876..b58cfda423 100644 --- a/drivers/net/fec_mpc5200.c +++ b/drivers/net/fec_mpc5200.c @@ -34,7 +34,9 @@ typedef struct { static int fec5xxx_miiphy_read(struct miiphy_device *mdev, uint8_t phyAddr, uint8_t regAddr, uint16_t * retVal) { - ethernet_regs *eth = (ethernet_regs *)MPC5XXX_FEC; + struct eth_device *edev = mdev->edev; + mpc5xxx_fec_priv *fec = (mpc5xxx_fec_priv *)edev->priv; + uint32 reg; /* convenient holder for the PHY register */ uint32 phy; /* convenient holder for the PHY */ int timeout = 0xffff; @@ -46,27 +48,27 @@ static int fec5xxx_miiphy_read(struct miiphy_device *mdev, uint8_t phyAddr, reg = regAddr << FEC_MII_DATA_RA_SHIFT; phy = phyAddr << FEC_MII_DATA_PA_SHIFT; - eth->mii_data = (FEC_MII_DATA_ST | FEC_MII_DATA_OP_RD | FEC_MII_DATA_TA | phy | reg); + fec->eth->mii_data = (FEC_MII_DATA_ST | FEC_MII_DATA_OP_RD | FEC_MII_DATA_TA | phy | reg); /* * wait for the related interrupt */ - while ((timeout--) && (!(eth->ievent & FEC_IEVENT_MII))) ; + while ((timeout--) && (!(fec->eth->ievent & FEC_IEVENT_MII))) ; if (timeout == 0) { - debug ("Read MDIO failed...\n"); + debug("Read MDIO failed...\n"); return -1; } /* * clear mii interrupt bit */ - eth->ievent = FEC_IEVENT_MII; + fec->eth->ievent = FEC_IEVENT_MII; /* * it's now safe to read the PHY's register */ - *retVal = (uint16) eth->mii_data; + *retVal = (uint16) fec->eth->mii_data; return 0; } @@ -74,7 +76,9 @@ static int fec5xxx_miiphy_read(struct miiphy_device *mdev, uint8_t phyAddr, static int fec5xxx_miiphy_write(struct miiphy_device *mdev, uint8_t phyAddr, uint8_t regAddr, uint16_t data) { - ethernet_regs *eth = (ethernet_regs *)MPC5XXX_FEC; + struct eth_device *edev = mdev->edev; + mpc5xxx_fec_priv *fec = (mpc5xxx_fec_priv *)edev->priv; + uint32 reg; /* convenient holder for the PHY register */ uint32 phy; /* convenient holder for the PHY */ int timeout = 0xffff; @@ -82,13 +86,13 @@ static int fec5xxx_miiphy_write(struct miiphy_device *mdev, uint8_t phyAddr, reg = regAddr << FEC_MII_DATA_RA_SHIFT; phy = phyAddr << FEC_MII_DATA_PA_SHIFT; - eth->mii_data = (FEC_MII_DATA_ST | FEC_MII_DATA_OP_WR | + fec->eth->mii_data = (FEC_MII_DATA_ST | FEC_MII_DATA_OP_WR | FEC_MII_DATA_TA | phy | reg | data); /* * wait for the MII interrupt */ - while ((timeout--) && (!(eth->ievent & FEC_IEVENT_MII))) ; + while ((timeout--) && (!(fec->eth->ievent & FEC_IEVENT_MII))) ; if (timeout == 0) { debug("Write MDIO failed...\n"); @@ -98,7 +102,7 @@ static int fec5xxx_miiphy_write(struct miiphy_device *mdev, uint8_t phyAddr, /* * clear MII interrupt bit */ - eth->ievent = FEC_IEVENT_MII; + fec->eth->ievent = FEC_IEVENT_MII; return 0; } @@ -435,7 +439,7 @@ static void mpc5xxx_fec_halt(struct eth_device *dev) /* * wait for graceful stop to register */ - while ((counter--) && (!(fec->eth->ievent & 0x10000000))) ; + while ((counter--) && (!(fec->eth->ievent & FEC_IEVENT_GRA))) ; /* * Disable SmartDMA tasks @@ -465,7 +469,6 @@ static void mpc5xxx_fec_halt(struct eth_device *dev) // fec->eth->reset_cntrl = 0x01000000; debug("Ethernet task stopped\n"); - } #ifdef DEBUG_FIFO @@ -682,7 +685,7 @@ int mpc5xxx_fec_probe(struct device_d *dev) edev->get_mac_address = mpc5xxx_fec_get_hwaddr, edev->set_mac_address = mpc5xxx_fec_set_hwaddr, - fec->eth = (ethernet_regs *)MPC5XXX_FEC; + fec->eth = (ethernet_regs *)dev->map_base; fec->tbdBase = (FEC_TBD *)FEC_BD_BASE; fec->rbdBase = (FEC_RBD *)(FEC_BD_BASE + FEC_TBD_NUM * sizeof(FEC_TBD)); diff --git a/drivers/net/fec_mpc5200.h b/drivers/net/fec_mpc5200.h index ffc028a6b0..62fb1cf463 100644 --- a/drivers/net/fec_mpc5200.h +++ b/drivers/net/fec_mpc5200.h @@ -11,9 +11,6 @@ #ifndef __MPC5XXX_FEC_H #define __MPC5XXX_FEC_H -#include <common.h> -#include <asm/arch/sdma.h> - typedef unsigned long uint32; typedef unsigned short uint16; typedef unsigned char uint8; @@ -248,6 +245,7 @@ typedef struct BufferDescriptor { uint16 dataLength; uint32 dataPointer; } FEC_RBD; + typedef struct { uint16 status; uint16 dataLength; |