mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-25 05:04:23 +08:00
net: dsa: add driver for NXP SJA1105 L2 switch
The SJA1105 driver is largely reused from Linux. Its programming model is that it is blank out of reset, and it waits for a static configuration stream over SPI, which contains all runtime parameters (it has no notion of "default values"). Keeping a binary array for the configuration stream would have meant that aspects such as the CPU port and the MAC speeds could have not been configured easily, and would have been static and board-dependent. Live-patching the binary array means recalculating the static config table CRCs, which is not a fun process. So we create an abstraction over the static config tables, using the packing API, same as in Linux. The tables are kept as C structures, and the binary configuration stream is constructed on-the-go, with CRC and all. All static config tables instantiated in this driver are mandatory. The hardware reference manual can be found at: https://www.nxp.com/docs/en/user-guide/UM10944.pdf For tagging, a simplified version of tag_8021q from Linux is used. The VLAN EtherType is the same (0xdadb) but since we don't want switching in U-Boot, there is no reason to have a TX VLAN and an RX VLAN for each port. We just need the RX VLANs to act as the unique pvid of each front-panel port, to decode the switch port number. The RX VLAN is used for both RX and TX. The device tree bindings are the same as in Linux. Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
This commit is contained in:
parent
e3789a7262
commit
f24b666b22
@ -554,6 +554,22 @@ config RTL8169
|
||||
This driver supports Realtek 8169 series gigabit ethernet family of
|
||||
PCI/PCIe chipsets/adapters.
|
||||
|
||||
config SJA1105
|
||||
bool "NXP SJA1105 Ethernet switch family driver"
|
||||
depends on DM_DSA && DM_SPI
|
||||
select BITREVERSE
|
||||
help
|
||||
This is the driver for the NXP SJA1105 automotive Ethernet switch
|
||||
family. These are 5-port devices and are managed over an SPI
|
||||
interface. Probing is handled based on OF bindings. The driver
|
||||
supports the following revisions:
|
||||
- SJA1105E (Gen. 1, No TT-Ethernet)
|
||||
- SJA1105T (Gen. 1, TT-Ethernet)
|
||||
- SJA1105P (Gen. 2, No SGMII, No TT-Ethernet)
|
||||
- SJA1105Q (Gen. 2, No SGMII, TT-Ethernet)
|
||||
- SJA1105R (Gen. 2, SGMII, No TT-Ethernet)
|
||||
- SJA1105S (Gen. 2, SGMII, TT-Ethernet)
|
||||
|
||||
config SMC911X
|
||||
bool "SMSC LAN911x and LAN921x controller driver"
|
||||
|
||||
|
@ -29,6 +29,7 @@ obj-$(CONFIG_DM_ETH_PHY) += eth-phy-uclass.o
|
||||
obj-$(CONFIG_E1000) += e1000.o
|
||||
obj-$(CONFIG_E1000_SPI) += e1000_spi.o
|
||||
obj-$(CONFIG_EEPRO100) += eepro100.o
|
||||
obj-$(CONFIG_SJA1105) += sja1105.o
|
||||
obj-$(CONFIG_SUN4I_EMAC) += sunxi_emac.o
|
||||
obj-$(CONFIG_SUN8I_EMAC) += sun8i_emac.o
|
||||
obj-$(CONFIG_EP93XX) += ep93xx_eth.o
|
||||
|
2807
drivers/net/sja1105.c
Normal file
2807
drivers/net/sja1105.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user