Skip to content

Commit a549f84

Browse files
committed
add txw700071s0 dsi panel
1 parent 304e1d5 commit a549f84

File tree

4 files changed

+305
-1
lines changed

4 files changed

+305
-1
lines changed

arch/arm/boot/dts/overlays/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
355355
wifimac.dtbo \
356356
wittypi.dtbo \
357357
wm8960-soundcard.dtbo \
358-
ws2812-pio.dtbo
358+
ws2812-pio.dtbo \
359+
txw700071s0.dtbo
359360

360361
targets += dtbs dtbs_install
361362
targets += $(dtbo-y)

arch/arm/boot/dts/overlays/overlay_map.dts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,4 +550,9 @@
550550
bcm2835;
551551
bcm2711;
552552
};
553+
554+
txw700071s0 {
555+
bcm2711;
556+
bcm2712;
557+
}
553558
};
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/dts-v1/;
2+
/plugin/;
3+
4+
/ {
5+
compatible = "brcm,bcm2711";
6+
7+
fragment@0 {
8+
target=<&dsi1>;
9+
10+
__overlay__ {
11+
status = "okay";
12+
13+
#address-cells = <1>;
14+
#size-cells = <0>;
15+
16+
port {
17+
dsi1_out_port: endpoint {
18+
remote-endpoint = <&panel_dsi_in1>;
19+
};
20+
};
21+
22+
display1: panel@0 {
23+
compatible = "txw,txw700071s0";
24+
reg=<0>;
25+
backlight = <&rpi_backlight>;
26+
reset-gpios = <&gpio 20 1>;
27+
port {
28+
panel_dsi_in1: endpoint {
29+
remote-endpoint = <&dsi1_out_port>;
30+
};
31+
};
32+
};
33+
};
34+
};
35+
36+
fragment@1 {
37+
target = <&gpio>;
38+
__overlay__ {
39+
pwm0_pins: pwm0_pins {
40+
brcm,pins = <12>;
41+
brcm,function = <4>;
42+
};
43+
};
44+
};
45+
46+
fragment@2 {
47+
target = <&pwm>;
48+
frag1: __overlay__ {
49+
pinctrl-names = "default";
50+
pinctrl-0 = <&pwm0_pins>;
51+
assigned-clock-rates = <1000000>;
52+
status = "okay";
53+
};
54+
};
55+
56+
fragment@3 {
57+
target-path = "/";
58+
__overlay__ {
59+
rpi_backlight: rpi_backlight {
60+
compatible = "pwm-backlight";
61+
brightness-levels = <0 6 8 12 16 24 32 40 48 64 96 128 160 192 224 255>;
62+
default-brightness-level = <6>;
63+
pwms = <&pwm 0 50000 0>;
64+
status = "okay";
65+
};
66+
};
67+
};
68+
};

drivers/gpu/drm/panel/panel-ilitek-ili9881c.c

Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,210 @@ static const struct ili9881c_instr kd050hdfia020_init[] = {
662662
ILI9881C_COMMAND_INSTR(0x3A, 0x7),
663663
};
664664

665+
static const struct ili9881c_instr txw700071s0_init[] = {
666+
ILI9881C_SWITCH_PAGE_INSTR(3),
667+
ILI9881C_COMMAND_INSTR(0x01, 0x00),
668+
ILI9881C_COMMAND_INSTR(0x02, 0x00),
669+
ILI9881C_COMMAND_INSTR(0x03, 0x72),
670+
ILI9881C_COMMAND_INSTR(0x04, 0x00),
671+
ILI9881C_COMMAND_INSTR(0x05, 0x00),
672+
ILI9881C_COMMAND_INSTR(0x06, 0x09),
673+
ILI9881C_COMMAND_INSTR(0x07, 0x00),
674+
ILI9881C_COMMAND_INSTR(0x08, 0x00),
675+
ILI9881C_COMMAND_INSTR(0x09, 0x00),
676+
ILI9881C_COMMAND_INSTR(0x0A, 0x00),
677+
ILI9881C_COMMAND_INSTR(0x0B, 0x00),
678+
ILI9881C_COMMAND_INSTR(0x0C, 0x00),
679+
ILI9881C_COMMAND_INSTR(0x0D, 0x00),
680+
ILI9881C_COMMAND_INSTR(0x0E, 0x00),
681+
ILI9881C_COMMAND_INSTR(0x0F, 0x00),
682+
ILI9881C_COMMAND_INSTR(0x10, 0x00),
683+
ILI9881C_COMMAND_INSTR(0x11, 0x00),
684+
ILI9881C_COMMAND_INSTR(0x12, 0x00),
685+
ILI9881C_COMMAND_INSTR(0x13, 0x00),
686+
ILI9881C_COMMAND_INSTR(0x14, 0x00),
687+
ILI9881C_COMMAND_INSTR(0x15, 0x00),
688+
ILI9881C_COMMAND_INSTR(0x16, 0x00),
689+
ILI9881C_COMMAND_INSTR(0x17, 0x00),
690+
ILI9881C_COMMAND_INSTR(0x18, 0x00),
691+
ILI9881C_COMMAND_INSTR(0x19, 0x00),
692+
ILI9881C_COMMAND_INSTR(0x1A, 0x00),
693+
ILI9881C_COMMAND_INSTR(0x1B, 0x00),
694+
ILI9881C_COMMAND_INSTR(0x1C, 0x00),
695+
ILI9881C_COMMAND_INSTR(0x1D, 0x00),
696+
ILI9881C_COMMAND_INSTR(0x1E, 0x40),
697+
ILI9881C_COMMAND_INSTR(0x1F, 0x80),
698+
ILI9881C_COMMAND_INSTR(0x20, 0x05),
699+
ILI9881C_COMMAND_INSTR(0x21, 0x02),
700+
ILI9881C_COMMAND_INSTR(0x22, 0x00),
701+
ILI9881C_COMMAND_INSTR(0x23, 0x00),
702+
ILI9881C_COMMAND_INSTR(0x24, 0x00),
703+
ILI9881C_COMMAND_INSTR(0x25, 0x00),
704+
ILI9881C_COMMAND_INSTR(0x26, 0x00),
705+
ILI9881C_COMMAND_INSTR(0x27, 0x00),
706+
ILI9881C_COMMAND_INSTR(0x28, 0x33),
707+
ILI9881C_COMMAND_INSTR(0x29, 0x22),
708+
ILI9881C_COMMAND_INSTR(0x2A, 0x00),
709+
ILI9881C_COMMAND_INSTR(0x2B, 0x00),
710+
ILI9881C_COMMAND_INSTR(0x2C, 0x00),
711+
ILI9881C_COMMAND_INSTR(0x2D, 0x00),
712+
ILI9881C_COMMAND_INSTR(0x2E, 0x00),
713+
ILI9881C_COMMAND_INSTR(0x2F, 0x00),
714+
ILI9881C_COMMAND_INSTR(0x30, 0x00),
715+
ILI9881C_COMMAND_INSTR(0x31, 0x00),
716+
ILI9881C_COMMAND_INSTR(0x32, 0x00),
717+
ILI9881C_COMMAND_INSTR(0x33, 0x00),
718+
ILI9881C_COMMAND_INSTR(0x34, 0x04),
719+
ILI9881C_COMMAND_INSTR(0x35, 0x00),
720+
ILI9881C_COMMAND_INSTR(0x36, 0x00),
721+
ILI9881C_COMMAND_INSTR(0x37, 0x00),
722+
ILI9881C_COMMAND_INSTR(0x38, 0x3C),
723+
ILI9881C_COMMAND_INSTR(0x39, 0x00),
724+
ILI9881C_COMMAND_INSTR(0x3A, 0x00),
725+
ILI9881C_COMMAND_INSTR(0x3B, 0x00),
726+
ILI9881C_COMMAND_INSTR(0x3C, 0x00),
727+
ILI9881C_COMMAND_INSTR(0x3D, 0x00),
728+
ILI9881C_COMMAND_INSTR(0x3E, 0x00),
729+
ILI9881C_COMMAND_INSTR(0x3F, 0x00),
730+
ILI9881C_COMMAND_INSTR(0x40, 0x00),
731+
ILI9881C_COMMAND_INSTR(0x41, 0x00),
732+
ILI9881C_COMMAND_INSTR(0x42, 0x00),
733+
ILI9881C_COMMAND_INSTR(0x43, 0x00),
734+
ILI9881C_COMMAND_INSTR(0x44, 0x00),
735+
ILI9881C_COMMAND_INSTR(0x50, 0x10),
736+
ILI9881C_COMMAND_INSTR(0x51, 0x32),
737+
ILI9881C_COMMAND_INSTR(0x52, 0x54),
738+
ILI9881C_COMMAND_INSTR(0x53, 0x76),
739+
ILI9881C_COMMAND_INSTR(0x54, 0x98),
740+
ILI9881C_COMMAND_INSTR(0x55, 0xBA),
741+
ILI9881C_COMMAND_INSTR(0x56, 0x10),
742+
ILI9881C_COMMAND_INSTR(0x57, 0x32),
743+
ILI9881C_COMMAND_INSTR(0x58, 0x54),
744+
ILI9881C_COMMAND_INSTR(0x59, 0x76),
745+
ILI9881C_COMMAND_INSTR(0x5A, 0x98),
746+
ILI9881C_COMMAND_INSTR(0x5B, 0xBA),
747+
ILI9881C_COMMAND_INSTR(0x5C, 0xDC),
748+
ILI9881C_COMMAND_INSTR(0x5D, 0xFE),
749+
ILI9881C_COMMAND_INSTR(0x5E, 0x00),
750+
ILI9881C_COMMAND_INSTR(0x5F, 0x01),
751+
ILI9881C_COMMAND_INSTR(0x60, 0x00),
752+
ILI9881C_COMMAND_INSTR(0x61, 0x15),
753+
ILI9881C_COMMAND_INSTR(0x62, 0x14),
754+
ILI9881C_COMMAND_INSTR(0x63, 0x0E),
755+
ILI9881C_COMMAND_INSTR(0x64, 0x0F),
756+
ILI9881C_COMMAND_INSTR(0x65, 0x0C),
757+
ILI9881C_COMMAND_INSTR(0x66, 0x0D),
758+
ILI9881C_COMMAND_INSTR(0x67, 0x06),
759+
ILI9881C_COMMAND_INSTR(0x68, 0x02),
760+
ILI9881C_COMMAND_INSTR(0x69, 0x02),
761+
ILI9881C_COMMAND_INSTR(0x6A, 0x02),
762+
ILI9881C_COMMAND_INSTR(0x6B, 0x02),
763+
ILI9881C_COMMAND_INSTR(0x6C, 0x02),
764+
ILI9881C_COMMAND_INSTR(0x6D, 0x02),
765+
ILI9881C_COMMAND_INSTR(0x6E, 0x07),
766+
ILI9881C_COMMAND_INSTR(0x6F, 0x02),
767+
ILI9881C_COMMAND_INSTR(0x70, 0x02),
768+
ILI9881C_COMMAND_INSTR(0x71, 0x02),
769+
ILI9881C_COMMAND_INSTR(0x72, 0x02),
770+
ILI9881C_COMMAND_INSTR(0x73, 0x02),
771+
ILI9881C_COMMAND_INSTR(0x74, 0x02),
772+
ILI9881C_COMMAND_INSTR(0x75, 0x01),
773+
ILI9881C_COMMAND_INSTR(0x76, 0x00),
774+
ILI9881C_COMMAND_INSTR(0x77, 0x14),
775+
ILI9881C_COMMAND_INSTR(0x78, 0x15),
776+
ILI9881C_COMMAND_INSTR(0x79, 0x0E),
777+
ILI9881C_COMMAND_INSTR(0x7A, 0x0F),
778+
ILI9881C_COMMAND_INSTR(0x7B, 0x0C),
779+
ILI9881C_COMMAND_INSTR(0x7C, 0x0D),
780+
ILI9881C_COMMAND_INSTR(0x7D, 0x06),
781+
ILI9881C_COMMAND_INSTR(0x7E, 0x02),
782+
ILI9881C_COMMAND_INSTR(0x7F, 0x02),
783+
ILI9881C_COMMAND_INSTR(0x80, 0x02),
784+
ILI9881C_COMMAND_INSTR(0x81, 0x02),
785+
ILI9881C_COMMAND_INSTR(0x82, 0x02),
786+
ILI9881C_COMMAND_INSTR(0x83, 0x02),
787+
ILI9881C_COMMAND_INSTR(0x84, 0x07),
788+
ILI9881C_COMMAND_INSTR(0x85, 0x02),
789+
ILI9881C_COMMAND_INSTR(0x86, 0x02),
790+
ILI9881C_COMMAND_INSTR(0x87, 0x02),
791+
ILI9881C_COMMAND_INSTR(0x88, 0x02),
792+
ILI9881C_COMMAND_INSTR(0x89, 0x02),
793+
ILI9881C_COMMAND_INSTR(0x8A, 0x02),
794+
795+
ILI9881C_SWITCH_PAGE_INSTR(4),
796+
ILI9881C_COMMAND_INSTR(0x6E, 0x2A),
797+
ILI9881C_COMMAND_INSTR(0x6F, 0x35),
798+
ILI9881C_COMMAND_INSTR(0x3A, 0x24),
799+
ILI9881C_COMMAND_INSTR(0x8D, 0x14),
800+
ILI9881C_COMMAND_INSTR(0x87, 0xBA),
801+
ILI9881C_COMMAND_INSTR(0x26, 0x76),
802+
ILI9881C_COMMAND_INSTR(0xB2, 0xD1),
803+
ILI9881C_COMMAND_INSTR(0xB5, 0x27),
804+
ILI9881C_COMMAND_INSTR(0x31, 0x75),
805+
ILI9881C_COMMAND_INSTR(0x30, 0x03),
806+
ILI9881C_COMMAND_INSTR(0x3B, 0x98),
807+
ILI9881C_COMMAND_INSTR(0x35, 0x1F),
808+
ILI9881C_COMMAND_INSTR(0x33, 0x14),
809+
ILI9881C_COMMAND_INSTR(0x7A, 0x0F),
810+
ILI9881C_COMMAND_INSTR(0x38, 0x01),
811+
ILI9881C_COMMAND_INSTR(0x39, 0x00),
812+
813+
ILI9881C_SWITCH_PAGE_INSTR(1),
814+
ILI9881C_COMMAND_INSTR(0x22, 0x0A),
815+
ILI9881C_COMMAND_INSTR(0x31, 0x00),
816+
ILI9881C_COMMAND_INSTR(0x53, 0x45),
817+
ILI9881C_COMMAND_INSTR(0x55, 0x4E),
818+
ILI9881C_COMMAND_INSTR(0x50, 0xC7),
819+
ILI9881C_COMMAND_INSTR(0x51, 0xC2),
820+
ILI9881C_COMMAND_INSTR(0x60, 0x25),
821+
ILI9881C_COMMAND_INSTR(0x63, 0x00),
822+
ILI9881C_COMMAND_INSTR(0xA0, 0x00),
823+
ILI9881C_COMMAND_INSTR(0xA1, 0x16),
824+
ILI9881C_COMMAND_INSTR(0xA2, 0x26),
825+
ILI9881C_COMMAND_INSTR(0xA3, 0x16),
826+
ILI9881C_COMMAND_INSTR(0xA4, 0x19),
827+
ILI9881C_COMMAND_INSTR(0xA5, 0x2B),
828+
ILI9881C_COMMAND_INSTR(0xA6, 0x1E),
829+
ILI9881C_COMMAND_INSTR(0xA7, 0x20),
830+
ILI9881C_COMMAND_INSTR(0xA8, 0x93),
831+
ILI9881C_COMMAND_INSTR(0xA9, 0x20),
832+
ILI9881C_COMMAND_INSTR(0xAA, 0x2C),
833+
ILI9881C_COMMAND_INSTR(0xAB, 0x87),
834+
ILI9881C_COMMAND_INSTR(0xAC, 0x1F),
835+
ILI9881C_COMMAND_INSTR(0xAD, 0x1F),
836+
ILI9881C_COMMAND_INSTR(0xAE, 0x53),
837+
ILI9881C_COMMAND_INSTR(0xAF, 0x27),
838+
ILI9881C_COMMAND_INSTR(0xB0, 0x2A),
839+
ILI9881C_COMMAND_INSTR(0xB1, 0x52),
840+
ILI9881C_COMMAND_INSTR(0xB2, 0x5B),
841+
ILI9881C_COMMAND_INSTR(0xB3, 0x23),
842+
ILI9881C_COMMAND_INSTR(0xC0, 0x00),
843+
ILI9881C_COMMAND_INSTR(0xC1, 0x11),
844+
ILI9881C_COMMAND_INSTR(0xC2, 0x1E),
845+
ILI9881C_COMMAND_INSTR(0xC3, 0x0F),
846+
ILI9881C_COMMAND_INSTR(0xC4, 0x12),
847+
ILI9881C_COMMAND_INSTR(0xC5, 0x26),
848+
ILI9881C_COMMAND_INSTR(0xC6, 0x1C),
849+
ILI9881C_COMMAND_INSTR(0xC7, 0x1E),
850+
ILI9881C_COMMAND_INSTR(0xC8, 0x87),
851+
ILI9881C_COMMAND_INSTR(0xC9, 0x19),
852+
ILI9881C_COMMAND_INSTR(0xCA, 0x26),
853+
ILI9881C_COMMAND_INSTR(0xCB, 0x7F),
854+
ILI9881C_COMMAND_INSTR(0xCC, 0x20),
855+
ILI9881C_COMMAND_INSTR(0xCD, 0x22),
856+
ILI9881C_COMMAND_INSTR(0xCE, 0x58),
857+
ILI9881C_COMMAND_INSTR(0xCF, 0x2A),
858+
ILI9881C_COMMAND_INSTR(0xD0, 0x2E),
859+
ILI9881C_COMMAND_INSTR(0xD1, 0x50),
860+
ILI9881C_COMMAND_INSTR(0xD2, 0x5D),
861+
ILI9881C_COMMAND_INSTR(0xD3, 0x23),
862+
863+
ILI9881C_SWITCH_PAGE_INSTR(0),
864+
ILI9881C_COMMAND_INSTR(0x35, 0x00),
865+
ILI9881C_COMMAND_INSTR(0x11, 0x00),
866+
ILI9881C_COMMAND_INSTR(0x29, 0x00),
867+
};
868+
665869
static const struct ili9881c_instr tl050hdv35_init[] = {
666870
ILI9881C_SWITCH_PAGE_INSTR(3),
667871
ILI9881C_COMMAND_INSTR(0x01, 0x00),
@@ -2227,6 +2431,23 @@ static const struct drm_display_mode kd050hdfia020_default_mode = {
22272431
.height_mm = 110,
22282432
};
22292433

2434+
static const struct drm_display_mode txw700071s0_default_mode = {
2435+
.clock = 78086,
2436+
2437+
.hdisplay = 800,
2438+
.hsync_start = 800 + 80,
2439+
.hsync_end = 800 + 80 + 20,
2440+
.htotal = 800 + 80 + 20 + 80,
2441+
2442+
.vdisplay = 1280,
2443+
.vsync_start = 1280 + 16,
2444+
.vsync_end = 1280 + 16 + 8,
2445+
.vtotal = 1280 + 16 + 8 + 24,
2446+
2447+
.width_mm = 94,
2448+
.height_mm = 151,
2449+
};
2450+
22302451
static const struct drm_display_mode tl050hdv35_default_mode = {
22312452
.clock = 59400,
22322453

@@ -2482,6 +2703,14 @@ static const struct ili9881c_desc kd050hdfia020_desc = {
24822703
MIPI_DSI_MODE_LPM,
24832704
};
24842705

2706+
static const struct ili9881c_desc txw700071s0_desc = {
2707+
.init = txw700071s0_init,
2708+
.init_length = ARRAY_SIZE(txw700071s0_init),
2709+
.mode = &txw700071s0_default_mode,
2710+
.mode_flags = MIPI_DSI_MODE_VIDEO_SYNC_PULSE | MIPI_DSI_MODE_VIDEO,
2711+
.lanes = 4,
2712+
};
2713+
24852714
static const struct ili9881c_desc tl050hdv35_desc = {
24862715
.init = tl050hdv35_init,
24872716
.init_length = ARRAY_SIZE(tl050hdv35_init),
@@ -2544,6 +2773,7 @@ static const struct of_device_id ili9881c_of_match[] = {
25442773
{ .compatible = "bananapi,lhr050h41", .data = &lhr050h41_desc },
25452774
{ .compatible = "feixin,k101-im2byl02", .data = &k101_im2byl02_desc },
25462775
{ .compatible = "startek,kd050hdfia020", .data = &kd050hdfia020_desc },
2776+
{ .compatible = "txw,txw700071s0", .data = &txw700071s0_desc },
25472777
{ .compatible = "tdo,tl050hdv35", .data = &tl050hdv35_desc },
25482778
{ .compatible = "wanchanglong,w552946aba", .data = &w552946aba_desc },
25492779
{ .compatible = "ampire,am8001280g", .data = &am8001280g_desc },

0 commit comments

Comments
 (0)