mbox series

[0/8] arm: mach-snapdragon: Qualcomm clock driver cleanup

Message ID 20231024-b4-qcom-clk-v1-0-9d96359b9a82@linaro.org
Headers show
Series arm: mach-snapdragon: Qualcomm clock driver cleanup | expand

Message

Caleb Connolly Oct. 24, 2023, 8:23 p.m. UTC
This series begins making some headway towards cleaning up Qualcomm
platform support in u-boot. The following is a rough overview of the
changes:

* Move the Qualcomm clock drivers out of mach-snapdragon and into clk/qcom
* Introduce per-platform clock driver configs to decouple Qualcomm platform
  support from mach-snapdragon targets.
* Add the IPQ4019 clock driver, removing it from mach-ipq40xx and introducing
  the reset map.
* Merge the qcom reset driver is into clk/qcom and rework it to be
  compatible with upstream devicetrees.
* A callback model is added so that multiple clock drivers can be
  compiled in at once.
* SDM845 gains support for enabling/disabling all gate clocks (CBC's) by
  way of a new "gate_clk" abstraction.
* Preperatory cleanup work is done to simplify the bringup process for
  new platforms.

Further details are included in each commit.

The primary goal of this series is to prepare for enabling several new
Qualcomm platforms in u-boot as well as additional peripherals, while
minimising the amount of copy/pasted board-specific code.

This series conflicts with a previous series introducing support for the
Qualcomm RB2 board [1], I plan to resend this initial support pending
acceptance of this series and several other cleanups.

[1]: https://lore.kernel.org/u-boot/20230324080418.3856409-1-bhupesh.sharma@linaro.org/

---
Caleb Connolly (7):
      clk/qcom: move from mach-snapdragon
      clk/qcom: add per-platform configs
      clk/qcom: move ipq4019 driver from mach-ipq40xx
      clk/qcom: sdm845: add register map for simple gate clocks
      clk/qcom: use function pointers for enable and set_rate
      clk/qcom: add mnd_width to clk_rcg_set_rate_mnd()
      clk/qcom: fix rcg divider value

Konrad Dybcio (1):
      clk/qcom: handle resets and clocks in one device

 arch/arm/Kconfig                                   |   2 +
 arch/arm/dts/qcom-ipq4019.dtsi                     |  14 +-
 arch/arm/dts/qcs404-evb.dts                        |  19 +-
 arch/arm/mach-ipq40xx/Makefile                     |   1 -
 arch/arm/mach-ipq40xx/clock-ipq4019.c              |  88 ------
 arch/arm/mach-snapdragon/Kconfig                   |   4 +
 arch/arm/mach-snapdragon/Makefile                  |   5 -
 arch/arm/mach-snapdragon/clock-sdm845.c            |  98 -------
 arch/arm/mach-snapdragon/clock-snapdragon.c        | 181 ------------
 arch/arm/mach-snapdragon/clock-snapdragon.h        |  48 ----
 .../mach-snapdragon/include/mach/sysmap-sdm845.h   |   3 +
 drivers/clk/Kconfig                                |   1 +
 drivers/clk/Makefile                               |   1 +
 drivers/clk/qcom/Kconfig                           |  52 ++++
 drivers/clk/qcom/Makefile                          |  10 +
 .../clk/qcom}/clock-apq8016.c                      |  41 ++-
 .../clk/qcom}/clock-apq8096.c                      |  41 ++-
 .../reset-qcom.c => clk/qcom/clock-ipq4019.c}      | 165 ++++-------
 drivers/clk/qcom/clock-qcom.c                      | 303 +++++++++++++++++++++
 drivers/clk/qcom/clock-qcom.h                      |  96 +++++++
 .../clk/qcom}/clock-qcs404.c                       |  97 +++++--
 drivers/clk/qcom/clock-sdm845.c                    | 265 ++++++++++++++++++
 drivers/reset/Kconfig                              |   7 -
 drivers/reset/Makefile                             |   1 -
 24 files changed, 938 insertions(+), 605 deletions(-)
---
base-commit: 30d01b582f2274eb8c808026c5fb4c33e9f2210d

