18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/memory-controllers/exynos-srom.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Samsung Exynos SoC SROM Controller driver
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Krzysztof Kozlowski <krzk@kernel.org>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |+
138c2ecf20Sopenharmony_ci  The SROM controller can be used to attach external peripherals. In this case
148c2ecf20Sopenharmony_ci  extra properties, describing the bus behind it, should be specified.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ciproperties:
178c2ecf20Sopenharmony_ci  compatible:
188c2ecf20Sopenharmony_ci    items:
198c2ecf20Sopenharmony_ci      - const: samsung,exynos4210-srom
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci  reg:
228c2ecf20Sopenharmony_ci    maxItems: 1
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ci  "#address-cells":
258c2ecf20Sopenharmony_ci    const: 2
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci  "#size-cells":
288c2ecf20Sopenharmony_ci    const: 1
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci  ranges:
318c2ecf20Sopenharmony_ci    description: |
328c2ecf20Sopenharmony_ci      Reflects the memory layout with four integer values per bank. Format:
338c2ecf20Sopenharmony_ci      <bank-number> 0 <parent address of bank> <size>
348c2ecf20Sopenharmony_ci      Up to four banks are supported.
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_cipatternProperties:
378c2ecf20Sopenharmony_ci  "^.*@[0-3],[a-f0-9]+$":
388c2ecf20Sopenharmony_ci    type: object
398c2ecf20Sopenharmony_ci    description:
408c2ecf20Sopenharmony_ci      The actual device nodes should be added as subnodes to the SROMc node.
418c2ecf20Sopenharmony_ci      These subnodes, in addition to regular device specification, should
428c2ecf20Sopenharmony_ci      contain the following properties, describing configuration
438c2ecf20Sopenharmony_ci      of the relevant SROM bank.
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci    properties:
468c2ecf20Sopenharmony_ci      reg:
478c2ecf20Sopenharmony_ci        description:
488c2ecf20Sopenharmony_ci          Bank number, base address (relative to start of the bank) and size
498c2ecf20Sopenharmony_ci          of the memory mapped for the device. Note that base address will be
508c2ecf20Sopenharmony_ci          typically 0 as this is the start of the bank.
518c2ecf20Sopenharmony_ci        maxItems: 1
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci      reg-io-width:
548c2ecf20Sopenharmony_ci        enum: [1, 2]
558c2ecf20Sopenharmony_ci        description:
568c2ecf20Sopenharmony_ci          Data width in bytes (1 or 2). If omitted, default of 1 is used.
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci      samsung,srom-page-mode:
598c2ecf20Sopenharmony_ci        description:
608c2ecf20Sopenharmony_ci          If page mode is set, 4 data page mode will be configured,
618c2ecf20Sopenharmony_ci          else normal (1 data) page mode will be set.
628c2ecf20Sopenharmony_ci        type: boolean
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci      samsung,srom-timing:
658c2ecf20Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32-array
668c2ecf20Sopenharmony_ci        items:
678c2ecf20Sopenharmony_ci          minItems: 6
688c2ecf20Sopenharmony_ci          maxItems: 6
698c2ecf20Sopenharmony_ci        description: |
708c2ecf20Sopenharmony_ci          Array of 6 integers, specifying bank timings in the following order:
718c2ecf20Sopenharmony_ci          Tacp, Tcah, Tcoh, Tacc, Tcos, Tacs.
728c2ecf20Sopenharmony_ci          Each value is specified in cycles and has the following meaning
738c2ecf20Sopenharmony_ci          and valid range:
748c2ecf20Sopenharmony_ci          Tacp: Page mode access cycle at Page mode (0 - 15)
758c2ecf20Sopenharmony_ci          Tcah: Address holding time after CSn (0 - 15)
768c2ecf20Sopenharmony_ci          Tcoh: Chip selection hold on OEn (0 - 15)
778c2ecf20Sopenharmony_ci          Tacc: Access cycle (0 - 31, the actual time is N + 1)
788c2ecf20Sopenharmony_ci          Tcos: Chip selection set-up before OEn (0 - 15)
798c2ecf20Sopenharmony_ci          Tacs: Address set-up before CSn (0 - 15)
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci    required:
828c2ecf20Sopenharmony_ci      - reg
838c2ecf20Sopenharmony_ci      - samsung,srom-timing
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_cirequired:
868c2ecf20Sopenharmony_ci  - compatible
878c2ecf20Sopenharmony_ci  - reg
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ciadditionalProperties: false
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ciexamples:
928c2ecf20Sopenharmony_ci  - |
938c2ecf20Sopenharmony_ci    // Example: basic definition, no banks are configured
948c2ecf20Sopenharmony_ci    memory-controller@12560000 {
958c2ecf20Sopenharmony_ci        compatible = "samsung,exynos4210-srom";
968c2ecf20Sopenharmony_ci        reg = <0x12560000 0x14>;
978c2ecf20Sopenharmony_ci    };
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ci  - |
1008c2ecf20Sopenharmony_ci    // Example: SROMc with SMSC911x ethernet chip on bank 3
1018c2ecf20Sopenharmony_ci    memory-controller@12570000 {
1028c2ecf20Sopenharmony_ci        #address-cells = <2>;
1038c2ecf20Sopenharmony_ci        #size-cells = <1>;
1048c2ecf20Sopenharmony_ci        ranges = <0 0 0x04000000 0x20000   // Bank0
1058c2ecf20Sopenharmony_ci                  1 0 0x05000000 0x20000   // Bank1
1068c2ecf20Sopenharmony_ci                  2 0 0x06000000 0x20000   // Bank2
1078c2ecf20Sopenharmony_ci                  3 0 0x07000000 0x20000>; // Bank3
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci        compatible = "samsung,exynos4210-srom";
1108c2ecf20Sopenharmony_ci        reg = <0x12570000 0x14>;
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci        ethernet@3,0 {
1138c2ecf20Sopenharmony_ci            compatible = "smsc,lan9115";
1148c2ecf20Sopenharmony_ci            reg = <3 0 0x10000>;     // Bank 3, offset = 0
1158c2ecf20Sopenharmony_ci            phy-mode = "mii";
1168c2ecf20Sopenharmony_ci            interrupt-parent = <&gpx0>;
1178c2ecf20Sopenharmony_ci            interrupts = <5 8>;
1188c2ecf20Sopenharmony_ci            reg-io-width = <2>;
1198c2ecf20Sopenharmony_ci            smsc,irq-push-pull;
1208c2ecf20Sopenharmony_ci            smsc,force-internal-phy;
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci            samsung,srom-page-mode;
1238c2ecf20Sopenharmony_ci            samsung,srom-timing = <9 12 1 9 1 1>;
1248c2ecf20Sopenharmony_ci        };
1258c2ecf20Sopenharmony_ci    };
126