mbox series

[v6,0/7] MediaTek DVFSRC Bus Bandwidth and Regulator knobs

Message ID 20240610085735.147134-1-angelogioacchino.delregno@collabora.com
Headers show
Series MediaTek DVFSRC Bus Bandwidth and Regulator knobs | expand

Message

AngeloGioacchino Del Regno June 10, 2024, 8:57 a.m. UTC
Changes in v6:
 - Fixed build with clang (thanks Nathan!)
 - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
 - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c

Changes in v5:
 - Fixed Kconfig dependencies in interconnect
 - Fixed module build for dvfsrc and interconnect

Changes in v4:
 - Updated patch [3/7] to actually remove address/size cells
   as the old version got unexpectedly pushed in v3.

Changes in v3:
 - Removed examples from interconnect and regulator bindings
   and kept example node with interconnect and regulator in
   the main DVFSRC binding as suggested
 - Removed 'reg' from interconnect and regulator, removed both
   address and size cells from the main DVFSRC binding as that
   was not really needed
 - Added anyOf-required entries in the regulator binding as it
   doesn't make sense to probe it without any regulator subnode

Changes in v2:
 - Fixed issues with regulator binding about useless quotes and
   wrong binding path (oops)
 - Removed useless 'items' from DVFSRC main binding
 - Allowed address/size cells to DVFSRC main binding to resolve
   validation issues on the regulator and interconnect bindings
 - Changed dvfsrc node name to `system-controller`, as the DVFSRC
   is actually able to control multiple system components.
 - Added a commit to remove mtk-dvfs-regulator.c before adding the
   new, refactored regulator driver


This series adds support for the MediaTek Dynamic Voltage and Frequency
Scaling Resource Controller (DVFSRC), found on many MediaTek SoCs.

This hardware collects requests from both software and the various remote
processors embededd into the SoC, and decides about a minimum operating
voltage and a minimum DRAM frequency to fulfill those requests, in an
effort to provide the best achievable performance per watt.

Such hardware IP is capable of transparently performing direct register
R/W on all of the DVFSRC-controlled regulators and SoC bandwidth knobs.

