aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorBoris BREZILLON <boris.brezillon@free-electrons.com>2015-03-07 01:23:30 -0500
committerDavid S. Miller <davem@davemloft.net>2015-03-07 22:31:21 -0500
commita848748959d554666b34cffc08ef2d23f4bb2990 (patch)
tree5c775866a379cf17527b293bfef3cccf00ab02ac /drivers/net/ethernet
parent9c348d45d829be10bea4cb8e675f14a1baf9bab1 (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.c32
-rw-r--r--drivers/net/ethernet/cadence/macb.h2
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)
2134static struct macb_config at91sam9260_config = {
2135 .caps = MACB_CAPS_USRIO_HAS_CLKEN | MACB_CAPS_USRIO_DEFAULT_IS_MII,
2136};
2137
2134static struct macb_config pc302gem_config = { 2138static 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
2149static const struct of_device_id macb_dt_ids[] = { 2153static 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