linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0
@ 2025-07-14 19:17 Richard Yao
  2025-07-14 19:17 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Tianxinwei name Richard Yao
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Richard Yao @ 2025-07-14 19:17 UTC (permalink / raw)
  To: dri-devel
  Cc: devicetree, linux-kernel, Akshay Athalye, Richard Yao,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Neil Armstrong,
	Geert Uytterhoeven, Andre Przywara, Junhao Xie,
	Caleb James DeLisle, Kever Yang, Manivannan Sadhasivam,
	Jessica Zhang, David Airlie, Simona Vetter, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann

Hello,

This series adds support for the Tianxinwei TWX700100S0 panel. The first
patch adds the Tianxinwei vendor to the vendor prefixes yaml file.  The
second patch documents the DT binding. The third patch makes fairly
standard changes to the ili9881c driver.

Runtime testing and validation was done using a patched rpi-6.12.36-v8
kernel on a CM4 using a custom carrier board designed by Scandent.

I have confirmed in writing with Tianxinwei that this patch series may
be released under the GPL after sending them an early draft for review.
This should be superfluous given my signed-off, but I want to make it
clear that I did not assume fair use when providing signed-off.

Cc: Rob Herring <robh@kernel.org>
Cc: Krzysztof Kozlowski <krzk+dt@kernel.org>
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Neil Armstrong <neil.armstrong@linaro.org>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Andre Przywara <andre.przywara@arm.com>
Cc: Junhao Xie <bigfoot@classfun.cn>
Cc: Caleb James DeLisle <cjd@cjdns.fr>
Cc: Kever Yang <kever.yang@rock-chips.com>
Cc: Manivannan Sadhasivam <mani@kernel.org>
Cc: Jessica Zhang <quic_jesszhan@quicinc.com>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: devicetree@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Richard Yao <richard@scandent.com>
---
Richard Yao (3):
  dt-bindings: vendor-prefixes: Add Tianxinwei name
  dt-bindings: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support
  drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support

 .../display/panel/ilitek,ili9881c.yaml        |   1 +
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 242 ++++++++++++++++++
 3 files changed, 245 insertions(+)

