Commit ae00ec95 authored by David S. Miller's avatar David S. Miller

Merge branch 'macb-next'

Merge branch 'macb-next'

Boris Brezillon says:

====================
net/macb: merge at91_ether driver into macb driver

The rm9200 boards use the dedicated at91_ether driver instead of the
regular macb driver.

Both the macb and at91_ether drivers can be compiled as separated
modules.
Since the at91_ether driver uses code from the macb driver, at91_ether.ko
depends on macb.ko.

However the macb.ko module always fails to load on rm9200 boards: the
macb_probe() function expects a hclk clock which doesn't exist on rm9200.
Then the at91_ether.ko can't be loaded in turn due to unresolved
dependencies.

This series of patches fix this issue by merging at91_ether into macb.

Patch 1 is fixing a problem that might happen when enabling ARM
multi-platform suppot.

Changes since v3:
- move "net: macb: remove #if defined(CONFIG_ARCH_AT91) sections" patch
  into this series to avoid dependency on other patch series.

Changes since v2:
- rebase after changed brought by commit "net: macb: remove #if
  defined(CONFIG_ARCH_AT91) sections"

Changes since v1:
- rework probe functions to share common probing logic
====================
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 1b5ef07e 421d9df0
...@@ -842,7 +842,7 @@ uart1: serial@fffd8000 { ...@@ -842,7 +842,7 @@ uart1: serial@fffd8000 {
}; };
macb0: ethernet@fffc4000 { macb0: ethernet@fffc4000 {
compatible = "cdns,at32ap7000-macb", "cdns,macb"; compatible = "cdns,at91sam9260-macb", "cdns,macb";
reg = <0xfffc4000 0x100>; reg = <0xfffc4000 0x100>;
interrupts = <21 IRQ_TYPE_LEVEL_HIGH 3>; interrupts = <21 IRQ_TYPE_LEVEL_HIGH 3>;
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -845,7 +845,7 @@ ac97: sound@fffa0000 { ...@@ -845,7 +845,7 @@ ac97: sound@fffa0000 {
}; };
macb0: ethernet@fffbc000 { macb0: ethernet@fffbc000 {
compatible = "cdns,at32ap7000-macb", "cdns,macb"; compatible = "cdns,at91sam9260-macb", "cdns,macb";
reg = <0xfffbc000 0x100>; reg = <0xfffbc000 0x100>;
interrupts = <21 IRQ_TYPE_LEVEL_HIGH 3>; interrupts = <21 IRQ_TYPE_LEVEL_HIGH 3>;
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -956,7 +956,7 @@ usart3: serial@fff98000 { ...@@ -956,7 +956,7 @@ usart3: serial@fff98000 {
}; };
macb0: ethernet@fffbc000 { macb0: ethernet@fffbc000 {
compatible = "cdns,at32ap7000-macb", "cdns,macb"; compatible = "cdns,at91sam9260-macb", "cdns,macb";
reg = <0xfffbc000 0x100>; reg = <0xfffbc000 0x100>;
interrupts = <25 IRQ_TYPE_LEVEL_HIGH 3>; interrupts = <25 IRQ_TYPE_LEVEL_HIGH 3>;
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -53,7 +53,7 @@ macb0_clk: macb0_clk { ...@@ -53,7 +53,7 @@ macb0_clk: macb0_clk {
}; };
macb0: ethernet@f802c000 { macb0: ethernet@f802c000 {
compatible = "cdns,at32ap7000-macb", "cdns,macb"; compatible = "cdns,at91sam9260-macb", "cdns,macb";
reg = <0xf802c000 0x100>; reg = <0xf802c000 0x100>;
interrupts = <24 IRQ_TYPE_LEVEL_HIGH 3>; interrupts = <24 IRQ_TYPE_LEVEL_HIGH 3>;
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -41,7 +41,7 @@ macb1_clk: macb1_clk { ...@@ -41,7 +41,7 @@ macb1_clk: macb1_clk {
}; };
macb1: ethernet@f8030000 { macb1: ethernet@f8030000 {
compatible = "cdns,at32ap7000-macb", "cdns,macb"; compatible = "cdns,at91sam9260-macb", "cdns,macb";
reg = <0xf8030000 0x100>; reg = <0xf8030000 0x100>;
interrupts = <27 IRQ_TYPE_LEVEL_HIGH 3>; interrupts = <27 IRQ_TYPE_LEVEL_HIGH 3>;
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -41,7 +41,7 @@ macb1_clk: macb1_clk { ...@@ -41,7 +41,7 @@ macb1_clk: macb1_clk {
}; };
macb1: ethernet@f802c000 { macb1: ethernet@f802c000 {
compatible = "cdns,at32ap7000-macb", "cdns,macb"; compatible = "cdns,at91sam9260-macb", "cdns,macb";
reg = <0xf802c000 0x100>; reg = <0xf802c000 0x100>;
interrupts = <35 IRQ_TYPE_LEVEL_HIGH 3>; interrupts = <35 IRQ_TYPE_LEVEL_HIGH 3>;
pinctrl-names = "default"; pinctrl-names = "default";
......
...@@ -20,14 +20,6 @@ config NET_CADENCE ...@@ -20,14 +20,6 @@ config NET_CADENCE
if NET_CADENCE if NET_CADENCE
config ARM_AT91_ETHER
tristate "AT91RM9200 Ethernet support"
depends on HAS_DMA && (ARCH_AT91 || COMPILE_TEST)
select MACB
---help---
If you wish to compile a kernel for the AT91RM9200 and enable
ethernet support, then you should always answer Y to this.
config MACB config MACB
tristate "Cadence MACB/GEM support" tristate "Cadence MACB/GEM support"
depends on HAS_DMA depends on HAS_DMA
......
...@@ -2,5 +2,4 @@ ...@@ -2,5 +2,4 @@
# Makefile for the Atmel network device drivers. # Makefile for the Atmel network device drivers.
# #
obj-$(CONFIG_ARM_AT91_ETHER) += at91_ether.o
obj-$(CONFIG_MACB) += macb.o obj-$(CONFIG_MACB) += macb.o
This diff is collapsed.
This diff is collapsed.
...@@ -391,6 +391,8 @@ ...@@ -391,6 +391,8 @@
/* Capability mask bits */ /* Capability mask bits */
#define MACB_CAPS_ISR_CLEAR_ON_WRITE 0x00000001 #define MACB_CAPS_ISR_CLEAR_ON_WRITE 0x00000001
#define MACB_CAPS_USRIO_HAS_CLKEN 0x00000002
#define MACB_CAPS_USRIO_DEFAULT_IS_MII 0x00000004
#define MACB_CAPS_FIFO_MODE 0x10000000 #define MACB_CAPS_FIFO_MODE 0x10000000
#define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000 #define MACB_CAPS_GIGABIT_MODE_AVAILABLE 0x20000000
#define MACB_CAPS_SG_DISABLED 0x40000000 #define MACB_CAPS_SG_DISABLED 0x40000000
...@@ -752,6 +754,7 @@ struct macb_or_gem_ops { ...@@ -752,6 +754,7 @@ struct macb_or_gem_ops {
struct macb_config { struct macb_config {
u32 caps; u32 caps;
unsigned int dma_burst_length; unsigned int dma_burst_length;
int (*init)(struct platform_device *pdev);
}; };
struct macb_queue { struct macb_queue {
...@@ -822,15 +825,6 @@ struct macb { ...@@ -822,15 +825,6 @@ struct macb {
u64 ethtool_stats[GEM_STATS_LEN]; u64 ethtool_stats[GEM_STATS_LEN];
}; };
extern const struct ethtool_ops macb_ethtool_ops;
int macb_mii_init(struct macb *bp);
int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
struct net_device_stats *macb_get_stats(struct net_device *dev);
void macb_set_rx_mode(struct net_device *dev);
void macb_set_hwaddr(struct macb *bp);
void macb_get_hwaddr(struct macb *bp);
static inline bool macb_is_gem(struct macb *bp) static inline bool macb_is_gem(struct macb *bp)
{ {
return !!(bp->caps & MACB_CAPS_MACB_IS_GEM); return !!(bp->caps & MACB_CAPS_MACB_IS_GEM);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment