9
0
Fork 0

fec imx27: Add RMII support

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2009-02-20 18:10:17 +01:00
parent 370f550107
commit 1e20d6bc20
3 changed files with 30 additions and 0 deletions

View File

@ -615,6 +615,19 @@ int fec_probe(struct device_d *dev)
sprintf(dev->name, "FEC ETHERNET");
if (fec->xcv_type == RMII) {
/* disable the gasket and wait */
writel(0, dev->map_base + FEC_MIIGSK_ENR);
while (readl(dev->map_base + FEC_MIIGSK_ENR) & FEC_MIIGSK_ENR_READY)
udelay(1);
/* configure the gasket for RMII, 50 MHz, no loopback, no echo */
writel(FEC_MIIGSK_CFGR_IF_MODE_RMII, dev->map_base + FEC_MIIGSK_CFGR);
/* re-enable the gasket */
writel(FEC_MIIGSK_ENR_EN, dev->map_base + FEC_MIIGSK_ENR);
}
if (fec->xcv_type != SEVENWIRE) {
fec->miiphy.read = fec_miiphy_read;
fec->miiphy.write = fec_miiphy_write;

View File

@ -218,6 +218,22 @@ typedef struct ethernet_register_set {
uint32_t RES11[64]; /* MBAR_ETH + 0x300-3FF */
} ethernet_regs;
#define FEC_MIIGSK_CFGR 0x300
#define FEC_MIIGSK_ENR 0x308
/*
* Some i.MXs allows RMII mode to be configured via a gasket
*/
#define FEC_MIIGSK_CFGR_FRCONT (1 << 6)
#define FEC_MIIGSK_CFGR_LBMODE (1 << 4)
#define FEC_MIIGSK_CFGR_EMODE (1 << 3)
#define FEC_MIIGSK_CFGR_IF_MODE_MASK (3 << 0)
#define FEC_MIIGSK_CFGR_IF_MODE_MII (0 << 0)
#define FEC_MIIGSK_CFGR_IF_MODE_RMII (1 << 0)
#define FEC_MIIGSK_ENR_READY (1 << 2)
#define FEC_MIIGSK_ENR_EN (1 << 1)
#define FEC_IEVENT_HBERR 0x80000000
#define FEC_IEVENT_BABR 0x40000000
#define FEC_IEVENT_BABT 0x20000000

View File

@ -32,6 +32,7 @@ typedef enum {
SEVENWIRE,
MII10,
MII100,
RMII,
} xceiver_type;
/*