-- 
2.50.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] dt-bindings: vendor-prefixes: Add Tianxinwei name
  2025-07-14 19:17 [PATCH 0/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 Richard Yao
@ 2025-07-14 19:17 ` Richard Yao
  2025-07-15  4:02   ` Rob Herring (Arm)
  2025-07-14 19:17 ` [PATCH 2/3] dt-bindings: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support Richard Yao
  2025-07-14 19:17 ` [PATCH 3/3] drm/panel: " Richard Yao
  2 siblings, 1 reply; 7+ messages in thread
From: Richard Yao @ 2025-07-14 19:17 UTC (permalink / raw)
  To: dri-devel
  Cc: devicetree, linux-kernel, Akshay Athalye, Richard Yao,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley, Neil Armstrong,
	Jonathan Cameron, Caleb James DeLisle, Andre Przywara, Junhao Xie,
	Manivannan Sadhasivam, Kever Yang

Tianxinwei is a company based in Shenzen, China, making LCD screens.

Add their name to the list of vendors.

Signed-off-by: Richard Yao <richard@scandent.com>
---
 Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
index 5d2a7a8d3ac6..cba78c531d92 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -1548,6 +1548,8 @@ patternProperties:
     description: Texas Instruments
   "^tianma,.*":
     description: Tianma Micro-electronics Co., Ltd.
+  "^tianxinwei,.*":
+    description: Shenzhen Tianxianwei technology co., LTD
   "^tlm,.*":
     description: Trusted Logic Mobility
   "^tmt,.*":
-- 
2.50.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] dt-bindings: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support
  2025-07-14 19:17 [PATCH 0/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 Richard Yao
  2025-07-14 19:17 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Tianxinwei name Richard Yao
@ 2025-07-14 19:17 ` Richard Yao
  2025-07-15  4:03   ` Rob Herring (Arm)
  2025-07-14 19:17 ` [PATCH 3/3] drm/panel: " Richard Yao
  2 siblings, 1 reply; 7+ messages in thread
From: Richard Yao @ 2025-07-14 19:17 UTC (permalink / raw)
  To: dri-devel
  Cc: devicetree, linux-kernel, Akshay Athalye, Richard Yao,
	Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley

Document the compatible value for Tianxinwei TWX700100S0 panel.

Signed-off-by: Richard Yao <richard@scandent.com>
---
 .../devicetree/bindings/display/panel/ilitek,ili9881c.yaml       | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml
index baf5dfe5f5eb..c181f5adcbc5 100644
--- a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml
+++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml
@@ -21,6 +21,7 @@ properties:
           - feixin,k101-im2byl02
           - startek,kd050hdfia020
           - tdo,tl050hdv35
+          - tianxinwei,txw700100s0
           - wanchanglong,w552946aba
       - const: ilitek,ili9881c
 
-- 
2.50.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support
  2025-07-14 19:17 [PATCH 0/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 Richard Yao
  2025-07-14 19:17 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Tianxinwei name Richard Yao
  2025-07-14 19:17 ` [PATCH 2/3] dt-bindings: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support Richard Yao
@ 2025-07-14 19:17 ` Richard Yao
  2025-07-15  6:04   ` kernel test robot
  2 siblings, 1 reply; 7+ messages in thread
From: Richard Yao @ 2025-07-14 19:17 UTC (permalink / raw)
  To: dri-devel
  Cc: devicetree, linux-kernel, Akshay Athalye, Richard Yao,
	Neil Armstrong, Jessica Zhang, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, David Airlie, Simona Vetter

Add support for the Tianxinwei TWX700100S0 panel.

The init table was provided by Tianxinwei. Their comments have been
preserved.

Signed-off-by: Richard Yao <richard@scandent.com>
---
 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 242 ++++++++++++++++++
 1 file changed, 242 insertions(+)

diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
index 28cd7560e5db..54198bb7280c 100644
--- a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
+++ b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
@@ -1223,6 +1223,223 @@ static const struct ili9881c_instr am8001280g_init[] = {
 	ILI9881C_COMMAND_INSTR(MIPI_DCS_WRITE_POWER_SAVE, 0x00),
 };
 
+static const struct ili9881c_instr txw700100s0_init[] = {
+	ILI9881C_SWITCH_PAGE_INSTR(3),
+	/* GIP_1 */
+	ILI9881C_COMMAND_INSTR(0x01, 0x00),
+	ILI9881C_COMMAND_INSTR(0x02, 0x00),
+	ILI9881C_COMMAND_INSTR(0x03, 0x72), /* STVA 3H */
+	ILI9881C_COMMAND_INSTR(0x04, 0x00), /* STVB */
+	ILI9881C_COMMAND_INSTR(0x05, 0x00), /* STVC */
+	ILI9881C_COMMAND_INSTR(0x06, 0x09), /* STVA_Rise */
+	ILI9881C_COMMAND_INSTR(0x07, 0x00), /* STVB_Rise */
+	ILI9881C_COMMAND_INSTR(0x08, 0x00), /* STVC_Rise */
+	ILI9881C_COMMAND_INSTR(0x09, 0x00), /* STVA_non overlap 2.5us=14 */
+	ILI9881C_COMMAND_INSTR(0x0a, 0x00),
+	ILI9881C_COMMAND_INSTR(0x0b, 0x00),
+	ILI9881C_COMMAND_INSTR(0x0c, 0x00),
+	ILI9881C_COMMAND_INSTR(0x0d, 0x00),
+	ILI9881C_COMMAND_INSTR(0x0e, 0x00),
+	ILI9881C_COMMAND_INSTR(0x0f, 0x00), /* CLKA_non overlap 2.5us=14 */
+	ILI9881C_COMMAND_INSTR(0x10, 0x00),
+	ILI9881C_COMMAND_INSTR(0x11, 0x00),
+	ILI9881C_COMMAND_INSTR(0x12, 0x00),
+	ILI9881C_COMMAND_INSTR(0x13, 0x00),
+	ILI9881C_COMMAND_INSTR(0x14, 0x00),
+	ILI9881C_COMMAND_INSTR(0x15, 0x00),
+	ILI9881C_COMMAND_INSTR(0x16, 0x00),
+	ILI9881C_COMMAND_INSTR(0x17, 0x00),
+	ILI9881C_COMMAND_INSTR(0x18, 0x00),
+	ILI9881C_COMMAND_INSTR(0x19, 0x00),
+	ILI9881C_COMMAND_INSTR(0x1a, 0x00),
+	ILI9881C_COMMAND_INSTR(0x1b, 0x00),
+	ILI9881C_COMMAND_INSTR(0x1c, 0x00),
+	ILI9881C_COMMAND_INSTR(0x1d, 0x00),
+	ILI9881C_COMMAND_INSTR(0x1e, 0x40), /* CLKA 40自動反 C0手動反(X8參考CLKB) */
+	ILI9881C_COMMAND_INSTR(0x1f, 0x80),
+	ILI9881C_COMMAND_INSTR(0x20, 0x05), /* CLKA_Rise */
+	ILI9881C_COMMAND_INSTR(0x21, 0x02), /* CLKA_Fall */
+	ILI9881C_COMMAND_INSTR(0x22, 0x00),
+	ILI9881C_COMMAND_INSTR(0x23, 0x00),
+	ILI9881C_COMMAND_INSTR(0x24, 0x00),
+	ILI9881C_COMMAND_INSTR(0x25, 0x00),
+	ILI9881C_COMMAND_INSTR(0x26, 0x00),
+	ILI9881C_COMMAND_INSTR(0x27, 0x00),
+	ILI9881C_COMMAND_INSTR(0x28, 0x33), /* CLK Phase_NUM=8 */
+	ILI9881C_COMMAND_INSTR(0x29, 0x22), /* CLK overlap 3H */
+	ILI9881C_COMMAND_INSTR(0x2a, 0x00),
+	ILI9881C_COMMAND_INSTR(0x2b, 0x00),
+	ILI9881C_COMMAND_INSTR(0x2c, 0x00),
+	ILI9881C_COMMAND_INSTR(0x2d, 0x00),
+	ILI9881C_COMMAND_INSTR(0x2e, 0x00),
+	ILI9881C_COMMAND_INSTR(0x2f, 0x00),
+	ILI9881C_COMMAND_INSTR(0x30, 0x00),
+	ILI9881C_COMMAND_INSTR(0x31, 0x00),
+	ILI9881C_COMMAND_INSTR(0x32, 0x00),
+	ILI9881C_COMMAND_INSTR(0x33, 0x00),
+	ILI9881C_COMMAND_INSTR(0x34, 0x04), /* VDD1&2 non-overlap 04:2.62us */
+	ILI9881C_COMMAND_INSTR(0x35, 0x00),
+	ILI9881C_COMMAND_INSTR(0x36, 0x00),
+	ILI9881C_COMMAND_INSTR(0x37, 0x00),
+	ILI9881C_COMMAND_INSTR(0x38, 0x3C), /* VDD1&2 toggle 1sec */
+	ILI9881C_COMMAND_INSTR(0x39, 0x00),
+	ILI9881C_COMMAND_INSTR(0x3a, 0x00),
+	ILI9881C_COMMAND_INSTR(0x3b, 0x00),
+	ILI9881C_COMMAND_INSTR(0x3c, 0x00),
+	ILI9881C_COMMAND_INSTR(0x3d, 0x00),
+	ILI9881C_COMMAND_INSTR(0x3e, 0x00),
+	ILI9881C_COMMAND_INSTR(0x3f, 0x00),
+	ILI9881C_COMMAND_INSTR(0x40, 0x00),
+	ILI9881C_COMMAND_INSTR(0x41, 0x00),
+	ILI9881C_COMMAND_INSTR(0x42, 0x00),
+	ILI9881C_COMMAND_INSTR(0x43, 0x00),
+	ILI9881C_COMMAND_INSTR(0x44, 0x00),
+
+	/* GIP_2 */
+	ILI9881C_COMMAND_INSTR(0x50, 0x10), /* STV_1, 0x2 */
+	ILI9881C_COMMAND_INSTR(0x51, 0x32), /* STV_3, 0x4 */
+	ILI9881C_COMMAND_INSTR(0x52, 0x54), /* STV_5, 0x6 */
+	ILI9881C_COMMAND_INSTR(0x53, 0x76), /* STV_7, 0x8 */
+	ILI9881C_COMMAND_INSTR(0x54, 0x98), /* STV_9, 0x10 */
+	ILI9881C_COMMAND_INSTR(0x55, 0xba), /* STV_11, 0x12 */
+	ILI9881C_COMMAND_INSTR(0x56, 0x10), /* CLK_1.2 */
+	ILI9881C_COMMAND_INSTR(0x57, 0x32), /* CLK_3, 0x4 */
+	ILI9881C_COMMAND_INSTR(0x58, 0x54), /* CLK_5, 0x6 */
+	ILI9881C_COMMAND_INSTR(0x59, 0x76), /* CLK_7, 0x8 */
+	ILI9881C_COMMAND_INSTR(0x5a, 0x98), /* CLK_9, 0x10 */
+	ILI9881C_COMMAND_INSTR(0x5b, 0xba), /* CLK_11, 0x12 */
+	ILI9881C_COMMAND_INSTR(0x5c, 0xdc), /* CLK_13, 0x14 */
+	ILI9881C_COMMAND_INSTR(0x5d, 0xfe), /* CLK_15, 0x16 */
+
+	/* GIP_3 */
+	ILI9881C_COMMAND_INSTR(0x5e, 0x00),
+	ILI9881C_COMMAND_INSTR(0x5f, 0x01), /* FW_CGOUT_L[1]    FW */
+	ILI9881C_COMMAND_INSTR(0x60, 0x00), /* FW_CGOUT_L[2]    BW */
+	ILI9881C_COMMAND_INSTR(0x61, 0x15), /* FW_CGOUT_L[3]    GPWR1 */
+	ILI9881C_COMMAND_INSTR(0x62, 0x14), /* FW_CGOUT_L[4]    GPWR2 */
+	ILI9881C_COMMAND_INSTR(0x63, 0x0E), /* FW_CGOUT_L[5]    CLK1_R */
+	ILI9881C_COMMAND_INSTR(0x64, 0x0F), /* FW_CGOUT_L[6]    CLK2_R */
+	ILI9881C_COMMAND_INSTR(0x65, 0x0C), /* FW_CGOUT_L[7]    CLK3_R */
+	ILI9881C_COMMAND_INSTR(0x66, 0x0D), /* FW_CGOUT_L[8]    CLK4_R */
+	ILI9881C_COMMAND_INSTR(0x67, 0x06), /* FW_CGOUT_L[9]    iSTV1_R (STVA_1) */
+	ILI9881C_COMMAND_INSTR(0x68, 0x02), /* FW_CGOUT_L[10] */
+	ILI9881C_COMMAND_INSTR(0x69, 0x02), /* FW_CGOUT_L[11] */
+	ILI9881C_COMMAND_INSTR(0x6a, 0x02), /* FW_CGOUT_L[12] */
+	ILI9881C_COMMAND_INSTR(0x6b, 0x02), /* FW_CGOUT_L[13] */
+	ILI9881C_COMMAND_INSTR(0x6c, 0x02), /* FW_CGOUT_L[14] */
+	ILI9881C_COMMAND_INSTR(0x6d, 0x02), /* FW_CGOUT_L[15] */
+	ILI9881C_COMMAND_INSTR(0x6e, 0x07), /* FW_CGOUT_L[16]  STV2_R (STVA_3) */
+	ILI9881C_COMMAND_INSTR(0x6f, 0x02), /* FW_CGOUT_L[17]   VGL */
+	ILI9881C_COMMAND_INSTR(0x70, 0x02), /* FW_CGOUT_L[18]   VGL */
+	ILI9881C_COMMAND_INSTR(0x71, 0x02), /* FW_CGOUT_L[19]   VGL */
+	ILI9881C_COMMAND_INSTR(0x72, 0x02), /* FW_CGOUT_L[20] */
+	ILI9881C_COMMAND_INSTR(0x73, 0x02), /* FW_CGOUT_L[21] */
+	ILI9881C_COMMAND_INSTR(0x74, 0x02), /* FW_CGOUT_L[22] */
+
+	ILI9881C_COMMAND_INSTR(0x75, 0x01), /* BW_CGOUT_L[1]    FW */
+	ILI9881C_COMMAND_INSTR(0x76, 0x00), /* BW_CGOUT_L[2]    BW */
+	ILI9881C_COMMAND_INSTR(0x77, 0x14), /* BW_CGOUT_L[3]    GPWR1 */
+	ILI9881C_COMMAND_INSTR(0x78, 0x15), /* BW_CGOUT_L[4]    GPWR2 */
+	ILI9881C_COMMAND_INSTR(0x79, 0x0E), /* BW_CGOUT_L[5]    CLK1_R */
+	ILI9881C_COMMAND_INSTR(0x7a, 0x0F), /* BW_CGOUT_L[6]    CLK2_R */
+	ILI9881C_COMMAND_INSTR(0x7b, 0x0C), /* BW_CGOUT_L[7]    CLK3_R */
+	ILI9881C_COMMAND_INSTR(0x7c, 0x0D), /* BW_CGOUT_L[8]    CLK4_R */
+	ILI9881C_COMMAND_INSTR(0x7d, 0x06), /* BW_CGOUT_L[9]    STV1_R */
+	ILI9881C_COMMAND_INSTR(0x7e, 0x02), /* BW_CGOUT_L[10] */
+	ILI9881C_COMMAND_INSTR(0x7f, 0x02), /* BW_CGOUT_L[11] */
+	ILI9881C_COMMAND_INSTR(0x80, 0x02), /* BW_CGOUT_L[12] */
+	ILI9881C_COMMAND_INSTR(0x81, 0x02), /* BW_CGOUT_L[13] */
+	ILI9881C_COMMAND_INSTR(0x82, 0x02), /* BW_CGOUT_L[14] */
+	ILI9881C_COMMAND_INSTR(0x83, 0x02), /* BW_CGOUT_L[15] */
+	ILI9881C_COMMAND_INSTR(0x84, 0x07), /* BW_CGOUT_L[16]   STV2_R */
+	ILI9881C_COMMAND_INSTR(0x85, 0x02), /* BW_CGOUT_L[17]   VGL */
+	ILI9881C_COMMAND_INSTR(0x86, 0x02), /* BW_CGOUT_L[18]   VGL */
+	ILI9881C_COMMAND_INSTR(0x87, 0x02), /* BW_CGOUT_L[19]   VGL */
+	ILI9881C_COMMAND_INSTR(0x88, 0x02), /* BW_CGOUT_L[20] */
+	ILI9881C_COMMAND_INSTR(0x89, 0x02), /* BW_CGOUT_L[21] */
+	ILI9881C_COMMAND_INSTR(0x8A, 0x02), /* BW_CGOUT_L[22] */
+
+	ILI9881C_SWITCH_PAGE_INSTR(4),
+	ILI9881C_COMMAND_INSTR(0x6E, 0x2A), /* di_pwr_reg=0 for power mode 2A //VGH clamp 15V */
+	ILI9881C_COMMAND_INSTR(0x6F, 0x35), /* reg vcl + pumping ratio VGH=3x VGL=-3x */
+	ILI9881C_COMMAND_INSTR(0x3A, 0x24), /* POWER SAVING */
+	ILI9881C_COMMAND_INSTR(0x8D, 0x14), /* VGL clamp -10V */
+	ILI9881C_COMMAND_INSTR(0x87, 0xBA), /* ESD */
+	ILI9881C_COMMAND_INSTR(0x26, 0x76),
+	ILI9881C_COMMAND_INSTR(0xB2, 0xD1),
+	ILI9881C_COMMAND_INSTR(0xB5, 0x27), /* GMA BIAS */
+	ILI9881C_COMMAND_INSTR(0x31, 0x75), /* SRC BIAS */
+	ILI9881C_COMMAND_INSTR(0x30, 0x03), /* SRC OUTPUT BIAS */
+	ILI9881C_COMMAND_INSTR(0x3B, 0x98), /* PUMP SHIFT CLK */
+	ILI9881C_COMMAND_INSTR(0x35, 0x1F), /* HZ_opt */
+	ILI9881C_COMMAND_INSTR(0x33, 0x14), /* Blanking frame 設定為GND */
+	ILI9881C_COMMAND_INSTR(0x7A, 0x0F),
+	ILI9881C_COMMAND_INSTR(0x38, 0x01),
+	ILI9881C_COMMAND_INSTR(0x39, 0x00),
+
+	ILI9881C_SWITCH_PAGE_INSTR(1),
+	ILI9881C_COMMAND_INSTR(0x22, 0x0A), /* BGR, 0x SS */
+	ILI9881C_COMMAND_INSTR(0x31, 0x00), /* Column inversion */
+	ILI9881C_COMMAND_INSTR(0x53, 0x45), /* VCOM1 41  44  45  4A */
+	ILI9881C_COMMAND_INSTR(0x55, 0x4E), /* VCOM2 4E */
+	ILI9881C_COMMAND_INSTR(0x50, 0xC7), /* VREG1OUT=5.1V */
+	ILI9881C_COMMAND_INSTR(0x51, 0xC2), /* VREG2OUT=-5.1V */
+	ILI9881C_COMMAND_INSTR(0x60, 0x25), /* SDT=2.5us 蚕22蜊傖25 */
+	ILI9881C_COMMAND_INSTR(0x63, 0x00),
+
+	/* ============Gamma START============= */
+	/* Pos Register */
+	ILI9881C_COMMAND_INSTR(0xA0, 0x00),
+	ILI9881C_COMMAND_INSTR(0xA1, 0x16),
+	ILI9881C_COMMAND_INSTR(0xA2, 0x26),
+	ILI9881C_COMMAND_INSTR(0xA3, 0x16),
+	ILI9881C_COMMAND_INSTR(0xA4, 0x19),
+	ILI9881C_COMMAND_INSTR(0xA5, 0x2B),
+	ILI9881C_COMMAND_INSTR(0xA6, 0x1E),
+	ILI9881C_COMMAND_INSTR(0xA7, 0x20),
+	ILI9881C_COMMAND_INSTR(0xA8, 0x93),
+	ILI9881C_COMMAND_INSTR(0xA9, 0x20),
+	ILI9881C_COMMAND_INSTR(0xAA, 0x2C),
+	ILI9881C_COMMAND_INSTR(0xAB, 0x87),
+	ILI9881C_COMMAND_INSTR(0xAC, 0x1F),
+	ILI9881C_COMMAND_INSTR(0xAD, 0x1F),
+	ILI9881C_COMMAND_INSTR(0xAE, 0x53),
+	ILI9881C_COMMAND_INSTR(0xAF, 0x27),
+	ILI9881C_COMMAND_INSTR(0xB0, 0x2A),
+	ILI9881C_COMMAND_INSTR(0xB1, 0x52),
+	ILI9881C_COMMAND_INSTR(0xB2, 0x5B),
+	ILI9881C_COMMAND_INSTR(0xB3, 0x23),
+
+	/* Neg Register */
+	ILI9881C_COMMAND_INSTR(0xC0, 0x00),
+	ILI9881C_COMMAND_INSTR(0xC1, 0x11),
+	ILI9881C_COMMAND_INSTR(0xC2, 0x1E),
+	ILI9881C_COMMAND_INSTR(0xC3, 0x0F),
+	ILI9881C_COMMAND_INSTR(0xC4, 0x12),
+	ILI9881C_COMMAND_INSTR(0xC5, 0x26),
+	ILI9881C_COMMAND_INSTR(0xC6, 0x1C),
+	ILI9881C_COMMAND_INSTR(0xC7, 0x1E),
+	ILI9881C_COMMAND_INSTR(0xC8, 0x87),
+	ILI9881C_COMMAND_INSTR(0xC9, 0x19),
+	ILI9881C_COMMAND_INSTR(0xCA, 0x26),
+	ILI9881C_COMMAND_INSTR(0xCB, 0x7F),
+	ILI9881C_COMMAND_INSTR(0xCC, 0x20),
+	ILI9881C_COMMAND_INSTR(0xCD, 0x22),
+	ILI9881C_COMMAND_INSTR(0xCE, 0x58),
+	ILI9881C_COMMAND_INSTR(0xCF, 0x2A),
+	ILI9881C_COMMAND_INSTR(0xD0, 0x2E),
+	ILI9881C_COMMAND_INSTR(0xD1, 0x50),
+	ILI9881C_COMMAND_INSTR(0xD2, 0x5D),
+	ILI9881C_COMMAND_INSTR(0xD3, 0x23),
+
+	/* ============ Gamma END=========== */
+
+	ILI9881C_SWITCH_PAGE_INSTR(0),
+	ILI9881C_COMMAND_INSTR(0x35, 0x00),
+	ILI9881C_COMMAND_INSTR(0x11, 0x00),
+	ILI9881C_COMMAND_INSTR(0x29, 0x00),
+};
+
 static inline struct ili9881c *panel_to_ili9881c(struct drm_panel *panel)
 {
 	return container_of(panel, struct ili9881c, panel);
@@ -1449,6 +1666,22 @@ static const struct drm_display_mode am8001280g_default_mode = {
 	.height_mm	= 151,
 };
 
+static const struct drm_display_mode txw700100s0_default_mode = {
+	.clock          = 78086,
+
+	.hdisplay	= 800,
+	.hsync_start	= 800 + 80,
+	.hsync_end	= 800 + 80 + 80,
+	.htotal		= 800 + 80 + 80 + 20,
+
+	.vdisplay	= 1280,
+	.vsync_start	= 1280 + 16,
+	.vsync_end	= 1280 + 16 + 24,
+	.vtotal		= 1280 + 16 + 24 + 8,
+
+	.width_mm	= 90,
+	.height_mm	= 151,
+};
 static int ili9881c_get_modes(struct drm_panel *panel,
 			      struct drm_connector *connector)
 {
@@ -1609,6 +1842,14 @@ static const struct ili9881c_desc am8001280g_desc = {
 		      MIPI_DSI_CLOCK_NON_CONTINUOUS | MIPI_DSI_MODE_LPM,
 };
 
+static const struct ili9881c_desc txw700100s0_desc = {
+	.init = txw700100s0_init,
+	.init_length = ARRAY_SIZE(txw700100s0_init),
+	.mode = &txw700100s0_default_mode,
+	.mode_flags = MIPI_DSI_MODE_VIDEO_SYNC_PULSE | MIPI_DSI_MODE_VIDEO,
+	.lanes = 4,
+};
+
 static const struct of_device_id ili9881c_of_match[] = {
 	{ .compatible = "bananapi,lhr050h41", .data = &lhr050h41_desc },
 	{ .compatible = "feixin,k101-im2byl02", .data = &k101_im2byl02_desc },
@@ -1616,6 +1857,7 @@ static const struct of_device_id ili9881c_of_match[] = {
 	{ .compatible = "tdo,tl050hdv35", .data = &tl050hdv35_desc },
 	{ .compatible = "wanchanglong,w552946aba", .data = &w552946aba_desc },
 	{ .compatible = "ampire,am8001280g", .data = &am8001280g_desc },
+	{ .compatible = "tianxinwei,txw700100s0", &txw700100s0_desc },
 	{ }
 };
 MODULE_DEVICE_TABLE(of, ili9881c_of_match);
-- 
2.50.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] dt-bindings: vendor-prefixes: Add Tianxinwei name
  2025-07-14 19:17 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Tianxinwei name Richard Yao
@ 2025-07-15  4:02   ` Rob Herring (Arm)
  0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring (Arm) @ 2025-07-15  4:02 UTC (permalink / raw)
  To: Richard Yao
  Cc: Krzysztof Kozlowski, Akshay Athalye, linux-kernel, Neil Armstrong,
	Conor Dooley, Jonathan Cameron, Caleb James DeLisle, Junhao Xie,
	Manivannan Sadhasivam, Kever Yang, devicetree, Andre Przywara,
	dri-devel


On Mon, 14 Jul 2025 15:17:21 -0400, Richard Yao wrote:
> Tianxinwei is a company based in Shenzen, China, making LCD screens.
> 
> Add their name to the list of vendors.
> 
> Signed-off-by: Richard Yao <richard@scandent.com>
> ---
>  Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
>  1 file changed, 2 insertions(+)
> 

Acked-by: Rob Herring (Arm) <robh@kernel.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/3] dt-bindings: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support
  2025-07-14 19:17 ` [PATCH 2/3] dt-bindings: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support Richard Yao
@ 2025-07-15  4:03   ` Rob Herring (Arm)
  0 siblings, 0 replies; 7+ messages in thread
From: Rob Herring (Arm) @ 2025-07-15  4:03 UTC (permalink / raw)
  To: Richard Yao
  Cc: devicetree, Maarten Lankhorst, Maxime Ripard, Jessica Zhang,
	David Airlie, linux-kernel, Thomas Zimmermann, Simona Vetter,
	Conor Dooley, dri-devel, Neil Armstrong, Krzysztof Kozlowski,
	Akshay Athalye


On Mon, 14 Jul 2025 15:17:22 -0400, Richard Yao wrote:
> Document the compatible value for Tianxinwei TWX700100S0 panel.
> 
> Signed-off-by: Richard Yao <richard@scandent.com>
> ---
>  .../devicetree/bindings/display/panel/ilitek,ili9881c.yaml       | 1 +
>  1 file changed, 1 insertion(+)
> 

Acked-by: Rob Herring (Arm) <robh@kernel.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 3/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support
  2025-07-14 19:17 ` [PATCH 3/3] drm/panel: " Richard Yao
@ 2025-07-15  6:04   ` kernel test robot
  0 siblings, 0 replies; 7+ messages in thread
From: kernel test robot @ 2025-07-15  6:04 UTC (permalink / raw)
  To: Richard Yao, dri-devel
  Cc: llvm, oe-kbuild-all, devicetree, linux-kernel, Akshay Athalye,
	Richard Yao, Neil Armstrong, Jessica Zhang, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter

Hi Richard,

kernel test robot noticed the following build errors:

[auto build test ERROR on robh/for-next]
[also build test ERROR on linus/master v6.16-rc6]
[cannot apply to drm-exynos/exynos-drm-next next-20250714]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Richard-Yao/dt-bindings-vendor-prefixes-Add-Tianxinwei-name/20250715-031929
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
patch link:    https://lore.kernel.org/r/20250714191729.2416-4-richard%40scandent.com
patch subject: [PATCH 3/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support
config: arm-randconfig-001-20250715 (https://download.01.org/0day-ci/archive/20250715/202507151301.sFo3NzXA-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 16534d19bf50bde879a83f0ae62875e2c5120e64)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250715/202507151301.sFo3NzXA-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507151301.sFo3NzXA-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/panel/panel-ilitek-ili9881c.c:1850:3: error: field designator 'lanes' does not refer to any field in type 'const struct ili9881c_desc'
    1850 |         .lanes = 4,
         |         ~^~~~~~~~~
   1 error generated.


vim +1850 drivers/gpu/drm/panel/panel-ilitek-ili9881c.c

  1844	
  1845	static const struct ili9881c_desc txw700100s0_desc = {
  1846		.init = txw700100s0_init,
  1847		.init_length = ARRAY_SIZE(txw700100s0_init),
  1848		.mode = &txw700100s0_default_mode,
  1849		.mode_flags = MIPI_DSI_MODE_VIDEO_SYNC_PULSE | MIPI_DSI_MODE_VIDEO,
> 1850		.lanes = 4,
  1851	};
  1852	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-07-15  6:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-14 19:17 [PATCH 0/3] drm/panel: ilitek-ili9881c: Add Tianxinwei TWX700100S0 Richard Yao
2025-07-14 19:17 ` [PATCH 1/3] dt-bindings: vendor-prefixes: Add Tianxinwei name Richard Yao
2025-07-15  4:02   ` Rob Herring (Arm)
2025-07-14 19:17 ` [PATCH 2/3] dt-bindings: ilitek-ili9881c: Add Tianxinwei TWX700100S0 support Richard Yao
2025-07-15  4:03   ` Rob Herring (Arm)
2025-07-14 19:17 ` [PATCH 3/3] drm/panel: " Richard Yao
2025-07-15  6:04   ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).