All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/7] Add support for the LAN966x PCI device using a DT overlay
@ 2024-06-27  9:11 Herve Codina
  2024-06-27  9:11 ` [PATCH v3 1/7] mfd: syscon: Add reference counting and device managed support Herve Codina
                   ` (6 more replies)
  0 siblings, 7 replies; 22+ messages in thread
From: Herve Codina @ 2024-06-27  9:11 UTC (permalink / raw)
  To: Andy Shevchenko, Simon Horman, Herve Codina, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Lee Jones, Arnd Bergmann,
	UNGLinuxDriver, Saravana Kannan, Bjorn Helgaas, Philipp Zabel,
	Lars Povlsen, Steen Hegelund, Daniel Machon
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Horatiu Vultur, Andrew Lunn, linux-kernel, devicetree, netdev,
	linux-pci, linux-arm-kernel, Allan Nielsen, Steen Hegelund,
	Luca Ceresoli, Thomas Petazzoni

Hi,

This series adds support for the LAN966x chip when used as a PCI
device.

For reference, the LAN996x chip is a System-on-chip that integrates an
Ethernet switch and a number of other traditional hardware blocks such
as a GPIO controller, I2C controllers, SPI controllers, etc. The
LAN996x can be used in two different modes:

- With Linux running on its Linux built-in ARM cores.
  This mode is already supported by the upstream Linux kernel, with the
  LAN996x described as a standard ARM Device Tree in
  arch/arm/boot/dts/microchip/lan966x.dtsi. Thanks to this support,
  all hardware blocks in the LAN996x already have drivers in the
  upstream Linux kernel.

- As a PCI device, thanks to its built-in PCI endpoint controller.
  In this case, the LAN996x ARM cores are not used, but all peripherals
  of the LAN996x can be accessed by the PCI host using memory-mapped
  I/O through the PCI BARs.

This series aims at supporting this second use-case. As all peripherals
of the LAN996x already have drivers in the Linux kernel, our goal is to
re-use them as-is to support this second use-case.

Therefore, this patch series introduces a PCI driver that binds on the
LAN996x PCI VID/PID, and when probed, instantiates all devices that are
accessible through the PCI BAR. As the list and characteristics of such
devices are non-discoverable, this PCI driver loads a Device Tree
overlay that allows to teach the kernel about which devices are
available, and allows to probe the relevant drivers in kernel, re-using
all existing drivers with no change.

This patch series for now adds a Device Tree overlay that describes an
initial subset of the devices available over PCI in the LAN996x, and
follow-up patch series will add support for more once this initial
support has landed.

In order to add this PCI driver, a number of preparation changes are
needed:

 - Patches 1 to 5 allow the reset driver used for the LAN996x to be
   built as a module. Indeed, in the case where Linux runs on the ARM
   cores, it is common to have the reset driver built-in. However, when
   the LAN996x is used as a PCI device, it makes sense that all its
   drivers can be loaded as modules.

 - Patches 6 and 7 introduce the LAN996x PCI driver itself, together
   with its DT bindings.

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

 - Patches 1 to 5 to be taken by reset maintainers

 - Patch 6 and 7 by the MFD maintainers

Additionally, we also believe all preparation items in this patch series
can be taken even before there's a final agreement on the last part of
the series (the MFD driver itself).

[1] https://lore.kernel.org/all/CAL_Jsq+je7+9ATR=B6jXHjEJHjn24vQFs4Tvi9=vhDeK9n42Aw@mail.gmail.com/

Compare to the previous iteration:
  https://lore.kernel.org/lkml/20240614173232.1184015-1-herve.codina@bootlin.com/
this v3 series mainly:
  - Suppress patches as they were applied or extracted and handled in
    dedicated series.
  - Update the LAN966x PCI device driver.

Best regards,
Hervé

Changes v2 -> v3
  - Patches 1 and 5
    No changes

  - Patch 6 (v2 patch 18)
    Add a blank line in the commit log to split paragraphs
    Remove unneeded header file inclusion
    Use IRQ_RETVAL()
    Remove blank line
    Use dev_of_node()
    Use pci_{set,get}_drvdata()
    Remove unneeded pci_clear_master() call
    Move { 0, } to { }
    Remove the unneeded pci_dev member from the lan966x_pci structure
    Use PCI_VENDOR_ID_EFAR instead of the hardcoded 0x1055 PCI Vendor ID
    Add a comment related to the of_node check.

  - Patch 7 (v2 patch 19)
    No changes

  Patches removed in v3
    - Patches 6 and 7
      Extracted and sent separately
      https://lore.kernel.org/lkml/20240620120126.412323-1-herve.codina@bootlin.com/

    - Patches 9
      Already applied

    - Patches 8, 10 to 12
      Extracted, reworked and sent separately
      https://lore.kernel.org/lkml/20240614173232.1184015-1-herve.codina@bootlin.com/

    - Patches 13 to 14
      Already applied

