devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/29] lan966x pci device: Add support for SFPs
@ 2025-10-15  7:13 Herve Codina
  2025-10-15  7:13 ` [PATCH v4 01/29] Revert "treewide: Fix probing of devices in DT overlays" Herve Codina
                   ` (28 more replies)
  0 siblings, 29 replies; 42+ messages in thread
From: Herve Codina @ 2025-10-15  7:13 UTC (permalink / raw)
  To: Andrew Lunn, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Michael Turquette, Stephen Boyd, Andi Shyti, Wolfram Sang,
	Peter Rosin, Arnd Bergmann, Herve Codina, Saravana Kannan,
	Bjorn Helgaas, Charles Keepax, Richard Fitzgerald, David Rhodes,
	Linus Walleij, Ulf Hansson, Mark Brown, Andy Shevchenko,
	Daniel Scally, Heikki Krogerus, Sakari Ailus, Len Brown,
	Davidlohr Bueso, Jonathan Cameron, Dave Jiang, Alison Schofield,
	Vishal Verma, Ira Weiny, Dan Williams, Geert Uytterhoeven
  Cc: Wolfram Sang, devicetree, linux-kernel, imx, linux-arm-kernel,
	linux-clk, linux-i2c, linux-pci, linux-sound, patches, linux-gpio,
	linux-pm, linux-spi, linux-acpi, linux-cxl, Allan Nielsen,
	Horatiu Vultur, Steen Hegelund, Luca Ceresoli, Thomas Petazzoni

Hi,

This series add support for SFPs ports available on the LAN966x PCI
device. In order to have the SFPs supported, additional devices are
needed such as clock controller and I2C.

As a reminder, the LAN966x PCI device driver use a device-tree overlay
to describe devices available on the PCI board. Adding support for SFPs
ports consists in adding more devices in the already existing
device-tree overlay.

With those devices added, the device-tree overlay is more complex and
some consumer/supplier relationship are needed in order to remove
devices in correct order when the LAN966x PCI driver is removed.

Those links are typically provided by fw_devlink and we faced some
issues with fw_devlink and overlays.

This series gives the big picture related to the SFPs support from
fixing issues to adding new devices. Of course, it can be split if
needed.

The first part of the series (patch 1, 2 and 3) fixes fw_devlink when it
is used with overlay. Patches 1 and 3 were previously sent by Saravana
[0]. I just rebased them on top of v6.18-rc1 and added patch 2 in order
to take into account feedback received on the series sent by Saravana.

Those modification were not sufficient in our case and so, on top of
that, patches 4 to 7 fix some more issues related to fw_devlink.

Patches 8 to 13 introduce and use fw_devlink_set_device() in already
existing code.

Patches 14 and 15 are related also to fw_devlink but specific to PCI and
the device-tree nodes created during enumeration.

Patches 16, 17 and 18 are related fw_devlink too but specific to I2C
muxes. Patches purpose is to correctly set a link between an adapter
supplier and its consumer. Indeed, an i2c mux adapter's parent is not
the i2c mux supplier but the adapter the i2c mux is connected to. Adding
a new link between the adapter supplier involved when i2c muxes are used
avoid a freeze observed during device removal.

Patch 19 adds support for fw_delink on x86. fw_devlink is needed to have
the consumer/supplier relationship between devices in order to ensure a
correct device removal order. Adding fw_devlink support for x86 has been
tried in the past but was reverted [1] because it broke some systems.
Instead of enabling fw_devlink on *all* x86 system, enable it on *all*
x86 except on those where it leads to issue.

Patches 20 and 21 allow to build clock and i2c controller used by the
LAN966x PCI device when the LAN966x PCI device is enabled.

Patches 22 to 26 are specific to the LAN966x. They touch the current
dtso, split it in dtsi/dtso files, rename the dtso and improve the
driver to allow easier support for other boards.

The next patch (patch 27) update the LAN966x device-tree overlay itself
to have the SPF ports and devices they depends on described.

The last two patches (patches 28 and 29) sort the existing drivers in
the needed driver list available in the Kconfig help and add new drivers
in this list keep the list up to date with the devices described in the
device-tree overlay.

