Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'net-phy-make-phy_package-a-separate-module'

Heiner Kallweit says:

====================
net: phy: make phy_package a separate module

Only a handful of PHY drivers needs the PHY package functionality,
therefore make it a separate module which is built only if needed.
====================

Link: https://patch.msgid.link/eec346a4-e903-48af-8150-0191932a7a0b@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+91 -72
+6
drivers/net/phy/Kconfig
··· 25 25 config SWPHY 26 26 bool 27 27 28 + config PHY_PACKAGE 29 + tristate 30 + 28 31 config LED_TRIGGER_PHY 29 32 bool "Support LED triggers for tracking link state" 30 33 depends on LEDS_TRIGGERS ··· 160 157 tristate "Broadcom BCM54140 PHY" 161 158 depends on HWMON || HWMON=n 162 159 select BCM_NET_PHYLIB 160 + select PHY_PACKAGE 163 161 help 164 162 Support the Broadcom BCM54140 Quad SGMII/QSGMII PHY. 165 163 ··· 296 292 config MICREL_PHY 297 293 tristate "Micrel PHYs" 298 294 depends on PTP_1588_CLOCK_OPTIONAL 295 + select PHY_PACKAGE 299 296 help 300 297 Supports the KSZ9021, VSC8201, KS8001 PHYs. 301 298 ··· 328 323 depends on MACSEC || MACSEC=n 329 324 depends on PTP_1588_CLOCK_OPTIONAL || !NETWORK_PHY_TIMESTAMPING 330 325 select CRYPTO_LIB_AES if MACSEC 326 + select PHY_PACKAGE 331 327 help 332 328 Currently supports VSC8514, VSC8530, VSC8531, VSC8540 and VSC8541 PHYs 333 329
+2 -1
drivers/net/phy/Makefile
··· 3 3 4 4 libphy-y := phy.o phy-c45.o phy-core.o phy_device.o \ 5 5 linkmode.o phy_link_topology.o \ 6 - phy_package.o phy_caps.o mdio_bus_provider.o 6 + phy_caps.o mdio_bus_provider.o 7 7 mdio-bus-y += mdio_bus.o mdio_device.o 8 8 9 9 ifdef CONFIG_PHYLIB ··· 19 19 obj-$(CONFIG_PHYLINK) += phylink.o 20 20 obj-$(CONFIG_PHYLIB) += libphy.o 21 21 obj-$(CONFIG_PHYLIB) += mdio_devres.o 22 + obj-$(CONFIG_PHY_PACKAGE) += phy_package.o 22 23 23 24 obj-$(CONFIG_NETWORK_PHY_TIMESTAMPING) += mii_timestamper.o 24 25
+1
drivers/net/phy/mediatek/Kconfig
··· 27 27 depends on ARCH_AIROHA || (ARCH_MEDIATEK && NVMEM_MTK_EFUSE) || \ 28 28 COMPILE_TEST 29 29 select MTK_NET_PHYLIB 30 + select PHY_PACKAGE 30 31 help 31 32 Supports MediaTek SoC built-in Gigabit Ethernet PHYs. 32 33
+6 -69
drivers/net/phy/phy-core.c
··· 375 375 devad | MII_MMD_CTRL_NOINCR); 376 376 } 377 377 378 - static int mmd_phy_read(struct mii_bus *bus, int phy_addr, bool is_c45, 379 - int devad, u32 regnum) 378 + int mmd_phy_read(struct mii_bus *bus, int phy_addr, bool is_c45, 379 + int devad, u32 regnum) 380 380 { 381 381 if (is_c45) 382 382 return __mdiobus_c45_read(bus, phy_addr, devad, regnum); ··· 385 385 /* Read the content of the MMD's selected register */ 386 386 return __mdiobus_read(bus, phy_addr, MII_MMD_DATA); 387 387 } 388 + EXPORT_SYMBOL_GPL(mmd_phy_read); 388 389 389 - static int mmd_phy_write(struct mii_bus *bus, int phy_addr, bool is_c45, 390 - int devad, u32 regnum, u16 val) 390 + int mmd_phy_write(struct mii_bus *bus, int phy_addr, bool is_c45, 391 + int devad, u32 regnum, u16 val) 391 392 { 392 393 if (is_c45) 393 394 return __mdiobus_c45_write(bus, phy_addr, devad, regnum, val); ··· 397 396 /* Write the data into MMD's selected register */ 398 397 return __mdiobus_write(bus, phy_addr, MII_MMD_DATA, val); 399 398 } 399 + EXPORT_SYMBOL_GPL(mmd_phy_write); 400 400 401 401 /** 402 402 * __phy_read_mmd - Convenience function for reading a register ··· 486 484 return ret; 487 485 } 488 486 EXPORT_SYMBOL(phy_write_mmd); 489 - 490 - /** 491 - * __phy_package_read_mmd - read MMD reg relative to PHY package base addr 492 - * @phydev: The phy_device struct 493 - * @addr_offset: The offset to be added to PHY package base_addr 494 - * @devad: The MMD to read from 495 - * @regnum: The register on the MMD to read 496 - * 497 - * Convenience helper for reading a register of an MMD on a given PHY 498 - * using the PHY package base address. The base address is added to 499 - * the addr_offset value. 500 - * 501 - * Same calling rules as for __phy_read(); 502 - * 503 - * NOTE: It's assumed that the entire PHY package is either C22 or C45. 504 - */ 505 - int __phy_package_read_mmd(struct phy_device *phydev, 506 - unsigned int addr_offset, int devad, 507 - u32 regnum) 508 - { 509 - int addr = phy_package_address(phydev, addr_offset); 510 - 511 - if (addr < 0) 512 - return addr; 513 - 514 - if (regnum > (u16)~0 || devad > 32) 515 - return -EINVAL; 516 - 517 - return mmd_phy_read(phydev->mdio.bus, addr, phydev->is_c45, devad, 518 - regnum); 519 - } 520 - EXPORT_SYMBOL(__phy_package_read_mmd); 521 - 522 - /** 523 - * __phy_package_write_mmd - write MMD reg relative to PHY package base addr 524 - * @phydev: The phy_device struct 525 - * @addr_offset: The offset to be added to PHY package base_addr 526 - * @devad: The MMD to write to 527 - * @regnum: The register on the MMD to write 528 - * @val: value to write to @regnum 529 - * 530 - * Convenience helper for writing a register of an MMD on a given PHY 531 - * using the PHY package base address. The base address is added to 532 - * the addr_offset value. 533 - * 534 - * Same calling rules as for __phy_write(); 535 - * 536 - * NOTE: It's assumed that the entire PHY package is either C22 or C45. 537 - */ 538 - int __phy_package_write_mmd(struct phy_device *phydev, 539 - unsigned int addr_offset, int devad, 540 - u32 regnum, u16 val) 541 - { 542 - int addr = phy_package_address(phydev, addr_offset); 543 - 544 - if (addr < 0) 545 - return addr; 546 - 547 - if (regnum > (u16)~0 || devad > 32) 548 - return -EINVAL; 549 - 550 - return mmd_phy_write(phydev->mdio.bus, addr, phydev->is_c45, devad, 551 - regnum, val); 552 - } 553 - EXPORT_SYMBOL(__phy_package_write_mmd); 554 487 555 488 /** 556 489 * phy_modify_changed - Function for modifying a PHY register
+70 -1
drivers/net/phy/phy_package.c
··· 52 52 } 53 53 EXPORT_SYMBOL_GPL(phy_package_get_priv); 54 54 55 - int phy_package_address(struct phy_device *phydev, unsigned int addr_offset) 55 + static int phy_package_address(struct phy_device *phydev, 56 + unsigned int addr_offset) 56 57 { 57 58 struct phy_package_shared *shared = phydev->shared; 58 59 u8 base_addr = shared->base_addr; ··· 90 89 return __mdiobus_write(phydev->mdio.bus, addr, regnum, val); 91 90 } 92 91 EXPORT_SYMBOL_GPL(__phy_package_write); 92 + 93 + /** 94 + * __phy_package_read_mmd - read MMD reg relative to PHY package base addr 95 + * @phydev: The phy_device struct 96 + * @addr_offset: The offset to be added to PHY package base_addr 97 + * @devad: The MMD to read from 98 + * @regnum: The register on the MMD to read 99 + * 100 + * Convenience helper for reading a register of an MMD on a given PHY 101 + * using the PHY package base address. The base address is added to 102 + * the addr_offset value. 103 + * 104 + * Same calling rules as for __phy_read(); 105 + * 106 + * NOTE: It's assumed that the entire PHY package is either C22 or C45. 107 + */ 108 + int __phy_package_read_mmd(struct phy_device *phydev, 109 + unsigned int addr_offset, int devad, 110 + u32 regnum) 111 + { 112 + int addr = phy_package_address(phydev, addr_offset); 113 + 114 + if (addr < 0) 115 + return addr; 116 + 117 + if (regnum > (u16)~0 || devad > 32) 118 + return -EINVAL; 119 + 120 + return mmd_phy_read(phydev->mdio.bus, addr, phydev->is_c45, devad, 121 + regnum); 122 + } 123 + EXPORT_SYMBOL(__phy_package_read_mmd); 124 + 125 + /** 126 + * __phy_package_write_mmd - write MMD reg relative to PHY package base addr 127 + * @phydev: The phy_device struct 128 + * @addr_offset: The offset to be added to PHY package base_addr 129 + * @devad: The MMD to write to 130 + * @regnum: The register on the MMD to write 131 + * @val: value to write to @regnum 132 + * 133 + * Convenience helper for writing a register of an MMD on a given PHY 134 + * using the PHY package base address. The base address is added to 135 + * the addr_offset value. 136 + * 137 + * Same calling rules as for __phy_write(); 138 + * 139 + * NOTE: It's assumed that the entire PHY package is either C22 or C45. 140 + */ 141 + int __phy_package_write_mmd(struct phy_device *phydev, 142 + unsigned int addr_offset, int devad, 143 + u32 regnum, u16 val) 144 + { 145 + int addr = phy_package_address(phydev, addr_offset); 146 + 147 + if (addr < 0) 148 + return addr; 149 + 150 + if (regnum > (u16)~0 || devad > 32) 151 + return -EINVAL; 152 + 153 + return mmd_phy_write(phydev->mdio.bus, addr, phydev->is_c45, devad, 154 + regnum, val); 155 + } 156 + EXPORT_SYMBOL(__phy_package_write_mmd); 93 157 94 158 static bool __phy_package_set_once(struct phy_device *phydev, unsigned int b) 95 159 { ··· 414 348 return ret; 415 349 } 416 350 EXPORT_SYMBOL_GPL(devm_of_phy_package_join); 351 + 352 + MODULE_DESCRIPTION("PHY package support"); 353 + MODULE_LICENSE("GPL");
+5 -1
drivers/net/phy/phylib-internal.h
··· 7 7 #define __PHYLIB_INTERNAL_H 8 8 9 9 struct phy_device; 10 + struct mii_bus; 10 11 11 12 /* 12 13 * phy_supported_speeds - return all speeds currently supported by a PHY device ··· 21 20 int phy_speed_down_core(struct phy_device *phydev); 22 21 void phy_check_downshift(struct phy_device *phydev); 23 22 24 - int phy_package_address(struct phy_device *phydev, unsigned int addr_offset); 23 + int mmd_phy_read(struct mii_bus *bus, int phy_addr, bool is_c45, 24 + int devad, u32 regnum); 25 + int mmd_phy_write(struct mii_bus *bus, int phy_addr, bool is_c45, 26 + int devad, u32 regnum, u16 val); 25 27 26 28 int genphy_c45_read_eee_adv(struct phy_device *phydev, unsigned long *adv); 27 29
+1
drivers/net/phy/qcom/Kconfig
··· 24 24 config QCA807X_PHY 25 25 tristate "Qualcomm QCA807x PHYs" 26 26 select QCOM_NET_PHYLIB 27 + select PHY_PACKAGE 27 28 depends on OF_MDIO 28 29 help 29 30 Currently supports the Qualcomm QCA8072, QCA8075 and the PSGMII