[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <abefffc7-35d0-4c29-a892-48ec606acbf8@linaro.org>
Date: Mon, 8 Jan 2024 16:24:40 +0100
From: Neil Armstrong <neil.armstrong@...aro.org>
To: Bartosz Golaszewski <brgl@...ev.pl>, Kalle Valo <kvalo@...nel.org>,
"David S . Miller" <davem@...emloft.net>, Eric Dumazet
<edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>, Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Conor Dooley <conor+dt@...nel.org>, Bjorn Andersson <andersson@...nel.org>,
Konrad Dybcio <konrad.dybcio@...aro.org>,
Catalin Marinas <catalin.marinas@....com>, Will Deacon <will@...nel.org>,
Bjorn Helgaas <bhelgaas@...gle.com>, Heiko Stuebner <heiko@...ech.de>,
Jernej Skrabec <jernej.skrabec@...il.com>,
Chris Morgan <macromorgan@...mail.com>,
Linus Walleij <linus.walleij@...aro.org>,
Geert Uytterhoeven <geert+renesas@...der.be>, Arnd Bergmann <arnd@...db.de>,
Nícolas F . R . A . Prado <nfraprado@...labora.com>,
Marek Szyprowski <m.szyprowski@...sung.com>, Peng Fan <peng.fan@....com>,
Robert Richter <rrichter@....com>, Dan Williams <dan.j.williams@...el.com>,
Jonathan Cameron <Jonathan.Cameron@...wei.com>,
Terry Bowman <terry.bowman@....com>,
Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@...ux.intel.com>,
Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>,
Huacai Chen <chenhuacai@...nel.org>, Alex Elder <elder@...aro.org>,
Srini Kandagatla <srinivas.kandagatla@...aro.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: linux-wireless@...r.kernel.org, netdev@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-arm-msm@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-pci@...r.kernel.org,
Bartosz Golaszewski <bartosz.golaszewski@...aro.org>
Subject: Re: [RFC 0/9] PCI: introduce the concept of power sequencing of PCIe
devices
Hi,
On 04/01/2024 14:01, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@...aro.org>
>
> During last year's Linux Plumbers we had several discussions centered
> around the need to power-on PCI devices before they can be detected on
> the bus.
>
> The consensus during the conference was that we need to introduce a
> class of "PCI slot drivers" that would handle the power-sequencing.
>
> After some additional brain-storming with Manivannan and the realization
> that the DT maintainers won't like adding any "fake" nodes not
> representing actual devices, we decided to reuse the existing
> infrastructure provided by the PCIe port drivers.
>
> The general idea is to instantiate platform devices for child nodes of
> the PCIe port DT node. For those nodes for which a power-sequencing
> driver exists, we bind it and let it probe. The driver then triggers a
> rescan of the PCI bus with the aim of detecting the now powered-on
> device. The device will consume the same DT node as the platform,
> power-sequencing device. We use device links to make the latter become
> the parent of the former.
>
> The main advantage of this approach is not modifying the existing DT in
> any way and especially not adding any "fake" platform devices.
I've successfully tested this serie for the WCN7850 Wifi/BT combo onboard chip
present on the SM8550-QRD and SM8650-QRD boards and it works just fine.
Here's a branch with the wcn7850 vreg table added to the pwrseq driver,
and the DT changes:
https://git.codelinaro.org/neil.armstrong/linux/-/commits/topic/sm8x50/wcn7850-wifi-pwrseq/?ref_type=heads
Thanks,
Neil
>
> Bartosz Golaszewski (9):
> arm64: dts: qcom: sm8250: describe the PCIe port
> arm64: dts: qcom: qrb5165-rb5: describe the WLAN module of QCA6390
> PCI/portdrv: create platform devices for child OF nodes
> PCI: hold the rescan mutex when scanning for the first time
> PCI/pwrseq: add pwrseq core code
> dt-bindings: vendor-prefixes: add a PCI prefix for Qualcomm Atheros
> dt-bindings: wireless: ath11k: describe QCA6390
> PCI/pwrseq: add a pwrseq driver for QCA6390
> arm64: defconfig: enable the PCIe power sequencing for QCA6390
>
> .../net/wireless/qcom,ath11k-pci.yaml | 14 ++
> .../devicetree/bindings/vendor-prefixes.yaml | 1 +
> arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 24 +++
> arch/arm64/boot/dts/qcom/sm8250.dtsi | 10 +
> arch/arm64/configs/defconfig | 2 +
> drivers/pci/pcie/Kconfig | 2 +
> drivers/pci/pcie/Makefile | 2 +
> drivers/pci/pcie/portdrv.c | 3 +-
> drivers/pci/pcie/pwrseq/Kconfig | 19 ++
> drivers/pci/pcie/pwrseq/Makefile | 4 +
> drivers/pci/pcie/pwrseq/pcie-pwrseq-qca6390.c | 197 ++++++++++++++++++
> drivers/pci/pcie/pwrseq/pwrseq.c | 83 ++++++++
> drivers/pci/probe.c | 2 +
> include/linux/pcie-pwrseq.h | 24 +++
> 14 files changed, 386 insertions(+), 1 deletion(-)
> create mode 100644 drivers/pci/pcie/pwrseq/Kconfig
> create mode 100644 drivers/pci/pcie/pwrseq/Makefile
> create mode 100644 drivers/pci/pcie/pwrseq/pcie-pwrseq-qca6390.c
> create mode 100644 drivers/pci/pcie/pwrseq/pwrseq.c
> create mode 100644 include/linux/pcie-pwrseq.h
>
Powered by blists - more mailing lists