diff options
author | Boris BREZILLON <boris.brezillon@free-electrons.com> | 2015-03-07 01:23:30 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-07 22:31:21 -0500 |
commit | a848748959d554666b34cffc08ef2d23f4bb2990 (patch) | |
tree | 5c775866a379cf17527b293bfef3cccf00ab02ac /drivers/net/ethernet | |
parent | 9c348d45d829be10bea4cb8e675f14a1baf9bab1 (diff) |
net: macb: remove #if defined(CONFIG_ARCH_AT91) sections
With multi platform support those sections could lead to unexpected
behavior if both ARCH_AT91 and another ARM SoC using the MACB IP are
selected.
Add two new capabilities to encode the default MII mode and the presence
of a CLKEN bit in USRIO register.
Then define the appropriate config for IPs embedded in at91 SoCs.
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reviewed-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r-- | drivers/net/ethernet/cadence/macb.c | 32 | ||||
-rw-r--r-- | drivers/net/ethernet/cadence/macb.h | 2 |
2 files changed, 19 insertions, 15 deletions
diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c index f6c8935a4f0b..ff649f0e9cb7 100644 --- a/drivers/net/ethernet/cadence/macb.c +++ b/drivers/net/ethernet/cadence/macb.c | |||
@@ -2131,6 +2131,10 @@ static const struct net_device_ops macb_netdev_ops = { | |||
2131 | }; | 2131 | }; |
2132 | 2132 | ||
2133 | #if defined(CONFIG_OF) | 2133 | #if defined(CONFIG_OF) |
2134 | static struct macb_config at91sam9260_config = { | ||
2135 | .caps = MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII, | ||
2136 | }; | ||
2137 | |||
2134 | static struct macb_config pc302gem_config = { | 2138 | static struct macb_config pc302gem_config = { |
2135 | .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE, | 2139 | .caps = MACB_CAPS_SG_DISABLED | MACB_CAPS_GIGABIT_MODE_AVAILABLE, |
2136 | .dma_burst_length = 16, | 2140 | .dma_burst_length = 16, |
@@ -2148,7 +2152,7 @@ static struct macb_config sama5d4_config = { | |||
2148 | 2152 | ||
2149 | static const struct of_device_id macb_dt_ids[] = { | 2153 | static const struct of_device_id macb_dt_ids[] = { |
2150 | { .compatible = "cdns,at32ap7000-macb" }, | 2154 | { .compatible = "cdns,at32ap7000-macb" }, |
2151 | { .compatible = "cdns,at91sam9260-macb" }, | 2155 | { .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config }, |
2152 | { .compatible = "cdns,macb" }, | 2156 | { .compatible = "cdns,macb" }, |
2153 | { .compatible = "cdns,pc302-gem", .data = &pc302gem_config }, | 2157 | { .compatible = "cdns,pc302-gem", .data = &pc302gem_config }, |
2154 | { .compatible = "cdns,gem", .data = &pc302gem_config }, | 2158 | { .compatible = "cdns,gem", .data = &pc302gem_config }, |
@@ -2408,21 +2412,19 @@ static int macb_probe(struct platform_device *pdev) | |||
2408 | bp->phy_interface = err; | 2412 | bp->phy_interface = err; |
2409 | } | 2413 | } |
2410 | 2414 | ||
2415 | config = 0; | ||
2411 | if (bp->phy_interface == PHY_INTERFACE_MODE_RGMII) | 2416 | if (bp->phy_interface == PHY_INTERFACE_MODE_RGMII) |
2412 | macb_or_gem_writel(bp, USRIO, GEM_BIT(RGMII)); | 2417 | config = GEM_BIT(RGMII); |
2413 | else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII) | 2418 | else if (bp->phy_interface == PHY_INTERFACE_MODE_RMII && |
2414 | #if defined(CONFIG_ARCH_AT91) | 2419 | (bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII)) |
2415 | macb_or_gem_writel(bp, USRIO, (MACB_BIT(RMII) | | 2420 | config = MACB_BIT(RMII); |
2416 | MACB_BIT(CLKEN))); | 2421 | else if (!(bp->caps & MACB_CAPS_USRIO_DEFAULT_IS_MII)) |
2417 | #else | 2422 | config = MACB_BIT(MII); |
2418 | macb_or_gem_writel(bp, USRIO, 0); | 2423 | |
2419 | #endif | 2424 | if (bp->caps & MACB_CAPS_USRIO_HAS_CLKEN) |
2420 | else | 2425 | config |= MACB_BIT(CLKEN); |
2421 | #if defined(CONFIG_ARCH_AT91) | 2426 | |
2422 | macb_or_gem_writel(bp, USRIO, MACB_BIT(CLKEN)); | 2427 | macb_or_gem_writel(bp, USRIO, config); |
2423 | #else | ||
2424 | macb_or_gem_writel(bp, USRIO, MACB_BIT(MII)); | ||
2425 | #endif | ||
2426 | 2428 | ||
2427 | err = register_netdev(dev); | 2429 | err = register_netdev(dev); |
2428 | if (err) { | 2430 | if (err) { |
diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h index 83241c8ec5dc..1797fb00124b 100644 --- a/drivers/net/ethernet/cadence/macb.h +++ b/drivers/net/ethernet/cadence/macb.h | |||
@@ -391,6 +391,8 @@ | |||
391 | 391 | ||
392 | /* Capability mask bits */ | 392 | /* Capability mask bits */ |
393 | #define MACB_CAPS_ISR_CLEAR_ON_WRITE 0x00000001 | 393 | #define MACB_CAPS_ISR_CLEAR_ON_WRITE 0x00000001 |
394 | #define MACB_CAPS_USRIO_HAS_CLKEN 0x00000002 | ||
395 | #define MACB_CAPS_USRIO_DEFAULT_IS_MII 0x00000004 | ||
394 | #define MACB_CAPS_FIFO_MODE 0x10000000 | 396 | #define MACB_CAPS_FIFO_MODE 0x10000000 |
395 | #define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000 | 397 | #define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000 |
396 | #define MACB_CAPS_SG_DISABLED 0x40000000 | 398 | #define MACB_CAPS_SG_DISABLED 0x40000000 |