From 77b508d34b9485c981b084e8169dd64b381935b6 Mon Sep 17 00:00:00 2001 From: James Byrne Date: Wed, 6 Mar 2019 12:48:27 +0000 Subject: net: phy: micrel: Allow KSZ8xxx and KSZ90x1 to be used together Commit d397f7c45b0b ("net: phy: micrel: Separate KSZ9000 drivers from KSZ8000 drivers") separated the KSZ8xxx and KSZ90x1 drivers and warns that you shouldn't select both of them due to a device ID clash between the KSZ9021 and the KS8721, asserting that "it is highly unlikely for a system to contain both a KSZ8000 and a KSZ9000 PHY". Unfortunately boards like the SAMA5D3xEK do contain both types of PHY, but fortunately the Linux Micrel PHY driver provides a solution by using different PHY ID and mask values to distinguish these chips. This commit contains the following changes: - The PHY ID and mask values for the KSZ9021 and the KS8721 now match those used by the Linux driver. - The warnings about not enabling both drivers have been removed. - The description for PHY_MICREL_KSZ8XXX has been corrected (these are 10/100 PHYs, not GbE PHYs). - PHY_MICREL_KSZ9021 and PHY_MICREL_KSZ9031 no longer select PHY_GIGE since this is selected by PHY_MICREL_KSZ90X1. - All of the relevant defconfig files have been updated now that PHY_MICREL_KSZ8XXX does not default to 'Y'. Signed-off-by: James Byrne Acked-by: Joe Hershberger --- drivers/net/phy/Kconfig | 19 +++++-------------- drivers/net/phy/micrel_ksz8xxx.c | 8 +++++--- drivers/net/phy/micrel_ksz90x1.c | 2 +- 3 files changed, 11 insertions(+), 18 deletions(-) (limited to 'drivers/net') diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig index 631b52b1cf..2a3da068c9 100644 --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig @@ -119,21 +119,19 @@ config PHY_MICREL bool "Micrel Ethernet PHYs support" help Enable support for the GbE PHYs manufactured by Micrel (now - a part of Microchip). This includes drivers for the KSZ804, - KSZ8031, KSZ8051, KSZ8081, KSZ8895, KSZ886x, KSZ8721 - either/or KSZ9021 (see the "Micrel KSZ9021 family support" - config option for details), and KSZ9031 (if configured). + a part of Microchip). This includes drivers for the KSZ804, KSZ8031, + KSZ8051, KSZ8081, KSZ8895, KSZ886x and KSZ8721 (if "Micrel KSZ8xxx + family support" is selected) and the KSZ9021 and KSZ9031 (if "Micrel + KSZ90x1 family support" is selected). if PHY_MICREL config PHY_MICREL_KSZ9021 bool - select PHY_GIGE select PHY_MICREL_KSZ90X1 config PHY_MICREL_KSZ9031 bool - select PHY_GIGE select PHY_MICREL_KSZ90X1 config PHY_MICREL_KSZ90X1 @@ -146,20 +144,13 @@ config PHY_MICREL_KSZ90X1 delays configured in the device tree will be applied to the PHY during initialization. - This should not be enabled at the same time with PHY_MICREL_KSZ8XXX - as the KSZ9021 and KS8721 share the same ID. - config PHY_MICREL_KSZ8XXX bool "Micrel KSZ8xxx family support" - default y if !PHY_MICREL_KSZ90X1 help - Enable support for the 8000 series GbE PHYs manufactured by Micrel + Enable support for the 8000 series 10/100 PHYs manufactured by Micrel (now a part of Microchip). This includes drivers for the KSZ804, KSZ8031, KSZ8051, KSZ8081, KSZ8895, KSZ886x, and KSZ8721. - This should not be enabled at the same time with PHY_MICREL_KSZ90X1 - as the KSZ9021 and KS8721 share the same ID. - endif # PHY_MICREL config PHY_MSCC diff --git a/drivers/net/phy/micrel_ksz8xxx.c b/drivers/net/phy/micrel_ksz8xxx.c index 3411150ab9..daa57ce33c 100644 --- a/drivers/net/phy/micrel_ksz8xxx.c +++ b/drivers/net/phy/micrel_ksz8xxx.c @@ -147,11 +147,13 @@ static struct phy_driver ksz8895_driver = { .shutdown = &genphy_shutdown, }; -/* Micrel used the exact same part number for the KSZ9021. */ +/* Micrel used the exact same model number for the KSZ9021, + * so the revision number is used to distinguish them. + */ static struct phy_driver KS8721_driver = { .name = "Micrel KS8721BL", - .uid = 0x221610, - .mask = 0xfffff0, + .uid = 0x221618, + .mask = 0xfffffc, .features = PHY_BASIC_FEATURES, .config = &genphy_config, .startup = &genphy_startup, diff --git a/drivers/net/phy/micrel_ksz90x1.c b/drivers/net/phy/micrel_ksz90x1.c index 8dec9f2367..f18e40a2fe 100644 --- a/drivers/net/phy/micrel_ksz90x1.c +++ b/drivers/net/phy/micrel_ksz90x1.c @@ -285,7 +285,7 @@ static int ksz9021_config(struct phy_device *phydev) static struct phy_driver ksz9021_driver = { .name = "Micrel ksz9021", .uid = 0x221610, - .mask = 0xfffff0, + .mask = 0xfffffe, .features = PHY_GBIT_FEATURES, .config = &ksz9021_config, .startup = &ksz90xx_startup, -- cgit