Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,8 @@
# SPDX-License-Identifier: GPL-2.0
dtb-$(CONFIG_ARCH_PXA) += \
pxa300-raumfeld-connector.dtb \
pxa300-raumfeld-controller.dtb \
pxa300-raumfeld-speaker-l.dtb \
pxa300-raumfeld-speaker-m.dtb \
pxa300-raumfeld-speaker-one.dtb \
pxa300-raumfeld-speaker-s.dtb
@@ -0,0 +1,118 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Copyright (C) 2016 Robert Jarzmik <robert.jarzmik@free.fr>
*/
#include "pxa2xx.dtsi"
#include "dt-bindings/clock/pxa-clock.h"
/ {
model = "Marvell PXA25x family SoC";
compatible = "marvell,pxa250";
clocks {
/*
* The muxing of external clocks/internal dividers for osc* clock
* sources has been hidden under the carpet by now.
*/
#address-cells = <1>;
#size-cells = <1>;
ranges;
clks: pxa2xx_clks@41300004 {
compatible = "marvell,pxa250-core-clocks";
#clock-cells = <1>;
status = "okay";
};
/* timer oscillator */
clktimer: oscillator {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <3686400>;
clock-output-names = "ostimer";
};
};
pxabus {
pdma: dma-controller@40000000 {
compatible = "marvell,pdma-1.0";
reg = <0x40000000 0x10000>;
interrupts = <25>;
#dma-cells = <2>;
/* For backwards compatibility: */
#dma-channels = <16>;
dma-channels = <16>;
#dma-requests = <40>;
dma-requests = <40>;
status = "okay";
};
pxairq: interrupt-controller@40d00000 {
marvell,intc-priority;
marvell,intc-nr-irqs = <32>;
};
pinctrl: pinctrl@40e00000 {
reg = <0x40e00054 0x20 0x40e0000c 0xc 0x40e0010c 4
0x40f00020 0x10>;
compatible = "marvell,pxa25x-pinctrl";
};
gpio: gpio@40e00000 {
compatible = "intel,pxa25x-gpio";
gpio-ranges = <&pinctrl 0 0 84>;
clocks = <&clks CLK_NONE>;
};
pwm0: pwm@40b00000 {
compatible = "marvell,pxa250-pwm";
reg = <0x40b00000 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM0>;
};
pwm1: pwm@40b00010 {
compatible = "marvell,pxa250-pwm";
reg = <0x40b00010 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM1>;
};
rtc@40900000 {
clocks = <&clks CLK_OSC32k768>;
};
};
timer@40a00000 {
compatible = "marvell,pxa-timer";
reg = <0x40a00000 0x20>;
interrupts = <26>;
clocks = <&clktimer>;
status = "okay";
};
pxa250_opp_table: opp_table0 {
compatible = "operating-points-v2";
opp-99532800 {
opp-hz = /bits/ 64 <99532800>;
opp-microvolt = <1000000 950000 1650000>;
clock-latency-ns = <20>;
};
opp-199065600 {
opp-hz = /bits/ 64 <199065600>;
opp-microvolt = <1000000 950000 1650000>;
clock-latency-ns = <20>;
};
opp-298598400 {
opp-hz = /bits/ 64 <298598400>;
opp-microvolt = <1100000 1045000 1650000>;
clock-latency-ns = <20>;
};
opp-398131200 {
opp-hz = /bits/ 64 <398131200>;
opp-microvolt = <1300000 1235000 1650000>;
clock-latency-ns = <20>;
};
};
};
@@ -0,0 +1,188 @@
// SPDX-License-Identifier: GPL-2.0
/* The pxa3xx skeleton simply augments the 2xx version */
#include "pxa2xx.dtsi"
#include "dt-bindings/clock/pxa-clock.h"
/ {
model = "Marvell PXA27x familiy SoC";
compatible = "marvell,pxa27x";
pxabus {
pdma: dma-controller@40000000 {
compatible = "marvell,pdma-1.0";
reg = <0x40000000 0x10000>;
interrupts = <25>;
#dma-cells = <2>;
/* For backwards compatibility: */
#dma-channels = <32>;
dma-channels = <32>;
#dma-requests = <75>;
dma-requests = <75>;
status = "okay";
};
pxairq: interrupt-controller@40d00000 {
marvell,intc-priority;
marvell,intc-nr-irqs = <34>;
};
pinctrl: pinctrl@40e00000 {
reg = <0x40e00054 0x20 0x40e0000c 0xc 0x40e0010c 4
0x40f00020 0x10>;
compatible = "marvell,pxa27x-pinctrl";
};
gpio: gpio@40e00000 {
compatible = "intel,pxa27x-gpio";
gpio-ranges = <&pinctrl 0 0 128>;
clocks = <&clks CLK_NONE>;
};
usb0: usb@4c000000 {
compatible = "marvell,pxa-ohci";
reg = <0x4c000000 0x10000>;
interrupts = <3>;
clocks = <&clks CLK_USBHOST>;
status = "disabled";
};
pwm0: pwm@40b00000 {
compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
reg = <0x40b00000 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM0>;
};
pwm1: pwm@40b00010 {
compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
reg = <0x40b00010 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM1>;
};
pwm2: pwm@40c00000 {
compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
reg = <0x40c00000 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM0>;
};
pwm3: pwm@40c00010 {
compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
reg = <0x40c00010 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM1>;
};
pwri2c: i2c@40f00180 {
compatible = "mrvl,pxa-i2c";
reg = <0x40f00180 0x24>;
interrupts = <6>;
clocks = <&clks CLK_PWRI2C>;
#address-cells = <0x1>;
#size-cells = <0>;
status = "disabled";
};
pxa27x_udc: udc@40600000 {
compatible = "marvell,pxa270-udc";
reg = <0x40600000 0x10000>;
interrupts = <11>;
clocks = <&clks CLK_USB>;
status = "disabled";
};
keypad: keypad@41500000 {
compatible = "marvell,pxa27x-keypad";
reg = <0x41500000 0x4c>;
interrupts = <4>;
clocks = <&clks CLK_KEYPAD>;
status = "disabled";
};
pxa_camera: imaging@50000000 {
compatible = "marvell,pxa270-qci";
reg = <0x50000000 0x1000>;
interrupts = <33>;
dmas = <&pdma 68 0 /* Y channel */
&pdma 69 0 /* U channel */
&pdma 70 0>; /* V channel */
dma-names = "CI_Y", "CI_U", "CI_V";
clocks = <&clks CLK_CAMERA>;
clock-names = "ciclk";
clock-frequency = <5000000>;
clock-output-names = "qci_mclk";
status = "disabled";
};
rtc@40900000 {
clocks = <&clks CLK_OSC32k768>;
};
};
clocks {
/*
* The muxing of external clocks/internal dividers for osc* clock
* sources has been hidden under the carpet by now.
*/
#address-cells = <1>;
#size-cells = <1>;
ranges;
clks: pxa2xx_clks@41300004 {
compatible = "marvell,pxa270-clocks";
#clock-cells = <1>;
status = "okay";
};
};
timer@40a00000 {
compatible = "marvell,pxa-timer";
reg = <0x40a00000 0x20>;
interrupts = <26>;
clocks = <&clks CLK_OSTIMER>;
status = "okay";
};
pxa270_opp_table: opp_table0 {
compatible = "operating-points-v2";
opp-104000000 {
opp-hz = /bits/ 64 <104000000>;
opp-microvolt = <900000 900000 1705000>;
clock-latency-ns = <20>;
};
opp-156000000 {
opp-hz = /bits/ 64 <156000000>;
opp-microvolt = <1000000 1000000 1705000>;
clock-latency-ns = <20>;
};
opp-208000000 {
opp-hz = /bits/ 64 <208000000>;
opp-microvolt = <1180000 1180000 1705000>;
clock-latency-ns = <20>;
};
opp-312000000 {
opp-hz = /bits/ 64 <312000000>;
opp-microvolt = <1250000 1250000 1705000>;
clock-latency-ns = <20>;
};
opp-416000000 {
opp-hz = /bits/ 64 <416000000>;
opp-microvolt = <1350000 1350000 1705000>;
clock-latency-ns = <20>;
};
opp-520000000 {
opp-hz = /bits/ 64 <520000000>;
opp-microvolt = <1450000 1450000 1705000>;
clock-latency-ns = <20>;
};
opp-624000000 {
opp-hz = /bits/ 64 <624000000>;
opp-microvolt = <1550000 1550000 1705000>;
clock-latency-ns = <20>;
};
};
};
@@ -0,0 +1,162 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* pxa2xx.dtsi - Device Tree Include file for Marvell PXA2xx family SoC
*
* Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
*/
#include "dt-bindings/clock/pxa-clock.h"
#define PMGROUP(pin) #pin
#define PMMUX(func, pin, af) \
mux- ## func { \
groups = PMGROUP(P ## pin); \
function = #af; \
}
#define PMMUX_LPM_LOW(func, pin, af) \
mux- ## func { \
groups = PMGROUP(P ## pin); \
function = #af; \
low-power-disable; \
}
#define PMMUX_LPM_HIGH(func, pin, af) \
mux- ## func { \
groups = PMGROUP(P ## pin); \
function = #af; \
low-power-enable; \
}
/ {
#address-cells = <1>;
#size-cells = <1>;
model = "Marvell PXA2xx family SoC";
compatible = "marvell,pxa2xx";
interrupt-parent = <&pxairq>;
aliases {
serial0 = &ffuart;
serial1 = &btuart;
serial2 = &stuart;
serial3 = &hwuart;
i2c0 = &pwri2c;
i2c1 = &pxai2c1;
};
cpus {
cpu {
compatible = "marvell,xscale";
device_type = "cpu";
};
};
pxabus {
compatible = "simple-bus";
#address-cells = <1>;
#size-cells = <1>;
ranges;
pxairq: interrupt-controller@40d00000 {
#interrupt-cells = <1>;
compatible = "marvell,pxa-intc";
interrupt-controller;
interrupt-parent;
marvell,intc-nr-irqs = <32>;
reg = <0x40d00000 0xd0>;
};
gpio: gpio@40e00000 {
compatible = "mrvl,pxa-gpio";
#address-cells = <0x1>;
#size-cells = <0x1>;
reg = <0x40e00000 0x10000>;
gpio-controller;
#gpio-cells = <0x2>;
interrupts = <8>, <9>, <10>;
interrupt-names = "gpio0", "gpio1", "gpio_mux";
interrupt-controller;
#interrupt-cells = <0x2>;
ranges;
gcb0: gpio@40e00000 {
reg = <0x40e00000 0x4>;
};
gcb1: gpio@40e00004 {
reg = <0x40e00004 0x4>;
};
gcb2: gpio@40e00008 {
reg = <0x40e00008 0x4>;
};
gcb3: gpio@40e0000c {
reg = <0x40e0000c 0x4>;
};
};
ffuart: serial@40100000 {
compatible = "mrvl,pxa-uart";
reg = <0x40100000 0x30>;
interrupts = <22>;
clocks = <&clks CLK_FFUART>;
status = "disabled";
};
btuart: serial@40200000 {
compatible = "mrvl,pxa-uart";
reg = <0x40200000 0x30>;
interrupts = <21>;
clocks = <&clks CLK_BTUART>;
status = "disabled";
};
stuart: serial@40700000 {
compatible = "mrvl,pxa-uart";
reg = <0x40700000 0x30>;
interrupts = <20>;
clocks = <&clks CLK_STUART>;
status = "disabled";
};
hwuart: serial@41600000 {
compatible = "mrvl,pxa-uart";
reg = <0x41600000 0x30>;
interrupts = <7>;
status = "disabled";
};
pxai2c1: i2c@40301680 {
compatible = "mrvl,pxa-i2c";
reg = <0x40301680 0x30>;
interrupts = <18>;
clocks = <&clks CLK_I2C>;
#address-cells = <0x1>;
#size-cells = <0>;
status = "disabled";
};
mmc0: mmc@41100000 {
compatible = "marvell,pxa-mmc";
reg = <0x41100000 0x1000>;
interrupts = <23>;
clocks = <&clks CLK_MMC>;
dmas = <&pdma 21 3
&pdma 22 3>;
dma-names = "rx", "tx";
status = "disabled";
};
rtc@40900000 {
compatible = "marvell,pxa-rtc";
reg = <0x40900000 0x3c>;
interrupts = <30 31>;
};
lcdc: lcd-controller@40500000 {
compatible = "marvell,pxa2xx-lcdc";
reg = <0x44000000 0x10000>;
interrupts = <17>;
clocks = <&clks CLK_LCD>;
status = "disabled";
};
};
};
@@ -0,0 +1,405 @@
// SPDX-License-Identifier: GPL-2.0
#include "pxa3xx.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
/ {
/* Will be overridden by bootloader */
hw-revision = <0>;
chosen {
bootargs = "root=ubi0:RootFS rootfstype=ubifs rw ubi.mtd=3";
stdout-path = &ffuart;
};
memory {
device_type = "memory";
reg = <0xa0000000 0x8000000>; /* 128 MB */
};
reg_3v3: regulator-3v3 {
compatible = "regulator-fixed";
regulator-name = "3v3-fixed-supply";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
reg_1v8: regulator-1v8 {
compatible = "regulator-fixed";
regulator-name = "1v8-fixed-supply";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
reg_va_5v0: regulator-va-5v0 {
compatible = "regulator-fixed";
regulator-name = "va-5v0-fixed-supply";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio 124 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
ssp_dai0: ssp-dai0 {
compatible = "mrvl,pxa-ssp-dai";
pinctrl-names = "default";
pinctrl-0 = <&ssp0_dai_pins>;
port = <&ssp1>;
#sound-dai-cells = <0>;
dmas = <&pdma 13 3
&pdma 14 3>;
dma-names = "rx", "tx";
clock-names = "extclk";
};
ssp_dai1: ssp-dai1 {
compatible = "mrvl,pxa-ssp-dai";
pinctrl-names = "default";
pinctrl-0 = <&ssp1_dai_pins>;
port = <&ssp2>;
#sound-dai-cells = <0>;
dmas = <&pdma 15 3
&pdma 16 3>;
dma-names = "rx", "tx";
clock-names = "extclk";
};
spi: spi {
compatible = "spi-gpio";
#address-cells = <0x1>;
#size-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&spi_pins>;
gpio-sck = <&gpio 95 GPIO_ACTIVE_HIGH>;
gpio-miso = <&gpio 98 GPIO_ACTIVE_HIGH>;
gpio-mosi = <&gpio 97 GPIO_ACTIVE_HIGH>;
cs-gpios = <
&gpio 34 GPIO_ACTIVE_HIGH
&gpio 125 GPIO_ACTIVE_HIGH
&gpio 96 GPIO_ACTIVE_HIGH
>;
num-chipselects = <3>;
dac: dac@2 {
compatible = "ti,dac7512";
reg = <2>;
spi-max-frequency = <1000000>;
vcc-supply = <&reg_3v3>;
};
};
keys: gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&gpio_keys_pins>;
on-off {
label = "on_off button";
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
linux,code = <KEY_F6>;
};
rescue-boot {
label = "rescue boot button";
gpios = <&gpio 115 GPIO_ACTIVE_HIGH>;
linux,code = <KEY_F4>;
};
setup {
label = "setup";
gpios = <&gpio 119 GPIO_ACTIVE_HIGH>;
linux,code = <KEY_F3>;
};
};
rotary: rotary-encoder {
compatible = "rotary-encoder";
gpios = <
&gpio 19 GPIO_ACTIVE_LOW
&gpio 20 GPIO_ACTIVE_HIGH
>;
linux,axis = <REL_X>;
rotary-encoder,relative-axis;
};
leds: leds {
compatible = "gpio-leds";
pinctrl-names = "default";
pinctrl-0 = <&led_pins_a &led_pins_b>;
left {
label = "raumfeld:1";
gpios = <&gpio 36 GPIO_ACTIVE_LOW>;
};
right {
label = "raumfeld:2";
gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
};
};
poweroff {
compatible = "gpio-poweroff";
pinctrl-names = "default";
pinctrl-0 = <&poweroff_pins>;
gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
};
mmc0_pwrseq: mmc-pwrseq {
compatible = "mmc-pwrseq-simple";
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pwrseq_pins>;
reset-gpios = <
&gpio 113 GPIO_ACTIVE_LOW /* W2W_RESET */
&gpio 114 GPIO_ACTIVE_LOW /* W2W_PDN */
>;
};
ethernet: ethernet@10000000 {
compatible = "smsc,lan9115";
pinctrl-names = "default";
pinctrl-0 = <&smsc_pins &smsc_bus_pins>;
reg = <0x10000000 0x100000>;
phy-mode = "mii";
interrupt-parent = <&gpio>;
interrupts = <40 IRQ_TYPE_EDGE_FALLING>;
vdd33a-supply = <&reg_3v3>;
vddvario-supply = <&reg_1v8>;
reset-gpios = <&gpio 39 GPIO_ACTIVE_LOW>;
reg-io-width = <4>;
smsc,save-mac-address;
smsc,irq-push-pull;
};
};
&ffuart {
status = "okay";
};
&pwri2c {
status = "okay";
max8660: regulator@34 {
compatible = "maxim,max8660";
reg = <0x34>;
regulators {
regulator-v3 {
regulator-compatible = "V3(DCDC)";
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1800000>;
};
regulator-v4 {
regulator-compatible = "V4(DCDC)";
regulator-min-microvolt = <725000>;
regulator-max-microvolt = <1800000>;
};
regulator-v5 {
regulator-compatible = "V5(LDO)";
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <2000000>;
};
reg_vcc_sdio: regulator-v6 {
regulator-compatible = "V6(LDO)";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
regulator-v7 {
regulator-compatible = "V7(LDO)";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
};
};
};
};
&pxai2c1 {
status = "okay";
mrvl,i2c-fast-mode;
pinctrl-names = "default";
pinctrl-0 = <&pxai2c1_pins>;
};
&ssp1 {
status = "okay";
};
&ssp2 {
status = "okay";
};
&nand_controller {
status = "okay";
nand@0 {
reg = <0>;
nand-rb = <0>;
nand-ecc-mode = "hw";
marvell,nand-keep-config;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
partition@0 {
label = "Bootloader";
reg = <0x0000000 0xa0000>;
read-only;
};
partition@a0000 {
label = "BootloaderEnvironment";
reg = <0x0a0000 0x20000>;
};
partition@c0000 {
label = "BootloaderSplashScreen";
reg = <0x0c0000 0x60000>;
};
partition@120000 {
label = "UBI";
reg = <0x120000 0x7ee0000>;
};
};
};
};
&usb0 {
status = "okay";
marvell,enable-port1;
marvell,port-mode = <2>; /* PMM_GLOBAL_MODE */
pinctrl-names = "default";
pinctrl-0 = <&pxa3xx_ohci_pins>;
};
&mmc0 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&mmc0_pins>;
pxa-mmc,detect-delay-ms = <200>;
vmmc-supply = <&reg_vcc_sdio>;
mmc-pwrseq = <&mmc0_pwrseq>;
non-removable;
bus-width = <4>;
};
&pinctrl {
poweroff_pins: poweroff-pins {
pinctrl-single,pins = <MFP_PIN_PXA300(16) MFP_AF0>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
};
led_pins_a: led-pins-a {
pinctrl-single,pins = <MFP_PIN_PXA300(35) MFP_AF0>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
led_pins_b: led-pins-b {
pinctrl-single,pins = <MFP_PIN_PXA300(36) MFP_AF0>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_DRIVE_HIGH);
};
pxai2c1_pins: pxai2c1-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(21) MFP_AF1 /* I2C_SCL */
MFP_PIN_PXA300(22) MFP_AF1 /* I2C_SDA */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_HIGH);
};
gpio_keys_pins: gpio-keys-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(14) MFP_AF0 /* on-off */
MFP_PIN_PXA300(115) MFP_AF0 /* rescue boot */
MFP_PIN_PXA300(119) MFP_AF0 /* setup */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
};
spi_pins: spi-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(95) MFP_AF0 /* SCK */
MFP_PIN_PXA300(97) MFP_AF0 /* MOSI */
MFP_PIN_PXA300(98) MFP_AF0 /* MISO */
MFP_PIN_PXA300(34) MFP_AF0 /* CS#0 */
MFP_PIN_PXA300(125) MFP_AF0 /* CS#1 */
MFP_PIN_PXA300(96) MFP_AF0 /* CS#2 */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
pxa3xx_ohci_pins: pxa3xx-ohci-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300_2(0) MFP_AF1 /* USBHPEN */
MFP_PIN_PXA300_2(1) MFP_AF1 /* USBHPWR */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
smsc_pins: smsc-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(39) MFP_AF0 /* RESET */
MFP_PIN_PXA300(40) MFP_AF0 /* IRQ */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
smsc_bus_pins: smsc-bus-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(1) MFP_AF1 /* nCS2 */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
};
mmc0_pins: mmc0-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(3) MFP_AF4 /* MMC1_DAT0 */
MFP_PIN_PXA300(4) MFP_AF4 /* MMC1_DAT1 */
MFP_PIN_PXA300(5) MFP_AF4 /* MMC1_DAT2 */
MFP_PIN_PXA300(6) MFP_AF4 /* MMC1_DAT3 */
MFP_PIN_PXA300(7) MFP_AF4 /* MMC1_CLK */
MFP_PIN_PXA300(8) MFP_AF4 /* MMC1_CMD */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_DRIVE_HIGH);
};
mmc0_pwrseq_pins: mmc0-pwrseq-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(113) MFP_AF0 /* W2W_RESET */
MFP_PIN_PXA300(114) MFP_AF0 /* W2W_PDN */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
};
ssp0_dai_pins: ssp0-dai-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(85) MFP_AF1 /* SSP1_SCLK */
MFP_PIN_PXA300(86) MFP_AF1 /* SSP1_FRM */
MFP_PIN_PXA300(87) MFP_AF1 /* SSP1_TXD */
MFP_PIN_PXA300(88) MFP_AF1 /* SSP1_RXD */
MFP_PIN_PXA300(89) MFP_AF1 /* SSP1_EXTCLK */
MFP_PIN_PXA300(90) MFP_AF1 /* SSP1_SYSCLK */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
ssp1_dai_pins: ssp1-dai-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(25) MFP_AF2 /* SSP2_SCLK */
MFP_PIN_PXA300(26) MFP_AF2 /* SSP2_FRM */
MFP_PIN_PXA300(27) MFP_AF2 /* SSP2_TXD */
MFP_PIN_PXA300(29) MFP_AF2 /* SSP2_EXTCLK */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
};
@@ -0,0 +1,73 @@
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "pxa300-raumfeld-common.dtsi"
#include "pxa300-raumfeld-tuneable-clock.dtsi"
/ {
model = "Raumfeld Connector (PXA3xx)";
compatible = "raumfeld,raumfeld-connector-pxa303", "marvell,pxa300";
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "Raumfeld Connector";
#address-cells = <1>;
#size-cells = <0>;
simple-audio-card,dai-link@0 {
reg = <0>;
format = "i2s";
bitclock-master = <&dailink_master_analog>;
frame-master = <&dailink_master_analog>;
mclk-fs = <256>;
dailink_master_analog: cpu {
sound-dai = <&ssp_dai0>;
};
codec {
sound-dai = <&cs4270>;
};
};
simple-audio-card,dai-link@1 {
reg = <1>;
format = "i2s";
bitclock-master = <&dailink_master_digital>;
frame-master = <&dailink_master_digital>;
mclk-fs = <256>;
dailink_master_digital: cpu {
sound-dai = <&ssp_dai1>;
};
codec {
sound-dai = <&ak4104>;
};
};
};
};
&ssp1 {
status = "okay";
};
&ssp2 {
status = "okay";
};
&spi {
ak4104: optical-transmitter@0 {
compatible = "asahi-kasei,ak4104";
reg = <0>;
vdd-supply = <&reg_3v3>;
spi-max-frequency = <5000000>;
reset-gpios = <&gpio 38 GPIO_ACTIVE_HIGH>;
#sound-dai-cells = <0>;
};
};
&rotary {
status = "disabled";
};
@@ -0,0 +1,285 @@
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "pxa300-raumfeld-common.dtsi"
/ {
model = "Raumfeld Controller (PXA3xx)";
compatible = "raumfeld,raumfeld-controller-pxa303", "marvell,pxa300";
reg_vbatt: regulator-vbatt {
compatible = "regulator-fixed";
regulator-name = "vbatt-fixed-supply";
regulator-min-microvolt = <3700000>;
regulator-max-microvolt = <3700000>;
regulator-always-on;
};
lcd_supply: regulator-va-tft {
compatible = "regulator-fixed";
regulator-name = "va-tft-fixed-supply";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
gpio = <&gpio 33 GPIO_ACTIVE_HIGH>;
enable-active-high;
};
onewire {
compatible = "w1-gpio";
pinctrl-names = "default";
pinctrl-0 = <&w1_pins>;
gpios = <
&gpio 126 GPIO_OPEN_DRAIN /* W1 I/O */
&gpio 105 GPIO_ACTIVE_HIGH /* pullup */
>;
w1_ds2760: slave-ds2760 {
compatible = "maxim,ds2760";
power-supplies = <&charger>;
};
};
charger: charger {
pinctrl-names = "default";
pinctrl-0 = <&charger_pins>;
compatible = "gpio-charger";
charger-type = "mains";
gpios = <&gpio 101 GPIO_ACTIVE_LOW>;
};
/*
* One of the following two will be set to "okay" by the bootloader,
* depending on the hardware revision.
*/
backlight-controller-pwm {
compatible = "pwm-backlight";
pinctrl-names = "default";
pinctrl-0 = <&pwm0_pins>;
pwms = <&pwm0 10000>;
power-supply = <&reg_vbatt>;
status = "disabled";
brightness-levels = <
0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
100
>;
default-brightness-level = <100>;
};
backlight-controller {
compatible = "lltc,lt3593";
pinctrl-names = "default";
pinctrl-0 = <&lt3593_pins>;
lltc,ctrl-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
status = "disabled";
led {
label = "backlight";
default-state = "on";
};
};
};
&reg_va_5v0 {
status = "disabled";
};
&ethernet {
status = "disabled";
};
&leds {
status = "disabled";
};
&dac {
status = "disabled";
};
&pwm0 {
status = "okay";
};
&keys {
pinctrl-0 = <&gpio_keys_pins &dock_detect_pins>;
dock-detect {
label = "dock detect";
gpios = <&gpio 116 GPIO_ACTIVE_LOW>;
linux,code = <KEY_F5>;
};
};
&spi {
accelerometer@1 {
compatible = "st,lis302dl-spi";
pinctrl-names = "default";
pinctrl-0 = <&lis302_pins>;
reg = <1>;
spi-max-frequency = <1000000>;
interrupt-parent = <&gpio>;
interrupts = <104 IRQ_TYPE_EDGE_FALLING>;
st,click-single-x;
st,click-single-y;
st,click-single-z;
st,click-thresh-x = <10>;
st,click-thresh-y = <10>;
st,click-thresh-z = <10>;
st,irq1-click;
st,irq2-click;
st,wakeup-x-lo;
st,wakeup-x-hi;
st,wakeup-y-lo;
st,wakeup-y-hi;
st,wakeup-z-lo;
st,wakeup-z-hi;
};
};
&lcdc {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&lcdc_pins>;
lcd-supply = <&lcd_supply>;
port {
lcdc_out: endpoint {
remote-endpoint = <&panel_in>;
bus-width = <16>;
};
};
panel {
compatible = "sharp,lq043t3dx0-panel";
display-timings {
native-mode = <&timing0>;
timing0: timing {
clock-frequency = <9009000>;
pixelclk-active = <0>; /* negative edge */
hactive = <480>;
vactive = <272>;
hsync-len = <41>;
hback-porch = <2>;
hfront-porch = <1>;
vsync-len = <10>;
vback-porch = <3>;
vfront-porch = <1>;
};
};
port {
panel_in: endpoint {
remote-endpoint = <&lcdc_out>;
};
};
};
};
&gcu {
status = "okay";
};
&pxai2c1 {
touchscreen@a {
compatible = "eeti,exc3000-i2c";
pinctrl-names = "default";
pinctrl-0 = <&eeti_ts_pins>;
reg = <0xa>;
interrupt-parent = <&gpio>;
interrupts = <32 IRQ_TYPE_EDGE_RISING>;
attn-gpios = <&gpio 32 GPIO_ACTIVE_HIGH>;
touchscreen-inverted-y;
};
};
&pinctrl {
lis302_pins: lis302-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(104) MFP_AF0 /* IRQ */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
eeti_ts_pins: eeti-ts-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(32) MFP_AF0 /* IRQ */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
};
lt3593_pins: lt3593-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(17) MFP_AF0 /* Backlight */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
pwm0_pins: pwm0-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(17) MFP_AF1 /* PWM */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
w1_pins: w1-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(126) MFP_AF0 /* PWM */
MFP_PIN_PXA300(105) MFP_AF0 /* PWM */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
};
charger_pins: charger_pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(31) MFP_AF0 /* PEN2 */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_HIGH);
pinctrl-single,bias-pullup = MPF_PULL_UP;
};
dock_detect_pins: dock_detect_pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(116) MFP_AF0 /* DOCK_DETECT */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_HIGH);
pinctrl-single,bias-pullup = MPF_PULL_UP;
};
lcdc_pins: lcdc-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(54) MFP_AF1 /* LDD_0 */
MFP_PIN_PXA300(55) MFP_AF1 /* LDD_1 */
MFP_PIN_PXA300(56) MFP_AF1 /* LDD_2 */
MFP_PIN_PXA300(57) MFP_AF1 /* LDD_3 */
MFP_PIN_PXA300(58) MFP_AF1 /* LDD_4 */
MFP_PIN_PXA300(59) MFP_AF1 /* LDD_5 */
MFP_PIN_PXA300(60) MFP_AF1 /* LDD_6 */
MFP_PIN_PXA300(61) MFP_AF1 /* LDD_7 */
MFP_PIN_PXA300(62) MFP_AF1 /* LDD_8 */
MFP_PIN_PXA300(63) MFP_AF1 /* LDD_9 */
MFP_PIN_PXA300(64) MFP_AF1 /* LDD_10 */
MFP_PIN_PXA300(65) MFP_AF1 /* LDD_11 */
MFP_PIN_PXA300(66) MFP_AF1 /* LDD_12 */
MFP_PIN_PXA300(67) MFP_AF1 /* LDD_13 */
MFP_PIN_PXA300(68) MFP_AF1 /* LDD_14 */
MFP_PIN_PXA300(69) MFP_AF1 /* LDD_15 */
MFP_PIN_PXA300(70) MFP_AF1 /* LDD_16 */
MFP_PIN_PXA300(71) MFP_AF1 /* LDD_17 */
MFP_PIN_PXA300(72) MFP_AF1 /* LCD_FCLK */
MFP_PIN_PXA300(73) MFP_AF1 /* LCD_LCLK */
MFP_PIN_PXA300(74) MFP_AF1 /* LCD_PCLK */
MFP_PIN_PXA300(75) MFP_AF1 /* LCD_BIAS */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
};
@@ -0,0 +1,11 @@
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "pxa300-raumfeld-common.dtsi"
#include "pxa300-raumfeld-tuneable-clock.dtsi"
/ {
model = "Raumfeld Speaker L (PXA3xx)";
compatible = "raumfeld,raumfeld-speaker-l-pxa303", "marvell,pxa300";
};
@@ -0,0 +1,11 @@
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "pxa300-raumfeld-common.dtsi"
#include "pxa300-raumfeld-tuneable-clock.dtsi"
/ {
model = "Raumfeld Speaker M (PXA3xx)";
compatible = "raumfeld,raumfeld-speaker-m-pxa303", "marvell,pxa300";
};
@@ -0,0 +1,140 @@
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "pxa300-raumfeld-common.dtsi"
/ {
model = "Raumfeld Speaker One (PXA3xx)";
compatible = "raumfeld,raumfeld-speaker-one-pxa303", "marvell,pxa300";
wm8782: wm8782 {
compatible = "wm8782";
#sound-dai-cells = <0>;
Vdd-supply = <&reg_3v3>;
Vdda-supply = <&reg_va_5v0>;
};
xo_11mhz: oscillator-11mhz {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <11289600>;
clock-accuracy = <100>;
};
xo_audio: clock-gate {
compatible = "gpio-gate-clock";
pinctrlnames = "default";
pinctrl-0 = <&xo_audio_pins>;
clocks = <&xo_11mhz>;
#clock-cells = <0>;
enable-gpios = <&gpio 111 GPIO_ACTIVE_HIGH>;
};
reg_va_30v0: regulator-va-30v0 {
compatible = "regulator-fixed";
regulator-name = "va-30v0-fixed-supply";
regulator-min-microvolt = <30000000>;
regulator-max-microvolt = <30000000>;
};
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "Raumfeld Speaker";
#address-cells = <1>;
#size-cells = <0>;
simple-audio-card,dai-link@0 {
reg = <0>;
format = "i2s";
bitclock-master = <&dailink_master_analog_out>;
frame-master = <&dailink_master_analog_out>;
mclk-fs = <256>;
dailink_master_analog_out: cpu {
sound-dai = <&ssp_dai0>;
};
codec {
sound-dai = <&sta320>;
};
};
simple-audio-card,dai-link@1 {
reg = <1>;
format = "i2s";
bitclock-master = <&dailink_master_analog_in>;
frame-master = <&dailink_master_analog_in>;
mclk-fs = <256>;
dailink_master_analog_in: cpu {
sound-dai = <&ssp_dai0>;
};
codec {
sound-dai = <&wm8782>;
};
};
};
};
&ssp_dai0 {
clocks = <&xo_audio>;
};
&spi {
dac@2 {
compatible = "ti,dac7512";
reg = <2>;
spi-max-frequency = <1000000>;
vcc-supply = <&reg_3v3>;
};
};
&rotary {
status = "okay";
};
&pxai2c1 {
sta320: codec@1a {
compatible = "st,sta32x";
reg = <0x1a>;
pinctrl-names = "default";
pinctrl-0 = <&sta320_pins>;
clocks = <&xo_audio>;
clock-names = "xti";
reset-gpios = <&gpio 120 GPIO_ACTIVE_HIGH>;
Vdda-supply = <&reg_3v3>;
Vdd3-supply = <&reg_3v3>;
Vcc-supply = <&reg_va_30v0>;
#sound-dai-cells = <0>;
st,thermal-warning-adjustment;
st,thermal-warning-recovery;
st,fault-detect-recovery;
st,drop-compensation-ns = <80>;
st,max-power-use-mpcc;
st,invalid-input-detect-mute;
/* 2 (half-bridge) and 1 (full-bridge) on-board power */
st,output-conf = /bits/ 8 <0x1>;
st,ch1-output-mapping = /bits/ 8 <0>;
st,ch2-output-mapping = /bits/ 8 <1>;
st,ch3-output-mapping = /bits/ 8 <2>;
st,needs_esd_watchdog;
};
};
&pinctrl {
xo_audio_pins: xo-audio-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(111) MFP_AF0 /* ENABLE */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
sta320_pins: sta320-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(120) MFP_AF0 /* CODEC_RESET */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_FLOAT);
};
};
@@ -0,0 +1,11 @@
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "pxa300-raumfeld-common.dtsi"
#include "pxa300-raumfeld-tuneable-clock.dtsi"
/ {
model = "Raumfeld Speaker S (PXA3xx)";
compatible = "raumfeld,raumfeld-speaker-s-pxa303", "marvell,pxa300";
};
@@ -0,0 +1,85 @@
// SPDX-License-Identifier: GPL-2.0
#include <dt-bindings/clock/maxim,max9485.h>
/ {
xo_27mhz: oscillator-27mhz {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <27000000>;
clock-accuracy = <100>;
};
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "Raumfeld Speaker";
#address-cells = <1>;
#size-cells = <0>;
simple-audio-card,dai-link@0 {
reg = <0>;
format = "i2s";
bitclock-master = <&dailink_master_analog>;
frame-master = <&dailink_master_analog>;
mclk-fs = <256>;
dailink_master_analog: cpu {
sound-dai = <&ssp_dai0>;
};
codec {
sound-dai = <&cs4270>;
};
};
};
};
&ssp_dai0 {
clocks = <&max9485 MAX9485_CLKOUT1>;
};
&ssp_dai1 {
clocks = <&max9485 MAX9485_CLKOUT1>;
};
&pxai2c1 {
cs4270: codec@48 {
compatible = "cirrus,cs4270";
pinctrl-names = "default";
pinctrl-0 = <&cs4270_pins>;
reg = <0x48>;
va-supply = <&reg_va_5v0>;
vd-supply = <&reg_3v3>;
vlc-supply = <&reg_3v3>;
reset-gpios = <&gpio 120 GPIO_ACTIVE_HIGH>;
#sound-dai-cells = <0>;
};
max9485: clock-generator@63 {
compatible = "maxim,max9485";
pinctrl-names = "default";
pinctrl-0 = <&max9485_pins>;
reg = <0x63>;
vdd-supply = <&reg_3v3>;
clock-names = "xclk";
clocks = <&xo_27mhz>;
reset-gpios = <&gpio 111 GPIO_ACTIVE_HIGH>;
#clock-cells = <1>;
};
};
&pinctrl {
cs4270_pins: cs4270-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(120) MFP_AF0 /* RESET */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
max9485_pins: max9485-pins {
pinctrl-single,pins = <
MFP_PIN_PXA300(111) MFP_AF0 /* RESET */
>;
pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW);
};
};
@@ -0,0 +1,320 @@
// SPDX-License-Identifier: GPL-2.0
/* The pxa3xx skeleton simply augments the 2xx version */
#include "pxa2xx.dtsi"
#define MFP_PIN_PXA300(gpio) \
((gpio <= 2) ? (0x00b4 + 4 * gpio) : \
(gpio <= 26) ? (0x027c + 4 * (gpio - 3)) : \
(gpio <= 98) ? (0x0400 + 4 * (gpio - 27)) : \
(gpio <= 127) ? (0x0600 + 4 * (gpio - 99)) : \
0)
#define MFP_PIN_PXA300_2(gpio) \
((gpio <= 1) ? (0x674 + 4 * gpio) : \
(gpio <= 6) ? (0x2dc + 4 * gpio) : \
0)
#define MFP_PIN_PXA310(gpio) \
((gpio <= 2) ? (0x00b4 + 4 * gpio) : \
(gpio <= 26) ? (0x027c + 4 * (gpio - 3)) : \
(gpio <= 29) ? (0x0400 + 4 * (gpio - 27)) : \
(gpio <= 98) ? (0x0418 + 4 * (gpio - 30)) : \
(gpio <= 127) ? (0x0600 + 4 * (gpio - 99)) : \
(gpio <= 262) ? 0 : \
(gpio <= 268) ? (0x052c + 4 * (gpio - 263)) : \
0)
#define MFP_PIN_PXA310_2(gpio) \
((gpio <= 1) ? (0x674 + 4 * gpio) : \
(gpio <= 6) ? (0x2dc + 4 * gpio) : \
(gpio <= 10) ? (0x52c + 4 * gpio) : \
0)
#define MFP_PIN_PXA320(gpio) \
((gpio <= 4) ? (0x0124 + 4 * gpio) : \
(gpio <= 9) ? (0x028c + 4 * (gpio - 5)) : \
(gpio <= 10) ? (0x0458 + 4 * (gpio - 10)) : \
(gpio <= 26) ? (0x02a0 + 4 * (gpio - 11)) : \
(gpio <= 48) ? (0x0400 + 4 * (gpio - 27)) : \
(gpio <= 62) ? (0x045c + 4 * (gpio - 49)) : \
(gpio <= 73) ? (0x04b4 + 4 * (gpio - 63)) : \
(gpio <= 98) ? (0x04f0 + 4 * (gpio - 74)) : \
(gpio <= 127) ? (0x0600 + 4 * (gpio - 99)) : \
0)
#define MFP_PIN_PXA320_2(gpio) \
((gpio <= 3) ? (0x674 + 4 * gpio) : \
(gpio <= 5) ? (0x284 + 4 * gpio) : \
0)
/*
* MFP Alternate functions for pins having a gpio.
* Example of use: pinctrl-single,pins = < MFP_PIN_PXA310(21) MFP_AF1 >
*/
#define MFP_AF0 (0 << 0)
#define MFP_AF1 (1 << 0)
#define MFP_AF2 (2 << 0)
#define MFP_AF3 (3 << 0)
#define MFP_AF4 (4 << 0)
#define MFP_AF5 (5 << 0)
#define MFP_AF6 (6 << 0)
/*
* MFP drive strength functions for pins.
* Example of use: pinctrl-single,drive-strength = MFP_DS03X;
*/
#define MFP_DSMSK (0x7 << 10)
#define MFP_DS01X < (0x0 << 10) MFP_DSMSK >
#define MFP_DS02X < (0x1 << 10) MFP_DSMSK >
#define MFP_DS03X < (0x2 << 10) MFP_DSMSK >
#define MFP_DS04X < (0x3 << 10) MFP_DSMSK >
#define MFP_DS06X < (0x4 << 10) MFP_DSMSK >
#define MFP_DS08X < (0x5 << 10) MFP_DSMSK >
#define MFP_DS10X < (0x6 << 10) MFP_DSMSK >
#define MFP_DS13X < (0x7 << 10) MFP_DSMSK >
/*
* MFP bias pull mode for pins.
* Example of use: pinctrl-single,bias-pullup = MPF_PULL_UP;
*/
#define MPF_PULL_MSK (0x7 << 13)
#define MPF_PULL_DOWN < (0x5 << 13) (0x5 << 13) 0 MPF_PULL_MSK >
#define MPF_PULL_UP < (0x6 << 13) (0x6 << 13) 0 MPF_PULL_MSK >
/*
* MFP low power mode for pins.
* Example of use:
* pinctrl-single,low-power-mode = MFP_LPM(MFP_LPM_PULL_LOW|MFP_LPM_EDGE_FALL);
*
* Table that determines the low power modes outputs, with actual settings
* used in parentheses for don't-care values. Except for the float output,
* the configured driven and pulled levels match, so if there is a need for
* non-LPM pulled output, the same configuration could probably be used.
*
* Output value sleep_oe_n sleep_data pullup_en pulldown_en pull_sel
* (bit 7) (bit 8) (bit 14) (bit 13) (bit 15)
*
* Input 0 X(0) X(0) X(0) 0
* Drive 0 0 0 0 X(1) 0
* Drive 1 0 1 X(1) 0 0
* Pull hi (1) 1 X(1) 1 0 0
* Pull lo (0) 1 X(0) 0 1 0
* Z (float) 1 X(0) 0 0 0
*/
#define MFP_LPM(x) < (x) MFP_LPM_MSK >
#define MFP_LPM_MSK 0xe1f0
#define MFP_LPM_INPUT 0x0000
#define MFP_LPM_DRIVE_LOW 0x2000
#define MFP_LPM_DRIVE_HIGH 0x4100
#define MFP_LPM_PULL_LOW 0x2080
#define MFP_LPM_PULL_HIGH 0x4180
#define MFP_LPM_FLOAT 0x0080
#define MFP_LPM_EDGE_NONE 0x0000
#define MFP_LPM_EDGE_RISE 0x0010
#define MFP_LPM_EDGE_FALL 0x0020
#define MFP_LPM_EDGE_BOTH 0x0030
/ {
model = "Marvell PXA3xx familiy SoC";
compatible = "marvell,pxa3xx";
pxabus {
pdma: dma-controller@40000000 {
compatible = "marvell,pdma-1.0";
reg = <0x40000000 0x10000>;
interrupts = <25>;
#dma-cells = <2>;
/* For backwards compatibility: */
#dma-channels = <32>;
dma-channels = <32>;
#dma-requests = <100>;
dma-requests = <100>;
status = "okay";
};
pwri2c: i2c@40f500c0 {
compatible = "mrvl,pwri2c";
reg = <0x40f500c0 0x30>;
interrupts = <6>;
clocks = <&clks CLK_PWRI2C>;
#address-cells = <0x1>;
#size-cells = <0>;
status = "disabled";
};
nand_controller: nand-controller@43100000 {
compatible = "marvell,pxa3xx-nand-controller";
reg = <0x43100000 90>;
interrupts = <45>;
clocks = <&clks CLK_NAND>;
clock-names = "core";
dmas = <&pdma 97 3>;
dma-names = "data";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
pxairq: interrupt-controller@40d00000 {
marvell,intc-priority;
marvell,intc-nr-irqs = <56>;
};
pinctrl: pinctrl@40e10000 {
compatible = "pinconf-single";
reg = <0x40e10000 0xffff>;
#pinctrl-cells = <1>;
pinctrl-single,register-width = <32>;
pinctrl-single,function-mask = <0x7>;
};
gpio: gpio@40e00000 {
compatible = "intel,pxa3xx-gpio";
reg = <0x40e00000 0x10000>;
clocks = <&clks CLK_GPIO>;
gpio-ranges = <&pinctrl 0 0 128>;
interrupt-names = "gpio0", "gpio1", "gpio_mux";
interrupts = <8>, <9>, <10>;
gpio-controller;
#gpio-cells = <0x2>;
interrupt-controller;
#interrupt-cells = <0x2>;
};
mmc0: mmc@41100000 {
compatible = "marvell,pxa-mmc";
reg = <0x41100000 0x1000>;
interrupts = <23>;
clocks = <&clks CLK_MMC1>;
dmas = <&pdma 21 3
&pdma 22 3>;
dma-names = "rx", "tx";
status = "disabled";
};
mmc1: mmc@42000000 {
compatible = "marvell,pxa-mmc";
reg = <0x42000000 0x1000>;
interrupts = <41>;
clocks = <&clks CLK_MMC2>;
dmas = <&pdma 93 3
&pdma 94 3>;
dma-names = "rx", "tx";
status = "disabled";
};
mmc2: mmc@42500000 {
compatible = "marvell,pxa-mmc";
reg = <0x42500000 0x1000>;
interrupts = <55>;
clocks = <&clks CLK_MMC3>;
dmas = <&pdma 46 3
&pdma 47 3>;
dma-names = "rx", "tx";
status = "disabled";
};
usb0: usb@4c000000 {
compatible = "marvell,pxa-ohci";
reg = <0x4c000000 0x10000>;
interrupts = <3>;
clocks = <&clks CLK_USBH>;
status = "disabled";
};
pwm0: pwm@40b00000 {
compatible = "marvell,pxa270-pwm";
reg = <0x40b00000 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM0>;
status = "disabled";
};
pwm1: pwm@40b00010 {
compatible = "marvell,pxa270-pwm";
reg = <0x40b00010 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM1>;
status = "disabled";
};
pwm2: pwm@40c00000 {
compatible = "marvell,pxa270-pwm";
reg = <0x40c00000 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM0>;
status = "disabled";
};
pwm3: pwm@40c00010 {
compatible = "marvell,pxa270-pwm";
reg = <0x40c00010 0x10>;
#pwm-cells = <1>;
clocks = <&clks CLK_PWM1>;
status = "disabled";
};
ssp1: ssp@41000000 {
compatible = "mrvl,pxa3xx-ssp";
reg = <0x41000000 0x40>;
interrupts = <24>;
clocks = <&clks CLK_SSP1>;
status = "disabled";
};
ssp2: ssp@41700000 {
compatible = "mrvl,pxa3xx-ssp";
reg = <0x41700000 0x40>;
interrupts = <16>;
clocks = <&clks CLK_SSP2>;
status = "disabled";
};
ssp3: ssp@41900000 {
compatible = "mrvl,pxa3xx-ssp";
reg = <0x41900000 0x40>;
interrupts = <0>;
clocks = <&clks CLK_SSP3>;
status = "disabled";
};
ssp4: ssp@41a00000 {
compatible = "mrvl,pxa3xx-ssp";
reg = <0x41a00000 0x40>;
interrupts = <13>;
clocks = <&clks CLK_SSP4>;
status = "disabled";
};
timer@40a00000 {
compatible = "marvell,pxa-timer";
reg = <0x40a00000 0x20>;
interrupts = <26>;
clocks = <&clks CLK_OSTIMER>;
status = "okay";
};
gcu: display-controller@54000000 {
compatible = "marvell,pxa300-gcu";
reg = <0x54000000 0x1000>;
interrupts = <39>;
clocks = <&clks CLK_PXA300_GCU>;
status = "disabled";
};
};
clocks {
/*
* The muxing of external clocks/internal dividers for osc* clock
* sources has been hidden under the carpet by now.
*/
#address-cells = <1>;
#size-cells = <1>;
ranges;
clks: clocks {
compatible = "marvell,pxa300-clocks";
#clock-cells = <1>;
status = "okay";
};
};
};