mbox series

[v3,0/6] Bluetooth: hci_qca: use the power sequencer for wcn7850

Message ID 20240709-hci_qca_refactor-v3-0-5f48ca001fed@linaro.org
Headers show
Series Bluetooth: hci_qca: use the power sequencer for wcn7850 | expand

Message

Bartosz Golaszewski July 9, 2024, 12:18 p.m. UTC
The following series extend the usage of the power sequencing subsystem
in the hci_qca driver.

The end goal is to convert the entire driver to be exclusively pwrseq-based
and simplify it in the process. However due to a large number of users we
need to be careful and consider every case separately.

Right now the only model that fully uses the power sequencer is QCA6390 on
the RB5 board. The next steps are enabling pwrseq for Bluetooth on sm8650
and the X13s laptop. To that end we need to make wcn7850 and wcn6855 aware
of the power sequencing but also keep backward compatibility with older
device trees.

This series contains changes to mainline DT bindings for wcn7850, some
refactoring of the hci_qca driver, making pwrseq the default for the two
models mentioned above and finally modifies the device-tree for sm8650-qrd
to correctly represent the way the Bluetooth module is powered.

I made the last patch part of this series as it has a run-time dependency
on previous changes in it and bluetooth support on the board will break
without them.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
Changes in v3:
- Add a missing break in a switch case
- Link to v2: https://lore.kernel.org/r/20240708-hci_qca_refactor-v2-0-b6e83b3d1ca5@linaro.org

Changes in v2:
- Fix a switch issue reported by the test bot
- Link to v1: https://lore.kernel.org/r/20240705-hci_qca_refactor-v1-0-e2442121c13e@linaro.org

---
Bartosz Golaszewski (6):
      dt-bindings: bluetooth: qualcomm: describe the inputs from PMU for wcn7850
      Bluetooth: hci_qca: schedule a devm action for disabling the clock
      Bluetooth: hci_qca: unduplicate calls to hci_uart_register_device()
      Bluetooth: hci_qca: make pwrseq calls the default if available
      Bluetooth: hci_qca: use the power sequencer for wcn7850 and wcn6855
      arm64: dts: qcom: sm8650-qrd: use the PMU to power up bluetooth

 .../bindings/net/bluetooth/qualcomm-bluetooth.yaml | 18 +++--
 arch/arm64/boot/dts/qcom/sm8650-qrd.dts            | 28 +++----
 drivers/bluetooth/hci_qca.c                        | 87 +++++++++++++---------
 3 files changed, 72 insertions(+), 61 deletions(-)
---
base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233
change-id: 20240704-hci_qca_refactor-0770e9931fb4

Best regards,

Comments

Neil Armstrong July 9, 2024, 1:24 p.m. UTC | #1
On 09/07/2024 14:18, Bartosz Golaszewski wrote:
> The following series extend the usage of the power sequencing subsystem
> in the hci_qca driver.
> 
> The end goal is to convert the entire driver to be exclusively pwrseq-based
> and simplify it in the process. However due to a large number of users we
> need to be careful and consider every case separately.
> 
> Right now the only model that fully uses the power sequencer is QCA6390 on
> the RB5 board. The next steps are enabling pwrseq for Bluetooth on sm8650
> and the X13s laptop. To that end we need to make wcn7850 and wcn6855 aware
> of the power sequencing but also keep backward compatibility with older
> device trees.
> 
> This series contains changes to mainline DT bindings for wcn7850, some
> refactoring of the hci_qca driver, making pwrseq the default for the two
> models mentioned above and finally modifies the device-tree for sm8650-qrd
> to correctly represent the way the Bluetooth module is powered.
> 
> I made the last patch part of this series as it has a run-time dependency
> on previous changes in it and bluetooth support on the board will break
> without them.
> 
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> Changes in v3:
> - Add a missing break in a switch case
> - Link to v2: https://lore.kernel.org/r/20240708-hci_qca_refactor-v2-0-b6e83b3d1ca5@linaro.org
> 
> Changes in v2:
> - Fix a switch issue reported by the test bot
> - Link to v1: https://lore.kernel.org/r/20240705-hci_qca_refactor-v1-0-e2442121c13e@linaro.org
> 
> ---
> Bartosz Golaszewski (6):
>        dt-bindings: bluetooth: qualcomm: describe the inputs from PMU for wcn7850
>        Bluetooth: hci_qca: schedule a devm action for disabling the clock
>        Bluetooth: hci_qca: unduplicate calls to hci_uart_register_device()
>        Bluetooth: hci_qca: make pwrseq calls the default if available
>        Bluetooth: hci_qca: use the power sequencer for wcn7850 and wcn6855
>        arm64: dts: qcom: sm8650-qrd: use the PMU to power up bluetooth
> 
>   .../bindings/net/bluetooth/qualcomm-bluetooth.yaml | 18 +++--
>   arch/arm64/boot/dts/qcom/sm8650-qrd.dts            | 28 +++----
>   drivers/bluetooth/hci_qca.c                        | 87 +++++++++++++---------
>   3 files changed, 72 insertions(+), 61 deletions(-)
> ---
> base-commit: 0b58e108042b0ed28a71cd7edf5175999955b233
> change-id: 20240704-hci_qca_refactor-0770e9931fb4
> 
> Best regards,

Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8650-QRD

Still works on SM8550-QRD, and properly works with power sequencer on SM8650-QRD

