forked from Minki/linux
net: dsa: LAN9303: Add basic support for LAN9354
Adding support for the LAN9354 device by allowing it to use the LAN9303 DSA driver. These devices have the same underlying access and control methods and from a feature set point of view the LAN9354 is a superset of the LAN9303. The MDIO access method has been tested on a SAMA5D3-EDS board with a LAN9354 RMII daughter card. While the SPI access method should also be the same, it has not been tested and as such is not included at this time. Signed-off-by: Jerry Ray <jerry.ray@microchip.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
732f374e23
commit
13248b9750
@ -76,7 +76,7 @@ config NET_DSA_SMSC_LAN9303
|
||||
select NET_DSA_TAG_LAN9303
|
||||
select REGMAP
|
||||
help
|
||||
This enables support for the SMSC/Microchip LAN9303 3 port ethernet
|
||||
This enables support for the Microchip LAN9303/LAN9354 3 port ethernet
|
||||
switch chips.
|
||||
|
||||
config NET_DSA_SMSC_LAN9303_I2C
|
||||
@ -90,11 +90,11 @@ config NET_DSA_SMSC_LAN9303_I2C
|
||||
for I2C managed mode.
|
||||
|
||||
config NET_DSA_SMSC_LAN9303_MDIO
|
||||
tristate "SMSC/Microchip LAN9303 3-ports 10/100 ethernet switch in MDIO managed mode"
|
||||
tristate "Microchip LAN9303/LAN9354 3-ports 10/100 ethernet switch in MDIO managed mode"
|
||||
select NET_DSA_SMSC_LAN9303
|
||||
depends on VLAN_8021Q || VLAN_8021Q=n
|
||||
help
|
||||
Enable access functions if the SMSC/Microchip LAN9303 is configured
|
||||
Enable access functions if the Microchip LAN9303/LAN9354 is configured
|
||||
for MDIO managed mode.
|
||||
|
||||
config NET_DSA_VITESSE_VSC73XX
|
||||
|
@ -22,6 +22,10 @@
|
||||
*/
|
||||
#define LAN9303_CHIP_REV 0x14
|
||||
# define LAN9303_CHIP_ID 0x9303
|
||||
# define LAN9352_CHIP_ID 0x9352
|
||||
# define LAN9353_CHIP_ID 0x9353
|
||||
# define LAN9354_CHIP_ID 0x9354
|
||||
# define LAN9355_CHIP_ID 0x9355
|
||||
#define LAN9303_IRQ_CFG 0x15
|
||||
# define LAN9303_IRQ_CFG_IRQ_ENABLE BIT(8)
|
||||
# define LAN9303_IRQ_CFG_IRQ_POL BIT(4)
|
||||
@ -855,8 +859,9 @@ static int lan9303_check_device(struct lan9303 *chip)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((reg >> 16) != LAN9303_CHIP_ID) {
|
||||
dev_err(chip->dev, "expecting LAN9303 chip, but found: %X\n",
|
||||
if (((reg >> 16) != LAN9303_CHIP_ID) &&
|
||||
((reg >> 16) != LAN9354_CHIP_ID)) {
|
||||
dev_err(chip->dev, "unexpected device found: LAN%4.4X\n",
|
||||
reg >> 16);
|
||||
return -ENODEV;
|
||||
}
|
||||
@ -872,7 +877,7 @@ static int lan9303_check_device(struct lan9303 *chip)
|
||||
if (ret)
|
||||
dev_warn(chip->dev, "failed to disable switching %d\n", ret);
|
||||
|
||||
dev_info(chip->dev, "Found LAN9303 rev. %u\n", reg & 0xffff);
|
||||
dev_info(chip->dev, "Found LAN%4.4X rev. %u\n", (reg >> 16), reg & 0xffff);
|
||||
|
||||
ret = lan9303_detect_phy_setup(chip);
|
||||
if (ret) {
|
||||
|
@ -158,6 +158,7 @@ static void lan9303_mdio_shutdown(struct mdio_device *mdiodev)
|
||||
|
||||
static const struct of_device_id lan9303_mdio_of_match[] = {
|
||||
{ .compatible = "smsc,lan9303-mdio" },
|
||||
{ .compatible = "microchip,lan9354-mdio" },
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lan9303_mdio_of_match);
|
||||
|
Loading…
Reference in New Issue
Block a user