Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: MANNURU VENKATESWARLU <v-mannuru@ti.com>
To: <linux-arm-kernel@lists.infradead.org>
Cc: <linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-perf-users@vger.kernel.org>, <mfd@lists.linux.dev>,
	<n-francis@ti.com>, <s-k6@ti.com>, <bb@ti.com>,
	<v-mannuru@ti.com>
Subject: [RFC PATCH 00/22] Add TI K3 DDR subsystem drivers and DT bindings
Date: Tue, 14 Jul 2026 18:25:32 +0530	[thread overview]
Message-ID: <20260714125532.3304178-1-v-mannuru@ti.com> (raw)

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



                 reply	other threads:[~2026-07-14 12:56 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260714125532.3304178-1-v-mannuru@ti.com \
    --to=v-mannuru@ti.com \
    --cc=bb@ti.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mfd@lists.linux.dev \
    --cc=n-francis@ti.com \
    --cc=s-k6@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox