From: Bjorn Helgaas <helgaas@kernel.org>
To: Andrea della Porta <andrea.porta@suse.com>
Cc: Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Florian Fainelli <florian.fainelli@broadcom.com>,
Broadcom internal kernel review list
<bcm-kernel-feedback-list@broadcom.com>,
Lorenzo Pieralisi <lpieralisi@kernel.org>,
Krzysztof Wilczynski <kw@linux.com>,
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Linus Walleij <linus.walleij@linaro.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will@kernel.org>,
Bartosz Golaszewski <brgl@bgdev.pl>,
Derek Kiernan <derek.kiernan@amd.com>,
Dragan Cvetic <dragan.cvetic@amd.com>,
Arnd Bergmann <arnd@arndb.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Saravana Kannan <saravanak@google.com>,
linux-clk@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
linux-gpio@vger.kernel.org,
Masahiro Yamada <masahiroy@kernel.org>,
Stefan Wahren <wahrenst@gmx.net>,
Herve Codina <herve.codina@bootlin.com>,
Luca Ceresoli <luca.ceresoli@bootlin.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
Andrew Lunn <andrew@lunn.ch>, Phil Elwell <phil@raspberrypi.com>,
Dave Stevenson <dave.stevenson@raspberrypi.com>,
kernel-list@raspberrypi.com
Subject: Re: [PATCH v8 08/13] misc: rp1: RaspberryPi RP1 misc driver
Date: Wed, 16 Apr 2025 14:31:52 -0500 [thread overview]
Message-ID: <20250416193152.GA78446@bhelgaas> (raw)
In-Reply-To: <3fbc487bc0e4b855ffbee8ed62cfb6bf3b0592e8.1742418429.git.andrea.porta@suse.com>
On Wed, Mar 19, 2025 at 10:52:29PM +0100, Andrea della Porta wrote:
> The RaspberryPi RP1 is a PCI multi function device containing
> peripherals ranging from Ethernet to USB controller, I2C, SPI
> and others.
>
> Implement a bare minimum driver to operate the RP1, leveraging
> actual OF based driver implementations for the on-board peripherals
> by loading a devicetree overlay during driver probe if the RP1
> node is not already present in the DT.
>
> The peripherals are accessed by mapping MMIO registers starting
> from PCI BAR1 region.
>
> With the overlay approach we can achieve more generic and agnostic
> approach to managing this chipset, being that it is a PCI endpoint
> and could possibly be reused in other hw implementations. The
> presented approach is also used by Bootlin's Microchip LAN966x
> patchset (see link) as well, for a similar chipset.
> In this case, the inclusion tree for the DT overlay is as follow
> (the arrow points to the includer):
>
> rp1-pci.dtso <---- rp1-common.dtsi
>
> On the other hand, to ensure compatibility with downstream, this
> driver can also work with a DT already comprising the RP1 node, so
> the dynamically loaded overlay will not be used if the DT is already
> fully defined.
>
> The reason why this driver is contained in drivers/misc has
> been paved by Bootlin's LAN966X driver, which first used the
> overlay approach to implement non discoverable peripherals behind a
> PCI bus. For RP1, the same arguments apply: it's not used as an SoC
> since the driver code is not running on-chip and is not like an MFD
> since it does not really need all the MFD infrastructure (shared regs,
> etc.). So, for this particular use, misc has been proposed and deemed
> as a good choice. For further details about that please check the links.
>
> This driver is heavily based on downstream code from RaspberryPi
> Foundation, and the original author is Phil Elwell.
>
> Link: https://datasheets.raspberrypi.com/rp1/rp1-peripherals.pdf
> Link: https://lore.kernel.org/all/20240612140208.GC1504919@google.com/
> Link: https://lore.kernel.org/all/83f7fa09-d0e6-4f36-a27d-cee08979be2a@app.fastmail.com/
> Link: https://lore.kernel.org/all/2024081356-mutable-everyday-6f9d@gregkh/
> Link: https://lore.kernel.org/all/20240808154658.247873-1-herve.codina@bootlin.com/
>
> Signed-off-by: Andrea della Porta <andrea.porta@suse.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com> # quirks.c, pci_ids.h
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index b84ff7bade82..4dfda527c76b 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -6283,6 +6283,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5020, of_pci_make_dev_node);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_XILINX, 0x5021, of_pci_make_dev_node);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REDHAT, 0x0005, of_pci_make_dev_node);
> DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_EFAR, 0x9660, of_pci_make_dev_node);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_RPI, PCI_DEVICE_ID_RPI_RP1_C0, of_pci_make_dev_node);
>
> /*
> * Devices known to require a longer delay before first config space access
> diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
> index de5deb1a0118..b7a2c0fd589e 100644
> --- a/include/linux/pci_ids.h
> +++ b/include/linux/pci_ids.h
> @@ -2620,6 +2620,9 @@
> #define PCI_VENDOR_ID_TEKRAM 0x1de1
> #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
>
> +#define PCI_VENDOR_ID_RPI 0x1de4
> +#define PCI_DEVICE_ID_RPI_RP1_C0 0x0001
> +
> #define PCI_VENDOR_ID_ALIBABA 0x1ded
>
> #define PCI_VENDOR_ID_CXL 0x1e98
> --
> 2.35.3
>
next prev parent reply other threads:[~2025-04-16 19:34 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 21:52 [PATCH v8 00/13] Add support for RaspberryPi RP1 PCI device using a DT overlay Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 01/13] dt-bindings: clock: Add RaspberryPi RP1 clock bindings Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 02/13] dt-bindings: pinctrl: Add RaspberryPi RP1 gpio/pinctrl/pinmux bindings Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 03/13] dt-bindings: pci: Add common schema for devices accessible through PCI BARs Andrea della Porta
2025-03-23 11:39 ` Krzysztof Wilczynski
2025-03-19 21:52 ` [PATCH v8 04/13] dt-bindings: misc: Add device specific bindings for RaspberryPi RP1 Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 05/13] clk: rp1: Add support for clocks provided by RP1 Andrea della Porta
2025-04-14 12:09 ` Stefan Wahren
2025-04-16 16:28 ` Andrea della Porta
2025-04-17 10:48 ` Dave Stevenson
2025-04-17 12:54 ` Andrea della Porta
2025-04-17 17:46 ` Dave Stevenson
2025-03-19 21:52 ` [PATCH v8 06/13] pinctrl: rp1: Implement RaspberryPi RP1 gpio support Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 07/13] arm64: dts: rp1: Add support for RaspberryPi's RP1 device Andrea della Porta
2025-04-16 19:29 ` Bjorn Helgaas
2025-04-17 10:33 ` Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 08/13] misc: rp1: RaspberryPi RP1 misc driver Andrea della Porta
2025-03-23 11:49 ` Krzysztof Wilczynski
2025-03-31 9:21 ` Andrea della Porta
2025-04-15 14:06 ` Greg Kroah-Hartman
2025-04-15 14:55 ` Herve Codina
2025-04-15 15:14 ` Greg Kroah-Hartman
2025-04-15 15:41 ` Andrea della Porta
2025-04-15 16:14 ` Greg Kroah-Hartman
2025-04-15 17:19 ` Rob Herring
2025-04-16 19:31 ` Bjorn Helgaas [this message]
2025-03-19 21:52 ` [PATCH v8 09/13] arm64: dts: Add board DTS for Rpi5 which includes RP1 node Andrea della Porta
2025-04-14 11:48 ` Stefan Wahren
2025-04-16 17:43 ` Andrea della Porta
2025-04-16 18:18 ` Stefan Wahren
2025-04-16 18:50 ` Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 10/13] arm64: dts: Add overlay for RP1 device Andrea della Porta
2025-04-14 11:38 ` Stefan Wahren
2025-04-16 17:52 ` Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 11/13] arm64: dts: bcm2712: Add external clock for RP1 chipset on Rpi5 Andrea della Porta
2025-04-14 11:55 ` Stefan Wahren
2025-04-16 18:41 ` Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 12/13] arm64: defconfig: Enable RP1 misc/clock/gpio drivers Andrea della Porta
2025-03-19 21:52 ` [PATCH v8 13/13] arm64: defconfig: Enable OF_OVERLAY option Andrea della Porta
2025-04-14 11:49 ` Stefan Wahren
2025-04-14 9:02 ` [PATCH v8 00/13] Add support for RaspberryPi RP1 PCI device using a DT overlay Andrea della Porta
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=20250416193152.GA78446@bhelgaas \
--to=helgaas@kernel.org \
--cc=andrea.porta@suse.com \
--cc=andrew@lunn.ch \
--cc=arnd@arndb.de \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=bhelgaas@google.com \
--cc=brgl@bgdev.pl \
--cc=catalin.marinas@arm.com \
--cc=conor+dt@kernel.org \
--cc=dave.stevenson@raspberrypi.com \
--cc=derek.kiernan@amd.com \
--cc=devicetree@vger.kernel.org \
--cc=dragan.cvetic@amd.com \
--cc=florian.fainelli@broadcom.com \
--cc=gregkh@linuxfoundation.org \
--cc=herve.codina@bootlin.com \
--cc=kernel-list@raspberrypi.com \
--cc=krzk+dt@kernel.org \
--cc=kw@linux.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=luca.ceresoli@bootlin.com \
--cc=manivannan.sadhasivam@linaro.org \
--cc=masahiroy@kernel.org \
--cc=mturquette@baylibre.com \
--cc=phil@raspberrypi.com \
--cc=robh@kernel.org \
--cc=saravanak@google.com \
--cc=sboyd@kernel.org \
--cc=thomas.petazzoni@bootlin.com \
--cc=wahrenst@gmx.net \
--cc=will@kernel.org \
/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 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.