Thanks,
Neil
Rob Herring July 10, 2024, 4:15 p.m. UTC | #2
On Tue, 09 Jul 2024 14:18:32 +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> 
> Drop the inputs from the host and instead expect the Bluetooth node to
> consume the outputs of the internal PMU. This model is closer to reality
> than how we represent it now.
> 
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
>  .../bindings/net/bluetooth/qualcomm-bluetooth.yaml     | 18 +++++++++++++-----
>  1 file changed, 13 insertions(+), 5 deletions(-)
> 

Acked-by: Rob Herring (Arm) <robh@kernel.org>
Luiz Augusto von Dentz July 10, 2024, 8:43 p.m. UTC | #3
Hi Bartosz,

On Wed, Jul 10, 2024 at 3:50 PM <patchwork-bot+bluetooth@kernel.org> wrote:
>
> Hello:
>
> This series was applied to bluetooth/bluetooth-next.git (master)
> by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
>
> On Tue, 09 Jul 2024 14:18:31 +0200 you wrote:
> > The following series extend the usage of the power sequencing subsystem
> > in the hci_qca driver.
> >
> > The end goal is to convert the entire driver to be exclusively pwrseq-based
> > and simplify it in the process. However due to a large number of users we
> > need to be careful and consider every case separately.
> >
> > [...]
>
> Here is the summary with links:
>   - [v3,1/6] dt-bindings: bluetooth: qualcomm: describe the inputs from PMU for wcn7850
>     https://git.kernel.org/bluetooth/bluetooth-next/c/e1c54afa8526
>   - [v3,2/6] Bluetooth: hci_qca: schedule a devm action for disabling the clock
>     https://git.kernel.org/bluetooth/bluetooth-next/c/a887c8dede8e
>   - [v3,3/6] Bluetooth: hci_qca: unduplicate calls to hci_uart_register_device()
>     https://git.kernel.org/bluetooth/bluetooth-next/c/cdd10964f76f
>   - [v3,4/6] Bluetooth: hci_qca: make pwrseq calls the default if available
>     https://git.kernel.org/bluetooth/bluetooth-next/c/958a33c3f9fc
>   - [v3,5/6] Bluetooth: hci_qca: use the power sequencer for wcn7850 and wcn6855
>     https://git.kernel.org/bluetooth/bluetooth-next/c/4fa54d8731ec
>   - [v3,6/6] arm64: dts: qcom: sm8650-qrd: use the PMU to power up bluetooth
>     (no matching commit)

Last one doesn't apply so you will probably need to rebase or
something if it really needs to go thru bluetooth-next.

> You are awesome, thank you!
> --
> Deet-doot-dot, I am a bot.
> https://korg.docs.kernel.org/patchwork/pwbot.html
>
>
Bartosz Golaszewski July 11, 2024, 7:11 a.m. UTC | #4
On Thu, Jul 11, 2024 at 12:08 AM Konrad Dybcio <konrad.dybcio@linaro.org> wrote:
>
> On 10.07.2024 10:43 PM, Luiz Augusto von Dentz wrote:
> > Hi Bartosz,
> >
> > On Wed, Jul 10, 2024 at 3:50 PM <patchwork-bot+bluetooth@kernel.org> wrote:
> >>
> >> Hello:
> >>
> >> This series was applied to bluetooth/bluetooth-next.git (master)
> >> by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:
> >>
> >> On Tue, 09 Jul 2024 14:18:31 +0200 you wrote:
> >>> The following series extend the usage of the power sequencing subsystem
> >>> in the hci_qca driver.
> >>>
> >>> The end goal is to convert the entire driver to be exclusively pwrseq-based
> >>> and simplify it in the process. However due to a large number of users we
> >>> need to be careful and consider every case separately.
> >>>
> >>> [...]
> >>
> >> Here is the summary with links:
> >>   - [v3,1/6] dt-bindings: bluetooth: qualcomm: describe the inputs from PMU for wcn7850
> >>     https://git.kernel.org/bluetooth/bluetooth-next/c/e1c54afa8526
> >>   - [v3,2/6] Bluetooth: hci_qca: schedule a devm action for disabling the clock
> >>     https://git.kernel.org/bluetooth/bluetooth-next/c/a887c8dede8e
> >>   - [v3,3/6] Bluetooth: hci_qca: unduplicate calls to hci_uart_register_device()
> >>     https://git.kernel.org/bluetooth/bluetooth-next/c/cdd10964f76f
> >>   - [v3,4/6] Bluetooth: hci_qca: make pwrseq calls the default if available
> >>     https://git.kernel.org/bluetooth/bluetooth-next/c/958a33c3f9fc
> >>   - [v3,5/6] Bluetooth: hci_qca: use the power sequencer for wcn7850 and wcn6855
> >>     https://git.kernel.org/bluetooth/bluetooth-next/c/4fa54d8731ec
> >>   - [v3,6/6] arm64: dts: qcom: sm8650-qrd: use the PMU to power up bluetooth
> >>     (no matching commit)
> >
> > Last one doesn't apply so you will probably need to rebase or
> > something if it really needs to go thru bluetooth-next.
>
> Bartosz forgot to mention it should go through qcom
>
> Konrad

Yes, sorry. That's alright, if patches 1-5/6 make v6.11 then I'll just
resend patch 6/6 to Bjorn directly next release and we'll avoid a
cross-tree merge this way.

Thanks!
Bart