18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/memory-controllers/fsl/imx8m-ddrc.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: i.MX8M DDR Controller 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Leonard Crestez <leonard.crestez@nxp.com> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cidescription: 138c2ecf20Sopenharmony_ci The DDRC block is integrated in i.MX8M for interfacing with DDR based 148c2ecf20Sopenharmony_ci memories. 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci It supports switching between different frequencies at runtime but during 178c2ecf20Sopenharmony_ci this process RAM itself becomes briefly inaccessible so actual frequency 188c2ecf20Sopenharmony_ci switching is implemented by TF-A code which runs from a SRAM area. 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci The Linux driver for the DDRC doesn't even map registers (they're included 218c2ecf20Sopenharmony_ci for the sake of "describing hardware"), it mostly just exposes firmware 228c2ecf20Sopenharmony_ci capabilities through standard Linux mechanism like devfreq and OPP tables. 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ciproperties: 258c2ecf20Sopenharmony_ci compatible: 268c2ecf20Sopenharmony_ci items: 278c2ecf20Sopenharmony_ci - enum: 288c2ecf20Sopenharmony_ci - fsl,imx8mn-ddrc 298c2ecf20Sopenharmony_ci - fsl,imx8mm-ddrc 308c2ecf20Sopenharmony_ci - fsl,imx8mq-ddrc 318c2ecf20Sopenharmony_ci - const: fsl,imx8m-ddrc 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci reg: 348c2ecf20Sopenharmony_ci maxItems: 1 358c2ecf20Sopenharmony_ci description: 368c2ecf20Sopenharmony_ci Base address and size of DDRC CTL area. 378c2ecf20Sopenharmony_ci This is not currently mapped by the imx8m-ddrc driver. 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci clocks: 408c2ecf20Sopenharmony_ci maxItems: 4 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci clock-names: 438c2ecf20Sopenharmony_ci items: 448c2ecf20Sopenharmony_ci - const: core 458c2ecf20Sopenharmony_ci - const: pll 468c2ecf20Sopenharmony_ci - const: alt 478c2ecf20Sopenharmony_ci - const: apb 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci operating-points-v2: true 508c2ecf20Sopenharmony_ci opp-table: true 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_cirequired: 538c2ecf20Sopenharmony_ci - reg 548c2ecf20Sopenharmony_ci - compatible 558c2ecf20Sopenharmony_ci - clocks 568c2ecf20Sopenharmony_ci - clock-names 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ciadditionalProperties: false 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ciexamples: 618c2ecf20Sopenharmony_ci - | 628c2ecf20Sopenharmony_ci #include <dt-bindings/clock/imx8mm-clock.h> 638c2ecf20Sopenharmony_ci ddrc: memory-controller@3d400000 { 648c2ecf20Sopenharmony_ci compatible = "fsl,imx8mm-ddrc", "fsl,imx8m-ddrc"; 658c2ecf20Sopenharmony_ci reg = <0x3d400000 0x400000>; 668c2ecf20Sopenharmony_ci clock-names = "core", "pll", "alt", "apb"; 678c2ecf20Sopenharmony_ci clocks = <&clk IMX8MM_CLK_DRAM_CORE>, 688c2ecf20Sopenharmony_ci <&clk IMX8MM_DRAM_PLL>, 698c2ecf20Sopenharmony_ci <&clk IMX8MM_CLK_DRAM_ALT>, 708c2ecf20Sopenharmony_ci <&clk IMX8MM_CLK_DRAM_APB>; 718c2ecf20Sopenharmony_ci operating-points-v2 = <&ddrc_opp_table>; 728c2ecf20Sopenharmony_ci }; 73