// SPDX-License-Identifier: GPL-2.0 OR MIT /* * Copyright 2019 Ondrej Jirman */ /dts-v1/; #include "sun5i-a13.dtsi" #include "sunxi-common-regulators.dtsi" #include #include #include #include / { model = "PocketBook Touch Lux 3"; compatible = "pocketbook,touch-lux-3", "allwinner,sun5i-a13"; aliases { serial0 = &uart1; i2c0 = &i2c0; i2c1 = &i2c1; i2c2 = &i2c2; }; backlight { compatible = "pwm-backlight"; pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; enable-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */ brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; default-brightness-level = <8>; power-supply = <®_vcc3v3>; }; chosen { stdout-path = "serial0:115200n8"; }; leds { compatible = "gpio-leds"; led { gpios = <&pio 4 8 GPIO_ACTIVE_LOW>; /* PE8 */ default-state = "on"; }; }; gpio-keys { compatible = "gpio-keys"; autorepeat; label = "GPIO Keys"; key-right { label = "Right"; linux,code = ; gpios = <&pio 6 9 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PG9 */ }; key-left { label = "Left"; linux,code = ; gpios = <&pio 6 10 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PG10 */ }; }; regulator-eink { compatible = "custom,reg-userspace-consumer"; controlled-supply = <&tp65185x>; }; reg_1v8: regulator-1v8 { compatible = "regulator-fixed"; regulator-name = "vdd-1v8-nor-ctp"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&pio 2 15 GPIO_ACTIVE_HIGH>; enable-active-high; }; reg_1v8_nor: regulator-nor { compatible = "regulator-fixed"; regulator-name = "vdd-nor"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&pio 2 14 GPIO_ACTIVE_HIGH>; enable-active-high; vin-supply = <®_1v8>; }; reg_1v8_ctp: regulator-ctp { compatible = "regulator-fixed"; regulator-name = "vdd-ctp"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&pio 2 13 GPIO_ACTIVE_HIGH>; enable-active-high; vin-supply = <®_1v8>; }; reg_3v3_mmc0: regulator-mmc0 { compatible = "regulator-fixed"; regulator-name = "vdd-mmc0"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; gpio = <&pio 4 4 GPIO_ACTIVE_LOW>; /* PE4 */ vin-supply = <®_vcc3v3>; }; }; &cpu0 { cpu-supply = <®_dcdc2>; }; &ehci0 { status = "okay"; }; &i2c0 { status = "okay"; //XXX: bsp has pullup on PB0/PB1 pins enabled, but it works without it axp209: pmic@34 { reg = <0x34>; interrupts = <0>; }; }; #include "axp209.dtsi" &i2c1 { status = "okay"; pcf8563: rtc@51 { compatible = "nxp,pcf8563"; reg = <0x51>; #clock-cells = <0>; }; // hacky PMIC driver for eInk display tp65185x: regulator@68 { compatible = "tp,tp65185x"; reg = <0x68>; regulator-min-microvolt = <3120000>; regulator-max-microvolt = <3120000>; regulator-name = "eink-vcom"; //XXX: we don't use interrupts in the driver right now //interrupt-parent = <&pio>; //interrupts = <1 10 IRQ_TYPE_LEVEL_LOW>; /* PB10 */ wakeup-gpios = <&pio 3 18 GPIO_ACTIVE_HIGH>; /* PD18 */ powerup-gpios = <&pio 4 7 GPIO_ACTIVE_HIGH>; /* PE7 */ vcom-gpios = <&pio 3 19 GPIO_ACTIVE_HIGH>; /* PD19 */ //XXX: not a pullup on BSP (might have an external resistor) powergood-gpios = <&pio 4 6 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PE6 */ }; }; &i2c2 { status = "okay"; touchpanel@24 { compatible = "cypress,cyttsp4_i2c_adapter"; reg = <0x24>; interrupt-parent = <&pio>; interrupts = <6 11 IRQ_TYPE_EDGE_FALLING>; /* PG11 */ vdd-supply = <®_1v8_ctp>; power-gpios = <&pio 4 5 GPIO_ACTIVE_LOW>; /* PE5 */ reset-gpios = <&pio 1 3 GPIO_ACTIVE_LOW>; /* PB3 */ }; }; &lradc { vref-supply = <®_ldo2>; status = "okay"; button-200 { label = "Home"; linux,code = ; channel = <0>; voltage = <200000>; }; button-400 { label = "Menu"; linux,code = ; channel = <0>; voltage = <400000>; }; }; &mmc0 { vmmc-supply = <®_3v3_mmc0>; bus-width = <4>; cd-gpios = <&pio 6 0 GPIO_ACTIVE_LOW>; /* PG0 */ status = "okay"; }; &mmc2 { pinctrl-names = "default"; pinctrl-0 = <&mmc2_4bit_pc_pins>; vmmc-supply = <®_vcc3v3>; bus-width = <4>; non-removable; status = "okay"; }; &ohci0 { status = "okay"; }; &otg_sram { status = "okay"; }; &pio { eink_pins_active: eink-pins-lcd { pins = "PD3", "PD4", "PD5", "PD6", "PD7", "PD10", "PD11", "PD12", "PD13", "PD15", "PD20", "PD21", "PD22", "PD23", "PD24"; function = "lcd0"; }; eink_pins_idle: eink-pins-gpio { pins = "PD3", "PD4", "PD5", "PD6", "PD7", "PD10", "PD11", "PD12", "PD13", "PD15", "PD20", "PD21", "PD22", "PD23", "PD24"; function = "gpio_out"; }; }; &pwm { pinctrl-names = "default"; pinctrl-0 = <&pwm0_pin>; status = "okay"; }; ®_dcdc2 { regulator-always-on; regulator-min-microvolt = <1000000>; regulator-max-microvolt = <1400000>; regulator-name = "vdd-cpu"; }; ®_dcdc3 { regulator-always-on; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-name = "vdd-int-pll"; }; ®_ldo1 { regulator-name = "vdd-rtc"; }; ®_ldo2 { regulator-always-on; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-name = "avcc"; }; ®_ldo3 { regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc-wifi"; /* We need this otherwise the LDO3 would overload */ regulator-soft-start; regulator-ramp-delay = <1600>; }; &soc { display-controller@1c0c000 { pinctrl-names = "idle", "active"; pinctrl-0 = <&eink_pins_idle>; pinctrl-1 = <&eink_pins_active>; all-gpios = <&pio 3 3 GPIO_ACTIVE_HIGH>, <&pio 3 4 GPIO_ACTIVE_HIGH>, <&pio 3 5 GPIO_ACTIVE_HIGH>, <&pio 3 6 GPIO_ACTIVE_HIGH>, <&pio 3 7 GPIO_ACTIVE_HIGH>, <&pio 3 10 GPIO_ACTIVE_HIGH>, <&pio 3 11 GPIO_ACTIVE_HIGH>, <&pio 3 12 GPIO_ACTIVE_HIGH>, <&pio 3 13 GPIO_ACTIVE_HIGH>, <&pio 3 15 GPIO_ACTIVE_HIGH>, <&pio 3 20 GPIO_ACTIVE_HIGH>, <&pio 3 21 GPIO_ACTIVE_HIGH>, <&pio 3 22 GPIO_ACTIVE_HIGH>, <&pio 3 23 GPIO_ACTIVE_HIGH>, <&pio 3 24 GPIO_ACTIVE_HIGH>; compatible = "custom,pocketbook-touch-lux-3-tcon0-ed060xd4-display"; reg = <0x01c0c000 0x1000>, // TCON0 regs <0x01e60000 0x10000>; // DEBE regs interrupts = <44>; // TCON interrupt resets = <&ccu RST_LCD>, <&ccu RST_DE_BE>; reset-names = "tcon", "be"; clocks = <&ccu CLK_AHB_LCD>, <&ccu CLK_TCON_CH0>, <&ccu CLK_AHB_DE_BE>, <&ccu CLK_DE_BE>, <&ccu CLK_DRAM_DE_BE>; clock-names = "tcon_bus", "tcon_mod", "be_bus", "be_mod", "be_ram"; assigned-clocks = <&ccu CLK_DE_BE>; assigned-clock-rates = <300000000>; interconnects = <&mbus 18>; interconnect-names = "dma-mem"; panel-supply = <&tp65185x>; control-device-name = "eink-panel"; }; }; &spi2 { pinctrl-names = "default"; pinctrl-0 = <&spi2_pe_pins>, <&spi2_cs0_pe_pin>; status = "okay"; epd_flash: flash@0 { #address-cells = <1>; #size-cells = <1>; compatible = "macronix,mx25u4033", "jedec,spi-nor"; reg = <0>; spi-max-frequency = <4000000>; vdd-supply = <®_1v8_nor>; }; }; &uart1 { pinctrl-names = "default"; pinctrl-0 = <&uart1_pg_pins>; status = "okay"; }; &usb_otg { dr_mode = "peripheral"; status = "okay"; }; &battery_power_supply { status = "okay"; }; &usb_power_supply { status = "okay"; }; &usbphy { //XXX: might not work, need to test usb0_vbus_det-gpios = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */ usb1_vbus-supply = <®_ldo3>; status = "okay"; };