Summarizing how the DVFSRC works for Interconnect:

             ICC provider         ICC Nodes
                              ----          ----
             _________       |CPU |   |--- |VPU |
    _____   |         |-----  ----    |     ----
   |     |->|  DRAM   |       ----    |     ----
   |DRAM |->|scheduler|----- |GPU |   |--- |DISP|
   |     |->|  (EMI)  |       ----    |     ----
   |_____|->|_________|---.   -----   |     ----
               /|\         `-|MMSYS|--|--- |VDEC|
                |             -----   |     ----
                |                     |     ----
                | change DRAM freq    |--- |VENC|
             --------                 |     ----
    SMC --> | DVFSRC |                |     ----
             --------                 |--- |IMG |
                                      |     ----
                                      |     ----
                                      |--- |CAM |
                                            ----

...and for regulators, it's simply...
   SMC -> DVFSRC -> Regulator voltage decider -> (vreg) Registers R/W

Please note that this series is based on an old (abandoned) series from
MediaTek [1], and reuses some parts of the code found in that.

Besides, included in this series, there's also a refactoring of the
mtk-dvfsrc-regulator driver, which never got compiled at all, and would
not build anyway because of missing headers and typos: that commit did
not get any Fixes tag because, well, backporting makes no sense at all
as the DVFSRC support - which is critical for that driver to work - is
introduced with *this series*! :-)

P.S.: The DVFSRC regulator is a requirement for the MediaTek UFSHCI
      controller's crypto boost feature, which is already upstream but
      lacking the actual regulator to work....... :-)

[1]: https://lore.kernel.org/all/20210812085846.2628-1-dawei.chien@mediatek.com/

AngeloGioacchino Del Regno (7):
  dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
  dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings
  dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
  soc: mediatek: Add MediaTek DVFS Resource Collector (DVFSRC) driver
  regulator: Remove mtk-dvfsrc-regulator.c
  regulator: Add refactored mtk-dvfsrc-regulator driver
  interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect
    driver

 .../interconnect/mediatek,mt8183-emi.yaml     |  51 ++
 .../mediatek,mt6873-dvfsrc-regulator.yaml     |  43 ++
 .../soc/mediatek/mediatek,mt8183-dvfsrc.yaml  |  83 +++
 drivers/interconnect/Kconfig                  |   1 +
 drivers/interconnect/Makefile                 |   1 +
 drivers/interconnect/mediatek/Kconfig         |  29 +
 drivers/interconnect/mediatek/Makefile        |   5 +
 drivers/interconnect/mediatek/icc-emi.c       | 153 +++++
 drivers/interconnect/mediatek/icc-emi.h       |  40 ++
 drivers/interconnect/mediatek/mt8183.c        | 143 +++++
 drivers/interconnect/mediatek/mt8195.c        | 339 +++++++++++
 drivers/regulator/mtk-dvfsrc-regulator.c      | 248 ++++----
 drivers/soc/mediatek/Kconfig                  |  11 +
 drivers/soc/mediatek/Makefile                 |   1 +
 drivers/soc/mediatek/mtk-dvfsrc.c             | 545 ++++++++++++++++++
 .../interconnect/mediatek,mt8183.h            |  23 +
 .../interconnect/mediatek,mt8195.h            |  44 ++
 include/linux/soc/mediatek/dvfsrc.h           |  36 ++
 include/linux/soc/mediatek/mtk_sip_svc.h      |   3 +
 19 files changed, 1666 insertions(+), 133 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/interconnect/mediatek,mt8183-emi.yaml
 create mode 100644 Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml
 create mode 100644 Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml
 create mode 100644 drivers/interconnect/mediatek/Kconfig
 create mode 100644 drivers/interconnect/mediatek/Makefile
 create mode 100644 drivers/interconnect/mediatek/icc-emi.c
 create mode 100644 drivers/interconnect/mediatek/icc-emi.h
 create mode 100644 drivers/interconnect/mediatek/mt8183.c
 create mode 100644 drivers/interconnect/mediatek/mt8195.c
 create mode 100644 drivers/soc/mediatek/mtk-dvfsrc.c
 create mode 100644 include/dt-bindings/interconnect/mediatek,mt8183.h
 create mode 100644 include/dt-bindings/interconnect/mediatek,mt8195.h
 create mode 100644 include/linux/soc/mediatek/dvfsrc.h

Comments

Georgi Djakov June 13, 2024, 12:38 p.m. UTC | #1
On 10.06.24 11:57, AngeloGioacchino Del Regno wrote:
> The Dynamic Voltage and Frequency Scaling Resource Collector (DVFSRC) is a
> Hardware module used to collect all the requests from both software and the
> various remote processors embedded into the SoC and decide about a minimum
> operating voltage and a minimum DRAM frequency to fulfill those requests in
> an effort to provide the best achievable performance per watt.
> 
> This hardware IP is capable of transparently performing direct register R/W
> on all of the DVFSRC-controlled regulators and SoC bandwidth knobs.
> 
> This driver includes support for MT8183, MT8192 and MT8195.
> 
> Co-Developed-by: Dawei Chien <dawei.chien@mediatek.com>
> [Angelo: Partial refactoring and cleanups]
> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>

Reviewed-by: Georgi Djakov <djakov@kerenl.org>
Georgi Djakov June 13, 2024, 12:38 p.m. UTC | #2
On 10.06.24 11:57, AngeloGioacchino Del Regno wrote:
> Changes in v6:
>   - Fixed build with clang (thanks Nathan!)
>   - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
>   - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c
> 
[..]
> 
> AngeloGioacchino Del Regno (7):
>    dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
>    dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings
>    dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
>    soc: mediatek: Add MediaTek DVFS Resource Collector (DVFSRC) driver
>    regulator: Remove mtk-dvfsrc-regulator.c
>    regulator: Add refactored mtk-dvfsrc-regulator driver
>    interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect
>      driver

Thanks Angelo! I have picked patches 2 and 7. Patch 2 is also available
in my icc-mtk stable branch. Feel free to pull it to resolve the schema
dependency for patch 3.

BR,
Georgi

> 
>   .../interconnect/mediatek,mt8183-emi.yaml     |  51 ++
>   .../mediatek,mt6873-dvfsrc-regulator.yaml     |  43 ++
>   .../soc/mediatek/mediatek,mt8183-dvfsrc.yaml  |  83 +++
>   drivers/interconnect/Kconfig                  |   1 +
>   drivers/interconnect/Makefile                 |   1 +
>   drivers/interconnect/mediatek/Kconfig         |  29 +
>   drivers/interconnect/mediatek/Makefile        |   5 +
>   drivers/interconnect/mediatek/icc-emi.c       | 153 +++++
>   drivers/interconnect/mediatek/icc-emi.h       |  40 ++
>   drivers/interconnect/mediatek/mt8183.c        | 143 +++++
>   drivers/interconnect/mediatek/mt8195.c        | 339 +++++++++++
>   drivers/regulator/mtk-dvfsrc-regulator.c      | 248 ++++----
>   drivers/soc/mediatek/Kconfig                  |  11 +
>   drivers/soc/mediatek/Makefile                 |   1 +
>   drivers/soc/mediatek/mtk-dvfsrc.c             | 545 ++++++++++++++++++
>   .../interconnect/mediatek,mt8183.h            |  23 +
>   .../interconnect/mediatek,mt8195.h            |  44 ++
>   include/linux/soc/mediatek/dvfsrc.h           |  36 ++
>   include/linux/soc/mediatek/mtk_sip_svc.h      |   3 +
>   19 files changed, 1666 insertions(+), 133 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/interconnect/mediatek,mt8183-emi.yaml
>   create mode 100644 Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml
>   create mode 100644 Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml
>   create mode 100644 drivers/interconnect/mediatek/Kconfig
>   create mode 100644 drivers/interconnect/mediatek/Makefile
>   create mode 100644 drivers/interconnect/mediatek/icc-emi.c
>   create mode 100644 drivers/interconnect/mediatek/icc-emi.h
>   create mode 100644 drivers/interconnect/mediatek/mt8183.c
>   create mode 100644 drivers/interconnect/mediatek/mt8195.c
>   create mode 100644 drivers/soc/mediatek/mtk-dvfsrc.c
>   create mode 100644 include/dt-bindings/interconnect/mediatek,mt8183.h
>   create mode 100644 include/dt-bindings/interconnect/mediatek,mt8195.h
>   create mode 100644 include/linux/soc/mediatek/dvfsrc.h
>
AngeloGioacchino Del Regno June 14, 2024, 9:39 a.m. UTC | #3
Il 13/06/24 14:38, Georgi Djakov ha scritto:
> On 10.06.24 11:57, AngeloGioacchino Del Regno wrote:
>> Changes in v6:
>>   - Fixed build with clang (thanks Nathan!)
>>   - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
>>   - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c
>>
> [..]
>>
>> AngeloGioacchino Del Regno (7):
>>    dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
>>    dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings
>>    dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
>>    soc: mediatek: Add MediaTek DVFS Resource Collector (DVFSRC) driver
>>    regulator: Remove mtk-dvfsrc-regulator.c
>>    regulator: Add refactored mtk-dvfsrc-regulator driver
>>    interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect
>>      driver
> 
> Thanks Angelo! I have picked patches 2 and 7. Patch 2 is also available
> in my icc-mtk stable branch. Feel free to pull it to resolve the schema
> dependency for patch 3.
> 

Thank you Georgi!

I have to wait until Mark takes the regulator bindings and commits, then I will
be able to pick the soc bindings and driver. :-)

Cheers,
Angelo



> BR,
> Georgi
> 
>>
>>   .../interconnect/mediatek,mt8183-emi.yaml     |  51 ++
>>   .../mediatek,mt6873-dvfsrc-regulator.yaml     |  43 ++
>>   .../soc/mediatek/mediatek,mt8183-dvfsrc.yaml  |  83 +++
>>   drivers/interconnect/Kconfig                  |   1 +
>>   drivers/interconnect/Makefile                 |   1 +
>>   drivers/interconnect/mediatek/Kconfig         |  29 +
>>   drivers/interconnect/mediatek/Makefile        |   5 +
>>   drivers/interconnect/mediatek/icc-emi.c       | 153 +++++
>>   drivers/interconnect/mediatek/icc-emi.h       |  40 ++
>>   drivers/interconnect/mediatek/mt8183.c        | 143 +++++
>>   drivers/interconnect/mediatek/mt8195.c        | 339 +++++++++++
>>   drivers/regulator/mtk-dvfsrc-regulator.c      | 248 ++++----
>>   drivers/soc/mediatek/Kconfig                  |  11 +
>>   drivers/soc/mediatek/Makefile                 |   1 +
>>   drivers/soc/mediatek/mtk-dvfsrc.c             | 545 ++++++++++++++++++
>>   .../interconnect/mediatek,mt8183.h            |  23 +
>>   .../interconnect/mediatek,mt8195.h            |  44 ++
>>   include/linux/soc/mediatek/dvfsrc.h           |  36 ++
>>   include/linux/soc/mediatek/mtk_sip_svc.h      |   3 +
>>   19 files changed, 1666 insertions(+), 133 deletions(-)
>>   create mode 100644 
>> Documentation/devicetree/bindings/interconnect/mediatek,mt8183-emi.yaml
>>   create mode 100644 
>> Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml
>>   create mode 100644 
>> Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml
>>   create mode 100644 drivers/interconnect/mediatek/Kconfig
>>   create mode 100644 drivers/interconnect/mediatek/Makefile
>>   create mode 100644 drivers/interconnect/mediatek/icc-emi.c
>>   create mode 100644 drivers/interconnect/mediatek/icc-emi.h
>>   create mode 100644 drivers/interconnect/mediatek/mt8183.c
>>   create mode 100644 drivers/interconnect/mediatek/mt8195.c
>>   create mode 100644 drivers/soc/mediatek/mtk-dvfsrc.c
>>   create mode 100644 include/dt-bindings/interconnect/mediatek,mt8183.h
>>   create mode 100644 include/dt-bindings/interconnect/mediatek,mt8195.h
>>   create mode 100644 include/linux/soc/mediatek/dvfsrc.h
>>
>
AngeloGioacchino Del Regno June 25, 2024, 8:32 a.m. UTC | #4
Il 10/06/24 10:57, AngeloGioacchino Del Regno ha scritto:
> Changes in v6:
>   - Fixed build with clang (thanks Nathan!)
>   - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
>   - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c
> 

...

> 
> AngeloGioacchino Del Regno (7):
>    dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators

Mark, I assume that this series is ok from your perspective, since this has got
your acks and r-b -- but in order to pick the soc/mediatek stuff I need all of
the dependent bindings to be in as well .. and this includes the regulator one!

The main issue here is that the main soc/mediatek dvfsrc binding
dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
does use the others, so I can't pick this one without the others being present
or the validation obviously fails.

So... gentle ping :-)

Thanks,
Angelo

>    dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings
>    dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
>    soc: mediatek: Add MediaTek DVFS Resource Collector (DVFSRC) driver
>    regulator: Remove mtk-dvfsrc-regulator.c
>    regulator: Add refactored mtk-dvfsrc-regulator driver
>    interconnect: mediatek: Add MediaTek MT8183/8195 EMI Interconnect
>      driver
> 
>   .../interconnect/mediatek,mt8183-emi.yaml     |  51 ++
>   .../mediatek,mt6873-dvfsrc-regulator.yaml     |  43 ++
>   .../soc/mediatek/mediatek,mt8183-dvfsrc.yaml  |  83 +++
>   drivers/interconnect/Kconfig                  |   1 +
>   drivers/interconnect/Makefile                 |   1 +
>   drivers/interconnect/mediatek/Kconfig         |  29 +
>   drivers/interconnect/mediatek/Makefile        |   5 +
>   drivers/interconnect/mediatek/icc-emi.c       | 153 +++++
>   drivers/interconnect/mediatek/icc-emi.h       |  40 ++
>   drivers/interconnect/mediatek/mt8183.c        | 143 +++++
>   drivers/interconnect/mediatek/mt8195.c        | 339 +++++++++++
>   drivers/regulator/mtk-dvfsrc-regulator.c      | 248 ++++----
>   drivers/soc/mediatek/Kconfig                  |  11 +
>   drivers/soc/mediatek/Makefile                 |   1 +
>   drivers/soc/mediatek/mtk-dvfsrc.c             | 545 ++++++++++++++++++
>   .../interconnect/mediatek,mt8183.h            |  23 +
>   .../interconnect/mediatek,mt8195.h            |  44 ++
>   include/linux/soc/mediatek/dvfsrc.h           |  36 ++
>   include/linux/soc/mediatek/mtk_sip_svc.h      |   3 +
>   19 files changed, 1666 insertions(+), 133 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/interconnect/mediatek,mt8183-emi.yaml
>   create mode 100644 Documentation/devicetree/bindings/regulator/mediatek,mt6873-dvfsrc-regulator.yaml
>   create mode 100644 Documentation/devicetree/bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml
>   create mode 100644 drivers/interconnect/mediatek/Kconfig
>   create mode 100644 drivers/interconnect/mediatek/Makefile
>   create mode 100644 drivers/interconnect/mediatek/icc-emi.c
>   create mode 100644 drivers/interconnect/mediatek/icc-emi.h
>   create mode 100644 drivers/interconnect/mediatek/mt8183.c
>   create mode 100644 drivers/interconnect/mediatek/mt8195.c
>   create mode 100644 drivers/soc/mediatek/mtk-dvfsrc.c
>   create mode 100644 include/dt-bindings/interconnect/mediatek,mt8183.h
>   create mode 100644 include/dt-bindings/interconnect/mediatek,mt8195.h
>   create mode 100644 include/linux/soc/mediatek/dvfsrc.h
>
Mark Brown June 25, 2024, 10:25 a.m. UTC | #5
On Tue, Jun 25, 2024 at 10:32:30AM +0200, AngeloGioacchino Del Regno wrote:

> Mark, I assume that this series is ok from your perspective, since this has got
> your acks and r-b -- but in order to pick the soc/mediatek stuff I need all of
> the dependent bindings to be in as well .. and this includes the regulator one!
> 
> The main issue here is that the main soc/mediatek dvfsrc binding
> dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
> does use the others, so I can't pick this one without the others being present
> or the validation obviously fails.
> 
> So... gentle ping :-)

I can't tell what you want from me here.
AngeloGioacchino Del Regno June 25, 2024, 11:58 a.m. UTC | #6
Il 25/06/24 12:25, Mark Brown ha scritto:
> On Tue, Jun 25, 2024 at 10:32:30AM +0200, AngeloGioacchino Del Regno wrote:
> 
>> Mark, I assume that this series is ok from your perspective, since this has got
>> your acks and r-b -- but in order to pick the soc/mediatek stuff I need all of
>> the dependent bindings to be in as well .. and this includes the regulator one!
>>
>> The main issue here is that the main soc/mediatek dvfsrc binding
>> dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
>> does use the others, so I can't pick this one without the others being present
>> or the validation obviously fails.
>>
>> So... gentle ping :-)
> 
> I can't tell what you want from me here.

I'm asking you to pick the regulator patches :-)

    dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
    regulator: Remove mtk-dvfsrc-regulator.c
    regulator: Add refactored mtk-dvfsrc-regulator driver

^^^ These ones.
Mark Brown June 25, 2024, 12:50 p.m. UTC | #7
On Tue, Jun 25, 2024 at 01:58:57PM +0200, AngeloGioacchino Del Regno wrote:
> Il 25/06/24 12:25, Mark Brown ha scritto:
> > On Tue, Jun 25, 2024 at 10:32:30AM +0200, AngeloGioacchino Del Regno wrote:

> > > The main issue here is that the main soc/mediatek dvfsrc binding
> > > dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
> > > does use the others, so I can't pick this one without the others being present
> > > or the validation obviously fails.

> > I can't tell what you want from me here.

> I'm asking you to pick the regulator patches :-)

>    dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
>    regulator: Remove mtk-dvfsrc-regulator.c
>    regulator: Add refactored mtk-dvfsrc-regulator driver

Is there no interdependency with the rest of the series?  There was in
some earlier version at least I think.  If I reviewed the patches it's
because I wasn't expecting to apply them.
AngeloGioacchino Del Regno June 25, 2024, 2:51 p.m. UTC | #8
Il 25/06/24 14:50, Mark Brown ha scritto:
> On Tue, Jun 25, 2024 at 01:58:57PM +0200, AngeloGioacchino Del Regno wrote:
>> Il 25/06/24 12:25, Mark Brown ha scritto:
>>> On Tue, Jun 25, 2024 at 10:32:30AM +0200, AngeloGioacchino Del Regno wrote:
> 
>>>> The main issue here is that the main soc/mediatek dvfsrc binding
>>>> dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
>>>> does use the others, so I can't pick this one without the others being present
>>>> or the validation obviously fails.
> 
>>> I can't tell what you want from me here.
> 
>> I'm asking you to pick the regulator patches :-)
> 
>>     dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
>>     regulator: Remove mtk-dvfsrc-regulator.c
>>     regulator: Add refactored mtk-dvfsrc-regulator driver
> 
> Is there no interdependency with the rest of the series?  There was in
> some earlier version at least I think.  If I reviewed the patches it's
> because I wasn't expecting to apply them.

The interdependency is for soc/mediatek commits, which depend on:
  - Interconnect commits (which Georgi picked already); and
  - Regulator commits

And... you reviewed the patch in the previous merge window :-)

Cheers
Mark Brown June 25, 2024, 2:55 p.m. UTC | #9
On Tue, Jun 25, 2024 at 04:51:56PM +0200, AngeloGioacchino Del Regno wrote:

> The interdependency is for soc/mediatek commits, which depend on:
>  - Interconnect commits (which Georgi picked already); and
>  - Regulator commits

So the regulator stuff works without the interconnect and vice versa, no
build deps or anything?

> And... you reviewed the patch in the previous merge window :-)

I simply don't provide tags for things I expect to go via my tree.
Mark Brown June 25, 2024, 6:47 p.m. UTC | #10
On Mon, 10 Jun 2024 10:57:28 +0200, AngeloGioacchino Del Regno wrote:
> Changes in v6:
>  - Fixed build with clang (thanks Nathan!)
>  - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
>  - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c
> 
> Changes in v5:
>  - Fixed Kconfig dependencies in interconnect
>  - Fixed module build for dvfsrc and interconnect
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next

Thanks!

[1/7] dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
      commit: b147ae7ae5141cb10c520d372ecabb2c520210c4
[5/7] regulator: Remove mtk-dvfsrc-regulator.c
      commit: cd102850e32c145661c6a0640dc6c5feba11af72
[6/7] regulator: Add refactored mtk-dvfsrc-regulator driver
      commit: d2ea920a4092b3c0a6a004b93ce198ca37455d90

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark
AngeloGioacchino Del Regno June 26, 2024, 7:43 a.m. UTC | #11
Il 25/06/24 20:47, Mark Brown ha scritto:
> On Mon, 10 Jun 2024 10:57:28 +0200, AngeloGioacchino Del Regno wrote:
>> Changes in v6:
>>   - Fixed build with clang (thanks Nathan!)
>>   - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
>>   - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c
>>
>> Changes in v5:
>>   - Fixed Kconfig dependencies in interconnect
>>   - Fixed module build for dvfsrc and interconnect
>>
>> [...]
> 
> Applied to
> 

Thanks Mark, appreciated :-)

Cheers

>     https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
> 
> Thanks!
> 
> [1/7] dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
>        commit: b147ae7ae5141cb10c520d372ecabb2c520210c4
> [5/7] regulator: Remove mtk-dvfsrc-regulator.c
>        commit: cd102850e32c145661c6a0640dc6c5feba11af72
> [6/7] regulator: Add refactored mtk-dvfsrc-regulator driver
>        commit: d2ea920a4092b3c0a6a004b93ce198ca37455d90
> 
> All being well this means that it will be integrated into the linux-next
> tree (usually sometime in the next 24 hours) and sent to Linus during
> the next merge window (or sooner if it is a bug fix), however if
> problems are discovered then the patch may be dropped or reverted.
> 
> You may get further e-mails resulting from automated or manual testing
> and review of the tree, please engage with people reporting problems and
> send followup patches addressing any issues that are reported if needed.
> 
> If any updates are required or you are submitting further changes they
> should be sent as incremental updates against current git, existing
> patches will not be replaced.
> 
> Please add any relevant lists and maintainers to the CCs when replying
> to this mail.
> 
> Thanks,
> Mark
>
Rob Herring Oct. 11, 2024, 10:15 p.m. UTC | #12
On Mon, Jun 10, 2024 at 3:57 AM AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com> wrote:
>
> Changes in v6:
>  - Fixed build with clang (thanks Nathan!)
>  - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
>  - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c
>
> Changes in v5:
>  - Fixed Kconfig dependencies in interconnect
>  - Fixed module build for dvfsrc and interconnect
>
> Changes in v4:
>  - Updated patch [3/7] to actually remove address/size cells
>    as the old version got unexpectedly pushed in v3.
>
> Changes in v3:
>  - Removed examples from interconnect and regulator bindings
>    and kept example node with interconnect and regulator in
>    the main DVFSRC binding as suggested
>  - Removed 'reg' from interconnect and regulator, removed both
>    address and size cells from the main DVFSRC binding as that
>    was not really needed
>  - Added anyOf-required entries in the regulator binding as it
>    doesn't make sense to probe it without any regulator subnode
>
> Changes in v2:
>  - Fixed issues with regulator binding about useless quotes and
>    wrong binding path (oops)
>  - Removed useless 'items' from DVFSRC main binding
>  - Allowed address/size cells to DVFSRC main binding to resolve
>    validation issues on the regulator and interconnect bindings
>  - Changed dvfsrc node name to `system-controller`, as the DVFSRC
>    is actually able to control multiple system components.
>  - Added a commit to remove mtk-dvfs-regulator.c before adding the
>    new, refactored regulator driver
>
>
> This series adds support for the MediaTek Dynamic Voltage and Frequency
> Scaling Resource Controller (DVFSRC), found on many MediaTek SoCs.
>
> This hardware collects requests from both software and the various remote
> processors embededd into the SoC, and decides about a minimum operating
> voltage and a minimum DRAM frequency to fulfill those requests, in an
> effort to provide the best achievable performance per watt.
>
> Such hardware IP is capable of transparently performing direct register
> R/W on all of the DVFSRC-controlled regulators and SoC bandwidth knobs.
>
> Summarizing how the DVFSRC works for Interconnect:
>
>              ICC provider         ICC Nodes
>                               ----          ----
>              _________       |CPU |   |--- |VPU |
>     _____   |         |-----  ----    |     ----
>    |     |->|  DRAM   |       ----    |     ----
>    |DRAM |->|scheduler|----- |GPU |   |--- |DISP|
>    |     |->|  (EMI)  |       ----    |     ----
>    |_____|->|_________|---.   -----   |     ----
>                /|\         `-|MMSYS|--|--- |VDEC|
>                 |             -----   |     ----
>                 |                     |     ----
>                 | change DRAM freq    |--- |VENC|
>              --------                 |     ----
>     SMC --> | DVFSRC |                |     ----
>              --------                 |--- |IMG |
>                                       |     ----
>                                       |     ----
>                                       |--- |CAM |
>                                             ----
>
> ...and for regulators, it's simply...
>    SMC -> DVFSRC -> Regulator voltage decider -> (vreg) Registers R/W
>
> Please note that this series is based on an old (abandoned) series from
> MediaTek [1], and reuses some parts of the code found in that.
>
> Besides, included in this series, there's also a refactoring of the
> mtk-dvfsrc-regulator driver, which never got compiled at all, and would
> not build anyway because of missing headers and typos: that commit did
> not get any Fixes tag because, well, backporting makes no sense at all
> as the DVFSRC support - which is critical for that driver to work - is
> introduced with *this series*! :-)
>
> P.S.: The DVFSRC regulator is a requirement for the MediaTek UFSHCI
>       controller's crypto boost feature, which is already upstream but
>       lacking the actual regulator to work....... :-)
>
> [1]: https://lore.kernel.org/all/20210812085846.2628-1-dawei.chien@mediatek.com/
>
> AngeloGioacchino Del Regno (7):
>   dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
>   dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings
>   dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
>   soc: mediatek: Add MediaTek DVFS Resource Collector (DVFSRC) driver

Looks like the driver got picked up, but not the binding.
mediatek,mt8183-dvfsrc and mediatek,mt8195-dvfsrc show up in next as
undocumented.

Rob
AngeloGioacchino Del Regno Oct. 14, 2024, 8:06 a.m. UTC | #13
Il 12/10/24 00:15, Rob Herring ha scritto:
> On Mon, Jun 10, 2024 at 3:57 AM AngeloGioacchino Del Regno
> <angelogioacchino.delregno@collabora.com> wrote:
>>
>> Changes in v6:
>>   - Fixed build with clang (thanks Nathan!)
>>   - Removed unused mtk_rmw() macro in mtk-dvfsrc.c
>>   - Added MODULE_DESCRIPTION() to mtk-dvfsrc-regulator.c
>>
>> Changes in v5:
>>   - Fixed Kconfig dependencies in interconnect
>>   - Fixed module build for dvfsrc and interconnect
>>
>> Changes in v4:
>>   - Updated patch [3/7] to actually remove address/size cells
>>     as the old version got unexpectedly pushed in v3.
>>
>> Changes in v3:
>>   - Removed examples from interconnect and regulator bindings
>>     and kept example node with interconnect and regulator in
>>     the main DVFSRC binding as suggested
>>   - Removed 'reg' from interconnect and regulator, removed both
>>     address and size cells from the main DVFSRC binding as that
>>     was not really needed
>>   - Added anyOf-required entries in the regulator binding as it
>>     doesn't make sense to probe it without any regulator subnode
>>
>> Changes in v2:
>>   - Fixed issues with regulator binding about useless quotes and
>>     wrong binding path (oops)
>>   - Removed useless 'items' from DVFSRC main binding
>>   - Allowed address/size cells to DVFSRC main binding to resolve
>>     validation issues on the regulator and interconnect bindings
>>   - Changed dvfsrc node name to `system-controller`, as the DVFSRC
>>     is actually able to control multiple system components.
>>   - Added a commit to remove mtk-dvfs-regulator.c before adding the
>>     new, refactored regulator driver
>>
>>
>> This series adds support for the MediaTek Dynamic Voltage and Frequency
>> Scaling Resource Controller (DVFSRC), found on many MediaTek SoCs.
>>
>> This hardware collects requests from both software and the various remote
>> processors embededd into the SoC, and decides about a minimum operating
>> voltage and a minimum DRAM frequency to fulfill those requests, in an
>> effort to provide the best achievable performance per watt.
>>
>> Such hardware IP is capable of transparently performing direct register
>> R/W on all of the DVFSRC-controlled regulators and SoC bandwidth knobs.
>>
>> Summarizing how the DVFSRC works for Interconnect:
>>
>>               ICC provider         ICC Nodes
>>                                ----          ----
>>               _________       |CPU |   |--- |VPU |
>>      _____   |         |-----  ----    |     ----
>>     |     |->|  DRAM   |       ----    |     ----
>>     |DRAM |->|scheduler|----- |GPU |   |--- |DISP|
>>     |     |->|  (EMI)  |       ----    |     ----
>>     |_____|->|_________|---.   -----   |     ----
>>                 /|\         `-|MMSYS|--|--- |VDEC|
>>                  |             -----   |     ----
>>                  |                     |     ----
>>                  | change DRAM freq    |--- |VENC|
>>               --------                 |     ----
>>      SMC --> | DVFSRC |                |     ----
>>               --------                 |--- |IMG |
>>                                        |     ----
>>                                        |     ----
>>                                        |--- |CAM |
>>                                              ----
>>
>> ...and for regulators, it's simply...
>>     SMC -> DVFSRC -> Regulator voltage decider -> (vreg) Registers R/W
>>
>> Please note that this series is based on an old (abandoned) series from
>> MediaTek [1], and reuses some parts of the code found in that.
>>
>> Besides, included in this series, there's also a refactoring of the
>> mtk-dvfsrc-regulator driver, which never got compiled at all, and would
>> not build anyway because of missing headers and typos: that commit did
>> not get any Fixes tag because, well, backporting makes no sense at all
>> as the DVFSRC support - which is critical for that driver to work - is
>> introduced with *this series*! :-)
>>
>> P.S.: The DVFSRC regulator is a requirement for the MediaTek UFSHCI
>>        controller's crypto boost feature, which is already upstream but
>>        lacking the actual regulator to work....... :-)
>>
>> [1]: https://lore.kernel.org/all/20210812085846.2628-1-dawei.chien@mediatek.com/
>>
>> AngeloGioacchino Del Regno (7):
>>    dt-bindings: regulator: Add bindings for MediaTek DVFSRC Regulators
>>    dt-bindings: interconnect: Add MediaTek EMI Interconnect bindings
>>    dt-bindings: soc: mediatek: Add DVFSRC bindings for MT8183 and MT8195
>>    soc: mediatek: Add MediaTek DVFS Resource Collector (DVFSRC) driver
> 
> Looks like the driver got picked up, but not the binding.
> mediatek,mt8183-dvfsrc and mediatek,mt8195-dvfsrc show up in next as
> undocumented.
> 
Thanks for making me notice. Adding it up right now.

Cheers,
Angelo