Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 00/22] Add TI K3 DDR subsystem drivers and DT bindings
@ 2026-07-14 12:55 MANNURU VENKATESWARLU
  0 siblings, 0 replies; only message in thread
From: MANNURU VENKATESWARLU @ 2026-07-14 12:55 UTC (permalink / raw)
  To: linux-arm-kernel
  Cc: linux-kernel, devicetree, linux-perf-users, mfd, n-francis, s-k6,
	bb, v-mannuru

This series adds support for the DDR subsystem (DDRSS) on TI K3 SoCs,
which wraps a Cadence DDR controller. It introduces three drivers and
the associated DT bindings and DTS nodes.

The Cadence DDR controller (cdns,k3-ddr) handles the actual DRAM
interface. The TI DDRSS wrapper provides interrupt routing, subsystem
configuration registers (SSCFG), and performance counters. It is
modelled as an MFD device that instantiates two child drivers:

  ti-ddrss-mr4: Reads the LPDDR4 MR4 temperature code on every TUF
  interrupt and left-shifts the firmware-initialized baseline tRAS_MAX
  and tREF values across all three FSPs. The baseline is the 0.25x
  worst-case rate set at boot; cooler temperatures relax refresh to save
  power, hotter temperatures restore the baseline to comply with JEDEC
  LPDDR4 requirements.

  ti-k3-ddr-pmu: Exposes 34 hardware performance counters per DDR
  channel via the perf subsystem. JSON event and metric definitions are
  provided for perf stat named-event support.

SoC coverage: J721E, J7200, J721S2, J784S4, AM62x, AM62Ax, AM62Px,
AM64x.

Tested on J721S2 EVM (kernel 7.2.0-rc2-next-20260708):

  root@j721s2-evm:~# cat /sys/bus/platform/devices/ti-ddrss-mr4.*/refresh_status
  2x refresh interval
  2x refresh interval

  root@j721s2-evm:~# perf stat -a \
      -M k3_ddr_j7.read_bandwidth_mbytes_sec \
      -M k3_ddr_j7.write_bandwidth_mbytes_sec \
      stress-ng --vm 2 --vm-bytes 256M -t 10s

     143668213  k3_ddr0/k3_ddr.write/   #  912.8 MB/s  k3_ddr_j7.write_bandwidth_mbytes_sec
     142802125  k3_ddr1/k3_ddr.write/   #  907.3 MB/s  k3_ddr_j7.write_bandwidth_mbytes_sec
     142443551  k3_ddr0/k3_ddr.read/    #  905.1 MB/s  k3_ddr_j7.read_bandwidth_mbytes_sec
     141198258  k3_ddr1/k3_ddr.read/    #  897.1 MB/s  k3_ddr_j7.read_bandwidth_mbytes_sec

Aarya Chaumal (8):
  dt-bindings: perf: ti,k3-ddr-pmu: Add K3 DDR PMU binding
  perf: ti_k3_ddr: Add TI K3 DDR performance monitor driver
  docs: perf: Add TI K3 DDR PMU documentation
  perf/events: arm64: ti: Add AM62 DDR performance events
  perf/events: arm64: ti: Add AM62A DDR performance events
  perf/events: arm64: ti: Add AM62P DDR performance events
  perf/events: arm64: ti: Add AM64 DDR performance events
  tools/perf: jevents: Add k3_ddr to JSON unit table

Gandhar Deshpande (1):
  arm64: dts: ti: k3-j7200: Add DDR node for j7200

MANNURU VENKATESWARLU (5):
  dt-bindings: memory: cdns,k3-ddr: Add Cadence K3 DDR controller
    binding
  dt-bindings: memory: ti,j7-ddrss: Add TI K3 DDRSS wrapper binding
  dt-bindings: memory: ti,j721s2-msmc: Add TI K3 MSMC binding
  mfd: ti-ddrss: Add TI K3 DDR subsystem MFD core driver
  perf/events: arm64: ti: Add J7 DDR performance events

Neha Malcom Francis (4):
  arm64: dts: ti: k3-j721e: Add DDR and controller node
  arm64: dts: ti: k3-j721s2-main: Add DDR nodes for J721S2
  arm64: dts: ti: k3-j784s4-main: Add DDR nodes for J784S4
  arm64: dts: ti: k3-am64: Add DDR and controller node