We believe some items from the above list can be merged separately, with
no build dependencies. We expect:

 - Patches 1 to 7 to be taken by driver core maintainers

 - Patches 8 to 13 to be taken by driver core maintainers

 - Patches 14 and 15 to be taken by driver core or PCI maintainers
  (depend on patch 8)

 - Patches 16 to 18 to be taken by I2C maintainers

 - Patch 19 to be taken by driver core or OF maintainers

 - Patch 20 to be taken by clock maintainers

 - Patch 21 to be taken by I2C maintainers

 - Patches 22 to 29 to be taken by misc maintainers

Once again, this series gives the big picture and can be split if
needed. Let me know.

[0] https://lore.kernel.org/lkml/20240411235623.1260061-1-saravanak@google.com/
[1] https://lore.kernel.org/lkml/3c1f2473-92ad-bfc4-258e-a5a08ad73dd0@web.de/

Compare to previous iteration, this v4 series mainly:
 - Introduce simple-platform-bus driver instead of modifying the
   simple-bus driver (modifying the simple-bus driver could lead to
   regressions).
 - Use some device-tree properties to filter out x86 systems that do not
   support fw_devlink instead of using kconfig symbols.
 - Add '{Reviewed,Acked}-by'

Best regards,
Hervé

Changes:

v3 -> v4
  v3: https://lore.kernel.org/lkml/20250613134817.681832-1-herve.codina@bootlin.com/

  - Patch 1:
    No change

  - Patch 2:
    Update and fix conflicts. Indeed, since v3 iteration
    get_dev_from_fwnode() has been moved to device.h and used by
    pmdomain/core.c.

  - Patch 3:
    remove '#define get_device_from_fwnode()'

  - Patch 4:
    Fix conflict (rebase v6.17-rc6)
    Add 'Reviewed-by: Rafael J. Wysocki'
    Add 'Reviewed-by: Saravana Kannan'

  - Patch 5 (new in v4):
    Introduce simple-platform-bus (binding)

  - Patch 6 (5 in v3):
    Rework patch and introduce simple-platform-bus

  - Patch 7: (new)
    Use simple-platform-bus in LAN966x

  - Patch 8 (6 in v3):
    - No change

  - Patch 9 and 10 (7 and 8 in v3):
    Add 'Reviewed-by: Andy Shevchenko'

  - Patch 11 and 12 (9 and 10 in v3):
    Add 'Reviewed-by: Dave Jiang'

  - Patch 13 (11 in v3):
    Add 'Reviewed-by: Andy Shevchenko'

  - Patch 12 in v3:
    Patch removed.
    Adding __private tag in fwnode.dev is going to be handled in a
    dedicated series. Indeed a test robot reported an issue and more
    patches are needed (I have missed fwnode.dev users in several part
    in the kernel).

  - Patch 14 and 15 (13 and 14 in v3):
    No change

  - Patch 16 (14 in v3):
    Add 'Reviewed-by: Andi Shyti'

  - Patch 17 and 18 (16 and 17 in v3):
    No change

  - Patch 19 (18 in v3):
    Filter out support for fw_devlink on x86 based on some device-tree
    properties.
    Rewrite commit changelog
    Remove 'Reviewed-by: Andy Shevchenko' (significant modification)

  - Patch 20 (19 in v3):
    Add 'Acked-by: Stephen Boyd'

  - Patch 21 (20 in v3):
    Fix conflict (rebase v6.18-rc1)

  - Patches 22 to 24 (21 to 23 in v3):
    No change

  - Patch 25 (24 in v3):
    Fix conflict (rebase v6.18-rc1)
    Add 'Acked-by: Bjorn Helgaas'

  - Patches 26 to 29 (25 to 28 in v3):
    No change

