Skip to contentSkip to conversation

Support for the Pixel 3a XL with the Tianma panel

PATCH Applied Richard Acayan 4 participants 11 messages Mar 10 – May 23

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

v3 cover Support for the Pixel 3a XL with the Tianma panel

This expands Pixel 3a support to the Pixel 3a XL, starting with one of the panel variants. The Pixel 3a XL has two variants with panels from Samsung or from Tianma/Novatek.

This series depends on the IMX355 front camera devicetree patches
(https://lore.kernel.org/r/[email protected]).

Changes since v2 (https://lore.kernel.org/r/[email protected]):
- add support for regulator (Dmitry's review retained) (3/5)
- use common set page function (Dmitry's review retained) (3/5)
- squash new labels into common dtsi patch (review tags dropped) (4/5)
- specify framebuffer in terms of memory region (4/5)
- only specify height in XL/non-XL specific devicetrees (4/5, 5/5)
- remove status in display devices (4/5, 5/5)
- preserve same touchscreen physical width in sargo (4/5)
- move entry in Makefile to correct place (5/5)
- omit copyright year in new file (4/5)
- correct top-of-file comment about which panel is supported (5/5)
- explain license identifier change from GPL-2.0 to GPL-2.0-only (4/5)
- add review tags (1/5, 3/5, 5/5)

Changes since v1 (https://lore.kernel.org/r/[email protected]):
- use multi functions in disable callback (3/6)
- add and reformat comments about XL differences (5/6)
- mention the sdc panel (6/6)
- explain google,bonito compatible (1/6)
- remove TODO item in code (3/6)
- add review and testing tags (2/6, 3/6, 5/6)

Richard Acayan (5):
dt-bindings: arm: qcom: document google,bonito-tianma board
dt-bindings: panel-simple-dsi: add nt37700f compatible drm/panel: Add Novatek/Tianma NT37700F panel
arm64: dts: qcom: sdm670-google: add common device tree include
arm64: dts: qcom: add support for pixel 3a xl with the tianma panel

 .../devicetree/bindings/arm/qcom.yaml         |   6 +
 .../display/panel/panel-simple-dsi.yaml       |   2 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../dts/qcom/sdm670-google-bonito-tianma.dts  |  32 +
 ...le-sargo.dts => sdm670-google-common.dtsi} |  22 +-
 .../boot/dts/qcom/sdm670-google-sargo.dts     | 709 +-----------------
 drivers/gpu/drm/panel/Kconfig                 |   9 +
 drivers/gpu/drm/panel/Makefile                |   1 +
 .../gpu/drm/panel/panel-novatek-nt37700f.c    | 299 ++++++++
 9 files changed, 370 insertions(+), 711 deletions(-)
 create mode 100644 arch/arm64/boot/dts/qcom/sdm670-google-bonito-tianma.dts
 copy arch/arm64/boot/dts/qcom/{sdm670-google-sargo.dts => sdm670-google-common.dtsi} (97%)
 create mode 100644 drivers/gpu/drm/panel/panel-novatek-nt37700f.c
Signature · 1 line
2.53.0
#1 lore raw

PATCH v3 1/5 dt-bindings: arm: qcom: document google, bonito-tianma board

The Pixel 3a XL is code-named by Google as "bonito". The google,bonito-tianma compatible represents a variant of the Pixel 3a XL board with a Tianma/Novatek NT37700F panel. Document the google,bonito board compatible and the google,bonito-tianma variant in the bindings.

---
 Documentation/devicetree/bindings/arm/qcom.yaml | 6 ++++++
 1 file changed, 6 insertions(+)
Documentation/devicetree/bindings/arm/qcom.yaml +6 -0
index d48c625d3fc4..1a955d1b14bf 100644
@@ -844,6 +844,12 @@ properties:
               - google,sargo
           - const: qcom,sdm670
 
+      - items:
+          - enum:
+              - google,bonito-tianma
+          - const: google,bonito
+          - const: qcom,sdm670
+
       - items:
           - enum:
               - qcom,sdx55-mtp
Signature · 1 line
2.53.0
#2 lore raw

PATCH v3 2/5 dt-bindings: panel-simple-dsi: add nt37700f compatible

In reply to Richard Acayan

Add the compatible for the NT37700F panel found on the Pixel 3a XL.

---
 .../devicetree/bindings/display/panel/panel-simple-dsi.yaml     | 2 ++
 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/display/panel/panel-simple-dsi.yaml +2 -0
index 2f90c887b7b8..cc8d795df732 100644
@@ -49,6 +49,8 @@ properties:
       - lg,lh500wx1-sd03
         # Lincoln LCD197 5" 1080x1920 LCD panel
       - lincolntech,lcd197
+        # Novatek NT37700F 1080x2160 AMOLED panel
+      - novatek,nt37700f
         # One Stop Displays OSD101T2587-53TS 10.1" 1920x1200 panel
       - osddisplays,osd101t2587-53ts
         # Panasonic 10" WUXGA TFT LCD panel
Signature · 1 line
2.53.0
#3 lore raw

PATCH v3 3/5 drm/panel: Add Novatek/Tianma NT37700F panel

In reply to Richard Acayan

Some Pixel 3a XL devices have a Tianma panel. Add support for it, with the aid of linux-mdss-dsi-panel-driver-generator.

---
 drivers/gpu/drm/panel/Kconfig                 |   9 +
 drivers/gpu/drm/panel/Makefile                |   1 +
 .../gpu/drm/panel/panel-novatek-nt37700f.c    | 299 ++++++++++++++++++
 3 files changed, 309 insertions(+)
 create mode 100644 drivers/gpu/drm/panel/panel-novatek-nt37700f.c
drivers/gpu/drm/panel/Kconfig +9 -0
index 307152ad7759..21b38b640878 100644
@@ -553,6 +553,15 @@ config DRM_PANEL_NOVATEK_NT36672E
 	  LCD panel module. The panel has a resolution of 1080x2408 and uses 24 bit
 	  RGB per pixel.
 
+config DRM_PANEL_NOVATEK_NT37700F
+	tristate "Novatek NT37700F DSI panel"
+	depends on OF
+	depends on DRM_MIPI_DSI
+	depends on BACKLIGHT_CLASS_DEVICE
+	help
+	  Say Y here if you want to enable support for Novatek NT37700F DSI
+	  panel module. The panel has a resolution of 1080x2160.
+
 config DRM_PANEL_NOVATEK_NT37801
 	tristate "Novatek NT37801/NT37810 AMOLED DSI panel"
 	depends on OF
drivers/gpu/drm/panel/Makefile +1 -0
index aeffaa95666d..8bde285336bd 100644
@@ -54,6 +54,7 @@ obj-$(CONFIG_DRM_PANEL_NOVATEK_NT35950) += panel-novatek-nt35950.o
 obj-$(CONFIG_DRM_PANEL_NOVATEK_NT36523) += panel-novatek-nt36523.o
 obj-$(CONFIG_DRM_PANEL_NOVATEK_NT36672A) += panel-novatek-nt36672a.o
 obj-$(CONFIG_DRM_PANEL_NOVATEK_NT36672E) += panel-novatek-nt36672e.o
+obj-$(CONFIG_DRM_PANEL_NOVATEK_NT37700F) += panel-novatek-nt37700f.o
 obj-$(CONFIG_DRM_PANEL_NOVATEK_NT37801) += panel-novatek-nt37801.o
 obj-$(CONFIG_DRM_PANEL_NOVATEK_NT39016) += panel-novatek-nt39016.o
 obj-$(CONFIG_DRM_PANEL_MANTIX_MLAF057WE51) += panel-mantix-mlaf057we51.o
drivers/gpu/drm/panel/panel-novatek-nt37700f.c new file +299 -0

299 lines not on this page · raw message

Signature · 1 line
2.53.0
#4 lore raw

PATCH v3 4/5 arm64: dts: qcom: sdm670-google: add common device tree include

In reply to Richard Acayan

The Pixel 3a XL can be supported by reusing most of the device tree from the Pixel 3a. Move the common elements to a common device tree include like with other devices.

Since the original devicetree should only specify non-XL properties, it needs to be completely rewritten. Also change the SPDX license identifier from GPL-2.0 (which was deprecated as it can be misinterpreted as GPLv2 or later) into GPL-2.0-only.

---
 ...le-sargo.dts => sdm670-google-common.dtsi} |  22 +-
 .../boot/dts/qcom/sdm670-google-sargo.dts     | 709 +-----------------
 2 files changed, 20 insertions(+), 711 deletions(-)
 copy arch/arm64/boot/dts/qcom/{sdm670-google-sargo.dts => sdm670-google-common.dtsi} (97%)
arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi renamed from arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts +7 -15
similarity index 97%
copy from arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
copy to arch/arm64/boot/dts/qcom/sdm670-google-common.dtsi
index e925cba0381f..6116ca8dc426 100644
@@ -6,8 +6,6 @@
  * Copyright (c) 2022, Richard Acayan. All rights reserved.
  */
 
-/dts-v1/;
-
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/leds/common.h>
@@ -28,9 +26,6 @@
 /delete-node/ &gpu_mem;
 
 / {
-	model = "Google Pixel 3a";
-	compatible = "google,sargo", "qcom,sdm670";
-
 	aliases { };
 
 	battery: battery {
@@ -38,7 +33,6 @@ battery: battery {
 
 		voltage-min-design-microvolt = <3312000>;
 		voltage-max-design-microvolt = <4400000>;
-		charge-full-design-microamp-hours = <3000000>;
 	};
 
 	chosen {
@@ -48,11 +42,11 @@ chosen {
 		#size-cells = <2>;
 		ranges;
 
-		framebuffer@9c000000 {
+		framebuffer: framebuffer@9c000000 {
 			compatible = "simple-framebuffer";
-			reg = <0 0x9c000000 0 (1080 * 2220 * 4)>;
+			memory-region = <&fb_mem>;
 			width = <1080>;
-			height = <2220>;
+			/* height is in specific device trees */
 			stride = <(1080 * 4)>;
 			format = "a8r8g8b8";
 		};
@@ -121,7 +115,7 @@ gpu_mem: gpu@97a15000 {
 			no-map;
 		};
 
-		framebuffer-region@9c000000 {
+		fb_mem: framebuffer-region@9c000000 {
 			reg = <0 0x9c000000 0 0x2400000>;
 			no-map;
 		};
@@ -516,10 +510,8 @@ rmi4-f01@1 {
 			syna,nosleep-mode = <1>;
 		};
 
-		rmi4-f12@12 {
+		rmi4_f12: rmi4-f12@12 {
 			reg = <0x12>;
-			touchscreen-x-mm = <62>;
-			touchscreen-y-mm = <127>;
 			syna,sensor-type = <1>;
 		};
 	};
@@ -533,8 +525,8 @@ &mdss_dsi0 {
 	vdda-supply = <&vreg_l1a_1p225>;
 	status = "okay";
 
-	panel@0 {
-		compatible = "samsung,s6e3fa7-ams559nk06";
+	panel: panel@0 {
+		/* compatible is provided in specific device trees */
 		reg = <0>;
 
 		reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts +13 -696

728 lines not on this page · raw message

Signature · 1 line
2.53.0
Reviewed-by on v3 4/5
#5 lore raw

Re: [PATCH v3 4/5] arm64: dts: qcom: sdm670-google: add common device tree include

Quoted 11 lines · Richard Acayan

The Pixel 3a XL can be supported by reusing most of the device tree from the Pixel 3a. Move the common elements to a common device tree include like with other devices.

Since the original devicetree should only specify non-XL properties, it needs to be completely rewritten. Also change the SPDX license identifier from GPL-2.0 (which was deprecated as it can be misinterpreted as GPLv2 or later) into GPL-2.0-only.

---

Konrad

#6 lore raw

PATCH v3 5/5 arm64: dts: qcom: add support for pixel 3a xl with the tianma panel

In reply to Richard Acayan

The Pixel 3a XL has variants with either a Samsung Display Controller (SDC) panel or a Tianma panel. Add the device tree for the variant with the Tianma panel.

---
 arch/arm64/boot/dts/qcom/Makefile             |  1 +
 .../dts/qcom/sdm670-google-bonito-tianma.dts  | 32 +++++++++++++++++++
 2 files changed, 33 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/sdm670-google-bonito-tianma.dts
arch/arm64/boot/dts/qcom/Makefile +1 -0
index f80b5d9cf1e8..7c158871ed1c 100644
@@ -264,6 +264,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= sdm632-fairphone-fp3.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm632-motorola-ocean.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm636-sony-xperia-ganges-mermaid.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm660-xiaomi-lavender.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= sdm670-google-bonito-tianma.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm670-google-sargo.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-db845c.dtb
 
arch/arm64/boot/dts/qcom/sdm670-google-bonito-tianma.dts new file +32 -0
new file mode 100644
index 000000000000..42ddaf53d150
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Device tree for Google Pixel 3a XL with the Tianma panel.
+ *
+ * Copyright (c) Richard Acayan. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "sdm670-google-common.dtsi"
+
+/ {
+	model = "Google Pixel 3a XL (with Tianma panel)";
+	compatible = "google,bonito-tianma", "google,bonito", "qcom,sdm670";
+};
+
+&battery {
+	charge-full-design-microamp-hours = <3700000>;
+};
+
+&framebuffer {
+	height = <2160>;
+};
+
+&panel {
+	compatible = "novatek,nt37700f";
+};
+
+&rmi4_f12 {
+	touchscreen-x-mm = <69>;
+	touchscreen-y-mm = <137>;
+};
Signature · 1 line
2.53.0
maintainer Applied
#7 lore raw

Re: (subset) [PATCH v3 0/5] Support for the Pixel 3a XL with the Tianma panel

In reply to Richard Acayan

Hi,

Quoted 8 lines · Richard Acayan

This expands Pixel 3a support to the Pixel 3a XL, starting with one of the panel variants. The Pixel 3a XL has two variants with panels from Samsung or from Tianma/Novatek.

This series depends on the IMX355 front camera devicetree patches
(https://lore.kernel.org/r/[email protected]).

[...]

Thanks, Applied to https://gitlab.freedesktop.org/drm/misc/kernel.git (drm-misc-next)

[1/5] dt-bindings: arm: qcom: document google,bonito-tianma board

      https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/8bcf6264b73f5cfa24e734c0027a69f207e26445
[2/5] dt-bindings: panel-simple-dsi: add nt37700f compatible
      https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/e0102c94ec12640a6b66037adc6e9ae5c9c0dc27
[3/5] drm/panel: Add Novatek/Tianma NT37700F panel
      https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/2db443036fe9daf170e5919face475307d486641
Signature · 1 line
Neil
maintainer
#8 lore raw
In reply to Richard Acayan
Quoted 6 lines · Richard Acayan

This expands Pixel 3a support to the Pixel 3a XL, starting with one of the panel variants. The Pixel 3a XL has two variants with panels from Samsung or from Tianma/Novatek.

This series depends on the IMX355 front camera devicetree patches
(https://lore.kernel.org/r/[email protected]).

Please resubmit the DeviceTree patches once this dependency has been resolved.

Regards,
Bjorn

Quoted 47 lines

Changes since v2 (https://lore.kernel.org/r/[email protected]):
- add support for regulator (Dmitry's review retained) (3/5)
- use common set page function (Dmitry's review retained) (3/5)
- squash new labels into common dtsi patch (review tags dropped) (4/5)
- specify framebuffer in terms of memory region (4/5)
- only specify height in XL/non-XL specific devicetrees (4/5, 5/5)
- remove status in display devices (4/5, 5/5)
- preserve same touchscreen physical width in sargo (4/5)
- move entry in Makefile to correct place (5/5)
- omit copyright year in new file (4/5)
- correct top-of-file comment about which panel is supported (5/5)
- explain license identifier change from GPL-2.0 to GPL-2.0-only (4/5)
- add review tags (1/5, 3/5, 5/5)

Changes since v1 (https://lore.kernel.org/r/[email protected]):
- use multi functions in disable callback (3/6)
- add and reformat comments about XL differences (5/6)
- mention the sdc panel (6/6)
- explain google,bonito compatible (1/6)
- remove TODO item in code (3/6)
- add review and testing tags (2/6, 3/6, 5/6)

Richard Acayan (5):
dt-bindings: arm: qcom: document google,bonito-tianma board
dt-bindings: panel-simple-dsi: add nt37700f compatible drm/panel: Add Novatek/Tianma NT37700F panel
arm64: dts: qcom: sdm670-google: add common device tree include
arm64: dts: qcom: add support for pixel 3a xl with the tianma panel

 .../devicetree/bindings/arm/qcom.yaml         |   6 +
 .../display/panel/panel-simple-dsi.yaml       |   2 +
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../dts/qcom/sdm670-google-bonito-tianma.dts  |  32 +
 ...le-sargo.dts => sdm670-google-common.dtsi} |  22 +-
 .../boot/dts/qcom/sdm670-google-sargo.dts     | 709 +-----------------
 drivers/gpu/drm/panel/Kconfig                 |   9 +
 drivers/gpu/drm/panel/Makefile                |   1 +
 .../gpu/drm/panel/panel-novatek-nt37700f.c    | 299 ++++++++
 9 files changed, 370 insertions(+), 711 deletions(-)
 create mode 100644 arch/arm64/boot/dts/qcom/sdm670-google-bonito-tianma.dts
 copy arch/arm64/boot/dts/qcom/{sdm670-google-sargo.dts => sdm670-google-common.dtsi} (97%)
 create mode 100644 drivers/gpu/drm/panel/panel-novatek-nt37700f.c
Signature · 1 line
2.53.0
#9 lore raw
Quoted 10 lines · Bjorn Andersson
Quoted 6 lines · Richard Acayan

This expands Pixel 3a support to the Pixel 3a XL, starting with one of the panel variants. The Pixel 3a XL has two variants with panels from Samsung or from Tianma/Novatek.

This series depends on the IMX355 front camera devicetree patches
(https://lore.kernel.org/r/[email protected]).

Please resubmit the DeviceTree patches once this dependency has been resolved.

Actually, did anyone see v12 of the front camera patches? I'll just rebase this on the revision of the camera patches that get applied.

https://lore.kernel.org/r/[email protected]

maintainer Applied
#10 lore raw

Re: (subset) [PATCH v3 0/5] Support for the Pixel 3a XL with the Tianma panel

In reply to Richard Acayan
Quoted 8 lines · Richard Acayan

This expands Pixel 3a support to the Pixel 3a XL, starting with one of the panel variants. The Pixel 3a XL has two variants with panels from Samsung or from Tianma/Novatek.

This series depends on the IMX355 front camera devicetree patches
(https://lore.kernel.org/r/[email protected]).

[...]

Applied, thanks!

[4/5] arm64: dts: qcom: sdm670-google: add common device tree include

      commit: fe9f4a46895dc3062cedcdd38772dd578de9e62f
[5/5] arm64: dts: qcom: add support for pixel 3a xl with the tianma panel
      commit: f3919fa784a3e6dd557dfe2c41072f55742e013f

Best regards,

Signature · 1 line
Bjorn Andersson <[email protected]>