mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 19:00:53 +07:00
net: phy: adin: add support for Analog Devices PHYs
This change adds support for Analog Devices Industrial Ethernet PHYs. Particularly the PHYs this driver adds support for: * ADIN1200 - Robust, Industrial, Low Power 10/100 Ethernet PHY * ADIN1300 - Robust, Industrial, Low Latency 10/100/1000 Gigabit Ethernet PHY The 2 chips are register compatible with one another. The main difference being that ADIN1200 doesn't operate in gigabit mode. The chips can be operated by the Generic PHY driver as well via the standard IEEE PHY registers (0x0000 - 0x000F) which are supported by the kernel as well. This assumes that configuration of the PHY has been done completely in HW, according to spec. Configuration can also be done via registers, which will be supported by this driver. Datasheets: https://www.analog.com/media/en/technical-documentation/data-sheets/ADIN1300.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/ADIN1200.pdf Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
459c5fb443
commit
9c1029818c
@ -938,6 +938,13 @@ S: Supported
|
|||||||
F: drivers/mux/adgs1408.c
|
F: drivers/mux/adgs1408.c
|
||||||
F: Documentation/devicetree/bindings/mux/adi,adgs1408.txt
|
F: Documentation/devicetree/bindings/mux/adi,adgs1408.txt
|
||||||
|
|
||||||
|
ANALOG DEVICES INC ADIN DRIVER
|
||||||
|
M: Alexandru Ardelean <alexaundru.ardelean@analog.com>
|
||||||
|
L: netdev@vger.kernel.org
|
||||||
|
W: http://ez.analog.com/community/linux-device-drivers
|
||||||
|
S: Supported
|
||||||
|
F: drivers/net/phy/adin.c
|
||||||
|
|
||||||
ANALOG DEVICES INC ADIS DRIVER LIBRARY
|
ANALOG DEVICES INC ADIS DRIVER LIBRARY
|
||||||
M: Alexandru Ardelean <alexandru.ardelean@analog.com>
|
M: Alexandru Ardelean <alexandru.ardelean@analog.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -257,6 +257,15 @@ config SFP
|
|||||||
depends on HWMON || HWMON=n
|
depends on HWMON || HWMON=n
|
||||||
select MDIO_I2C
|
select MDIO_I2C
|
||||||
|
|
||||||
|
config ADIN_PHY
|
||||||
|
tristate "Analog Devices Industrial Ethernet PHYs"
|
||||||
|
help
|
||||||
|
Adds support for the Analog Devices Industrial Ethernet PHYs.
|
||||||
|
Currently supports the:
|
||||||
|
- ADIN1200 - Robust,Industrial, Low Power 10/100 Ethernet PHY
|
||||||
|
- ADIN1300 - Robust,Industrial, Low Latency 10/100/1000 Gigabit
|
||||||
|
Ethernet PHY
|
||||||
|
|
||||||
config AMD_PHY
|
config AMD_PHY
|
||||||
tristate "AMD PHYs"
|
tristate "AMD PHYs"
|
||||||
---help---
|
---help---
|
||||||
|
@ -47,6 +47,7 @@ obj-$(CONFIG_SFP) += sfp.o
|
|||||||
sfp-obj-$(CONFIG_SFP) += sfp-bus.o
|
sfp-obj-$(CONFIG_SFP) += sfp-bus.o
|
||||||
obj-y += $(sfp-obj-y) $(sfp-obj-m)
|
obj-y += $(sfp-obj-y) $(sfp-obj-m)
|
||||||
|
|
||||||
|
obj-$(CONFIG_ADIN_PHY) += adin.o
|
||||||
obj-$(CONFIG_AMD_PHY) += amd.o
|
obj-$(CONFIG_AMD_PHY) += amd.o
|
||||||
aquantia-objs += aquantia_main.o
|
aquantia-objs += aquantia_main.o
|
||||||
ifdef CONFIG_HWMON
|
ifdef CONFIG_HWMON
|
||||||
|
49
drivers/net/phy/adin.c
Normal file
49
drivers/net/phy/adin.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/**
|
||||||
|
* Driver for Analog Devices Industrial Ethernet PHYs
|
||||||
|
*
|
||||||
|
* Copyright 2019 Analog Devices Inc.
|
||||||
|
*/
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/mii.h>
|
||||||
|
#include <linux/phy.h>
|
||||||
|
|
||||||
|
#define PHY_ID_ADIN1200 0x0283bc20
|
||||||
|
#define PHY_ID_ADIN1300 0x0283bc30
|
||||||
|
|
||||||
|
static int adin_config_init(struct phy_device *phydev)
|
||||||
|
{
|
||||||
|
return genphy_config_init(phydev);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct phy_driver adin_driver[] = {
|
||||||
|
{
|
||||||
|
PHY_ID_MATCH_MODEL(PHY_ID_ADIN1200),
|
||||||
|
.name = "ADIN1200",
|
||||||
|
.config_init = adin_config_init,
|
||||||
|
.config_aneg = genphy_config_aneg,
|
||||||
|
.read_status = genphy_read_status,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
PHY_ID_MATCH_MODEL(PHY_ID_ADIN1300),
|
||||||
|
.name = "ADIN1300",
|
||||||
|
.config_init = adin_config_init,
|
||||||
|
.config_aneg = genphy_config_aneg,
|
||||||
|
.read_status = genphy_read_status,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
module_phy_driver(adin_driver);
|
||||||
|
|
||||||
|
static struct mdio_device_id __maybe_unused adin_tbl[] = {
|
||||||
|
{ PHY_ID_MATCH_MODEL(PHY_ID_ADIN1200) },
|
||||||
|
{ PHY_ID_MATCH_MODEL(PHY_ID_ADIN1300) },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
MODULE_DEVICE_TABLE(mdio, adin_tbl);
|
||||||
|
MODULE_DESCRIPTION("Analog Devices Industrial Ethernet PHY driver");
|
||||||
|
MODULE_LICENSE("GPL");
|
Loading…
Reference in New Issue
Block a user