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

ARM: dts: pxa3xx: Add Raumfeld DTS files

This patch adds a set of DTS files that support all PXA3xx based Raumfeld
audio hardware devices.

Common nodes are factored out into 'common' and 'tuneable-clock' include
files to keep the top-level DTS files smaller.

Signed-off-by: Daniel Mack <daniel@zonque.org>
[Robert: Reordered Makefile in alphabetical order]
Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>

authored by

Daniel Mack and committed by
Robert Jarzmik
ad8044f8 c40ad242

+1006
+7
arch/arm/boot/dts/Makefile
··· 778 778 owl-s500-sparky.dtb 779 779 dtb-$(CONFIG_ARCH_PRIMA2) += \ 780 780 prima2-evb.dtb 781 + dtb-$(CONFIG_ARCH_PXA) += \ 782 + pxa300-raumfeld-connector.dtb \ 783 + pxa300-raumfeld-controller.dtb \ 784 + pxa300-raumfeld-speaker-l.dtb \ 785 + pxa300-raumfeld-speaker-m.dtb \ 786 + pxa300-raumfeld-speaker-one.dtb \ 787 + pxa300-raumfeld-speaker-s.dtb 781 788 dtb-$(CONFIG_ARCH_OXNAS) += \ 782 789 ox810se-wd-mbwe.dtb \ 783 790 ox820-cloudengines-pogoplug-series-3.dtb
+405
arch/arm/boot/dts/pxa300-raumfeld-common.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + #include "pxa3xx.dtsi" 4 + #include <dt-bindings/gpio/gpio.h> 5 + #include <dt-bindings/input/input.h> 6 + #include <dt-bindings/interrupt-controller/irq.h> 7 + 8 + / { 9 + /* Will be overridden by bootloader */ 10 + hw-revision = <0>; 11 + 12 + chosen { 13 + bootargs = "root=ubi0:RootFS rootfstype=ubifs rw ubi.mtd=3"; 14 + stdout-path = &ffuart; 15 + }; 16 + 17 + memory { 18 + device_type = "memory"; 19 + reg = <0xa0000000 0x8000000>; /* 128 MB */ 20 + }; 21 + 22 + reg_3v3: regulator-3v3 { 23 + compatible = "regulator-fixed"; 24 + regulator-name = "3v3-fixed-supply"; 25 + regulator-min-microvolt = <3300000>; 26 + regulator-max-microvolt = <3300000>; 27 + regulator-always-on; 28 + }; 29 + 30 + reg_1v8: regulator-1v8 { 31 + compatible = "regulator-fixed"; 32 + regulator-name = "1v8-fixed-supply"; 33 + regulator-min-microvolt = <1800000>; 34 + regulator-max-microvolt = <1800000>; 35 + regulator-always-on; 36 + }; 37 + 38 + reg_va_5v0: regulator-va-5v0 { 39 + compatible = "regulator-fixed"; 40 + regulator-name = "va-5v0-fixed-supply"; 41 + regulator-min-microvolt = <5000000>; 42 + regulator-max-microvolt = <5000000>; 43 + gpio = <&gpio 124 GPIO_ACTIVE_HIGH>; 44 + enable-active-high; 45 + }; 46 + 47 + ssp_dai0: ssp-dai0 { 48 + compatible = "mrvl,pxa-ssp-dai"; 49 + pinctrl-names = "default"; 50 + pinctrl-0 = <&ssp0_dai_pins>; 51 + port = <&ssp1>; 52 + #sound-dai-cells = <0>; 53 + dmas = <&pdma 13 3 54 + &pdma 14 3>; 55 + dma-names = "rx", "tx"; 56 + clock-names = "extclk"; 57 + }; 58 + 59 + ssp_dai1: ssp-dai1 { 60 + compatible = "mrvl,pxa-ssp-dai"; 61 + pinctrl-names = "default"; 62 + pinctrl-0 = <&ssp1_dai_pins>; 63 + port = <&ssp2>; 64 + #sound-dai-cells = <0>; 65 + dmas = <&pdma 15 3 66 + &pdma 16 3>; 67 + dma-names = "rx", "tx"; 68 + clock-names = "extclk"; 69 + }; 70 + 71 + spi: spi { 72 + compatible = "spi-gpio"; 73 + #address-cells = <0x1>; 74 + #size-cells = <0>; 75 + pinctrl-names = "default"; 76 + pinctrl-0 = <&spi_pins>; 77 + gpio-sck = <&gpio 95 GPIO_ACTIVE_HIGH>; 78 + gpio-miso = <&gpio 98 GPIO_ACTIVE_HIGH>; 79 + gpio-mosi = <&gpio 97 GPIO_ACTIVE_HIGH>; 80 + cs-gpios = < 81 + &gpio 34 GPIO_ACTIVE_HIGH 82 + &gpio 125 GPIO_ACTIVE_HIGH 83 + &gpio 96 GPIO_ACTIVE_HIGH 84 + >; 85 + num-chipselects = <3>; 86 + 87 + dac: dac@2 { 88 + compatible = "ti,dac7512"; 89 + reg = <2>; 90 + spi-max-frequency = <1000000>; 91 + vcc-supply = <&reg_3v3>; 92 + }; 93 + }; 94 + 95 + keys: gpio-keys { 96 + compatible = "gpio-keys"; 97 + pinctrl-names = "default"; 98 + pinctrl-0 = <&gpio_keys_pins>; 99 + 100 + on-off { 101 + label = "on_off button"; 102 + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; 103 + linux,code = <KEY_F6>; 104 + }; 105 + 106 + rescue-boot { 107 + label = "rescue boot button"; 108 + gpios = <&gpio 115 GPIO_ACTIVE_HIGH>; 109 + linux,code = <KEY_F4>; 110 + }; 111 + 112 + setup { 113 + label = "setup"; 114 + gpios = <&gpio 119 GPIO_ACTIVE_HIGH>; 115 + linux,code = <KEY_F3>; 116 + }; 117 + }; 118 + 119 + rotary: rotary-encoder { 120 + compatible = "rotary-encoder"; 121 + gpios = < 122 + &gpio 19 GPIO_ACTIVE_LOW 123 + &gpio 20 GPIO_ACTIVE_HIGH 124 + >; 125 + linux,axis = <REL_X>; 126 + rotary-encoder,relative-axis; 127 + }; 128 + 129 + leds: leds { 130 + compatible = "gpio-leds"; 131 + pinctrl-names = "default"; 132 + pinctrl-0 = <&led_pins_a &led_pins_b>; 133 + 134 + left { 135 + label = "raumfeld:1"; 136 + gpios = <&gpio 36 GPIO_ACTIVE_LOW>; 137 + }; 138 + 139 + right { 140 + label = "raumfeld:2"; 141 + gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; 142 + }; 143 + }; 144 + 145 + poweroff { 146 + compatible = "gpio-poweroff"; 147 + pinctrl-names = "default"; 148 + pinctrl-0 = <&poweroff_pins>; 149 + gpios = <&gpio 16 GPIO_ACTIVE_HIGH>; 150 + }; 151 + 152 + mmc0_pwrseq: mmc-pwrseq { 153 + compatible = "mmc-pwrseq-simple"; 154 + pinctrl-names = "default"; 155 + pinctrl-0 = <&mmc0_pwrseq_pins>; 156 + reset-gpios = < 157 + &gpio 113 GPIO_ACTIVE_LOW /* W2W_RESET */ 158 + &gpio 114 GPIO_ACTIVE_LOW /* W2W_PDN */ 159 + >; 160 + }; 161 + 162 + ethernet: ethernet@10000000 { 163 + compatible = "smsc,lan9115"; 164 + pinctrl-names = "default"; 165 + pinctrl-0 = <&smsc_pins &smsc_bus_pins>; 166 + reg = <0x10000000 0x100000>; 167 + phy-mode = "mii"; 168 + interrupt-parent = <&gpio>; 169 + interrupts = <40 IRQ_TYPE_EDGE_FALLING>; 170 + vdd33a-supply = <&reg_3v3>; 171 + vddvario-supply = <&reg_1v8>; 172 + reset-gpios = <&gpio 39 GPIO_ACTIVE_LOW>; 173 + reg-io-width = <4>; 174 + smsc,save-mac-address; 175 + smsc,irq-push-pull; 176 + }; 177 + }; 178 + 179 + &ffuart { 180 + status = "okay"; 181 + }; 182 + 183 + &pwri2c { 184 + status = "okay"; 185 + 186 + max8660: regulator@34 { 187 + compatible = "maxim,max8660"; 188 + reg = <0x34>; 189 + 190 + regulators { 191 + regulator-v3 { 192 + regulator-compatible= "V3(DCDC)"; 193 + regulator-min-microvolt = <725000>; 194 + regulator-max-microvolt = <1800000>; 195 + }; 196 + 197 + regulator-v4 { 198 + regulator-compatible= "V4(DCDC)"; 199 + regulator-min-microvolt = <725000>; 200 + regulator-max-microvolt = <1800000>; 201 + }; 202 + 203 + regulator-v5 { 204 + regulator-compatible= "V5(LDO)"; 205 + regulator-min-microvolt = <1700000>; 206 + regulator-max-microvolt = <2000000>; 207 + }; 208 + 209 + reg_vcc_sdio: regulator-v6 { 210 + regulator-compatible= "V6(LDO)"; 211 + regulator-min-microvolt = <3300000>; 212 + regulator-max-microvolt = <3300000>; 213 + }; 214 + 215 + regulator-v7 { 216 + regulator-compatible= "V7(LDO)"; 217 + regulator-min-microvolt = <1800000>; 218 + regulator-max-microvolt = <3300000>; 219 + }; 220 + }; 221 + }; 222 + }; 223 + 224 + &pxai2c1 { 225 + status = "okay"; 226 + mrvl,i2c-fast-mode; 227 + pinctrl-names = "default"; 228 + pinctrl-0 = <&pxai2c1_pins>; 229 + }; 230 + 231 + &ssp1 { 232 + status = "okay"; 233 + }; 234 + 235 + &ssp2 { 236 + status = "okay"; 237 + }; 238 + 239 + &nand_controller { 240 + status = "okay"; 241 + 242 + nand@0 { 243 + reg = <0>; 244 + nand-rb = <0>; 245 + nand-ecc-mode = "hw"; 246 + marvell,nand-keep-config; 247 + 248 + partitions { 249 + compatible = "fixed-partitions"; 250 + #address-cells = <1>; 251 + #size-cells = <1>; 252 + 253 + partition@0 { 254 + label = "Bootloader"; 255 + reg = <0x0000000 0xa0000>; 256 + read-only; 257 + }; 258 + 259 + partition@a0000 { 260 + label = "BootloaderEnvironment"; 261 + reg = <0x0a0000 0x20000>; 262 + }; 263 + 264 + partition@c0000 { 265 + label = "BootloaderSplashScreen"; 266 + reg = <0x0c0000 0x60000>; 267 + }; 268 + 269 + partition@120000 { 270 + label = "UBI"; 271 + reg = <0x120000 0x7ee0000>; 272 + }; 273 + }; 274 + }; 275 + }; 276 + 277 + &usb0 { 278 + status = "okay"; 279 + marvell,enable-port1; 280 + marvell,port-mode = <2>; /* PMM_GLOBAL_MODE */ 281 + pinctrl-names = "default"; 282 + pinctrl-0 = <&pxa3xx_ohci_pins>; 283 + }; 284 + 285 + &mmc0 { 286 + status = "okay"; 287 + pinctrl-names = "default"; 288 + pinctrl-0 = <&mmc0_pins>; 289 + pxa-mmc,detect-delay-ms = <200>; 290 + vmmc-supply = <&reg_vcc_sdio>; 291 + mmc-pwrseq = <&mmc0_pwrseq>; 292 + non-removable; 293 + bus-width = <4>; 294 + }; 295 + 296 + &pinctrl { 297 + poweroff_pins: poweroff-pins { 298 + pinctrl-single,pins = <MFP_PIN_PXA300(16) MFP_AF0>; 299 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT); 300 + }; 301 + 302 + led_pins_a: led-pins-a { 303 + pinctrl-single,pins = <MFP_PIN_PXA300(35) MFP_AF0>; 304 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 305 + }; 306 + 307 + led_pins_b: led-pins-b { 308 + pinctrl-single,pins = <MFP_PIN_PXA300(36) MFP_AF0>; 309 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_DRIVE_HIGH); 310 + }; 311 + 312 + pxai2c1_pins: pxai2c1-pins { 313 + pinctrl-single,pins = < 314 + MFP_PIN_PXA300(21) MFP_AF1 /* I2C_SCL */ 315 + MFP_PIN_PXA300(22) MFP_AF1 /* I2C_SDA */ 316 + >; 317 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_HIGH); 318 + }; 319 + 320 + gpio_keys_pins: gpio-keys-pins { 321 + pinctrl-single,pins = < 322 + MFP_PIN_PXA300(14) MFP_AF0 /* SCK */ 323 + MFP_PIN_PXA300(115) MFP_AF0 /* MOSI */ 324 + MFP_PIN_PXA300(119) MFP_AF0 /* MISO */ 325 + >; 326 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT); 327 + }; 328 + 329 + spi_pins: spi-pins { 330 + pinctrl-single,pins = < 331 + MFP_PIN_PXA300(95) MFP_AF0 /* SCK */ 332 + MFP_PIN_PXA300(97) MFP_AF0 /* MOSI */ 333 + MFP_PIN_PXA300(98) MFP_AF0 /* MISO */ 334 + MFP_PIN_PXA300(34) MFP_AF0 /* CS#0 */ 335 + MFP_PIN_PXA300(125) MFP_AF0 /* CS#1 */ 336 + MFP_PIN_PXA300(96) MFP_AF0 /* CS#2 */ 337 + >; 338 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 339 + }; 340 + 341 + pxa3xx_ohci_pins: pxa3xx-ohci-pins { 342 + pinctrl-single,pins = < 343 + MFP_PIN_PXA300_2(0) MFP_AF1 /* USBHPEN */ 344 + MFP_PIN_PXA300_2(1) MFP_AF1 /* USBHPWR */ 345 + >; 346 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 347 + }; 348 + 349 + smsc_pins: smsc-pins { 350 + pinctrl-single,pins = < 351 + MFP_PIN_PXA300(39) MFP_AF0 /* RESET */ 352 + MFP_PIN_PXA300(40) MFP_AF0 /* IRQ */ 353 + >; 354 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 355 + }; 356 + 357 + smsc_bus_pins: smsc-bus-pins { 358 + pinctrl-single,pins = < 359 + MFP_PIN_PXA300(1) MFP_AF1 /* nCS2 */ 360 + >; 361 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT); 362 + }; 363 + 364 + mmc0_pins: mmc0-pins { 365 + pinctrl-single,pins = < 366 + MFP_PIN_PXA300(3) MFP_AF4 /* MMC1_DAT0 */ 367 + MFP_PIN_PXA300(4) MFP_AF4 /* MMC1_DAT1 */ 368 + MFP_PIN_PXA300(5) MFP_AF4 /* MMC1_DAT2 */ 369 + MFP_PIN_PXA300(6) MFP_AF4 /* MMC1_DAT3 */ 370 + MFP_PIN_PXA300(7) MFP_AF4 /* MMC1_CLK */ 371 + MFP_PIN_PXA300(8) MFP_AF4 /* MMC1_CMD */ 372 + >; 373 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_DRIVE_HIGH); 374 + }; 375 + 376 + mmc0_pwrseq_pins: mmc0-pwrseq-pins { 377 + pinctrl-single,pins = < 378 + MFP_PIN_PXA300(113) MFP_AF0 /* W2W_RESET */ 379 + MFP_PIN_PXA300(114) MFP_AF0 /* W2W_PDN */ 380 + >; 381 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT); 382 + }; 383 + 384 + ssp0_dai_pins: ssp0-dai-pins { 385 + pinctrl-single,pins = < 386 + MFP_PIN_PXA300(85) MFP_AF1 /* SSP1_SCLK */ 387 + MFP_PIN_PXA300(86) MFP_AF1 /* SSP1_FRM */ 388 + MFP_PIN_PXA300(87) MFP_AF1 /* SSP1_TXD */ 389 + MFP_PIN_PXA300(88) MFP_AF1 /* SSP1_RXD */ 390 + MFP_PIN_PXA300(89) MFP_AF1 /* SSP1_EXTCLK */ 391 + MFP_PIN_PXA300(90) MFP_AF1 /* SSP1_SYSCLK */ 392 + >; 393 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 394 + }; 395 + 396 + ssp1_dai_pins: ssp1-dai-pins { 397 + pinctrl-single,pins = < 398 + MFP_PIN_PXA300(25) MFP_AF2 /* SSP2_SCLK */ 399 + MFP_PIN_PXA300(26) MFP_AF2 /* SSP2_FRM */ 400 + MFP_PIN_PXA300(27) MFP_AF2 /* SSP2_TXD */ 401 + MFP_PIN_PXA300(29) MFP_AF2 /* SSP2_EXTCLK */ 402 + >; 403 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 404 + }; 405 + };
+73
arch/arm/boot/dts/pxa300-raumfeld-connector.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + /dts-v1/; 4 + 5 + #include "pxa300-raumfeld-common.dtsi" 6 + #include "pxa300-raumfeld-tuneable-clock.dtsi" 7 + 8 + / { 9 + model = "Raumfeld Connector (PXA3xx)"; 10 + compatible = "raumfeld,raumfeld-connector-pxa303", "marvell,pxa300"; 11 + 12 + sound { 13 + compatible = "simple-audio-card"; 14 + simple-audio-card,name = "Raumfeld Connector"; 15 + #address-cells = <1>; 16 + #size-cells = <0>; 17 + 18 + simple-audio-card,dai-link@0 { 19 + reg = <0>; 20 + format = "i2s"; 21 + bitclock-master = <&dailink_master_analog>; 22 + frame-master = <&dailink_master_analog>; 23 + mclk-fs = <256>; 24 + 25 + dailink_master_analog: cpu { 26 + sound-dai = <&ssp_dai0>; 27 + }; 28 + 29 + codec { 30 + sound-dai = <&cs4270>; 31 + }; 32 + }; 33 + 34 + simple-audio-card,dai-link@1 { 35 + reg = <1>; 36 + format = "i2s"; 37 + bitclock-master = <&dailink_master_digital>; 38 + frame-master = <&dailink_master_digital>; 39 + mclk-fs = <256>; 40 + 41 + dailink_master_digital: cpu { 42 + sound-dai = <&ssp_dai1>; 43 + }; 44 + 45 + codec { 46 + sound-dai = <&ak4104>; 47 + }; 48 + }; 49 + }; 50 + }; 51 + 52 + &ssp1 { 53 + status = "okay"; 54 + }; 55 + 56 + &ssp2 { 57 + status = "okay"; 58 + }; 59 + 60 + &spi { 61 + ak4104: optical-transmitter@0 { 62 + compatible = "asahi-kasei,ak4104"; 63 + reg = <0>; 64 + vdd-supply = <&reg_3v3>; 65 + spi-max-frequency = <5000000>; 66 + reset-gpios = <&gpio 38 GPIO_ACTIVE_HIGH>; 67 + #sound-dai-cells = <0>; 68 + }; 69 + }; 70 + 71 + &rotary { 72 + status = "disabled"; 73 + };
+266
arch/arm/boot/dts/pxa300-raumfeld-controller.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + /dts-v1/; 4 + 5 + #include "pxa300-raumfeld-common.dtsi" 6 + 7 + / { 8 + model = "Raumfeld Controller (PXA3xx)"; 9 + compatible = "raumfeld,raumfeld-controller-pxa303", "marvell,pxa300"; 10 + 11 + reg_vbatt: regulator-vbatt { 12 + compatible = "regulator-fixed"; 13 + regulator-name = "vbatt-fixed-supply"; 14 + regulator-min-microvolt = <3700000>; 15 + regulator-max-microvolt = <3700000>; 16 + regulator-always-on; 17 + }; 18 + 19 + lcd_supply: regulator-va-tft { 20 + compatible = "regulator-fixed"; 21 + regulator-name = "va-tft-fixed-supply"; 22 + regulator-min-microvolt = <5000000>; 23 + regulator-max-microvolt = <5000000>; 24 + gpio = <&gpio 33 GPIO_ACTIVE_HIGH>; 25 + enable-active-high; 26 + }; 27 + 28 + onewire { 29 + compatible = "w1-gpio"; 30 + pinctrl-names = "default"; 31 + pinctrl-0 = <&w1_pins>; 32 + gpios = < 33 + &gpio 126 GPIO_OPEN_DRAIN /* W1 I/O */ 34 + &gpio 105 GPIO_ACTIVE_HIGH /* pullup */ 35 + >; 36 + 37 + w1_ds2760: slave-ds2760 { 38 + compatible = "maxim,ds2760"; 39 + power-supplies = <&charger>; 40 + }; 41 + }; 42 + 43 + charger: charger { 44 + compatible = "gpio-charger"; 45 + charger-type = "mains"; 46 + gpios = <&gpio 101 GPIO_ACTIVE_LOW>; 47 + }; 48 + 49 + /* 50 + * One of the following two will be set to "okay" by the bootloader, 51 + * depending on the hardware revision. 52 + */ 53 + backlight-controller-pwm { 54 + compatible = "pwm-backlight"; 55 + pinctrl-names = "default"; 56 + pinctrl-0 = <&pwm0_pins>; 57 + pwms = <&pwm0 10000>; 58 + power-supply = <&reg_vbatt>; 59 + status = "disabled"; 60 + 61 + brightness-levels = < 62 + 0 1 2 3 4 5 6 7 8 9 63 + 10 11 12 13 14 15 16 17 18 19 64 + 20 21 22 23 24 25 26 27 28 29 65 + 30 31 32 33 34 35 36 37 38 39 66 + 40 41 42 43 44 45 46 47 48 49 67 + 50 51 52 53 54 55 56 57 58 59 68 + 60 61 62 63 64 65 66 67 68 69 69 + 70 71 72 73 74 75 76 77 78 79 70 + 80 81 82 83 84 85 86 87 88 89 71 + 90 91 92 93 94 95 96 97 98 99 72 + 100 73 + >; 74 + default-brightness-level = <100>; 75 + }; 76 + 77 + backlight-controller { 78 + compatible = "lltc,lt3593"; 79 + pinctrl-names = "default"; 80 + pinctrl-0 = <&lt3593_pins>; 81 + lltc,ctrl-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>; 82 + status = "disabled"; 83 + 84 + led { 85 + label = "backlight"; 86 + default-state = "on"; 87 + }; 88 + }; 89 + }; 90 + 91 + &reg_va_5v0 { 92 + status = "disabled"; 93 + }; 94 + 95 + &ethernet { 96 + status = "disabled"; 97 + }; 98 + 99 + &leds { 100 + status = "disabled"; 101 + }; 102 + 103 + &dac { 104 + status = "disabled"; 105 + }; 106 + 107 + &pwm0 { 108 + status = "okay"; 109 + }; 110 + 111 + &keys { 112 + dock-detect { 113 + label = "dock detect"; 114 + gpios = <&gpio 116 GPIO_ACTIVE_HIGH>; 115 + linux,code = <KEY_F5>; 116 + }; 117 + }; 118 + 119 + &spi { 120 + accelerometer@1 { 121 + compatible = "st,lis302dl-spi"; 122 + pinctrl-names = "default"; 123 + pinctrl-0 = <&lis302_pins>; 124 + reg = <1>; 125 + spi-max-frequency = <1000000>; 126 + interrupt-parent = <&gpio>; 127 + interrupts = <104 IRQ_TYPE_EDGE_FALLING>; 128 + 129 + st,click-single-x; 130 + st,click-single-y; 131 + st,click-single-z; 132 + st,click-thresh-x = <10>; 133 + st,click-thresh-y = <10>; 134 + st,click-thresh-z = <10>; 135 + st,irq1-click; 136 + st,irq2-click; 137 + st,wakeup-x-lo; 138 + st,wakeup-x-hi; 139 + st,wakeup-y-lo; 140 + st,wakeup-y-hi; 141 + st,wakeup-z-lo; 142 + st,wakeup-z-hi; 143 + }; 144 + }; 145 + 146 + &lcdc { 147 + status = "okay"; 148 + pinctrl-names = "default"; 149 + pinctrl-0 = <&lcdc_pins>; 150 + lcd-supply = <&lcd_supply>; 151 + 152 + port { 153 + lcdc_out: endpoint { 154 + remote-endpoint = <&panel_in>; 155 + bus-width = <16>; 156 + }; 157 + }; 158 + 159 + panel { 160 + compatible = "sharp,lq043t3dx0-panel"; 161 + display-timings { 162 + native-mode = <&timing0>; 163 + timing0: timing { 164 + clock-frequency = <9009000>; 165 + pixelclk-active = <0>; /* negative edge */ 166 + hactive = <480>; 167 + vactive = <272>; 168 + hsync-len = <41>; 169 + hback-porch = <2>; 170 + hfront-porch = <1>; 171 + vsync-len = <10>; 172 + vback-porch = <3>; 173 + vfront-porch = <1>; 174 + }; 175 + }; 176 + 177 + port { 178 + panel_in: endpoint { 179 + remote-endpoint = <&lcdc_out>; 180 + }; 181 + }; 182 + }; 183 + }; 184 + 185 + &gcu { 186 + status = "okay"; 187 + }; 188 + 189 + &pxai2c1 { 190 + touchscreen@a { 191 + compatible = "eeti,exc3000-i2c"; 192 + pinctrl-names = "default"; 193 + pinctrl-0 = <&eeti_ts_pins>; 194 + reg = <0xa>; 195 + interrupt-parent = <&gpio>; 196 + interrupts = <32 IRQ_TYPE_EDGE_RISING>; 197 + attn-gpios = <&gpio 32 GPIO_ACTIVE_HIGH>; 198 + touchscreen-inverted-y; 199 + }; 200 + }; 201 + 202 + &pinctrl { 203 + lis302_pins: lis302-pins { 204 + pinctrl-single,pins = < 205 + MFP_PIN_PXA300(104) MFP_AF0 /* IRQ */ 206 + >; 207 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 208 + }; 209 + 210 + eeti_ts_pins: eeti-ts-pins { 211 + pinctrl-single,pins = < 212 + MFP_PIN_PXA300(32) MFP_AF0 /* IRQ */ 213 + >; 214 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT); 215 + }; 216 + 217 + lt3593_pins: lt3593-pins { 218 + pinctrl-single,pins = < 219 + MFP_PIN_PXA300(17) MFP_AF0 /* Backlight */ 220 + >; 221 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 222 + }; 223 + 224 + pwm0_pins: pwm0-pins { 225 + pinctrl-single,pins = < 226 + MFP_PIN_PXA300(17) MFP_AF1 /* PWM */ 227 + >; 228 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 229 + }; 230 + 231 + w1_pins: w1-pins { 232 + pinctrl-single,pins = < 233 + MFP_PIN_PXA300(126) MFP_AF0 /* PWM */ 234 + MFP_PIN_PXA300(105) MFP_AF0 /* PWM */ 235 + >; 236 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT); 237 + }; 238 + 239 + lcdc_pins: lcdc-pins { 240 + pinctrl-single,pins = < 241 + MFP_PIN_PXA300(54) MFP_AF1 /* LDD_0 */ 242 + MFP_PIN_PXA300(55) MFP_AF1 /* LDD_1 */ 243 + MFP_PIN_PXA300(56) MFP_AF1 /* LDD_2 */ 244 + MFP_PIN_PXA300(57) MFP_AF1 /* LDD_3 */ 245 + MFP_PIN_PXA300(58) MFP_AF1 /* LDD_4 */ 246 + MFP_PIN_PXA300(59) MFP_AF1 /* LDD_5 */ 247 + MFP_PIN_PXA300(60) MFP_AF1 /* LDD_6 */ 248 + MFP_PIN_PXA300(61) MFP_AF1 /* LDD_7 */ 249 + MFP_PIN_PXA300(62) MFP_AF1 /* LDD_8 */ 250 + MFP_PIN_PXA300(63) MFP_AF1 /* LDD_9 */ 251 + MFP_PIN_PXA300(64) MFP_AF1 /* LDD_10 */ 252 + MFP_PIN_PXA300(65) MFP_AF1 /* LDD_11 */ 253 + MFP_PIN_PXA300(66) MFP_AF1 /* LDD_12 */ 254 + MFP_PIN_PXA300(67) MFP_AF1 /* LDD_13 */ 255 + MFP_PIN_PXA300(68) MFP_AF1 /* LDD_14 */ 256 + MFP_PIN_PXA300(69) MFP_AF1 /* LDD_15 */ 257 + MFP_PIN_PXA300(70) MFP_AF1 /* LDD_16 */ 258 + MFP_PIN_PXA300(71) MFP_AF1 /* LDD_17 */ 259 + MFP_PIN_PXA300(72) MFP_AF1 /* LCD_FCLK */ 260 + MFP_PIN_PXA300(73) MFP_AF1 /* LCD_LCLK */ 261 + MFP_PIN_PXA300(74) MFP_AF1 /* LCD_PCLK */ 262 + MFP_PIN_PXA300(75) MFP_AF1 /* LCD_BIAS */ 263 + >; 264 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 265 + }; 266 + };
+11
arch/arm/boot/dts/pxa300-raumfeld-speaker-l.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + /dts-v1/; 4 + 5 + #include "pxa300-raumfeld-common.dtsi" 6 + #include "pxa300-raumfeld-tuneable-clock.dtsi" 7 + 8 + / { 9 + model = "Raumfeld Speaker L (PXA3xx)"; 10 + compatible = "raumfeld,raumfeld-speaker-l-pxa303", "marvell,pxa300"; 11 + };
+11
arch/arm/boot/dts/pxa300-raumfeld-speaker-m.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + /dts-v1/; 4 + 5 + #include "pxa300-raumfeld-common.dtsi" 6 + #include "pxa300-raumfeld-tuneable-clock.dtsi" 7 + 8 + / { 9 + model = "Raumfeld Speaker M (PXA3xx)"; 10 + compatible = "raumfeld,raumfeld-speaker-m-pxa303", "marvell,pxa300"; 11 + };
+137
arch/arm/boot/dts/pxa300-raumfeld-speaker-one.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + /dts-v1/; 4 + 5 + #include "pxa300-raumfeld-common.dtsi" 6 + 7 + / { 8 + model = "Raumfeld Speaker One (PXA3xx)"; 9 + compatible = "raumfeld,raumfeld-speaker-one-pxa303", "marvell,pxa300"; 10 + 11 + wm8782: wm8782 { 12 + compatible = "wm8782"; 13 + #sound-dai-cells = <0>; 14 + Vdd-supply = <&reg_3v3>; 15 + Vdda-supply = <&reg_va_5v0>; 16 + }; 17 + 18 + xo_11mhz: oscillator-11mhz { 19 + compatible = "fixed-clock"; 20 + #clock-cells = <0>; 21 + clock-frequency = <11289600>; 22 + clock-accuracy = <100>; 23 + }; 24 + 25 + xo_audio: clock-gate { 26 + compatible = "gpio-gate-clock"; 27 + pinctrlnames = "default"; 28 + pinctrl-0 = <&xo_audio_pins>; 29 + clocks = <&xo_11mhz>; 30 + #clock-cells = <0>; 31 + enable-gpios = <&gpio 111 GPIO_ACTIVE_HIGH>; 32 + }; 33 + 34 + reg_va_30v0: regulator-va-30v0 { 35 + compatible = "regulator-fixed"; 36 + regulator-name = "va-30v0-fixed-supply"; 37 + regulator-min-microvolt = <30000000>; 38 + regulator-max-microvolt = <30000000>; 39 + }; 40 + 41 + sound { 42 + compatible = "simple-audio-card"; 43 + simple-audio-card,name = "Raumfeld Speaker"; 44 + #address-cells = <1>; 45 + #size-cells = <0>; 46 + 47 + simple-audio-card,dai-link@0 { 48 + reg = <0>; 49 + format = "i2s"; 50 + bitclock-master = <&dailink_master_analog_out>; 51 + frame-master = <&dailink_master_analog_out>; 52 + mclk-fs = <256>; 53 + 54 + dailink_master_analog_out: cpu { 55 + sound-dai = <&ssp_dai0>; 56 + }; 57 + 58 + codec { 59 + sound-dai = <&sta320>; 60 + }; 61 + }; 62 + 63 + simple-audio-card,dai-link@1 { 64 + reg = <1>; 65 + format = "i2s"; 66 + bitclock-master = <&dailink_master_analog_in>; 67 + frame-master = <&dailink_master_analog_in>; 68 + mclk-fs = <256>; 69 + 70 + dailink_master_analog_in: cpu { 71 + sound-dai = <&ssp_dai0>; 72 + }; 73 + 74 + codec { 75 + sound-dai = <&wm8782>; 76 + }; 77 + }; 78 + }; 79 + }; 80 + 81 + &ssp_dai0 { 82 + clocks = <&xo_audio>; 83 + }; 84 + 85 + &spi { 86 + dac@2 { 87 + compatible = "ti,dac7512"; 88 + reg = <2>; 89 + spi-max-frequency = <1000000>; 90 + vcc-supply = <&reg_3v3>; 91 + }; 92 + }; 93 + 94 + &rotary { 95 + status = "okay"; 96 + }; 97 + 98 + &pxai2c1 { 99 + sta320: codec@1a { 100 + compatible = "st,sta32x"; 101 + reg = <0x1a>; 102 + pinctrl-names = "default"; 103 + pinctrl-0 = <&sta320_pins>; 104 + clocks = <&xo_audio>; 105 + clock-names = "xti"; 106 + reset-gpios = <&gpio 120 GPIO_ACTIVE_HIGH>; 107 + Vdda-supply = <&reg_3v3>; 108 + Vdd3-supply = <&reg_3v3>; 109 + Vcc-supply = <&reg_va_30v0>; 110 + #sound-dai-cells = <0>; 111 + st,thermal-warning-adjustment; 112 + st,thermal-warning-recovery; 113 + st,fault-detect-recovery; 114 + st,drop-compensation-ns = <80>; 115 + st,max-power-use-mpcc; 116 + st,invalid-input-detect-mute; 117 + /* 2 (half-bridge) and 1 (full-bridge) on-board power */ 118 + st,output-conf = /bits/ 8 <0x1>; 119 + st,needs_esd_watchdog; 120 + }; 121 + }; 122 + 123 + &pinctrl { 124 + xo_audio_pins: xo-audio-pins { 125 + pinctrl-single,pins = < 126 + MFP_PIN_PXA300(111) MFP_AF0 /* ENABLE */ 127 + >; 128 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 129 + }; 130 + 131 + sta320_pins: sta320-pins { 132 + pinctrl-single,pins = < 133 + MFP_PIN_PXA300(120) MFP_AF0 /* CODEC_RESET */ 134 + >; 135 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT); 136 + }; 137 + };
+11
arch/arm/boot/dts/pxa300-raumfeld-speaker-s.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + /dts-v1/; 4 + 5 + #include "pxa300-raumfeld-common.dtsi" 6 + #include "pxa300-raumfeld-tuneable-clock.dtsi" 7 + 8 + / { 9 + model = "Raumfeld Speaker S (PXA3xx)"; 10 + compatible = "raumfeld,raumfeld-speaker-s-pxa303", "marvell,pxa300"; 11 + };
+85
arch/arm/boot/dts/pxa300-raumfeld-tuneable-clock.dtsi
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + 3 + #include <dt-bindings/clock/maxim,max9485.h> 4 + 5 + / { 6 + xo_27mhz: oscillator-27mhz { 7 + compatible = "fixed-clock"; 8 + #clock-cells = <0>; 9 + clock-frequency = <27000000>; 10 + clock-accuracy = <100>; 11 + }; 12 + 13 + sound { 14 + compatible = "simple-audio-card"; 15 + simple-audio-card,name = "Raumfeld Speaker"; 16 + #address-cells = <1>; 17 + #size-cells = <0>; 18 + 19 + simple-audio-card,dai-link@0 { 20 + reg = <0>; 21 + format = "i2s"; 22 + bitclock-master = <&dailink_master_analog>; 23 + frame-master = <&dailink_master_analog>; 24 + mclk-fs = <256>; 25 + 26 + dailink_master_analog: cpu { 27 + sound-dai = <&ssp_dai0>; 28 + }; 29 + 30 + codec { 31 + sound-dai = <&cs4270>; 32 + }; 33 + }; 34 + }; 35 + }; 36 + 37 + &ssp_dai0 { 38 + clocks = <&max9485 MAX9485_CLKOUT1>; 39 + }; 40 + 41 + &ssp_dai1 { 42 + clocks = <&max9485 MAX9485_CLKOUT1>; 43 + }; 44 + 45 + &pxai2c1 { 46 + cs4270: codec@48 { 47 + compatible = "cirrus,cs4270"; 48 + pinctrl-names = "default"; 49 + pinctrl-0 = <&cs4270_pins>; 50 + reg = <0x48>; 51 + va-supply = <&reg_va_5v0>; 52 + vd-supply = <&reg_3v3>; 53 + vlc-supply = <&reg_3v3>; 54 + reset-gpios = <&gpio 120 GPIO_ACTIVE_HIGH>; 55 + #sound-dai-cells = <0>; 56 + }; 57 + 58 + max9485: clock-generator@63 { 59 + compatible = "maxim,max9485"; 60 + pinctrl-names = "default"; 61 + pinctrl-0 = <&max9485_pins>; 62 + reg = <0x63>; 63 + vdd-supply = <&reg_3v3>; 64 + clock-names = "xclk"; 65 + clocks = <&xo_27mhz>; 66 + reset-gpios = <&gpio 111 GPIO_ACTIVE_HIGH>; 67 + #clock-cells = <1>; 68 + }; 69 + }; 70 + 71 + &pinctrl { 72 + cs4270_pins: cs4270-pins { 73 + pinctrl-single,pins = < 74 + MFP_PIN_PXA300(120) MFP_AF0 /* RESET */ 75 + >; 76 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 77 + }; 78 + 79 + max9485_pins: max9485-pins { 80 + pinctrl-single,pins = < 81 + MFP_PIN_PXA300(111) MFP_AF0 /* RESET */ 82 + >; 83 + pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW); 84 + }; 85 + };