v2 -> v3
  v2: https://lore.kernel.org/all/20250507071315.394857-1-herve.codina@bootlin.com/

  - Patch 1:
    Add 'Acked-by: Mark Brown'

  - Patch 2 and 3:
    No changes

  - Patch 4:
    Rewrite the WARN_ON() condition to avoid an additional 'if'

  - Patch 5:
    Fix typos in commit log
    Update a comment
    Remove the unneeded check before calling of_platform_depopulate()

  - Patches 6 to 11:
    No changes

  - Patch 12 (new in v3)
    Tag the fwnode dev member as private

  - Patch 13 (12 in v2)
    Fix a typo in the commit log

  - Patches 14 to 16 (13 to 15 in v2)
    No changes

  - Patch 17 (16 in v2)
    Check parent_physdev for NULL

  - Patch 18 (17 in v2)
    Capitalize "Link:"
    Add 'Reviewed-by: Andy Shevchenko'

  - Patch 19 (18 in v2)
    No changes

  - Patch 20 (19 in v2)
    Add 'Acked-by: Andi Shyti'

  - Patch 21 (20 in v2)
    No changes

  - Patch 22 (21 in v2)
    Add 'Reviewed-by: Andrew Lunn'

  - Patch 23 (22 in v2)
    Add 'Reviewed-by: Andrew Lunn'

  - Patch 24 (new in v3)
    Introduce PCI_DEVICE_ID_EFAR_LAN9662, the LAN966x PCI device ID

  - Patch 25 (23 in v2)
    Add 'Reviewed-by: Andrew Lunn'
    Use PCI_DEVICE_DATA() with PCI_DEVICE_ID_EFAR_LAN9662 instead of
    PCI_VDEVICE()

  - Patch 26 to 28 (24 to 26 in v2)
    No changes

v1 -> v2
  v1: https://lore.kernel.org/lkml/20250407145546.270683-1-herve.codina@bootlin.com/

  - Patch 1 and 3
    Remove 'From' tag from the commit log

  - Patch 2
    Add 'Reviewed-by: Andy Shevchenko'
    Add 'Reviewed-by: Saravana Kannan'
    Add 'Reviewed-by: Luca Ceresoli'

  - Patch 4 and 5
    No changes

  - Patch 6 (new in v2)
    Introduce fw_devlink_set_device()

  - Patch 7 (new in v2)
    Use existing device_set_node() helper.

  - Patch 8 to 11 (new in v2)
    Use fw_devlink_set_device() in existing code.

  - Patch 12 (6 in v1)
    Use fw_devlink_add_device()

  - Patch 13 (7 in v1)
    No changes

  - Patch 14 (8 in v1)
    Update commit log
    Use 'physdev' instead of 'supplier'
    Minor fixes in i2c_get_adapter_physdev() kdoc

  - Patch 15 and 16 (9 and 10 in v1)
    Use 'physdev' instead of 'supplier' (commit log, title and code)

  - Patch 17 (11 in v2)
    Enable fw_devlink on x86 only if PCI_DYNAMIC_OF_NODES is enabled.
    Rework commit log.

  - Patch 18, 19 and 20 (12, 13 and 14 in v1)
    No changes

  - Patch 21 (new in v2)
    Split dtso in dtsi/dtso

  - Patch 22 (new in v2)
    Rename lan966x_pci.dtso using the specific board name

  - Patch 23 (new in v2)
    Improve the driver introducing board specific data to ease support
    for other boards (avoid the direct dtbo reference in the function
    loading the dtbo).

  - Patch 24 (15 in v1)
    Refactor due to dtso split in dtsi/dtso

  - Patch 25 (new in v2)
    Sort exist driver list in Kconfig help

  - Patch 26 (16 in v1)
    Keep alphanumeric order for new drivers added in Kconfig help

Herve Codina (27):
  driver core: Rename get_dev_from_fwnode() wrapper to
    get_device_from_fwnode()
  driver core: Avoid warning when removing a device while its supplier
    is unbinding
  dt-bindings: bus: Add simple-platform-bus
  bus: Introduce simple-platorm-bus
  misc: lan966x_pci: Use simple-platform-bus
  driver core: fw_devlink: Introduce fw_devlink_set_device()
  drivers: core: Use fw_devlink_set_device()
  pinctrl: cs42l43: Use fw_devlink_set_device()
  cxl/test: Use device_set_node()
  cxl/test: Use fw_devlink_set_device()
  PCI: of: Use fw_devlink_set_device()
  PCI: of: Set fwnode device of newly created PCI device nodes
  PCI: of: Remove fwnode_dev_initialized() call for a PCI root bridge
    node
  i2c: core: Introduce i2c_get_adapter_physdev()
  i2c: mux: Set adapter physical device
  i2c: mux: Create missing devlink between mux and adapter physical
    device
  of: property: Allow fw_devlink device-tree on x86
  clk: lan966x: Add MCHP_LAN966X_PCI dependency
  i2c: busses: at91: Add MCHP_LAN966X_PCI dependency
  misc: lan966x_pci: Fix dtso nodes ordering
  misc: lan966x_pci: Split dtso in dtsi/dtso
  misc: lan966x_pci: Rename lan966x_pci.dtso to
    lan966x_evb_lan9662_nic.dtso
  PCI: Add Microchip LAN9662 PCI Device ID
  misc: lan966x_pci: Introduce board specific data
  misc: lan966x_pci: Add dtsi/dtso nodes in order to support SFPs
  misc: lan966x_pci: Sort the drivers list in Kconfig help
  misc: lan966x_pci: Add drivers needed to support SFPs in Kconfig help

Saravana Kannan (2):
  Revert "treewide: Fix probing of devices in DT overlays"
  of: dynamic: Fix overlayed devices not probing because of fw_devlink

 .../bindings/bus/simple-platform-bus.yaml     |  50 +++++
 MAINTAINERS                                   |   3 +-
 drivers/base/core.c                           |  99 +++++++---
 drivers/bus/imx-weim.c                        |   6 -
 drivers/bus/simple-pm-bus.c                   |  37 ++++
 drivers/clk/Kconfig                           |   2 +-
 drivers/i2c/busses/Kconfig                    |   2 +-
 drivers/i2c/i2c-core-base.c                   |  16 ++
 drivers/i2c/i2c-core-of.c                     |   5 -
 drivers/i2c/i2c-mux.c                         |  26 +++
 drivers/misc/Kconfig                          |  11 +-
 drivers/misc/Makefile                         |   2 +-
 drivers/misc/lan966x_evb_lan9662_nic.dtso     | 167 +++++++++++++++++
 drivers/misc/lan966x_pci.c                    |  30 ++-
 drivers/misc/lan966x_pci.dtsi                 | 172 +++++++++++++++++
 drivers/misc/lan966x_pci.dtso                 | 177 ------------------
 drivers/of/dynamic.c                          |   1 -
 drivers/of/overlay.c                          |  15 ++
 drivers/of/platform.c                         |   5 -
 drivers/of/property.c                         |  31 ++-
 drivers/pci/of.c                              |  10 +-
 drivers/pci/quirks.c                          |   2 +-
 drivers/pinctrl/cirrus/pinctrl-cs42l43.c      |   2 +-
 drivers/pmdomain/core.c                       |   4 +-
 drivers/spi/spi.c                             |   5 -
 include/linux/device.h                        |   2 +-
 include/linux/fwnode.h                        |   7 +
 include/linux/i2c.h                           |   3 +
 include/linux/pci_ids.h                       |   1 +
 tools/testing/cxl/test/cxl.c                  |   4 +-
 30 files changed, 652 insertions(+), 245 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/bus/simple-platform-bus.yaml
 create mode 100644 drivers/misc/lan966x_evb_lan9662_nic.dtso
 create mode 100644 drivers/misc/lan966x_pci.dtsi
 delete mode 100644 drivers/misc/lan966x_pci.dtso

-- 
2.51.0


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