// Caleb (they/them)

Comments

Sumit Garg Oct. 25, 2023, 12:10 p.m. UTC | #1
Hi Caleb,

On Wed, 25 Oct 2023 at 01:54, Caleb Connolly <caleb.connolly@linaro.org> wrote:
>
> This series begins making some headway towards cleaning up Qualcomm
> platform support in u-boot. The following is a rough overview of the
> changes:
>
> * Move the Qualcomm clock drivers out of mach-snapdragon and into clk/qcom
> * Introduce per-platform clock driver configs to decouple Qualcomm platform
>   support from mach-snapdragon targets.
> * Add the IPQ4019 clock driver, removing it from mach-ipq40xx and introducing
>   the reset map.
> * Merge the qcom reset driver is into clk/qcom and rework it to be
>   compatible with upstream devicetrees.
> * A callback model is added so that multiple clock drivers can be
>   compiled in at once.
> * SDM845 gains support for enabling/disabling all gate clocks (CBC's) by
>   way of a new "gate_clk" abstraction.
> * Preperatory cleanup work is done to simplify the bringup process for
>   new platforms.

Thanks for your cleanup work. You should have at least CCed the board
maintainers (board/qualcomm/*/MAINTAINERS). Were you able to test this
series on all the existing Qcom platforms supported?

>
> Further details are included in each commit.

I will give this series a review.

>
> The primary goal of this series is to prepare for enabling several new
> Qualcomm platforms in u-boot as well as additional peripherals, while
> minimising the amount of copy/pasted board-specific code.
>

I suppose this series would move us closer to directly importing DTs
from Linux. Do you plan to close the remaining gap (serial DT nodes
are on top of my head) before adding further platform support?

-Sumit

> This series conflicts with a previous series introducing support for the
> Qualcomm RB2 board [1], I plan to resend this initial support pending
> acceptance of this series and several other cleanups.
>
> [1]: https://lore.kernel.org/u-boot/20230324080418.3856409-1-bhupesh.sharma@linaro.org/
>
> ---
> Caleb Connolly (7):
>       clk/qcom: move from mach-snapdragon
>       clk/qcom: add per-platform configs
>       clk/qcom: move ipq4019 driver from mach-ipq40xx
>       clk/qcom: sdm845: add register map for simple gate clocks
>       clk/qcom: use function pointers for enable and set_rate
>       clk/qcom: add mnd_width to clk_rcg_set_rate_mnd()
>       clk/qcom: fix rcg divider value
>
> Konrad Dybcio (1):
>       clk/qcom: handle resets and clocks in one device
>
>  arch/arm/Kconfig                                   |   2 +
>  arch/arm/dts/qcom-ipq4019.dtsi                     |  14 +-
>  arch/arm/dts/qcs404-evb.dts                        |  19 +-
>  arch/arm/mach-ipq40xx/Makefile                     |   1 -
>  arch/arm/mach-ipq40xx/clock-ipq4019.c              |  88 ------
>  arch/arm/mach-snapdragon/Kconfig                   |   4 +
>  arch/arm/mach-snapdragon/Makefile                  |   5 -
>  arch/arm/mach-snapdragon/clock-sdm845.c            |  98 -------
>  arch/arm/mach-snapdragon/clock-snapdragon.c        | 181 ------------
>  arch/arm/mach-snapdragon/clock-snapdragon.h        |  48 ----
>  .../mach-snapdragon/include/mach/sysmap-sdm845.h   |   3 +
>  drivers/clk/Kconfig                                |   1 +
>  drivers/clk/Makefile                               |   1 +
>  drivers/clk/qcom/Kconfig                           |  52 ++++
>  drivers/clk/qcom/Makefile                          |  10 +
>  .../clk/qcom}/clock-apq8016.c                      |  41 ++-
>  .../clk/qcom}/clock-apq8096.c                      |  41 ++-
>  .../reset-qcom.c => clk/qcom/clock-ipq4019.c}      | 165 ++++-------
>  drivers/clk/qcom/clock-qcom.c                      | 303 +++++++++++++++++++++
>  drivers/clk/qcom/clock-qcom.h                      |  96 +++++++
>  .../clk/qcom}/clock-qcs404.c                       |  97 +++++--
>  drivers/clk/qcom/clock-sdm845.c                    | 265 ++++++++++++++++++
>  drivers/reset/Kconfig                              |   7 -
>  drivers/reset/Makefile                             |   1 -
>  24 files changed, 938 insertions(+), 605 deletions(-)
> ---
> base-commit: 30d01b582f2274eb8c808026c5fb4c33e9f2210d
>
> // Caleb (they/them)
>
Caleb Connolly Oct. 25, 2023, 12:47 p.m. UTC | #2
Hi Sumit,

On 25/10/2023 13:10, Sumit Garg wrote:
> Hi Caleb,
> 
> On Wed, 25 Oct 2023 at 01:54, Caleb Connolly <caleb.connolly@linaro.org> wrote:
>>
>> This series begins making some headway towards cleaning up Qualcomm
>> platform support in u-boot. The following is a rough overview of the
>> changes:
>>
>> * Move the Qualcomm clock drivers out of mach-snapdragon and into clk/qcom
>> * Introduce per-platform clock driver configs to decouple Qualcomm platform
>>   support from mach-snapdragon targets.
>> * Add the IPQ4019 clock driver, removing it from mach-ipq40xx and introducing
>>   the reset map.
>> * Merge the qcom reset driver is into clk/qcom and rework it to be
>>   compatible with upstream devicetrees.
>> * A callback model is added so that multiple clock drivers can be
>>   compiled in at once.
>> * SDM845 gains support for enabling/disabling all gate clocks (CBC's) by
>>   way of a new "gate_clk" abstraction.
>> * Preperatory cleanup work is done to simplify the bringup process for
>>   new platforms.
> 
> Thanks for your cleanup work. You should have at least CCed the board
> maintainers (board/qualcomm/*/MAINTAINERS). Were you able to test this
> series on all the existing Qcom platforms supported?

Ah! I thought I had done but it seems not :/. Added them in now.

I have only been able to test this series on db845c. I don't have access
to qcs404, and no easy access to db820c or db410c (I'm unsure to what
extent those two boards work at all with current upstream u-boot).

I should have included this in the cover letter.
> 
>>
>> Further details are included in each commit.
> 
> I will give this series a review.

Thank you!
> 
>>
>> The primary goal of this series is to prepare for enabling several new
>> Qualcomm platforms in u-boot as well as additional peripherals, while
>> minimising the amount of copy/pasted board-specific code.
>>
> 
> I suppose this series would move us closer to directly importing DTs
> from Linux. Do you plan to close the remaining gap (serial DT nodes
> are on top of my head) before adding further platform support?

Yes, I currently have patches to move pinctrl out of mach-snapdragon and
fix support for upstream DT there, as well as fixes for a number of
other drivers. The plan is then to import sdm845 devicetree from Linux
and adjust db845c and starqltechn to use it. The three new platforms
(QCM2290, SM6115 and SM8250) will all use upstream devicetree.

> 
> -Sumit
> 
>> This series conflicts with a previous series introducing support for the
>> Qualcomm RB2 board [1], I plan to resend this initial support pending
>> acceptance of this series and several other cleanups.
>>
>> [1]: https://lore.kernel.org/u-boot/20230324080418.3856409-1-bhupesh.sharma@linaro.org/
>>
>> ---
>> Caleb Connolly (7):
>>       clk/qcom: move from mach-snapdragon
>>       clk/qcom: add per-platform configs
>>       clk/qcom: move ipq4019 driver from mach-ipq40xx
>>       clk/qcom: sdm845: add register map for simple gate clocks
>>       clk/qcom: use function pointers for enable and set_rate
>>       clk/qcom: add mnd_width to clk_rcg_set_rate_mnd()
>>       clk/qcom: fix rcg divider value
>>
>> Konrad Dybcio (1):
>>       clk/qcom: handle resets and clocks in one device
>>
>>  arch/arm/Kconfig                                   |   2 +
>>  arch/arm/dts/qcom-ipq4019.dtsi                     |  14 +-
>>  arch/arm/dts/qcs404-evb.dts                        |  19 +-
>>  arch/arm/mach-ipq40xx/Makefile                     |   1 -
>>  arch/arm/mach-ipq40xx/clock-ipq4019.c              |  88 ------
>>  arch/arm/mach-snapdragon/Kconfig                   |   4 +
>>  arch/arm/mach-snapdragon/Makefile                  |   5 -
>>  arch/arm/mach-snapdragon/clock-sdm845.c            |  98 -------
>>  arch/arm/mach-snapdragon/clock-snapdragon.c        | 181 ------------
>>  arch/arm/mach-snapdragon/clock-snapdragon.h        |  48 ----
>>  .../mach-snapdragon/include/mach/sysmap-sdm845.h   |   3 +
>>  drivers/clk/Kconfig                                |   1 +
>>  drivers/clk/Makefile                               |   1 +
>>  drivers/clk/qcom/Kconfig                           |  52 ++++
>>  drivers/clk/qcom/Makefile                          |  10 +
>>  .../clk/qcom}/clock-apq8016.c                      |  41 ++-
>>  .../clk/qcom}/clock-apq8096.c                      |  41 ++-
>>  .../reset-qcom.c => clk/qcom/clock-ipq4019.c}      | 165 ++++-------
>>  drivers/clk/qcom/clock-qcom.c                      | 303 +++++++++++++++++++++
>>  drivers/clk/qcom/clock-qcom.h                      |  96 +++++++
>>  .../clk/qcom}/clock-qcs404.c                       |  97 +++++--
>>  drivers/clk/qcom/clock-sdm845.c                    | 265 ++++++++++++++++++
>>  drivers/reset/Kconfig                              |   7 -
>>  drivers/reset/Makefile                             |   1 -
>>  24 files changed, 938 insertions(+), 605 deletions(-)
>> ---
>> base-commit: 30d01b582f2274eb8c808026c5fb4c33e9f2210d
>>
>> // Caleb (they/them)
>>
Sumit Garg Oct. 25, 2023, 1:06 p.m. UTC | #3
On Wed, 25 Oct 2023 at 18:17, Caleb Connolly <caleb.connolly@linaro.org> wrote:
>
> Hi Sumit,
>
> On 25/10/2023 13:10, Sumit Garg wrote:
> > Hi Caleb,
> >
> > On Wed, 25 Oct 2023 at 01:54, Caleb Connolly <caleb.connolly@linaro.org> wrote:
> >>
> >> This series begins making some headway towards cleaning up Qualcomm
> >> platform support in u-boot. The following is a rough overview of the
> >> changes:
> >>
> >> * Move the Qualcomm clock drivers out of mach-snapdragon and into clk/qcom
> >> * Introduce per-platform clock driver configs to decouple Qualcomm platform
> >>   support from mach-snapdragon targets.
> >> * Add the IPQ4019 clock driver, removing it from mach-ipq40xx and introducing
> >>   the reset map.
> >> * Merge the qcom reset driver is into clk/qcom and rework it to be
> >>   compatible with upstream devicetrees.
> >> * A callback model is added so that multiple clock drivers can be
> >>   compiled in at once.
> >> * SDM845 gains support for enabling/disabling all gate clocks (CBC's) by
> >>   way of a new "gate_clk" abstraction.
> >> * Preperatory cleanup work is done to simplify the bringup process for
> >>   new platforms.
> >
> > Thanks for your cleanup work. You should have at least CCed the board
> > maintainers (board/qualcomm/*/MAINTAINERS). Were you able to test this
> > series on all the existing Qcom platforms supported?
>
> Ah! I thought I had done but it seems not :/. Added them in now.
>
> I have only been able to test this series on db845c. I don't have access
> to qcs404, and no easy access to db820c or db410c (I'm unsure to what
> extent those two boards work at all with current upstream u-boot).

I can help to test on qcs404 and db410c (I have tested it recently so
it should work).

Jorge,

Do you still maintain db820c and can help with testing?

>
> I should have included this in the cover letter.
> >
> >>
> >> Further details are included in each commit.
> >
> > I will give this series a review.
>
> Thank you!
> >
> >>
> >> The primary goal of this series is to prepare for enabling several new
> >> Qualcomm platforms in u-boot as well as additional peripherals, while
> >> minimising the amount of copy/pasted board-specific code.
> >>
> >
> > I suppose this series would move us closer to directly importing DTs
> > from Linux. Do you plan to close the remaining gap (serial DT nodes
> > are on top of my head) before adding further platform support?
>
> Yes, I currently have patches to move pinctrl out of mach-snapdragon and
> fix support for upstream DT there, as well as fixes for a number of
> other drivers. The plan is then to import sdm845 devicetree from Linux
> and adjust db845c and starqltechn to use it. The three new platforms
> (QCM2290, SM6115 and SM8250) will all use upstream devicetree.
>

Good to see that coming.

-Sumit

> >
> >> This series conflicts with a previous series introducing support for the
> >> Qualcomm RB2 board [1], I plan to resend this initial support pending
> >> acceptance of this series and several other cleanups.
> >>
> >> [1]: https://lore.kernel.org/u-boot/20230324080418.3856409-1-bhupesh.sharma@linaro.org/
> >>
> >> ---
> >> Caleb Connolly (7):
> >>       clk/qcom: move from mach-snapdragon
> >>       clk/qcom: add per-platform configs
> >>       clk/qcom: move ipq4019 driver from mach-ipq40xx
> >>       clk/qcom: sdm845: add register map for simple gate clocks
> >>       clk/qcom: use function pointers for enable and set_rate
> >>       clk/qcom: add mnd_width to clk_rcg_set_rate_mnd()
> >>       clk/qcom: fix rcg divider value
> >>
> >> Konrad Dybcio (1):
> >>       clk/qcom: handle resets and clocks in one device
> >>
> >>  arch/arm/Kconfig                                   |   2 +
> >>  arch/arm/dts/qcom-ipq4019.dtsi                     |  14 +-
> >>  arch/arm/dts/qcs404-evb.dts                        |  19 +-
> >>  arch/arm/mach-ipq40xx/Makefile                     |   1 -
> >>  arch/arm/mach-ipq40xx/clock-ipq4019.c              |  88 ------
> >>  arch/arm/mach-snapdragon/Kconfig                   |   4 +
> >>  arch/arm/mach-snapdragon/Makefile                  |   5 -
> >>  arch/arm/mach-snapdragon/clock-sdm845.c            |  98 -------
> >>  arch/arm/mach-snapdragon/clock-snapdragon.c        | 181 ------------
> >>  arch/arm/mach-snapdragon/clock-snapdragon.h        |  48 ----
> >>  .../mach-snapdragon/include/mach/sysmap-sdm845.h   |   3 +
> >>  drivers/clk/Kconfig                                |   1 +
> >>  drivers/clk/Makefile                               |   1 +
> >>  drivers/clk/qcom/Kconfig                           |  52 ++++
> >>  drivers/clk/qcom/Makefile                          |  10 +
> >>  .../clk/qcom}/clock-apq8016.c                      |  41 ++-
> >>  .../clk/qcom}/clock-apq8096.c                      |  41 ++-
> >>  .../reset-qcom.c => clk/qcom/clock-ipq4019.c}      | 165 ++++-------
> >>  drivers/clk/qcom/clock-qcom.c                      | 303 +++++++++++++++++++++
> >>  drivers/clk/qcom/clock-qcom.h                      |  96 +++++++
> >>  .../clk/qcom}/clock-qcs404.c                       |  97 +++++--
> >>  drivers/clk/qcom/clock-sdm845.c                    | 265 ++++++++++++++++++
> >>  drivers/reset/Kconfig                              |   7 -
> >>  drivers/reset/Makefile                             |   1 -
> >>  24 files changed, 938 insertions(+), 605 deletions(-)
> >> ---
> >> base-commit: 30d01b582f2274eb8c808026c5fb4c33e9f2210d
> >>
> >> // Caleb (they/them)
> >>
>
> --
> // Caleb (they/them)