
On Sat, 2 Oct 2021 23:32:34 +0200 Nikola Pavlica pavlica.nikola@gmail.com wrote:
Hi Nikola,
This patch uses the (almost) the same settings as those found in the original Android firmware. As such, it gurantees good compatibility.
V2: Small fixes/changes to the config
V3: Checkpatch fixes
Please try to fix those before hitting Send ;-) and please note patch versions within the brackets ([PATCH v3]).
Signed-off-by: Nikola Pavlica pavlica.nikola@gmail.com
arch/arm/dts/Makefile | 1 + arch/arm/dts/sun7i-a20-vivax-tpc9150.dts | 259 +++++++++++++++++++++++
So the .dts file would need to go through a Linux review first. Please send it there, and we will pick it up once it has been merged.
Cheers, Andre
board/sunxi/MAINTAINERS | 5 + configs/Vivax_TPC9150_defconfig | 13 ++ 4 files changed, 278 insertions(+) create mode 100644 arch/arm/dts/sun7i-a20-vivax-tpc9150.dts create mode 100644 configs/Vivax_TPC9150_defconfig
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index fc16a57e60..d8e2248272 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -568,6 +568,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \ sun7i-a20-pcduino3.dtb \ sun7i-a20-pcduino3-nano.dtb \ sun7i-a20-primo73.dtb \
- sun7i-a20-vivax-tpc9150.dtb \ sun7i-a20-wexler-tab7200.dtb \ sun7i-a20-wits-pro-a20-dkt.dtb \ sun7i-a20-yones-toptech-bd1078.dtb
diff --git a/arch/arm/dts/sun7i-a20-vivax-tpc9150.dts b/arch/arm/dts/sun7i-a20-vivax-tpc9150.dts new file mode 100644 index 0000000000..78867c2fe0 --- /dev/null +++ b/arch/arm/dts/sun7i-a20-vivax-tpc9150.dts @@ -0,0 +1,259 @@ +// SPDX-License-Identifier: GPL-2.0+ OR X11 +/*
- Copyright 2021 Nikola Pavlica pavlica.nikola@gmail.com
- DTS file for the Vivax TPC-9150 tablet
- */
+/dts-v1/; +#include "sun7i-a20.dtsi" +#include "sunxi-common-regulators.dtsi"
+#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/pwm/pwm.h>
+/ {
- model = "Vivax TPC-9150 tablet";
- compatible = "vivax,tpc-9150", "allwinner,sun7i-a20";
- aliases {
serial0 = &uart0;
- };
- backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
brightness-levels = <0 1 2 4 6 8 11 14 18
23 30 38 48 61 78 100>;
default-brightness-level = <16>;
enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
power-supply = <®_vcc3v3>;
- };
- chosen {
stdout-path = "serial0:115200n8";
- };
- hdmi-connector {
compatible = "hdmi-connector";
type = "a";
port {
hdmi_con_in: endpoint {
remote-endpoint = <&hdmi_out_con>;
};
};
- };
+};
+&i2c0 {
- status = "okay";
- axp209: pmic@34 {
reg = <0x34>;
interrupt-parent = <&nmi_intc>;
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
- };
+};
+&i2c1 {
- status = "okay";
- // you need to manually probe this sensor, the kernel fails to do it on its own
- stk8312@3d {
compatible = "STK8312", "stk8312";
reg = <0x3d>;
interrupt-parent = <&pio>;
interrupts = <7 0 IRQ_TYPE_EDGE_RISING>; /* PH0 / EINT0 */
- };
+};
+&i2c2 {
- status = "okay";
- ft5x: touchscreen@38 {
compatible = "edt,edt-ft5406";
reg = <0x38>;
interrupt-parent = <&pio>;
interrupts = <7 21 IRQ_TYPE_EDGE_FALLING>; /* PH21 */
touchscreen-size-x = <800>;
touchscreen-size-y = <480>;
bias-pull-up;
- };
+};
+&i2c3 {
- status = "okay";
+};
+&mmc0 {
- vmmc-supply = <®_vcc3v3>;
- bus-width = <4>;
- cd-gpios = <&pio 7 1 GPIO_ACTIVE_LOW>; /* PH1 */
- status = "okay";
+};
+&ehci0 {
- status = "okay";
+};
+&ehci1 {
- status = "okay";
+};
+&ohci0 {
- status = "okay";
+};
+&ohci1 {
- status = "okay";
+};
+&otg_sram {
- status = "okay";
+};
+®_usb0_vbus {
- status = "okay";
+};
+®_usb1_vbus {
- status = "okay";
- gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
+};
+®_usb2_vbus {
- status = "okay";
- gpio = <&pio 7 3 GPIO_ACTIVE_HIGH>; /* PH3 */
+};
+&usb_otg {
- dr_mode = "otg";
- status = "okay";
+};
+&usbphy {
- usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
- usb0_vbus_power-supply = <&usb_power_supply>;
- usb0_vbus-supply = <®_usb0_vbus>;
- usb1_vbus-supply = <®_usb1_vbus>;
- usb2_vbus-supply = <®_usb2_vbus>;
- status = "okay";
+};
+&uart0 {
- pinctrl-names = "default";
- pinctrl-0 = <&uart0_pb_pins>;
- status = "okay";
+};
+// display related +&be0 {
- status = "okay";
+};
+&hdmi {
- status = "okay";
+};
+&hdmi_out {
- hdmi_out_con: endpoint {
remote-endpoint = <&hdmi_con_in>;
- };
+};
+// PWM used for the backlight +&pwm {
- pinctrl-names = "default";
- pinctrl-0 = <&pwm0_pin>;
- status = "okay";
+};
+&codec {
- allwinner,pa-gpios = <&pio 7 15 GPIO_ACTIVE_LOW>; /* PH15 */
- status = "okay";
+};
+#include "axp209.dtsi"
+&usb_power_supply {
- status = "okay";
+};
+&battery_power_supply {
- status = "okay";
+};
+®_dcdc2 {
- regulator-always-on;
- regulator-min-microvolt = <1000000>;
- regulator-max-microvolt = <1500000>;
- regulator-name = "vdd-cpu";
+};
+®_dcdc3 {
- regulator-always-on;
- regulator-min-microvolt = <1000000>;
- regulator-max-microvolt = <1400000>;
- 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";
+};
+&lradc {
- vref-supply = <®_vcc3v0>;
- status = "enabled";
+};
+// voltage table obtained from FEX file1 +&cpu0 {
- cpu-supply = <®_dcdc2>;
- operating-points = <
/* kHz uV */
1008000 1450000
960000 1400000
864000 1300000
792000 1250000
720000 1200000
624000 1150000
528000 1100000
312000 1050000
144000 1050000
>;
+};
+&cpu1 {
- cpu-supply = <®_dcdc2>;
- operating-points = <
/* kHz uV */
1008000 1450000
960000 1400000
864000 1300000
792000 1250000
720000 1200000
624000 1150000
528000 1100000
312000 1050000
144000 1050000
>;
+};
diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS index 4fc26077b2..b13c09f582 100644 --- a/board/sunxi/MAINTAINERS +++ b/board/sunxi/MAINTAINERS @@ -515,6 +515,11 @@ M: Maxime Ripard mripard@kernel.org S: Maintained F: configs/tbs_a711_defconfig
+VIVAX TPC-9150 BOARD +M: Nikola Pavlica <pavlica.nikola@gmail.com +S: Maintained +F: configs/Vivax_TPC-9150-defconfig
WEXLER-TAB7200 BOARD M: Aleksei Mamlin mamlinav@gmail.com S: Maintained diff --git a/configs/Vivax_TPC9150_defconfig b/configs/Vivax_TPC9150_defconfig new file mode 100644 index 0000000000..77cbba6aba --- /dev/null +++ b/configs/Vivax_TPC9150_defconfig @@ -0,0 +1,13 @@ +CONFIG_ARM=y +CONFIG_ARCH_SUNXI=y +CONFIG_DEFAULT_DEVICE_TREE="sun7i-a20-vivax-tpc9150" +CONFIG_SPL=y +CONFIG_MACH_SUN7I=y +CONFIG_DRAM_CLK=384 +CONFIG_VIDEO_LCD_MODE="x:1024,y:600,depth:18,pclk_khz:60000,le:60,ri:160,up:13,lo:12,hs:100,vs:10,sync:3,vmode:0" +CONFIG_VIDEO_LCD_DCLK_PHASE=0 +CONFIG_VIDEO_LCD_POWER="PH8" +CONFIG_VIDEO_LCD_BL_EN="PH7" +CONFIG_VIDEO_LCD_BL_PWM="PB2" +# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set +CONFIG_SPL_I2C=y