1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT 2/* 3 * OLPC XO 1.75 Laptop. 4 * 5 * Copyright (C) 2018,2019,2020 Lubomir Rintel <lkundrak@v3.sk> 6 */ 7 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> 13#include <dt-bindings/clock/marvell,mmp2-audio.h> 14 15/ { 16 model = "OLPC XO-1.75"; 17 compatible = "olpc,xo-1.75", "mrvl,mmp2"; 18 19 chosen { 20 #address-cells = <1>; 21 #size-cells = <1>; 22 ranges; 23 24 framebuffer@1fc00000 { 25 compatible = "simple-framebuffer"; 26 reg = <0x1fc00000 (1200 * 900 * 2)>; 27 width = <1200>; 28 height = <900>; 29 stride = <(1200 * 2)>; 30 format = "r5g6b5"; 31 clocks = <&soc_clocks MMP2_CLK_DISP0_LCDC>, 32 <&soc_clocks MMP2_CLK_DISP0>; 33 }; 34 }; 35 36 memory@0 { 37 available = <0xcf000 0x1ef31000 0x1000 0xbf000>; 38 reg = <0x0 0x20000000>; 39 device_type = "memory"; 40 }; 41 42 gpio-keys { 43 compatible = "gpio-keys"; 44 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 }; 52 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 }; 61 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"; 70 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"; 78 79 port { 80 ov7670_0: endpoint { 81 hsync-active = <1>; 82 vsync-active = <1>; 83 remote-endpoint = <&camera0_0>; 84 }; 85 }; 86 }; 87 }; 88 89 battery { 90 compatible = "olpc,xo1.5-battery", "olpc,xo1-battery"; 91 }; 92 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 }; 101 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 }; 107 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 }; 119 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 }; 134}; 135 136&uart3 { 137 status = "okay"; 138}; 139 140&uart4 { 141 status = "okay"; 142}; 143 144&rtc { 145 status = "okay"; 146}; 147 148&usb_phy0 { 149 status = "okay"; 150}; 151 152&usb_otg0 { 153 status = "okay"; 154}; 155 156&mmc1 { 157 clock-frequency = <50000000>; 158 no-1-8-v; 159 mrvl,clk-delay-cycles = <31>; 160 broken-cd; 161 status = "okay"; 162}; 163 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"; 175}; 176 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"; 185}; 186 187&twsi1 { 188 status = "okay"; 189 190 audio-codec@1a { 191 compatible = "realtek,alc5631"; 192 reg = <0x1a>; 193 status = "okay"; 194 195 port { 196 rt5631_0: endpoint { 197 mclk-fs = <256>; 198 clocks = <&audio_clk MMP2_CLK_AUDIO_SYSCLK>; 199 remote-endpoint = <&sspa0_0>; 200 }; 201 }; 202 }; 203}; 204 205&twsi2 { 206 status = "okay"; 207 208 rtc@68 { 209 compatible = "dallas,ds1338"; 210 reg = <0x68>; 211 status = "okay"; 212 }; 213}; 214 215&twsi6 { 216 status = "okay"; 217 218 accelerometer@1d { 219 compatible = "st,lis331dlh", "st,lis3lv02d"; 220 reg = <0x1d>; 221 status = "okay"; 222 }; 223}; 224 225&ssp3 { 226 #address-cells = <0>; 227 spi-slave; 228 status = "okay"; 229 ready-gpios = <&gpio 125 GPIO_ACTIVE_HIGH>; 230 231 slave { 232 compatible = "olpc,xo1.75-ec"; 233 spi-cpha; 234 cmd-gpios = <&gpio 155 GPIO_ACTIVE_HIGH>; 235 }; 236}; 237 238&camera0 { 239 status = "okay"; 240 241 port { 242 camera0_0: endpoint { 243 remote-endpoint = <&ov7670_0>; 244 }; 245 }; 246}; 247 248&asram { 249 status = "okay"; 250}; 251 252&adma0 { 253 status = "okay"; 254}; 255 256&audio_clk { 257 status = "okay"; 258}; 259 260&sspa0 { 261 status = "okay"; 262 dmas = <&adma0 0>, <&adma0 1>; 263 dma-names = "tx", "rx"; 264 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 }; 273}; 274 275&gpu { 276 status = "okay"; 277}; 278