1*c346eb1cSRoger Quadros# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*c346eb1cSRoger Quadros%YAML 1.2 3*c346eb1cSRoger Quadros--- 4*c346eb1cSRoger Quadros$id: http://devicetree.org/schemas/memory-controllers/ti,gpmc.yaml# 5*c346eb1cSRoger Quadros$schema: http://devicetree.org/meta-schemas/core.yaml# 6*c346eb1cSRoger Quadros 7*c346eb1cSRoger Quadrostitle: Texas Instruments GPMC Memory Controller device-tree bindings 8*c346eb1cSRoger Quadros 9*c346eb1cSRoger Quadrosmaintainers: 10*c346eb1cSRoger Quadros - Tony Lindgren <tony@atomide.com> 11*c346eb1cSRoger Quadros - Roger Quadros <rogerq@kernel.org> 12*c346eb1cSRoger Quadros 13*c346eb1cSRoger Quadrosdescription: 14*c346eb1cSRoger Quadros The GPMC is a unified memory controller dedicated for interfacing 15*c346eb1cSRoger Quadros with external memory devices like 16*c346eb1cSRoger Quadros - Asynchronous SRAM-like memories and ASICs 17*c346eb1cSRoger Quadros - Asynchronous, synchronous, and page mode burst NOR flash 18*c346eb1cSRoger Quadros - NAND flash 19*c346eb1cSRoger Quadros - Pseudo-SRAM devices 20*c346eb1cSRoger Quadros 21*c346eb1cSRoger Quadrosproperties: 22*c346eb1cSRoger Quadros compatible: 23*c346eb1cSRoger Quadros items: 24*c346eb1cSRoger Quadros - enum: 25*c346eb1cSRoger Quadros - ti,am3352-gpmc 26*c346eb1cSRoger Quadros - ti,omap2420-gpmc 27*c346eb1cSRoger Quadros - ti,omap2430-gpmc 28*c346eb1cSRoger Quadros - ti,omap3430-gpmc 29*c346eb1cSRoger Quadros - ti,omap4430-gpmc 30*c346eb1cSRoger Quadros 31*c346eb1cSRoger Quadros reg: 32*c346eb1cSRoger Quadros maxItems: 1 33*c346eb1cSRoger Quadros 34*c346eb1cSRoger Quadros interrupts: 35*c346eb1cSRoger Quadros maxItems: 1 36*c346eb1cSRoger Quadros 37*c346eb1cSRoger Quadros clocks: 38*c346eb1cSRoger Quadros maxItems: 1 39*c346eb1cSRoger Quadros description: | 40*c346eb1cSRoger Quadros Functional clock. Used for bus timing calculations and 41*c346eb1cSRoger Quadros GPMC configuration. 42*c346eb1cSRoger Quadros 43*c346eb1cSRoger Quadros clock-names: 44*c346eb1cSRoger Quadros items: 45*c346eb1cSRoger Quadros - const: fck 46*c346eb1cSRoger Quadros 47*c346eb1cSRoger Quadros dmas: 48*c346eb1cSRoger Quadros items: 49*c346eb1cSRoger Quadros - description: DMA channel for GPMC NAND prefetch 50*c346eb1cSRoger Quadros 51*c346eb1cSRoger Quadros dma-names: 52*c346eb1cSRoger Quadros items: 53*c346eb1cSRoger Quadros - const: rxtx 54*c346eb1cSRoger Quadros 55*c346eb1cSRoger Quadros "#address-cells": true 56*c346eb1cSRoger Quadros 57*c346eb1cSRoger Quadros "#size-cells": true 58*c346eb1cSRoger Quadros 59*c346eb1cSRoger Quadros gpmc,num-cs: 60*c346eb1cSRoger Quadros description: maximum number of supported chip-select lines. 61*c346eb1cSRoger Quadros $ref: /schemas/types.yaml#/definitions/uint32 62*c346eb1cSRoger Quadros 63*c346eb1cSRoger Quadros gpmc,num-waitpins: 64*c346eb1cSRoger Quadros description: maximum number of supported wait pins. 65*c346eb1cSRoger Quadros $ref: /schemas/types.yaml#/definitions/uint32 66*c346eb1cSRoger Quadros 67*c346eb1cSRoger Quadros ranges: 68*c346eb1cSRoger Quadros minItems: 1 69*c346eb1cSRoger Quadros description: | 70*c346eb1cSRoger Quadros Must be set up to reflect the memory layout with four 71*c346eb1cSRoger Quadros integer values for each chip-select line in use, 72*c346eb1cSRoger Quadros <cs-number> 0 <physical address of mapping> <size> 73*c346eb1cSRoger Quadros items: 74*c346eb1cSRoger Quadros - description: NAND bank 0 75*c346eb1cSRoger Quadros - description: NOR/SRAM bank 0 76*c346eb1cSRoger Quadros - description: NOR/SRAM bank 1 77*c346eb1cSRoger Quadros 78*c346eb1cSRoger Quadros '#interrupt-cells': 79*c346eb1cSRoger Quadros const: 2 80*c346eb1cSRoger Quadros 81*c346eb1cSRoger Quadros interrupt-controller: 82*c346eb1cSRoger Quadros description: | 83*c346eb1cSRoger Quadros The GPMC driver implements and interrupt controller for 84*c346eb1cSRoger Quadros the NAND events "fifoevent" and "termcount" plus the 85*c346eb1cSRoger Quadros rising/falling edges on the GPMC_WAIT pins. 86*c346eb1cSRoger Quadros The interrupt number mapping is as follows 87*c346eb1cSRoger Quadros 0 - NAND_fifoevent 88*c346eb1cSRoger Quadros 1 - NAND_termcount 89*c346eb1cSRoger Quadros 2 - GPMC_WAIT0 pin edge 90*c346eb1cSRoger Quadros 3 - GPMC_WAIT1 pin edge, and so on. 91*c346eb1cSRoger Quadros 92*c346eb1cSRoger Quadros '#gpio-cells': 93*c346eb1cSRoger Quadros const: 2 94*c346eb1cSRoger Quadros 95*c346eb1cSRoger Quadros gpio-controller: 96*c346eb1cSRoger Quadros description: | 97*c346eb1cSRoger Quadros The GPMC driver implements a GPIO controller for the 98*c346eb1cSRoger Quadros GPMC WAIT pins that can be used as general purpose inputs. 99*c346eb1cSRoger Quadros 0 maps to GPMC_WAIT0 pin. 100*c346eb1cSRoger Quadros 101*c346eb1cSRoger Quadros ti,hwmods: 102*c346eb1cSRoger Quadros description: 103*c346eb1cSRoger Quadros Name of the HWMOD associated with GPMC. This is for legacy 104*c346eb1cSRoger Quadros omap2/3 platforms only. 105*c346eb1cSRoger Quadros $ref: /schemas/types.yaml#/definitions/string 106*c346eb1cSRoger Quadros deprecated: true 107*c346eb1cSRoger Quadros 108*c346eb1cSRoger Quadros ti,no-idle-on-init: 109*c346eb1cSRoger Quadros description: 110*c346eb1cSRoger Quadros Prevent idling the module at init. This is for legacy omap2/3 111*c346eb1cSRoger Quadros platforms only. 112*c346eb1cSRoger Quadros type: boolean 113*c346eb1cSRoger Quadros deprecated: true 114*c346eb1cSRoger Quadros 115*c346eb1cSRoger QuadrospatternProperties: 116*c346eb1cSRoger Quadros "@[0-7],[a-f0-9]+$": 117*c346eb1cSRoger Quadros type: object 118*c346eb1cSRoger Quadros description: | 119*c346eb1cSRoger Quadros The child device node represents the device connected to the GPMC 120*c346eb1cSRoger Quadros bus. The device can be a NAND chip, SRAM device, NOR device 121*c346eb1cSRoger Quadros or an ASIC. 122*c346eb1cSRoger Quadros 123*c346eb1cSRoger Quadros allOf: 124*c346eb1cSRoger Quadros - $ref: "ti,gpmc-child.yaml" 125*c346eb1cSRoger Quadros 126*c346eb1cSRoger Quadros unevaluatedProperties: false 127*c346eb1cSRoger Quadros 128*c346eb1cSRoger Quadrosrequired: 129*c346eb1cSRoger Quadros - compatible 130*c346eb1cSRoger Quadros - reg 131*c346eb1cSRoger Quadros - gpmc,num-cs 132*c346eb1cSRoger Quadros - gpmc,num-waitpins 133*c346eb1cSRoger Quadros - "#address-cells" 134*c346eb1cSRoger Quadros - "#size-cells" 135*c346eb1cSRoger Quadros 136*c346eb1cSRoger QuadrosadditionalProperties: false 137*c346eb1cSRoger Quadros 138*c346eb1cSRoger Quadrosexamples: 139*c346eb1cSRoger Quadros - | 140*c346eb1cSRoger Quadros #include <dt-bindings/interrupt-controller/arm-gic.h> 141*c346eb1cSRoger Quadros #include <dt-bindings/gpio/gpio.h> 142*c346eb1cSRoger Quadros 143*c346eb1cSRoger Quadros gpmc: memory-controller@50000000 { 144*c346eb1cSRoger Quadros compatible = "ti,am3352-gpmc"; 145*c346eb1cSRoger Quadros reg = <0x50000000 0x2000>; 146*c346eb1cSRoger Quadros interrupts = <100>; 147*c346eb1cSRoger Quadros clocks = <&l3s_clkctrl>; 148*c346eb1cSRoger Quadros clock-names = "fck"; 149*c346eb1cSRoger Quadros dmas = <&edma 52 0>; 150*c346eb1cSRoger Quadros dma-names = "rxtx"; 151*c346eb1cSRoger Quadros gpmc,num-cs = <8>; 152*c346eb1cSRoger Quadros gpmc,num-waitpins = <2>; 153*c346eb1cSRoger Quadros #address-cells = <2>; 154*c346eb1cSRoger Quadros #size-cells = <1>; 155*c346eb1cSRoger Quadros ranges = <0 0 0x08000000 0x10000000>; /* CS0 @addr 0x8000000, size 0x10000000 */ 156*c346eb1cSRoger Quadros interrupt-controller; 157*c346eb1cSRoger Quadros #interrupt-cells = <2>; 158*c346eb1cSRoger Quadros gpio-controller; 159*c346eb1cSRoger Quadros #gpio-cells = <2>; 160*c346eb1cSRoger Quadros 161*c346eb1cSRoger Quadros nand@0,0 { 162*c346eb1cSRoger Quadros compatible = "ti,omap2-nand"; 163*c346eb1cSRoger Quadros reg = <0 0 4>; 164*c346eb1cSRoger Quadros interrupt-parent = <&gpmc>; 165*c346eb1cSRoger Quadros interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */ 166*c346eb1cSRoger Quadros <1 IRQ_TYPE_NONE>; /* termcount */ 167*c346eb1cSRoger Quadros ti,nand-xfer-type = "prefetch-dma"; 168*c346eb1cSRoger Quadros ti,nand-ecc-opt = "bch16"; 169*c346eb1cSRoger Quadros ti,elm-id = <&elm>; 170*c346eb1cSRoger Quadros rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 pin */ 171*c346eb1cSRoger Quadros }; 172*c346eb1cSRoger Quadros }; 173