end of thread, other threads:[~2025-10-31 14:29 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-15  7:13 [PATCH v4 00/29] lan966x pci device: Add support for SFPs Herve Codina
2025-10-15  7:13 ` [PATCH v4 01/29] Revert "treewide: Fix probing of devices in DT overlays" Herve Codina
2025-10-15  7:13 ` [PATCH v4 02/29] driver core: Rename get_dev_from_fwnode() wrapper to get_device_from_fwnode() Herve Codina
2025-10-21 10:36   ` Ulf Hansson
2025-10-15  7:13 ` [PATCH v4 03/29] of: dynamic: Fix overlayed devices not probing because of fw_devlink Herve Codina
2025-10-15  7:13 ` [PATCH v4 04/29] driver core: Avoid warning when removing a device while its supplier is unbinding Herve Codina
2025-10-15  7:13 ` [PATCH v4 05/29] dt-bindings: bus: Add simple-platform-bus Herve Codina
2025-10-30 14:14   ` Rob Herring
2025-10-31  8:52   ` Geert Uytterhoeven
2025-10-31 14:29     ` Herve Codina
2025-10-15  7:13 ` [PATCH v4 06/29] bus: Introduce simple-platorm-bus Herve Codina
2025-10-21 14:07   ` Andy Shevchenko
2025-10-15  7:13 ` [PATCH v4 07/29] misc: lan966x_pci: Use simple-platform-bus Herve Codina
2025-10-15  7:13 ` [PATCH v4 08/29] driver core: fw_devlink: Introduce fw_devlink_set_device() Herve Codina
2025-10-21 10:36   ` Ulf Hansson
2025-10-21 14:08   ` Andy Shevchenko
2025-10-15  7:13 ` [PATCH v4 09/29] drivers: core: Use fw_devlink_set_device() Herve Codina
2025-10-21 10:36   ` Ulf Hansson
2025-10-15  7:13 ` [PATCH v4 10/29] pinctrl: cs42l43: " Herve Codina
2025-10-15  7:13 ` [PATCH v4 11/29] cxl/test: Use device_set_node() Herve Codina
2025-10-15  7:13 ` [PATCH v4 12/29] cxl/test: Use fw_devlink_set_device() Herve Codina
2025-10-15  7:14 ` [PATCH v4 13/29] PCI: of: " Herve Codina
2025-10-15  7:14 ` [PATCH v4 14/29] PCI: of: Set fwnode device of newly created PCI device nodes Herve Codina
2025-10-15  7:14 ` [PATCH v4 15/29] PCI: of: Remove fwnode_dev_initialized() call for a PCI root bridge node Herve Codina
2025-10-15  7:14 ` [PATCH v4 16/29] i2c: core: Introduce i2c_get_adapter_physdev() Herve Codina
2025-10-15  7:14 ` [PATCH v4 17/29] i2c: mux: Set adapter physical device Herve Codina
2025-10-30 13:35   ` Andi Shyti
2025-10-15  7:14 ` [PATCH v4 18/29] i2c: mux: Create missing devlink between mux and " Herve Codina
2025-10-30 15:23   ` Andi Shyti
2025-10-30 17:45     ` Andy Shevchenko
2025-10-15  7:14 ` [PATCH v4 19/29] of: property: Allow fw_devlink device-tree on x86 Herve Codina
2025-10-30 14:46   ` Rob Herring
2025-10-15  7:14 ` [PATCH v4 20/29] clk: lan966x: Add MCHP_LAN966X_PCI dependency Herve Codina
2025-10-15  7:14 ` [PATCH v4 21/29] i2c: busses: at91: " Herve Codina
2025-10-15  7:14 ` [PATCH v4 22/29] misc: lan966x_pci: Fix dtso nodes ordering Herve Codina
2025-10-15  7:14 ` [PATCH v4 23/29] misc: lan966x_pci: Split dtso in dtsi/dtso Herve Codina
2025-10-15  7:14 ` [PATCH v4 24/29] misc: lan966x_pci: Rename lan966x_pci.dtso to lan966x_evb_lan9662_nic.dtso Herve Codina
2025-10-15  7:14 ` [PATCH v4 25/29] PCI: Add Microchip LAN9662 PCI Device ID Herve Codina
2025-10-15  7:14 ` [PATCH v4 26/29] misc: lan966x_pci: Introduce board specific data Herve Codina
2025-10-15  7:14 ` [PATCH v4 27/29] misc: lan966x_pci: Add dtsi/dtso nodes in order to support SFPs Herve Codina
2025-10-15  7:14 ` [PATCH v4 28/29] misc: lan966x_pci: Sort the drivers list in Kconfig help Herve Codina
2025-10-15  7:14 ` [PATCH v4 29/29] misc: lan966x_pci: Add drivers needed to support SFPs " Herve Codina

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).