mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 00/12] Rework PHY reset handling
@ 2023-04-05  9:26 Marco Felsch
  2023-04-05  9:26 ` [PATCH 01/12] net: phy: refactor phy_device_create function Marco Felsch
                   ` (13 more replies)
  0 siblings, 14 replies; 32+ messages in thread
From: Marco Felsch @ 2023-04-05  9:26 UTC (permalink / raw)
  To: Andrew Lunn, Heiner Kallweit, Russell King, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Florian Fainelli,
	Broadcom internal kernel review list, Richard Cochran,
	Radu Pirea, Shyam Sundar S K, Yisen Zhuang, Salil Mehta,
	Jassi Brar, Ilias Apalodimas, Iyappan Subramanian, Keyur Chudgar,
	Quan Nguyen, Rafael J. Wysocki, Len Brown, Rob Herring,
	Frank Rowand
  Cc: netdev, linux-kernel, linux-acpi, devicetree, kernel

The current phy reset handling is broken in a way that it needs
pre-running firmware to setup the phy initially. Since the very first
step is to readout the PHYID1/2 registers before doing anything else.

The whole dection logic will fall apart if the pre-running firmware
don't setup the phy accordingly or the kernel boot resets GPIOs states
or disables clocks. In such cases the PHYID1/2 read access will fail and
so the whole detection will fail.

I fixed this via this series, the fix will include a new kernel API
called phy_device_atomic_register() which will do all necessary things
and return a 'struct phy_device' on success. So setting up a phy and the
phy state machine is more convenient.

I tested the series on a i.MX8MP-EVK and a custom board which have a
TJA1102 dual-port ethernet phy. Other testers are welcome :)

Regards,
  Marco

Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
Marco Felsch (12):
      net: phy: refactor phy_device_create function
      net: phy: refactor get_phy_device function
      net: phy: add phy_device_set_miits helper
      net: phy: unify get_phy_device and phy_device_create parameter list
      net: phy: add phy_id_broken support
      net: phy: add phy_device_atomic_register helper
      net: mdio: make use of phy_device_atomic_register helper
      net: phy: add possibility to specify mdio device parent
      net: phy: nxp-tja11xx: make use of phy_device_atomic_register()
      of: mdio: remove now unused of_mdiobus_phy_device_register()
      net: mdiobus: remove now unused fwnode helpers
      net: phy: add default gpio assert/deassert delay

 Documentation/firmware-guide/acpi/dsd/phy.rst     |   2 +-
 MAINTAINERS                                       |   1 -
 drivers/net/ethernet/adi/adin1110.c               |   6 +-
 drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c       |   8 +-
 drivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c |  11 +-
 drivers/net/ethernet/socionext/netsec.c           |   7 +-
 drivers/net/mdio/Kconfig                          |   7 -
 drivers/net/mdio/Makefile                         |   1 -
 drivers/net/mdio/acpi_mdio.c                      |  20 +-
 drivers/net/mdio/fwnode_mdio.c                    | 183 ------------
 drivers/net/mdio/mdio-xgene.c                     |   6 +-
 drivers/net/mdio/of_mdio.c                        |  23 +-
 drivers/net/phy/bcm-phy-ptp.c                     |   2 +-
 drivers/net/phy/dp83640.c                         |   2 +-
 drivers/net/phy/fixed_phy.c                       |   6 +-
 drivers/net/phy/mdio_bus.c                        |   7 +-
 drivers/net/phy/micrel.c                          |   2 +-
 drivers/net/phy/mscc/mscc_ptp.c                   |   2 +-
 drivers/net/phy/nxp-c45-tja11xx.c                 |   2 +-
 drivers/net/phy/nxp-tja11xx.c                     |  47 ++-
 drivers/net/phy/phy_device.c                      | 348 +++++++++++++++++++---
 drivers/net/phy/sfp.c                             |   7 +-
 include/linux/fwnode_mdio.h                       |  35 ---
 include/linux/of_mdio.h                           |   8 -
 include/linux/phy.h                               |  46 ++-
 25 files changed, 442 insertions(+), 347 deletions(-)
---
base-commit: 054fbf7ff8143d35ca7d3bb5414bb44ee1574194
change-id: 20230405-net-next-topic-net-phy-reset-4f79ff7df4a0

Best regards,
-- 
Marco Felsch <m.felsch@pengutronix.de>


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2023-04-07 15:03 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-05  9:26 [PATCH 00/12] Rework PHY reset handling Marco Felsch
2023-04-05  9:26 ` [PATCH 01/12] net: phy: refactor phy_device_create function Marco Felsch
2023-04-05  9:26 ` [PATCH 02/12] net: phy: refactor get_phy_device function Marco Felsch
2023-04-05  9:26 ` [PATCH 03/12] net: phy: add phy_device_set_miits helper Marco Felsch
2023-04-05 12:06   ` Andrew Lunn
2023-04-05 14:49     ` Marco Felsch
2023-04-05  9:26 ` [PATCH 04/12] net: phy: unify get_phy_device and phy_device_create parameter list Marco Felsch
2023-04-06 16:51   ` Shyam Sundar S K
2023-04-05  9:26 ` [PATCH 05/12] net: phy: add phy_id_broken support Marco Felsch
2023-04-05 12:27   ` Andrew Lunn
2023-04-05 12:30     ` Florian Fainelli
2023-04-05 15:27       ` Marco Felsch
2023-04-05 16:09         ` Andrew Lunn
2023-04-05  9:26 ` [PATCH 06/12] net: phy: add phy_device_atomic_register helper Marco Felsch
2023-04-05 12:22   ` Andrew Lunn
2023-04-05 15:22     ` Marco Felsch
2023-04-05 16:06       ` Andrew Lunn
2023-04-05 19:43         ` Marco Felsch
2023-04-05 20:34           ` Andrew Lunn
2023-04-06  8:47             ` Marco Felsch
2023-04-07 15:00   ` Andrew Lunn
2023-04-05  9:26 ` [PATCH 07/12] net: mdio: make use of " Marco Felsch
2023-04-05  9:26 ` [PATCH 08/12] net: phy: add possibility to specify mdio device parent Marco Felsch
2023-04-05  9:27 ` [PATCH 09/12] net: phy: nxp-tja11xx: make use of phy_device_atomic_register() Marco Felsch
2023-04-05  9:27 ` [PATCH 10/12] of: mdio: remove now unused of_mdiobus_phy_device_register() Marco Felsch
2023-04-05  9:27 ` [PATCH 11/12] net: mdiobus: remove now unused fwnode helpers Marco Felsch
2023-04-05  9:27 ` [PATCH 12/12] net: phy: add default gpio assert/deassert delay Marco Felsch
2023-04-05 12:39   ` Andrew Lunn
2023-04-05 12:32 ` [PATCH 00/12] Rework PHY reset handling Andrew Lunn
2023-04-05 15:31   ` Marco Felsch
2023-04-05 12:42 ` Florian Fainelli
2023-04-05 14:42   ` Marco Felsch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®