summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2007-10-09 18:59:18 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2007-10-09 18:59:18 +0200
commita6c86a0b1b19ea7d53f5266bcb78948905a024fc (patch)
treeb0f4c7a5c3dad33f79304e8d8735a9c458663e68 /drivers/net
parent2bd6a5b54359463382e1b50edc281f67abed23fa (diff)
downloadbarebox-a6c86a0b1b19ea7d53f5266bcb78948905a024fc.tar.gz
barebox-a6c86a0b1b19ea7d53f5266bcb78948905a024fc.tar.xz
remove hardcoded regsiter base addresses
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/fec_mpc5200.c29
-rw-r--r--drivers/net/fec_mpc5200.h4
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;