From: Herve Codina <herve.codina@bootlin.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>,
Simon Horman <horms@kernel.org>,
Herve Codina <herve.codina@bootlin.com>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Lee Jones <lee@kernel.org>,
Arnd Bergmann <arnd@arndb.de>,
UNGLinuxDriver@microchip.com,
Saravana Kannan <saravanak@google.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>
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>,
linux-kernel@vger.kernel.org, devicetree@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 v3 0/7] Add support for the LAN966x PCI device using a DT overlay
Date: Thu, 27 Jun 2024 11:11:29 +0200 [thread overview]
Message-ID: <20240627091137.370572-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
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
next reply other threads:[~2024-06-27 9:12 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-27 9:11 Herve Codina [this message]
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
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=20240627091137.370572-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=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--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).