Skip to content

Commit

Permalink
Merge branch 'dsa-LAN9303'
Browse files Browse the repository at this point in the history
Juergen Borleis says:

====================
net: dsa: add SMSC/Microchip LAN9303 three port ethernet switch driver

The LAN9303 is a three port 10/100 ethernet switch with integrated phys
for the two external ethernet ports. The third port is an RMII/MII
interface to a host master network interface (e.g. fixed link).

While the LAN9303 device itself supports offload packet processing, this
driver does not make use of it yet. This driver just configures the device
to provide two separate network interfaces (which is the default state of
a DSA device).

Please note: the "MDIO managed mode" driver part isn't tested yet. I have
used and tested the "I2C managed mode" only.

Changes in v6:

- fix support to use the driver as a module (core, i2c and mdio)
- license info added in all parts of the driver (for module support)

Changes in v5:

- add missing include file to 'net/dsa/tag_lan9303.c'

Changes in v4:

- rebased on net-next, 'net/dsa/tag_lan9303.c' adapted to changed API

Changes in v3:

- 'ds_to_lan9303()' removed
- special PHY reg MII_LAN911X_SPECIAL_CONTROL_STATUS mapping removed
- compatible strings for I2C and MDIO are now different
- MDIO-managed-mode devicetree binding added (still compile time tested only)

Changes in v2:

- code moved to 'drivers/net/dsa'
- timeouts in completion wait loops
- macros instead of various magic numbers
- development code removed
- devicetree property names changed
- devicetree example adapted
- tried to avoid to mix 'switching' and 'forwarding'...

Comments are welcome.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Apr 20, 2017
2 parents 8dc7d11 + dc70058 commit 0ef9059
Show file tree
Hide file tree
Showing 13 changed files with 1,444 additions and 0 deletions.
105 changes: 105 additions & 0 deletions Documentation/devicetree/bindings/net/dsa/lan9303.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
SMSC/MicroChip LAN9303 three port ethernet switch
-------------------------------------------------

Required properties:

- compatible: should be
- "smsc,lan9303-i2c" for I2C managed mode
or
- "smsc,lan9303-mdio" for mdio managed mode

Optional properties:

- reset-gpios: GPIO to be used to reset the whole device
- reset-duration: reset duration in milliseconds, defaults to 200 ms

Subnodes:

The integrated switch subnode should be specified according to the binding
described in dsa/dsa.txt. The CPU port of this switch is always port 0.

Note: always use 'reg = <0/1/2>;' for the three DSA ports, even if the device is
configured to use 1/2/3 instead. This hardware configuration will be
auto-detected and mapped accordingly.

Example:

I2C managed mode:

master: masterdevice@X {
status = "okay";

fixed-link { /* RMII fixed link to LAN9303 */
speed = <100>;
full-duplex;
};
};

switch: switch@a {
compatible = "smsc,lan9303-i2c";
reg = <0xa>;
status = "okay";
reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
reset-duration = <200>;

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 { /* RMII fixed link to master */
reg = <0>;
label = "cpu";
ethernet = <&master>;
};

port@1 { /* external port 1 */
reg = <1>;
label = "lan1;
};

port@2 { /* external port 2 */
reg = <2>;
label = "lan2";
};
};
};

MDIO managed mode:

master: masterdevice@X {
status = "okay";
phy-handle = <&switch>;

mdio {
#address-cells = <1>;
#size-cells = <0>;

switch: switch-phy@0 {
compatible = "smsc,lan9303-mdio";
reg = <0>;
reset-gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
reset-duration = <100>;

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
label = "cpu";
ethernet = <&master>;
};

port@1 { /* external port 1 */
reg = <1>;
label = "lan1;
};

port@2 { /* external port 2 */
reg = <2>;
label = "lan2";
};
};
};
};
};
24 changes: 24 additions & 0 deletions drivers/net/dsa/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,28 @@ config NET_DSA_MT7530
This enables support for the Mediatek MT7530 Ethernet switch
chip.

config NET_DSA_SMSC_LAN9303
tristate
select NET_DSA_TAG_LAN9303
---help---
This enables support for the SMSC/Microchip LAN9303 3 port ethernet
switch chips.

config NET_DSA_SMSC_LAN9303_I2C
tristate "SMSC/Microchip LAN9303 3-ports 10/100 ethernet switch in I2C managed mode"
depends on NET_DSA
select NET_DSA_SMSC_LAN9303
select REGMAP_I2C
---help---
Enable access functions if the SMSC/Microchip LAN9303 is configured
for I2C managed mode.

config NET_DSA_SMSC_LAN9303_MDIO
tristate "SMSC/Microchip LAN9303 3-ports 10/100 ethernet switch in MDIO managed mode"
depends on NET_DSA
select NET_DSA_SMSC_LAN9303
---help---
Enable access functions if the SMSC/Microchip LAN9303 is configured
for MDIO managed mode.

endmenu
3 changes: 3 additions & 0 deletions drivers/net/dsa/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ obj-$(CONFIG_NET_DSA_BCM_SF2) += bcm-sf2.o
bcm-sf2-objs := bcm_sf2.o bcm_sf2_cfp.o
obj-$(CONFIG_NET_DSA_QCA8K) += qca8k.o
obj-$(CONFIG_NET_DSA_MT7530) += mt7530.o
obj-$(CONFIG_NET_DSA_SMSC_LAN9303) += lan9303-core.o
obj-$(CONFIG_NET_DSA_SMSC_LAN9303_I2C) += lan9303_i2c.o
obj-$(CONFIG_NET_DSA_SMSC_LAN9303_MDIO) += lan9303_mdio.o
obj-y += b53/
obj-y += mv88e6xxx/
obj-$(CONFIG_NET_DSA_LOOP) += dsa_loop.o dsa_loop_bdinfo.o
Loading

0 comments on commit 0ef9059

Please sign in to comment.