WIP FPC-III support
[linux/fpc-iii.git] / arch / arm / boot / dts / mmp2-olpc-xo-1-75.dts
blob342304f5653af067bf5b69ab26f9dc924bc12140
1 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2 /*
3  * OLPC XO 1.75 Laptop.
4  *
5  * Copyright (C) 2018,2019 Lubomir Rintel <lkundrak@v3.sk>
6  */
8 /dts-v1/;
9 #include "mmp2.dtsi"
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/input/linux-event-codes.h>
12 #include <dt-bindings/interrupt-controller/irq.h>
14 / {
15         model = "OLPC XO-1.75";
16         compatible = "olpc,xo-1.75", "mrvl,mmp2";
18         chosen {
19                 #address-cells = <1>;
20                 #size-cells = <1>;
21                 ranges;
23                 framebuffer@1fc00000 {
24                         compatible = "simple-framebuffer";
25                         reg = <0x1fc00000 (1200 * 900 * 2)>;
26                         width = <1200>;
27                         height = <900>;
28                         stride = <(1200 * 2)>;
29                         format = "r5g6b5";
30                         clocks = <&soc_clocks MMP2_CLK_DISP0_LCDC>,
31                                  <&soc_clocks MMP2_CLK_DISP0>;
32                 };
33         };
35         memory {
36                 linux,usable-memory = <0x0 0x1f800000>;
37                 available = <0xcf000 0x1ef31000 0x1000 0xbf000>;
38                 reg = <0x0 0x20000000>;
39                 device_type = "memory";
40         };
42         gpio-keys {
43                 compatible = "gpio-keys";
45                 lid {
46                         label = "Lid";
47                         gpios = <&gpio 129 GPIO_ACTIVE_LOW>;
48                         linux,input-type = <EV_SW>;
49                         linux,code = <SW_LID>;
50                         wakeup-source;
51                 };
53                 tablet_mode {
54                         label = "E-Book Mode";
55                         gpios = <&gpio 128 GPIO_ACTIVE_LOW>;
56                         linux,input-type = <EV_SW>;
57                         linux,code = <SW_TABLET_MODE>;
58                         wakeup-source;
59                 };
60         };
62         i2c {
63                 compatible = "i2c-gpio";
64                 sda-gpios = <&gpio 109 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
65                 scl-gpios = <&gpio 108 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
66                 #address-cells = <1>;
67                 #size-cells = <0>;
68                 i2c-gpio,timeout-ms = <1000>;
69                 status = "okay";
71                 camera@21 {
72                         compatible = "ovti,ov7670";
73                         reg = <0x21>;
74                         reset-gpios = <&gpio 102 GPIO_ACTIVE_LOW>;
75                         powerdown-gpios = <&gpio 150 GPIO_ACTIVE_LOW>;
76                         clocks = <&camera0>;
77                         clock-names = "xclk";
79                         port {
80                                 ov7670_0: endpoint {
81                                         hsync-active = <1>;
82                                         vsync-active = <1>;
83                                         remote-endpoint = <&camera0_0>;
84                                 };
85                         };
86                 };
87         };
89         battery {
90                 compatible = "olpc,xo1.5-battery", "olpc,xo1-battery";
91         };
93         wlan_reg: fixedregulator0 {
94                 compatible = "regulator-fixed";
95                 regulator-name = "wlan";
96                 regulator-min-microvolt = <3300000>;
97                 regulator-max-microvolt = <3300000>;
98                 gpio = <&gpio 34 GPIO_ACTIVE_HIGH>;
99                 enable-active-high;
100         };
102         wlan_pwrseq: pwrseq0 {
103                 compatible = "mmc-pwrseq-sd8787";
104                 powerdown-gpios = <&gpio 57 GPIO_ACTIVE_HIGH>;
105                 reset-gpios = <&gpio 58 GPIO_ACTIVE_HIGH>;
106         };
108         sound-card {
109                 compatible = "audio-graph-card";
110                 label = "OLPC XO";
111                 dais = <&sspa0_dai>;
112                 routing = "Headphones", "HPOL",
113                           "Headphones", "HPOR",
114                           "MIC2", "Mic Jack";
115                 widgets = "Headphone", "Headphones", "Microphone", "Mic Jack";
116                 hp-det-gpio = <&gpio 97 GPIO_ACTIVE_HIGH>;
117                 mic-det-gpio = <&gpio 96 GPIO_ACTIVE_HIGH>;
118         };
120         soc {
121                 axi@d4200000 {
122                         ap-sp@d4290000 {
123                                 #address-cells = <1>;
124                                 #size-cells = <0>;
125                                 compatible = "olpc,ap-sp";
126                                 interrupts = <40>;
127                                 reg = <0xd4290000 0x1000>;
128                                 data-gpios = <&gpio 72 GPIO_ACTIVE_HIGH>;
129                                 clk-gpios = <&gpio 71 GPIO_ACTIVE_HIGH>;
130                                 status = "okay";
131                         };
132                 };
133         };
136 &uart3 {
137         status = "okay";
140 &uart4 {
141         status = "okay";
144 &rtc {
145         status = "okay";
148 &usb_phy0 {
149         status = "okay";
152 &usb_otg0 {
153         status = "okay";
156 &mmc1 {
157         clock-frequency = <50000000>;
158         no-1-8-v;
159         mrvl,clk-delay-cycles = <31>;
160         broken-cd;
161         status = "okay";
164 &mmc2 {
165         clock-frequency = <50000000>;
166         no-1-8-v;
167         bus-width = <4>;
168         non-removable;
169         broken-cd;
170         wakeup-source;
171         keep-power-in-suspend;
172         mmc-pwrseq = <&wlan_pwrseq>;
173         vmmc-supply = <&wlan_reg>;
174         status = "okay";
177 &mmc3 {
178         clock-frequency = <50000000>;
179         no-1-8-v;
180         bus-width = <8>;
181         non-removable;
182         broken-cd;
183         mrvl,clk-delay-cycles = <31>;
184         status = "okay";
187 &twsi1 {
188         status = "okay";
190         audio-codec@1a {
191                 compatible = "realtek,alc5631";
192                 reg = <0x1a>;
193                 status = "okay";
195                 port {
196                         rt5631_0: endpoint {
197                                 mclk-fs = <256>;
198                                 clocks = <&audio_clk 0>;
199                                 remote-endpoint = <&sspa0_0>;
200                         };
201                 };
202         };
205 &twsi2 {
206         status = "okay";
208         rtc@68 {
209                 compatible = "dallas,ds1338";
210                 reg = <0x68>;
211                 status = "okay";
212         };
215 &twsi6 {
216         status = "okay";
218         accelerometer@1d {
219                 compatible = "st,lis331dlh", "st,lis3lv02d";
220                 reg = <0x1d>;
221                 status = "okay";
222         };
225 &ssp3 {
226         #address-cells = <0>;
227         spi-slave;
228         status = "okay";
229         ready-gpios = <&gpio 125 GPIO_ACTIVE_HIGH>;
231         slave {
232                 compatible = "olpc,xo1.75-ec";
233                 spi-cpha;
234                 cmd-gpios = <&gpio 155 GPIO_ACTIVE_HIGH>;
235         };
238 &camera0 {
239         status = "okay";
241         port {
242                 camera0_0: endpoint {
243                         remote-endpoint = <&ov7670_0>;
244                 };
245         };
248 &asram {
249         status = "okay";
252 &adma0 {
253         status = "okay";
256 &audio_clk {
257         status = "okay";
260 &sspa0 {
261         status = "okay";
262         dmas = <&adma0 0>, <&adma0 1>;
263         dma-names = "tx", "rx";
265         sspa0_dai: port {
266                 sspa0_0: endpoint {
267                         remote-endpoint = <&rt5631_0>;
268                         frame-master;
269                         bitclock-master;
270                         dai-format = "i2s";
271                 };
272         };
275 &gpu {
276         status = "okay";