From: Herve Codina <herve.codina@bootlin.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>,
Andy Shevchenko <andy.shevchenko@gmail.com>,
Simon Horman <horms@kernel.org>, Lee Jones <lee@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
Derek Kiernan <derek.kiernan@amd.com>,
Dragan Cvetic <dragan.cvetic@amd.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Herve Codina <herve.codina@bootlin.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Philipp Zabel <p.zabel@pengutronix.de>,
Lars Povlsen <lars.povlsen@microchip.com>,
Steen Hegelund <Steen.Hegelund@microchip.com>,
Daniel Machon <daniel.machon@microchip.com>,
UNGLinuxDriver@microchip.com, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Saravana Kannan <saravanak@google.com>
Cc: "David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Horatiu Vultur <horatiu.vultur@microchip.com>,
Andrew Lunn <andrew@lunn.ch>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
netdev@vger.kernel.org, linux-pci@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Allan Nielsen <allan.nielsen@microchip.com>,
Steen Hegelund <steen.hegelund@microchip.com>,
Luca Ceresoli <luca.ceresoli@bootlin.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: [PATCH v7 0/6] Add support for the LAN966x PCI device using a DT overlay
Date: Thu, 3 Oct 2024 10:16:37 +0200 [thread overview]
Message-ID: <20241003081647.642468-1-herve.codina@bootlin.com> (raw)
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
reuse 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 changes are needed:
- Patches 1 and 2 introduce the LAN996x PCI driver itself, together
with its DT overlay and the related MAINTAINER entry.
- Patch 3 removes the syscon API usage from the reset driver used for
the LAN966x.
- Patches 4 to 7 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.
Compare to the previous iteration:
https://lore.kernel.org/lkml/20240930121601.172216-1-herve.codina@bootlin.com/
this v7 series mainly:
- Remove the patch modifying the reset controller DT binding
- Re-order patches
- Remove the syscon API usage from the LAN966x reset controller (the
only syscon user).
Best regards,
Hervé
Changes v6 -> v7
- Patch 1 (patch 3 in v6)
Re-introduce the syscon node in the overlay
- Patch 2 (patch 4 in v6)
No changes
- Patch 3 (patch 2 in v6)
Rework code to map the syscon device locally without using the
syscon API in the LAN966x case.
Update commit log
- Patches 4, 5 and 6 (patches 5, 6, and 7 in v6)
No changes
Patch removed in v7
- Patch 1 in v6 (reset controller DT binding modification)
Rejected
Changes v5 -> v6
- Patch 1
New patch in v6 relatead to removing syscon usage.
- Patch 2
New patch in v6 related to removing syscon usage.
- Patch 3 (patch 1 in v5)
Add 'Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>'
Remove syscon node from the overlay.
- Patch 4, 5, 6 and 7 (patches 2, 4, 5 and 8 in v5)
No changes
Patches removed in v6
- Patch 3 in v5
Rejected
- Patch 6 in v5
No more applicable
- Patch 7 in v5
Already applied
Changes v4 -> v5
- Patch 1
Add missing include files and keep pci_ids.h.
Remove IRQ_RETVAL() usage.
Use __free().
Remove the pdev->irq check.
Avoid local variables in devm_pci_dev_remove_intr_ctrl() and
lan966x_pci_load_overlay().
Use dev_err_probe().
Sort header includes in alphabetical order in dtbs file.
- Patch 3
Fix a typo in commit log.
Simplify modification done in device_node_get_syscon().
Use devm_add_action_or_reset().
- Patches 4, 5, 6 and 8
Add 'Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>'
Changes v3 -> v4
- Patch 1 and 2 (v3 patch 6 and 7)
Move the driver from drivers/mfd to drivers/misc.
- Patch 4 and 5 (v3 patch 2)
Rework reset driver dependencies and module building support.
Split v3 patch into two distinct patches:
- patch 4, as suggested by Geert, add a dependency on the
LAN966x PCI device
- patch 5, allows to build the reset controller driver as a module
- Other patches
Except reordering, no changes
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 (2):
reset: mchp: sparx5: Allow building as a module
reset: mchp: sparx5: set the dev member of the reset controller
Herve Codina (4):
misc: Add support for LAN966x PCI device
MAINTAINERS: Add the Microchip LAN966x PCI driver entry
reset: mchp: sparx5: Map cpu-syscon locally in case of LAN966x
reset: mchp: sparx5: Add MCHP_LAN966X_PCI dependency
MAINTAINERS | 6 +
drivers/misc/Kconfig | 24 +++
drivers/misc/Makefile | 3 +
drivers/misc/lan966x_pci.c | 215 +++++++++++++++++++++++++
drivers/misc/lan966x_pci.dtso | 167 +++++++++++++++++++
drivers/pci/quirks.c | 1 +
drivers/reset/Kconfig | 4 +-
drivers/reset/reset-microchip-sparx5.c | 38 ++++-
8 files changed, 455 insertions(+), 3 deletions(-)
create mode 100644 drivers/misc/lan966x_pci.c
create mode 100644 drivers/misc/lan966x_pci.dtso
--
2.46.1
next reply other threads:[~2024-10-03 8:17 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-03 8:16 Herve Codina [this message]
2024-10-03 8:16 ` [PATCH v7 1/6] misc: Add support for LAN966x PCI device Herve Codina
2024-10-03 9:13 ` Geert Uytterhoeven
2024-10-03 8:16 ` [PATCH v7 2/6] MAINTAINERS: Add the Microchip LAN966x PCI driver entry Herve Codina
2024-10-03 8:16 ` [PATCH v7 3/6] reset: mchp: sparx5: Map cpu-syscon locally in case of LAN966x Herve Codina
2024-10-09 7:29 ` Steen Hegelund
2024-10-09 10:20 ` Geert Uytterhoeven
2024-10-09 10:58 ` Conor Dooley
2024-10-09 10:15 ` Philipp Zabel
2024-10-03 8:16 ` [PATCH v7 4/6] reset: mchp: sparx5: Add MCHP_LAN966X_PCI dependency Herve Codina
2024-10-09 10:15 ` Philipp Zabel
2024-10-03 8:16 ` [PATCH v7 5/6] reset: mchp: sparx5: Allow building as a module Herve Codina
2024-10-09 10:15 ` Philipp Zabel
2024-10-03 8:16 ` [PATCH v7 6/6] reset: mchp: sparx5: set the dev member of the reset controller Herve Codina
2024-10-09 10:16 ` Philipp Zabel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241003081647.642468-1-herve.codina@bootlin.com \
--to=herve.codina@bootlin.com \
--cc=Steen.Hegelund@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=allan.nielsen@microchip.com \
--cc=andrew@lunn.ch \
--cc=andy.shevchenko@gmail.com \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=conor+dt@kernel.org \
--cc=daniel.machon@microchip.com \
--cc=davem@davemloft.net \
--cc=derek.kiernan@amd.com \
--cc=devicetree@vger.kernel.org \
--cc=dragan.cvetic@amd.com \
--cc=edumazet@google.com \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=horatiu.vultur@microchip.com \
--cc=horms@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=lars.povlsen@microchip.com \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=luca.ceresoli@bootlin.com \
--cc=netdev@vger.kernel.org \
--cc=p.zabel@pengutronix.de \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=saravanak@google.com \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).