lpi4a: add pocket4a & plastic4a initial support

This commit is contained in:
Lu
2024-05-20 09:20:56 +08:00
committed by Han Gao
parent 2dec144313
commit 9cc3fa38f8
10 changed files with 400 additions and 5 deletions

View File

@@ -56,7 +56,9 @@ dtb-$(CONFIG_SOC_THEAD_FIRE) += fire-emu-soc-base-sec.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-beagle.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-lpi4a-16gb.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-lpi4a-laptop.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-lpi4a-pocket.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-lpi4a-console.dtb th1520-lpi4a-console-16g.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-lpi4a-plastic.dtb th1520-lpi4a-plastic-16g.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-lpi4a-cluster.dtb th1520-lpi4a-cluster-16gb.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-lpi4a-z14inch-m0.dtb th1520-lpi4a-z14inch-m0-16g.dtb
dtb-$(CONFIG_SOC_THEAD) += th1520-milkv-meles.dtb th1520-milkv-meles-4g.dtb th1520-milkv-meles-dsi0.dtb

View File

@@ -32,7 +32,7 @@
};
&i2c3 {
touch@14 {
goodix_tp: touch@14 {
#gpio-cells = <2>;
compatible = "goodix,gt9271";
reg = <0x14>;

View File

@@ -11,7 +11,7 @@
};
&i2c3 {
touch@14 {
goodix_tp: touch@14 {
touchscreen-size-x = <800>;
touchscreen-size-y = <1200>;
status = "okay";

View File

@@ -76,9 +76,17 @@
vin-supply = <&reg_sys_vcc_5v>;
gpio = <&pcal6408ahk_c 1 1>;
enable-active-high;
regulator-boot-on;
regulator-always-on;
};
sata_pwr_switch: sata-pwr-switch {
status = "okay";
compatible = "reg-userspace-consumer";
regulator-name = "sata-pwr-consumer";
vcc-supply = <&reg_sata_vcc_5v>;
};
audio_amp: regulator-audio-amp-en {
status = "okay";
compatible = "regulator-fixed";

View File

@@ -0,0 +1,17 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2022 Alibaba Group Holding Limited.
*/
#include "th1520-lpi4a-plastic.dts"
/ {
memory@0 {
device_type = "memory";
reg = <0x0 0x200000 0x3 0xffe00000>;
};
};
&cmamem {
alloc-ranges = <0x3 0xe4000000 0 0x14000000>; // [0x3E400_0000 ~ 0x3F800_0000]
};

View File

@@ -0,0 +1,80 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2024 Sipeed.
*/
#include <dt-bindings/interrupt-controller/irq.h>
#include "th1520-lpi4a-laptop.dts"
/ {
model = "T-HEAD Light Lichee Pi 4A configuration for Plastic laptop";
};
&dsi0_panel0 {
compatible = "cmn,5171_1920x1200_40Hz";
};
&i2c2 {
touchpad: touchpad@2c {
compatible = "hid-over-i2c";
reg = <0x2c>;
hid-descr-addr = <0x0020>;
interrupt-parent = <&gpio1_porta>;
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
};
};
&cw2015 {
cellwise,battery-profile = /bits/ 8 <
0x17 0x67 0x72 0x68 0x66 0x63 0x62 0x5A
0x64 0x61 0x4D 0x57 0x5A 0x51 0x43 0x38
0x31 0x2A 0x24 0x22 0x29 0x31 0x3E 0x4C
0x29 0x4D 0x0B 0x85 0x1C 0x38 0x47 0x57
0x5D 0x5E 0x5F 0x60 0x3F 0x1A 0x6F 0x41
0x0A 0x43 0x12 0x38 0x7B 0x95 0x9A 0x18
0x4B 0x6F 0x9E 0xD5 0x80 0x57 0x87 0xCB
0x2F 0x00 0x64 0xA5 0xB5 0x13 0x54 0xB9
>;
};
&lt8911 {
// CMN5171
//lontium,pclk = <154000000>; // 60Hz
lontium,pclk = <127750000>; // 50Hz
//lontium,pclk = <757500000>; // 30Hz
lontium,hact = <1920>;
lontium,vact = <1200>;
lontium,hbp = <84>;
lontium,hfp = <46>;
lontium,vbp = <20>;
lontium,vfp = <10>;
lontium,hs = <30>;
lontium,vs = <6>;
lontium,mipi_lane = <2>;
lontium,lane_cnt = <2>;
lontium,color = <1>; //Color Depth 0:6bit 1:8bit
lontium,test = <0>;
};
&fan_config0 {
temperature = <40000>;
};
&fan_config1 {
temperature = <60000>;
};
&fan_config2 {
temperature = <80000>;
};
&fan {
pwms = <&pwm 1 100000 0>;
cooling-levels = <0x10 0x30 0x50 0xFF>;
};
&lcd0_backlight {
//pwms = <&pwm 0 50000>;
pwms = <&pwm 0 1000000>;
default-brightness-level = <40>;
};

View File

@@ -0,0 +1,219 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2023 Sipeed.
*/
#include "th1520-lpi4a-dsi0-hdmi.dts"
/ {
model = "LicheePocket4A 8G";
compatible = "thead,light", "sipeed,pocket4a";
charger: dc-charger {
compatible = "gpio-charger";
charger-type = "mains";
gpios = <&gpio1_porta 3 GPIO_ACTIVE_HIGH>;
};
};
&uart1 {
status = "okay";
};
&uart3 {
status = "okay";
};
&lcd0_backlight {
pwms = <&pwm 0 10000>; // 100Khz
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 = <30>;
};
&fan {
pwms = <&pwm 1 10000000 0>;
//cooling-levels = <0 64 192 255>;
cooling-levels = <192 192 192 255>;
};
&i2c0 {
/delete-node/ gpio@18;
cw2015: cw2015@62 {
compatible = "cellwise,cw2015";
status = "disabled";
reg = <0x62>;
cellwise,monitor-interval-ms = <5000>;
power-supplies = <&charger>;
cellwise,battery-profile = /bits/ 8 <
0x17 0x67 0x80 0x73 0x6E 0x6C 0x6B 0x63
0x77 0x51 0x5C 0x58 0x50 0x4C 0x48 0x36
0x15 0x0C 0x0C 0x19 0x5B 0x7D 0x6F 0x69
0x69 0x5B 0x0C 0x29 0x20 0x40 0x52 0x59
0x57 0x56 0x54 0x4F 0x3B 0x1F 0x7F 0x17
0x06 0x1A 0x30 0x5A 0x85 0x93 0x96 0x2D
0x48 0x77 0x9C 0xB3 0x80 0x52 0x94 0xCB
0x2F 0x00 0x64 0xA5 0xB5 0x11 0xF0 0x11
>;
};
};
&i2c3 {
/delete-node/ gpio@18;
};
&goodix_tp {
#gpio-cells = <2>;
compatible = "goodix,gt9271";
reg = <0x14>;
interrupt-parent = <&ao_gpio_porta>;
interrupts = <3 0>;
irq-gpios = <&ao_gpio_porta 3 0>;
reset-gpios = <&pcal6408ahk_c 0 0>;
touchscreen-size-x = <800>;
touchscreen-size-y = <1280>;
status = "okay";
};
&reg_tp_pwr_en {
/delete-property/ gpio;
};
&reg_usb_hub_vdd1v2 {
/delete-property/ gpio;
};
&vvcam_sensor1 {
sensor_pdn = <&gpio1_porta 30 0>;
sensor_rst = <&pcal6408ahk_c 2 0>;
i2c_bus = /bits/ 8 <0>;
};
&key_volup {
gpios = <&gpio2_porta 16 0x1>;
};
&reg_usb_hub_vcc5v {
/delete-property/ gpio;
};
&soc_vdd33_lcd0_en_reg {
/delete-property/ gpio;
};
&soc_vdd18_lcd0_en_reg {
/delete-property/ gpio;
};
&soc_avdd28_rgb_reg {
/delete-property/ gpio;
};
&soc_dovdd18_rgb_reg {
/delete-property/ gpio;
};
&soc_dvdd12_rgb_reg {
/delete-property/ gpio;
};
&soc_avdd25_ir_reg {
/delete-property/ gpio;
};
&soc_dovdd18_ir_reg {
/delete-property/ gpio;
};
&soc_dvdd12_ir_reg {
/delete-property/ gpio;
};
&soc_cam2_avdd25_ir_reg {
/delete-property/ gpio;
};
&soc_cam2_dovdd18_ir_reg {
/delete-property/ gpio;
};
&soc_cam2_dvdd12_ir_reg {
/delete-property/ gpio;
};
&dsi0_panel0 {
compatible = "chongzhou,cz101b4001", "jadard,jd9365da-h3";
backlight = <&lcd0_backlight>;
reset-gpio = <&pcal6408ahk_c 3 0>; /* active low */
/delete-property/ hsvcc-supply;
/delete-property/ vspn3v3-supply;
};
&usb_1 {
/delete-property/ hubswitch-gpio;
/delete-property/ hub1v2-supply;
/delete-property/ hub5v-supply;
};
&cpus {
c910_0: cpu@0 {
operating-points = <
/* kHz uV */
300000 500000
800000 700000
1500000 800000
>;
light,dvddm-operating-points = <
/* kHz uV */
300000 800000
800000 800000
1500000 800000
>;
};
c910_1: cpu@1 {
operating-points = <
/* kHz uV */
300000 500000
800000 700000
1500000 800000
>;
light,dvddm-operating-points = <
/* kHz uV */
300000 800000
800000 800000
1500000 800000
>;
};
c910_2: cpu@2 {
operating-points = <
/* kHz uV */
300000 500000
800000 700000
1500000 800000
>;
light,dvddm-operating-points = <
/* kHz uV */
300000 800000
800000 800000
1500000 800000
>;
};
c910_3: cpu@3 {
operating-points = <
/* kHz uV */
300000 500000
800000 700000
1500000 800000
>;
light,dvddm-operating-points = <
/* kHz uV */
300000 800000
800000 800000
1500000 800000
>;
};
};

View File

@@ -295,7 +295,7 @@
debounce-interval = <1>;
gpios = <&gpio1_porta 19 0x1>;
};
key-volumeup {
key_volup: key-volumeup {
label = "Volume Up Key";
linux,code = <KEY_VOLUMEUP>;
debounce-interval = <1>;
@@ -1174,7 +1174,6 @@
>;
};
pinctrl_uart3_tx_is_gpio: uart3txisgpiogrp {
thead,pins = <
FM_UART3_TXD 0x3 0x202
@@ -1184,6 +1183,7 @@
pinctrl_wifi_wake: wifi_grp {
thead,pins = <
FM_GPIO0_27 0x0 0x202
@@ -1525,6 +1525,13 @@
channel0 {
channel_id = <0>;
status = "okay";
sensor0 {
subdev_name = "vivcam";
idx = <0>;
csi_idx = <0>;
mode_idx = <0>;
path_type = "SENSOR_VGA_RAW12_LINER";
};
sensor1 {
subdev_name = "vivcam";
idx = <3>;
@@ -1550,6 +1557,13 @@
};
};
channel1 {
sensor0 {
subdev_name = "vivcam";
idx = <0>;
csi_idx = <0>;
mode_idx = <0>;
path_type = "SENSOR_VGA_RAW12_LINER";
};
sensor1 {
subdev_name = "vivcam";
idx = <3>;
@@ -1570,6 +1584,13 @@
};
};
channel2 {
sensor0 {
subdev_name = "vivcam";
idx = <0>;
csi_idx = <0>;
mode_idx = <0>;
path_type = "SENSOR_VGA_RAW12_LINER";
};
sensor1 {
subdev_name = "vivcam";
idx = <3>;
@@ -1595,6 +1616,14 @@
vi_mem_pool_region = <0>; // vi_mem: framebuffer, region[0]
status = "okay";
channel0 {
sensor0 {
subdev_name = "vivcam";
idx = <0>;
csi_idx = <0>;
mode_idx = <0>;
path_type = "SENSOR_VGA_RAW12_LINER";
};
sensor1 {
subdev_name = "vivcam";
idx = <3>;

View File

@@ -239,6 +239,10 @@ CONFIG_LIGHT_PMIC_WATCHDOG=y
CONFIG_ABX500_CORE=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
CONFIG_REGULATOR_USERSPACE_CONSUMER=y
CONFIG_REGULATOR_GPIO=y
CONFIG_REGULATOR_PWM=y
CONFIG_MEDIA_SUPPORT=y
# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
@@ -293,7 +297,7 @@ CONFIG_DRM_PANEL_HX8394=y
CONFIG_DRM_PANEL_JADARD_JD9365DA_H3=y
CONFIG_DRM_PANEL_MINGJUN_070BI30IA2=y
CONFIG_DRM_PANEL_HX8279=y
CONFIG_DRM_LONTIUM_LT8911EXB=m
CONFIG_DRM_LONTIUM_LT8911EXB=y
CONFIG_DRM_ETNAVIV=m
CONFIG_DRM_VERISILICON=y
CONFIG_DRM_POWERVR_ROGUE=m
@@ -314,8 +318,10 @@ CONFIG_SND_SOC_ES8156=y
CONFIG_SND_SOC_WM8960=y
CONFIG_SND_SIMPLE_CARD=y
CONFIG_SND_AUDIO_GRAPH_CARD=y
CONFIG_HIDRAW=m
CONFIG_UHID=y
CONFIG_HID_PID=y
CONFIG_HID_MULTITOUCH=m
CONFIG_USB_HIDDEV=y
CONFIG_I2C_HID=m
CONFIG_USB=y

View File

@@ -4570,6 +4570,37 @@ static const struct panel_desc_dsi z14inch_2160x1440_40Hz = {
};
/* TODO: move timing into device tree */
static const struct drm_display_mode cmn_5171_1920x1200_40Hz_mode = {
.clock = 127750,
.hdisplay = 1920,
.hsync_start = 1920 + 46, /* hact + hfp */
.hsync_end = 1920 + 46 + 30, /* hact + hfp + hs */
.htotal = 1920 + 46 + 30 + 84, /* hact + hfp + hs + hbp */
.vdisplay = 1200,
.vsync_start = 1200 + 10, /* vact + vfp */
.vsync_end = 1200 + 10 + 6, /* vact + vfp + vs */
.vtotal = 1200 + 10 + 6 + 20, /* vact + vfp + vs + vbp */
.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
};
static const struct panel_desc_dsi cmn_5171_1920x1200_40Hz = {
.desc = {
.modes = &cmn_5171_1920x1200_40Hz_mode,
.num_modes = 1,
.bpc = 8,
.size = {
.width = 62,
.height = 110,
},
.connector_type = DRM_MODE_CONNECTOR_DSI,
},
.flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_VIDEO_BURST,
.format = MIPI_DSI_FMT_RGB888,
.lanes = 4,
};
static const struct drm_display_mode lg_ld070wx3_sl01_mode = {
.clock = 71000,
.hdisplay = 800,
@@ -4771,6 +4802,9 @@ static const struct of_device_id dsi_of_match[] = {
}, {
.compatible = "custom,z14inch_2160x1440_40Hz",
.data = &z14inch_2160x1440_40Hz
}, {
.compatible = "cmn,5171_1920x1200_40Hz",
.data = &cmn_5171_1920x1200_40Hz
}, {
/* sentinel */
}