-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
Showing
13 changed files
with
1,444 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"; | ||
}; | ||
}; | ||
}; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.