Changes v1 -> v2
  - Patch 1
    Fix a typo in syscon.h (s/intline/inline/)

  - Patches 2..5
    No changes

  - Patch 6
    Improve the reset property description

  - Patch 7
    Fix a wrong reverse x-mass tree declaration

  - Patch 8 removed (sent alone to net)
    https://lore.kernel.org/lkml/20240513111853.58668-1-herve.codina@bootlin.com/

  - Patch 8 (v1 patch 9)
    Add 'Reviewed-by: Rob Herring (Arm) <robh@kernel.org>'

  - Patch 9 (v1 patch 10)
    Rephrase and ident parameters descriptions

  - Patch 10 (v1 patch 11)
    No changes

  - Patch 11 (v1 patch 12)
    Fix a missing ret value assignment before a goto in .probe()
    Limit lines to 80 columns
    Use indices in register offset definitions

  - Patch 13 and 14 (new patches in v2)
    Add new test cases for existing of_changeset_add_prop_*()

  - Patch 15 (v1 patch 14)
    No changes

  - Patch 16 (new patches in v2)
    Add tests for of_changeset_add_prop_bool()

  - Patch 17 (v1 patch 15)
    Update commit subject
    Rewrap a paragraph in commit log

  - Patch 18 (v1 patch 16)
    Use PCI_IRQ_INTX instead of PCI_IRQ_LEGACY

  - Patch 19 (v1 patch 17)
    No changes

Clément Léger (5):
  mfd: syscon: Add reference counting and device managed support
  reset: mchp: sparx5: Remove dependencies and allow building as a
    module
  reset: mchp: sparx5: Release syscon when not use anymore
  reset: core: add get_device()/put_device on rcdev
  reset: mchp: sparx5: set the dev member of the reset controller

Herve Codina (2):
  mfd: Add support for LAN966x PCI device
  MAINTAINERS: Add the Microchip LAN966x PCI driver entry

 MAINTAINERS                            |   6 +
 drivers/mfd/Kconfig                    |  24 +++
 drivers/mfd/Makefile                   |   4 +
 drivers/mfd/lan966x_pci.c              | 229 +++++++++++++++++++++++++
 drivers/mfd/lan966x_pci.dtso           | 167 ++++++++++++++++++
 drivers/mfd/syscon.c                   | 145 +++++++++++++++-
 drivers/pci/quirks.c                   |   1 +
 drivers/reset/Kconfig                  |   3 +-
 drivers/reset/core.c                   |   2 +
 drivers/reset/reset-microchip-sparx5.c |  11 +-
 include/linux/mfd/syscon.h             |  18 ++
 11 files changed, 593 insertions(+), 17 deletions(-)
 create mode 100644 drivers/mfd/lan966x_pci.c
 create mode 100644 drivers/mfd/lan966x_pci.dtso

-- 
2.45.0


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

end of thread, other threads:[~2024-07-23  7:22 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-27  9:11 [PATCH v3 0/7] Add support for the LAN966x PCI device using a DT overlay Herve Codina
2024-06-27  9:11 ` [PATCH v3 1/7] mfd: syscon: Add reference counting and device managed support Herve Codina
2024-07-11 16:09   ` Markus Elfring
2024-07-11 16:25     ` Herve Codina
2024-07-11 17:09       ` Lee Jones
2024-06-27  9:11 ` [PATCH v3 2/7] reset: mchp: sparx5: Remove dependencies and allow building as a module Herve Codina
2024-07-23  7:21   ` Geert Uytterhoeven
2024-06-27  9:11 ` [PATCH v3 3/7] reset: mchp: sparx5: Release syscon when not use anymore Herve Codina
2024-06-27  9:11 ` [PATCH v3 4/7] reset: core: add get_device()/put_device on rcdev Herve Codina
2024-06-27  9:11 ` [PATCH v3 5/7] reset: mchp: sparx5: set the dev member of the reset controller Herve Codina
2024-06-27  9:11 ` [PATCH v3 6/7] mfd: Add support for LAN966x PCI device Herve Codina
2024-07-11 15:29   ` Lee Jones
2024-07-11 16:44     ` Herve Codina
2024-07-11 19:08       ` Greg Kroah-Hartman
2024-07-11 20:33         ` Rob Herring
2024-07-12  8:57           ` Greg Kroah-Hartman
2024-07-12 13:11           ` Herve Codina
2024-07-12 14:14             ` Arnd Bergmann
2024-07-15 12:12               ` Herve Codina
2024-07-16 14:44                 ` Arnd Bergmann
2024-07-16 15:58                   ` Herve Codina
2024-06-27  9:11 ` [PATCH v3 7/7] MAINTAINERS: Add the Microchip LAN966x PCI driver entry Herve Codina

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.