* [PATCH v7 0/3] PCI: rockchip: Move PCIE_WAKE handling into pci core
@ 2017-10-19 11:10 Jeffy Chen
2017-10-19 11:10 ` [PATCH v7 3/3] arm64: dts: rockchip: Handle pcie wake in pcie driver for Gru Jeffy Chen
0 siblings, 1 reply; 3+ messages in thread
From: Jeffy Chen @ 2017-10-19 11:10 UTC (permalink / raw)
To: linux-arm-kernel
Currently we are handling wake irq in mrvl wifi driver. Move it into
pci core.
Tested on my chromebook bob(with cros 4.4 kernel and mrvl wifi).
Changes in v7:
Move PCIE_WAKE handling into pci core.
Changes in v6:
Fix device_init_wake error handling, and add some comments.
Changes in v5:
Rebase
Move to pci.txt
Use "wakeup" instead of "wake"
Changes in v3:
Fix error handling
Changes in v2:
Use dev_pm_set_dedicated_wake_irq
-- Suggested by Brian Norris <briannorris@chromium.com>
Jeffy Chen (3):
PCI: Add support for wake irq
dt-bindings: PCI: Add definition of pcie wake irq
arm64: dts: rockchip: Handle pcie wake in pcie driver for Gru
Documentation/devicetree/bindings/pci/pci.txt | 2 ++
arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi | 15 +++++++-----
drivers/pci/pci.c | 34 +++++++++++++++++++++++++--
drivers/pci/probe.c | 32 +++++++++++++++++++++----
drivers/pci/remove.c | 9 +++++++
5 files changed, 80 insertions(+), 12 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v7 3/3] arm64: dts: rockchip: Handle pcie wake in pcie driver for Gru 2017-10-19 11:10 [PATCH v7 0/3] PCI: rockchip: Move PCIE_WAKE handling into pci core Jeffy Chen @ 2017-10-19 11:10 ` Jeffy Chen 2017-10-24 1:27 ` Brian Norris 0 siblings, 1 reply; 3+ messages in thread From: Jeffy Chen @ 2017-10-19 11:10 UTC (permalink / raw) To: linux-arm-kernel Currently we are handling pcie wake irq in mrvl wifi driver. Move it to rockchip pcie driver for Gru boards. Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> --- Changes in v7: None Changes in v6: None Changes in v5: Use "wakeup" instead of "wake" Changes in v3: None Changes in v2: None arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi index 470105d651c2..04499714f541 100644 --- a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi @@ -708,7 +708,15 @@ ap_i2c_audio: &i2c8 { ep-gpios = <&gpio2 27 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; - pinctrl-0 = <&pcie_clkreqn_cpm>, <&wifi_perst_l>; + pinctrl-0 = <&pcie_clkreqn_cpm>, <&wlan_host_wake_l>, <&wifi_perst_l>; + + interrupts-extended = <&gic GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>, + <&gic GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>, + <&gic GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>, + <&gpio0 8 IRQ_TYPE_LEVEL_LOW>; + interrupt-names = "sys", "legacy", "client", "wakeup"; + /delete-property/ interrupts; + vpcie3v3-supply = <&pp3300_wifi_bt>; vpcie1v8-supply = <&wlan_pd_n>; /* HACK: see &wlan_pd_n */ vpcie0v9-supply = <&pp900_pcie>; @@ -723,11 +731,6 @@ ap_i2c_audio: &i2c8 { compatible = "pci1b4b,2b42"; reg = <0x83010000 0x0 0x00000000 0x0 0x00100000 0x83010000 0x0 0x00100000 0x0 0x00100000>; - interrupt-parent = <&gpio0>; - interrupts = <8 IRQ_TYPE_LEVEL_LOW>; - pinctrl-names = "default"; - pinctrl-0 = <&wlan_host_wake_l>; - wakeup-source; }; }; }; -- 2.11.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v7 3/3] arm64: dts: rockchip: Handle pcie wake in pcie driver for Gru 2017-10-19 11:10 ` [PATCH v7 3/3] arm64: dts: rockchip: Handle pcie wake in pcie driver for Gru Jeffy Chen @ 2017-10-24 1:27 ` Brian Norris 0 siblings, 0 replies; 3+ messages in thread From: Brian Norris @ 2017-10-24 1:27 UTC (permalink / raw) To: linux-arm-kernel + linux-pm On Thu, Oct 19, 2017 at 07:10:07PM +0800, Jeffy Chen wrote: > Currently we are handling pcie wake irq in mrvl wifi driver. > Move it to rockchip pcie driver for Gru boards. It might be worth documenting one of the reasons for this patch, which I'll comment on below: > Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> > --- > > Changes in v7: None > Changes in v6: None > Changes in v5: > Use "wakeup" instead of "wake" > > Changes in v3: None > Changes in v2: None > > arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi > index 470105d651c2..04499714f541 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi > +++ b/arch/arm64/boot/dts/rockchip/rk3399-gru.dtsi > @@ -708,7 +708,15 @@ ap_i2c_audio: &i2c8 { > > ep-gpios = <&gpio2 27 GPIO_ACTIVE_HIGH>; > pinctrl-names = "default"; > - pinctrl-0 = <&pcie_clkreqn_cpm>, <&wifi_perst_l>; > + pinctrl-0 = <&pcie_clkreqn_cpm>, <&wlan_host_wake_l>, <&wifi_perst_l>; > + > + interrupts-extended = <&gic GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>, > + <&gic GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>, > + <&gic GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>, > + <&gpio0 8 IRQ_TYPE_LEVEL_LOW>; > + interrupt-names = "sys", "legacy", "client", "wakeup"; > + /delete-property/ interrupts; > + > vpcie3v3-supply = <&pp3300_wifi_bt>; > vpcie1v8-supply = <&wlan_pd_n>; /* HACK: see &wlan_pd_n */ > vpcie0v9-supply = <&pp900_pcie>; > @@ -723,11 +731,6 @@ ap_i2c_audio: &i2c8 { > compatible = "pci1b4b,2b42"; > reg = <0x83010000 0x0 0x00000000 0x0 0x00100000 > 0x83010000 0x0 0x00100000 0x0 0x00100000>; > - interrupt-parent = <&gpio0>; > - interrupts = <8 IRQ_TYPE_LEVEL_LOW>; One of the problems here is that this is a definition for a WAKE# interrupt, not for a legacy INTx interrupt. So this creates a conflict when both of these happen: (a) the PCI bus sets up this interrupt for use as INTx support (as a shared interrupt), instead of using the actual PCI controller interrupt and (b) the mwifiex driver requests this interrupt as a non-shared wake interrupt, and fails to get it (and so fails to probe). IOW, non-MSI interrupts are broken today on these devices. Jeffy's patch fixes that. If we want to support something like the existing binding, we should clarify/update Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt. Personally, I would just declare that binding invalid for the PCI version. (It might still be valid for SDIO.) Also, if for some reason we *do* want WAKE# handling to be supported on a per-device basis (part of the discussion on patch 1), we should look at extending the existing PCI interrupt bindings in a way that doesn't break legacy interrupts. Brian > - pinctrl-names = "default"; > - pinctrl-0 = <&wlan_host_wake_l>; > - wakeup-source; > }; > }; > }; > -- > 2.11.0 > > ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-10-24 1:27 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-10-19 11:10 [PATCH v7 0/3] PCI: rockchip: Move PCIE_WAKE handling into pci core Jeffy Chen 2017-10-19 11:10 ` [PATCH v7 3/3] arm64: dts: rockchip: Handle pcie wake in pcie driver for Gru Jeffy Chen 2017-10-24 1:27 ` Brian Norris
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).