| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- # SPDX-License-Identifier: GPL-2.0
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/memory-controllers/fsl/imx8m-ddrc.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: i.MX8M DDR Controller
- maintainers:
- - Peng Fan <peng.fan@nxp.com>
- description:
- The DDRC block is integrated in i.MX8M for interfacing with DDR based
- memories.
- It supports switching between different frequencies at runtime but during
- this process RAM itself becomes briefly inaccessible so actual frequency
- switching is implemented by TF-A code which runs from a SRAM area.
- The Linux driver for the DDRC doesn't even map registers (they're included
- for the sake of "describing hardware"), it mostly just exposes firmware
- capabilities through standard Linux mechanism like devfreq and OPP tables.
- properties:
- compatible:
- items:
- - enum:
- - fsl,imx8mn-ddrc
- - fsl,imx8mm-ddrc
- - fsl,imx8mq-ddrc
- - const: fsl,imx8m-ddrc
- reg:
- maxItems: 1
- description:
- Base address and size of DDRC CTL area.
- This is not currently mapped by the imx8m-ddrc driver.
- clocks:
- maxItems: 4
- clock-names:
- items:
- - const: core
- - const: pll
- - const: alt
- - const: apb
- operating-points-v2: true
- opp-table:
- type: object
- required:
- - reg
- - compatible
- - clocks
- - clock-names
- additionalProperties: false
- examples:
- - |
- #include <dt-bindings/clock/imx8mm-clock.h>
- ddrc: memory-controller@3d400000 {
- compatible = "fsl,imx8mm-ddrc", "fsl,imx8m-ddrc";
- reg = <0x3d400000 0x400000>;
- clock-names = "core", "pll", "alt", "apb";
- clocks = <&clk IMX8MM_CLK_DRAM_CORE>,
- <&clk IMX8MM_DRAM_PLL>,
- <&clk IMX8MM_CLK_DRAM_ALT>,
- <&clk IMX8MM_CLK_DRAM_APB>;
- operating-points-v2 = <&ddrc_opp_table>;
- };
|