Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: omap3-gta04a5one: define GTA04A5 variant with OneNAND

GTA04A5 has been produced with MCP chips either with
512MB RAM + 512MB NAND
512MB RAM + 1024MB NAND
1024MB RAM + 512MB OneNAND

RAM setup is done by U-Boot (MLO/SPL) but OneNAND needs
a different setup of the GPMC. So we need to derive a
DTB variant that modifies the gpmc and nand setup.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>

authored by

H. Nikolaus Schaller and committed by
Tony Lindgren
d2eaf949 2b5633eb

+114
+114
arch/arm/boot/dts/omap3-gta04a5one.dts
··· 1 + /* 2 + * Copyright (C) 2014-18 H. Nikolaus Schaller <hns@goldelico.com> 3 + * 4 + * This program is free software; you can redistribute it and/or modify 5 + * it under the terms of the GNU General Public License version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + 9 + #include "omap3-gta04a5.dts" 10 + 11 + &omap3_pmx_core { 12 + model = "Goldelico GTA04A5/Letux 2804 with OneNAND"; 13 + 14 + gpmc_pins: pinmux_gpmc_pins { 15 + pinctrl-single,pins = < 16 + 17 + /* address lines */ 18 + OMAP3_CORE1_IOPAD(0x207a, PIN_OUTPUT | MUX_MODE0) /* gpmc_a1.gpmc_a1 */ 19 + OMAP3_CORE1_IOPAD(0x207c, PIN_OUTPUT | MUX_MODE0) /* gpmc_a2.gpmc_a2 */ 20 + OMAP3_CORE1_IOPAD(0x207e, PIN_OUTPUT | MUX_MODE0) /* gpmc_a3.gpmc_a3 */ 21 + 22 + /* data lines, gpmc_d0..d7 not muxable according to TRM */ 23 + OMAP3_CORE1_IOPAD(0x209e, PIN_INPUT | MUX_MODE0) /* gpmc_d8.gpmc_d8 */ 24 + OMAP3_CORE1_IOPAD(0x20a0, PIN_INPUT | MUX_MODE0) /* gpmc_d9.gpmc_d9 */ 25 + OMAP3_CORE1_IOPAD(0x20a2, PIN_INPUT | MUX_MODE0) /* gpmc_d10.gpmc_d10 */ 26 + OMAP3_CORE1_IOPAD(0x20a4, PIN_INPUT | MUX_MODE0) /* gpmc_d11.gpmc_d11 */ 27 + OMAP3_CORE1_IOPAD(0x20a6, PIN_INPUT | MUX_MODE0) /* gpmc_d12.gpmc_d12 */ 28 + OMAP3_CORE1_IOPAD(0x20a8, PIN_INPUT | MUX_MODE0) /* gpmc_d13.gpmc_d13 */ 29 + OMAP3_CORE1_IOPAD(0x20aa, PIN_INPUT | MUX_MODE0) /* gpmc_d14.gpmc_d14 */ 30 + OMAP3_CORE1_IOPAD(0x20ac, PIN_INPUT | MUX_MODE0) /* gpmc_d15.gpmc_d15 */ 31 + 32 + /* 33 + * gpmc_ncs0, gpmc_nadv_ale, gpmc_noe, gpmc_nwe, gpmc_wait0 not muxable 34 + * according to TRM. OneNAND seems to require PIN_INPUT on clock. 35 + */ 36 + OMAP3_CORE1_IOPAD(0x20b0, PIN_OUTPUT | MUX_MODE0) /* gpmc_ncs1.gpmc_ncs1 */ 37 + OMAP3_CORE1_IOPAD(0x20be, PIN_INPUT | MUX_MODE0) /* gpmc_clk.gpmc_clk */ 38 + >; 39 + }; 40 + }; 41 + 42 + &gpmc { 43 + /* switch inherited setup to OneNAND */ 44 + 45 + ranges = <0 0 0x04000000 0x1000000>; /* CS0: 16MB for OneNAND */ 46 + pinctrl-names = "default"; 47 + pinctrl-0 = <&gpmc_pins>; 48 + 49 + /delete-node/ nand@0,0; 50 + 51 + onenand@0,0 { 52 + 53 + #address-cells = <1>; 54 + #size-cells = <1>; 55 + compatible = "ti,omap2-onenand"; 56 + reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */ 57 + 58 + gpmc,sync-read; 59 + gpmc,sync-write; 60 + gpmc,burst-length = <16>; 61 + gpmc,burst-read; 62 + gpmc,burst-wrap; 63 + gpmc,burst-write; 64 + gpmc,device-width = <2>; 65 + gpmc,mux-add-data = <2>; 66 + gpmc,cs-on-ns = <0>; 67 + gpmc,cs-rd-off-ns = <87>; 68 + gpmc,cs-wr-off-ns = <87>; 69 + gpmc,adv-on-ns = <0>; 70 + gpmc,adv-rd-off-ns = <10>; 71 + gpmc,adv-wr-off-ns = <10>; 72 + gpmc,oe-on-ns = <15>; 73 + gpmc,oe-off-ns = <87>; 74 + gpmc,we-on-ns = <0>; 75 + gpmc,we-off-ns = <87>; 76 + gpmc,rd-cycle-ns = <112>; 77 + gpmc,wr-cycle-ns = <112>; 78 + gpmc,access-ns = <81>; 79 + gpmc,page-burst-access-ns = <15>; 80 + gpmc,bus-turnaround-ns = <0>; 81 + gpmc,cycle2cycle-delay-ns = <0>; 82 + gpmc,wait-monitoring-ns = <0>; 83 + gpmc,clk-activation-ns = <5>; 84 + gpmc,wr-data-mux-bus-ns = <30>; 85 + gpmc,wr-access-ns = <81>; 86 + gpmc,sync-clk-ps = <15000>; 87 + 88 + x-loader@0 { 89 + label = "X-Loader"; 90 + reg = <0 0x80000>; 91 + }; 92 + 93 + bootloaders@80000 { 94 + label = "U-Boot"; 95 + reg = <0x80000 0x1c0000>; 96 + }; 97 + 98 + bootloaders_env@240000 { 99 + label = "U-Boot Env"; 100 + reg = <0x240000 0x40000>; 101 + }; 102 + 103 + kernel@280000 { 104 + label = "Kernel"; 105 + reg = <0x280000 0x600000>; 106 + }; 107 + 108 + filesystem@880000 { 109 + label = "File System"; 110 + reg = <0x880000 0>; /* 0 = MTDPART_SIZ_FULL */ 111 + }; 112 + 113 + }; 114 + };