linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RFC V2] Add driver for dvfsrc, support for active state of scpsys
@ 2019-04-30  8:50 Henry Chen
  2019-04-30  8:50 ` [RFC V2 01/11] dt-bindings: soc: Add dvfsrc driver bindings Henry Chen
                   ` (10 more replies)
  0 siblings, 11 replies; 22+ messages in thread
From: Henry Chen @ 2019-04-30  8:50 UTC (permalink / raw)
  To: Georgi Djakov, Rob Herring, Matthias Brugger, Viresh Kumar, Stephen Boyd
  Cc: James Liao, Weiyi Lu, Nicolas Boichat, linux-kernel, Fan Chen,
	devicetree, linux-mediatek, linux-arm-kernel

The patchsets add support for MediaTek hardware module named DVFSRC
(dynamic voltage and frequency scaling resource collector). The DVFSRC is
a HW module which is used to collect all the requests from both software
and hardware and turn into the decision of minimum operating voltage and
minimum DRAM frequency to fulfill those requests.

So, This series is to implement the dvfsrc driver to collect all the
requests of operating voltage or DRAM bandwidth from other device drivers
likes GPU/Camera through 2 frameworks basically:

1. interconnect framework: to aggregate the bandwidth
   requirements from different clients

[1] https://patchwork.kernel.org/cover/10766329/

Below is the emi bandwidth map of mt8183. There has a hw module "DRAM scheduler"
which used to control the throughput. The DVFSRC will collect forecast data
of dram bandwidth from SW consumers(camera/gpu...), and according the forecast
to change the DRAM frequency

           ICC provider         ICC Nodes
                            ----          ----
           ---------       |CPU |   |--->|VPU |
  -----   |         |-----> ----    |     ----
 |DRAM |--|DRAM     |       ----    |     ----
 |     |--|scheduler|----->|GPU |   |--->|DISP|
 |     |--|(EMI)    |       ----    |     ----
 |     |--|         |       -----   |     ----
  -----   |         |----->|MMSYS|--|--->|VDEC|
           ---------        -----   |     ----
             /|\                    |     ----
              |change DRAM freq     |--->|VENC|
           ----------               |     ----
          |  DVFSR   |              |
          |          |              |     ----
           ----------               |--->|IMG |
                                    |     ----
                                    |     ----
                                    |--->|CAM |
                                          ----

2. Active state management of power domains[1]: to handle the operating
   voltage opp requirement from different power domains

[2] https://lwn.net/Articles/744047/

Changes in RFC V2:
* Remove the DT property dram_type. (Rob)
* Used generic dts property 'opp-level' to get the performace state. (Stephen)
* Remove unecessary dependency config on Kconfig. (Stephen)
* Remove unused header file, fixed some coding style issue, typo,
error handling on dvfsrc driver. (Nicolas/Stephen)
* Remove irq handler on dvfsrc driver. (Stephen)
* Remove init table on dvfsrc driver, combine hw init on trustzone.
* Add interconnect support of mt8183 to aggregate the emi bandwidth.
(Georgi)

RFC V1: https://lore.kernel.org/patchwork/cover/1028535/

Henry Chen (11):
  dt-bindings: soc: Add dvfsrc driver bindings
  dt-bindings: soc: Add opp table on scpsys bindings
  soc: mediatek: add support for the performance state
  arm64: dts: mt8183: add performance state support of scpsys
  soc: mediatek: add header for mediatek SIP interface
  soc: mediatek: add MT8183 dvfsrc support
  arm64: dts: mt8183: add dvfsrc related nodes
  dt-bindings: interconnect: add MT8183 interconnect dt-bindings
  dt-bindings: interconnect: Add header for interconnect node
  interconnect: mediatek: Add mt8183 interconnect provider driver
  arm64: dts: mt8183: Add interconnect provider DT nodes

 .../bindings/interconnect/mtk,mt8183.txt           |  24 ++
 .../devicetree/bindings/soc/mediatek/dvfsrc.txt    |  23 ++
 .../devicetree/bindings/soc/mediatek/scpsys.txt    |  42 +++
 arch/arm64/boot/dts/mediatek/mt8183.dtsi           |  33 ++
 drivers/interconnect/Kconfig                       |   1 +
 drivers/interconnect/Makefile                      |   1 +
 drivers/interconnect/mediatek/Kconfig              |  13 +
 drivers/interconnect/mediatek/Makefile             |   5 +
 drivers/interconnect/mediatek/mt8183.c             | 223 +++++++++++++
 drivers/soc/mediatek/Kconfig                       |  15 +
 drivers/soc/mediatek/Makefile                      |   1 +
 drivers/soc/mediatek/mtk-dvfsrc.c                  | 347 +++++++++++++++++++++
 drivers/soc/mediatek/mtk-scpsys.c                  |  53 ++++
 drivers/soc/mediatek/mtk-scpsys.h                  |  22 ++
 include/dt-bindings/interconnect/mtk,mt8183.h      |  18 ++
 include/dt-bindings/soc/mtk,dvfsrc.h               |  14 +
 include/soc/mediatek/mtk_dvfsrc.h                  |  22 ++
 include/soc/mediatek/mtk_sip.h                     |  17 +
 18 files changed, 874 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/interconnect/mtk,mt8183.txt
 create mode 100644 Documentation/devicetree/bindings/soc/mediatek/dvfsrc.txt
 create mode 100644 drivers/interconnect/mediatek/Kconfig
 create mode 100644 drivers/interconnect/mediatek/Makefile
 create mode 100644 drivers/interconnect/mediatek/mt8183.c
 create mode 100644 drivers/soc/mediatek/mtk-dvfsrc.c
 create mode 100644 drivers/soc/mediatek/mtk-scpsys.h
 create mode 100644 include/dt-bindings/interconnect/mtk,mt8183.h
 create mode 100644 include/dt-bindings/soc/mtk,dvfsrc.h
 create mode 100644 include/soc/mediatek/mtk_dvfsrc.h
 create mode 100644 include/soc/mediatek/mtk_sip.h

-- 
1.9.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2019-08-19  1:55 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-30  8:50 [PATCH RFC V2] Add driver for dvfsrc, support for active state of scpsys Henry Chen
2019-04-30  8:50 ` [RFC V2 01/11] dt-bindings: soc: Add dvfsrc driver bindings Henry Chen
2019-05-01 20:25   ` Rob Herring
2019-04-30  8:50 ` [RFC V2 02/11] dt-bindings: soc: Add opp table on scpsys bindings Henry Chen
2019-05-01 20:26   ` Rob Herring
2019-04-30  8:50 ` [RFC V2 03/11] soc: mediatek: add support for the performance state Henry Chen
2019-04-30  8:50 ` [RFC V2 04/11] arm64: dts: mt8183: add performance state support of scpsys Henry Chen
2019-04-30  8:50 ` [RFC V2 05/11] soc: mediatek: add header for mediatek SIP interface Henry Chen
2019-04-30  8:51 ` [RFC V2 06/11] soc: mediatek: add MT8183 dvfsrc support Henry Chen
2019-06-10 21:00   ` Ryan Case
2019-08-19  1:35     ` Henry Chen
2019-04-30  8:51 ` [RFC V2 07/11] arm64: dts: mt8183: add dvfsrc related nodes Henry Chen
2019-04-30  8:51 ` [RFC V2 08/11] dt-bindings: interconnect: add MT8183 interconnect dt-bindings Henry Chen
2019-05-01 20:27   ` Rob Herring
2019-08-19  1:39     ` Henry Chen
2019-04-30  8:51 ` [RFC V2 09/11] dt-bindings: interconnect: Add header for interconnect node Henry Chen
2019-05-01 20:28   ` Rob Herring
2019-08-19  1:43     ` Henry Chen
2019-04-30  8:51 ` [RFC V2 10/11] interconnect: mediatek: Add mt8183 interconnect provider driver Henry Chen
2019-05-14  6:43   ` Georgi Djakov
2019-08-19  1:53     ` Henry Chen
2019-04-30  8:51 ` [RFC V2 11/11] arm64: dts: mt8183: Add interconnect provider DT nodes Henry Chen

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).