Santhosh Kumar K (4):
  memory: ti-ddrss: Add MR4 temperature-driven refresh rate driver
  arm64: dts: ti: k3-am62: Add DDR and controller node
  arm64: dts: ti: k3-am62a: Add DDR and controller node
  arm64: dts: ti: k3-am62p: Add DDR and controller node

 Documentation/admin-guide/perf/index.rst      |   1 +
 Documentation/admin-guide/perf/k3-ddr.rst     |  57 ++
 .../memory-controllers/ti/cdns,k3-ddr.yaml    |  81 +++
 .../memory-controllers/ti/ti,j7-ddrss.yaml    | 186 ++++++
 .../memory-controllers/ti/ti,j721s2-msmc.yaml | 124 ++++
 .../bindings/perf/ti,k3-ddr-pmu.yaml          |  40 ++
 arch/arm64/boot/dts/ti/k3-am62-main.dtsi      |  25 +
 arch/arm64/boot/dts/ti/k3-am62a-main.dtsi     |  33 ++
 .../dts/ti/k3-am62p-j722s-common-main.dtsi    |  25 +
 arch/arm64/boot/dts/ti/k3-am64-main.dtsi      |  33 ++
 arch/arm64/boot/dts/ti/k3-j7200-main.dtsi     |  32 ++
 arch/arm64/boot/dts/ti/k3-j721e-main.dtsi     |  32 ++
 arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi    |  84 +++
 .../dts/ti/k3-j784s4-j742s2-main-common.dtsi  |  83 +++
 arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi    |  73 +++
 drivers/memory/Kconfig                        |  19 +
 drivers/memory/Makefile                       |   1 +
 drivers/memory/ti-ddrss-mr4.c                 | 322 +++++++++++
 drivers/mfd/Kconfig                           |  13 +
 drivers/mfd/Makefile                          |   1 +
 drivers/mfd/ti-ddrss-core.c                   | 280 +++++++++
 drivers/perf/Kconfig                          |  11 +
 drivers/perf/Makefile                         |   1 +
 drivers/perf/ti_k3_ddr_perf.c                 | 532 ++++++++++++++++++
 include/linux/mfd/ti-ddrss.h                  |  53 ++
 .../arch/arm64/ti/am62/sys/ddrc.json          | 240 ++++++++
 .../arch/arm64/ti/am62/sys/metrics.json       |  34 ++
 .../arch/arm64/ti/am62a/sys/ddrc.json         | 240 ++++++++
 .../arch/arm64/ti/am62a/sys/metrics.json      |  34 ++
 .../arch/arm64/ti/am62p/sys/ddrc.json         | 240 ++++++++
 .../arch/arm64/ti/am62p/sys/metrics.json      |  34 ++
 .../arch/arm64/ti/am64/sys/ddrc.json          | 240 ++++++++
 .../arch/arm64/ti/am64/sys/metrics.json       |  34 ++
 .../pmu-events/arch/arm64/ti/j7/sys/ddrc.json | 240 ++++++++
 .../arch/arm64/ti/j7/sys/metrics.json         |  34 ++
 tools/perf/pmu-events/jevents.py              |   1 +
 36 files changed, 3513 insertions(+)
 create mode 100644 Documentation/admin-guide/perf/k3-ddr.rst
 create mode 100644 Documentation/devicetree/bindings/memory-controllers/ti/cdns,k3-ddr.yaml
 create mode 100644 Documentation/devicetree/bindings/memory-controllers/ti/ti,j7-ddrss.yaml
 create mode 100644 Documentation/devicetree/bindings/memory-controllers/ti/ti,j721s2-msmc.yaml
 create mode 100644 Documentation/devicetree/bindings/perf/ti,k3-ddr-pmu.yaml
 create mode 100644 drivers/memory/ti-ddrss-mr4.c
 create mode 100644 drivers/mfd/ti-ddrss-core.c
 create mode 100644 drivers/perf/ti_k3_ddr_perf.c
 create mode 100644 include/linux/mfd/ti-ddrss.h
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am62/sys/ddrc.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am62/sys/metrics.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am62a/sys/ddrc.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am62a/sys/metrics.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am62p/sys/ddrc.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am62p/sys/metrics.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am64/sys/ddrc.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/am64/sys/metrics.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/j7/sys/ddrc.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/ti/j7/sys/metrics.json

-- 
2.34.1



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-14 12:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-14 12:55 [RFC PATCH 00/22] Add TI K3 DDR subsystem drivers and DT bindings MANNURU VENKATESWARLU

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox