net: phy: micrel: Separate KSZ9000 drivers from KSZ8000 drivers
authorAlexandru Gagniuc <alex.g@adaptrum.com>
Fri, 7 Jul 2017 18:36:57 +0000 (11:36 -0700)
committerJoe Hershberger <joe.hershberger@ni.com>
Mon, 7 Aug 2017 20:18:30 +0000 (15:18 -0500)
commitd397f7c45b0b87a7e1083c57a320c559e7848268
treea2600e0594c196b43548178246c5692483432634
parentcb543d30df00d4db67f429dfa5515227e7af4014
net: phy: micrel: Separate KSZ9000 drivers from KSZ8000 drivers

The KS8721BL and KSZ9021 PHYs are software-incompatible, yet they
share the same ID. Drivers for bothe PHYs cannot safely coexist, so
the solution was to use #ifdefs to select between the two drivers.

As a result KSZ9031, which has a unique ID, is now caught in the
crossfire. Unless CONFIG_PHY_MICREL_KSZ9031 is defined, the KSZ9031
will not function properly, as some essential configuration code is
ifdef'd-out.

To prevent such situations, move the KSZ9000 drivers to a separate
file, and place them under a separate Kconfig option. While it is
possible to enable both KSZ8000 and KSZ9000 drivers at the same time,
the assumption is that it is highly unlikely for a system to contain
both a KSZ8000 and a KSZ9000 PHY, and that only one of the drivers
will be enabled at any given time.

Signed-off-by: Alexandru Gagniuc <alex.g@adaptrum.com>
Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/phy/Kconfig
drivers/net/phy/Makefile
drivers/net/phy/micrel_ksz8xxx.c [moved from drivers/net/phy/micrel.c with 99% similarity]
drivers/net/phy/micrel_ksz90x1.c [new file with mode: 0644]
drivers/net/phy/phy.c
include/phy.h