fec imx27: Add RMII support
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
370f550107
commit
1e20d6bc20
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -32,6 +32,7 @@ typedef enum {
|
|||
SEVENWIRE,
|
||||
MII10,
|
||||
MII100,
|
||||
RMII,
|
||||
} xceiver_type;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue