Skip to content

Commit 59e127d

Browse files
committed
add txw700071s0 dsi panel
1 parent f02c04d commit 59e127d

File tree

4 files changed

+304
-1
lines changed

4 files changed

+304
-1
lines changed

arch/arm/boot/dts/overlays/Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
345345
waveshare-can-fd-hat-mode-b.dtbo \
346346
wittypi.dtbo \
347347
wm8960-soundcard.dtbo \
348-
ws2812-pio.dtbo
348+
ws2812-pio.dtbo \
349+
txw700071s0.dtbo
349350

350351
targets += dtbs dtbs_install
351352
targets += $(dtbo-y)

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,4 +515,8 @@
515515
bcm2712;
516516
};
517517

518+
txw700071s0 {
519+
bcm2711;
520+
bcm2712;
521+
};
518522
};
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
@@ -688,6 +688,210 @@ static const struct ili9881c_instr nwe080_init[] = {
688688
ILI9881C_COMMAND_INSTR(0x35, 0x00),
689689
};
690690

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

2041+
static const struct drm_display_mode txw700071s0_default_mode = {
2042+
.clock = 78086,
2043+
2044+
.hdisplay = 800,
2045+
.hsync_start = 800 + 80,
2046+
.hsync_end = 800 + 80 + 20,
2047+
.htotal = 800 + 80 + 20 + 80,
2048+
2049+
.vdisplay = 1280,
2050+
.vsync_start = 1280 + 16,
2051+
.vsync_end = 1280 + 16 + 8,
2052+
.vtotal = 1280 + 16 + 8 + 24,
2053+
2054+
.width_mm = 94,
2055+
.height_mm = 151,
2056+
};
2057+
18372058
static const struct drm_display_mode tl050hdv35_default_mode = {
18382059
.clock = 59400,
18392060

@@ -2049,6 +2270,14 @@ static const struct ili9881c_desc nwe080_desc = {
20492270
.lanes = 4,
20502271
};
20512272

2273+
static const struct ili9881c_desc txw700071s0_desc = {
2274+
.init = txw700071s0_init,
2275+
.init_length = ARRAY_SIZE(txw700071s0_init),
2276+
.mode = &txw700071s0_default_mode,
2277+
.mode_flags = MIPI_DSI_MODE_VIDEO_SYNC_PULSE | MIPI_DSI_MODE_VIDEO,
2278+
.lanes = 4,
2279+
};
2280+
20522281
static const struct ili9881c_desc tl050hdv35_desc = {
20532282
.init = tl050hdv35_init,
20542283
.init_length = ARRAY_SIZE(tl050hdv35_init),
@@ -2096,6 +2325,7 @@ static const struct of_device_id ili9881c_of_match[] = {
20962325
{ .compatible = "bananapi,lhr050h41", .data = &lhr050h41_desc },
20972326
{ .compatible = "feixin,k101-im2byl02", .data = &k101_im2byl02_desc },
20982327
{ .compatible = "nwe,nwe080", .data = &nwe080_desc },
2328+
{ .compatible = "txw,txw700071s0", .data = &txw700071s0_desc },
20992329
{ .compatible = "tdo,tl050hdv35", .data = &tl050hdv35_desc },
21002330
{ .compatible = "wanchanglong,w552946aba", .data = &w552946aba_desc },
21012331
{ .compatible = "crystalfontz,cfaf7201280a0_050tx", .data = &cfaf7201280a0_050tx_desc },

0 commit comments

Comments
 (0)