[PATCH 0/3] add Gopher 2b LCD panel

STALE1833d

Revision v1 of 4 in this series.

6 messages, 2 authors, 2021-07-24 · open the first message on its own page

[PATCH 0/3] add Gopher 2b LCD panel

From: Artjom Vejsel <hidden>
Date: 2021-07-22 14:05:52

The Gopher 2b LCD panel is used in Gopher 2b handhelds.
It's simple panel with NewVision NV3047 driver,
but SPI lines are not connected.
It has no specific name, since it's unique to that handhelds.
lot name at AliExpress: 4.3 inch 40PIN TFT LCD Screen COG
NV3047 Drive IC 480(RGB)*272 No Touch 24Bit RGB Interface

Artjom Vejsel (3):
  dt-bindings: Add QiShenglong vendor prefix
  dt-bindings: Add DT bindings for QiShenglong Gopher 2b panel
  drm/panel-simple: add Gopher 2b LCD panel

 .../bindings/display/panel/panel-simple.yaml  |  2 +
 .../devicetree/bindings/vendor-prefixes.yaml  |  2 +
 drivers/gpu/drm/panel/panel-simple.c          | 44 +++++++++++++++++++
 3 files changed, 48 insertions(+)

--
2.32.0

[PATCH 1/3] dt-bindings: Add QiShenglong vendor prefix

From: Artjom Vejsel <hidden>
Date: 2021-07-22 14:06:02

Add vendor prefix for Shenzhen QiShenglong Industrialist Co., Ltd.
QiShenglong is a Chinese manufacturer of handheld gaming consoles, most of
which run (very old) versions of Linux.
QiShenglong is known as Hamy.

Signed-off-by: Artjom Vejsel <redacted>
---
 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 b868cefc7c55..52996cbf2cc4 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -924,6 +924,8 @@ patternProperties:
     description: Qi Hardware
   "^qihua,.*":
     description: Chengdu Kaixuan Information Technology Co., Ltd.
+  "^qishenglong,.*":
+    description: Shenzhen QiShenglong Industrialist Co., Ltd.
   "^qiaodian,.*":
     description: QiaoDian XianShi Corporation
   "^qnap,.*":
-- 
2.32.0

[PATCH 2/3] dt-bindings: Add DT bindings for QiShenglong Gopher 2b panel

From: Artjom Vejsel <hidden>
Date: 2021-07-22 14:06:06

Add DT bindings for QiShenglong Gopher 2b 4.3" 480(RGB)x272 TFT LCD panel.

Signed-off-by: Artjom Vejsel <redacted>
---
 .../devicetree/bindings/display/panel/panel-simple.yaml         | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
index 3624363938dd..e7f3db118c5d 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
@@ -244,6 +244,8 @@ properties:
       - powertip,ph800480t013-idf02
         # QiaoDian XianShi Corporation 4"3 TFT LCD panel
       - qiaodian,qd43003c0-40
+        # Shenzhen QiShenglong Industrialist Co., Ltd. Gopher 2b 4.3" 480(RGB)x272 TFT LCD panel
+      - qishenglong,gopher2b-lcd-panel
         # Rocktech Displays Ltd. RK101II01D-CT 10.1" TFT 1280x800
       - rocktech,rk101ii01d-ct
         # Rocktech Display Ltd. RK070ER9427 800(RGB)x480 TFT LCD panel
-- 
2.32.0

[PATCH 3/3] drm/panel-simple: add Gopher 2b LCD panel

From: Artjom Vejsel <hidden>
Date: 2021-07-22 14:06:15

The Gopher 2b LCD panel is used in Gopher 2b handhelds.
It's simple panel with NewVision NV3047 driver,
but SPI lines are not connected.
It has no specific name, since it's unique to that handhelds.
lot name at AliExpress: 4.3 inch 40PIN TFT LCD Screen COG
NV3047 Drive IC 480(RGB)*272 No Touch 24Bit RGB Interface

Signed-off-by: Artjom Vejsel <redacted>
---
 drivers/gpu/drm/panel/panel-simple.c | 44 ++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index 9b286bd4444f..9cce6b63a147 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -4306,6 +4306,47 @@ static const struct panel_desc yes_optoelectronics_ytc700tlag_05_201c = {
 	.connector_type = DRM_MODE_CONNECTOR_LVDS,
 };

+static const struct drm_display_mode qishenglong_gopher2b_lcd_panel_modes[] = {
+	{ /* 60 Hz */
+		.clock = 10800,
+		.hdisplay = 480,
+		.hsync_start = 480 + 77,
+		.hsync_end = 480 + 77 + 41,
+		.htotal = 480 + 77 + 41 + 2,
+		.vdisplay = 272,
+		.vsync_start = 272 + 16,
+		.vsync_end = 272 + 16 + 10,
+		.vtotal = 272 + 16 + 10 + 2,
+		.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+	},
+	{ /* 50 Hz */
+		.clock = 10800,
+		.hdisplay = 480,
+		.hsync_start = 480 + 17,
+		.hsync_end = 480 + 17 + 41,
+		.htotal = 480 + 17 + 41 + 2,
+		.vdisplay = 272,
+		.vsync_start = 272 + 116,
+		.vsync_end = 272 + 116 + 10,
+		.vtotal = 272 + 116 + 10 + 2,
+		.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+	},
+};
+
+static const struct panel_desc qishenglong_gopher2b_lcd_panel = {
+	.modes = qishenglong_gopher2b_lcd_panel_modes,
+	.num_modes = ARRAY_SIZE(qishenglong_gopher2b_lcd_panel_modes),
+	.num_modes = 1,
+	.bpc = 8,
+	.size = {
+		.width = 95,
+		.height = 54,
+	},
+	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+	.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE,
+	.connector_type = DRM_MODE_CONNECTOR_DPI,
+};
+
 static const struct drm_display_mode arm_rtsm_mode[] = {
 	{
 		.clock = 65000,
@@ -4753,6 +4794,9 @@ static const struct of_device_id platform_of_match[] = {
 	}, {
 		.compatible = "yes-optoelectronics,ytc700tlag-05-201c",
 		.data = &yes_optoelectronics_ytc700tlag_05_201c,
+	}, {
+		.compatible = "qishenglong,gopher2b-lcd-panel",
+		.data = &qishenglong_gopher2b_lcd_panel,
 	}, {
 		/* Must be the last entry */
 		.compatible = "panel-dpi",
--
2.32.0

Re: [PATCH 3/3] drm/panel-simple: add Gopher 2b LCD panel

From: Paul Cercueil <paul@crapouillou.net>
Date: 2021-07-22 14:12:56

Hi Artjom,

Le jeu., juil. 22 2021 at 17:04:32 +0300, Artjom Vejsel 
[off-list ref] a écrit :
quoted hunk
The Gopher 2b LCD panel is used in Gopher 2b handhelds.
It's simple panel with NewVision NV3047 driver,
but SPI lines are not connected.
It has no specific name, since it's unique to that handhelds.
lot name at AliExpress: 4.3 inch 40PIN TFT LCD Screen COG
NV3047 Drive IC 480(RGB)*272 No Touch 24Bit RGB Interface

Signed-off-by: Artjom Vejsel <redacted>
---
 drivers/gpu/drm/panel/panel-simple.c | 44 
++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
diff --git a/drivers/gpu/drm/panel/panel-simple.c 
b/drivers/gpu/drm/panel/panel-simple.c
index 9b286bd4444f..9cce6b63a147 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -4306,6 +4306,47 @@ static const struct panel_desc 
yes_optoelectronics_ytc700tlag_05_201c = {
 	.connector_type = DRM_MODE_CONNECTOR_LVDS,
 };

+static const struct drm_display_mode 
qishenglong_gopher2b_lcd_panel_modes[] = {
+	{ /* 60 Hz */
+		.clock = 10800,
+		.hdisplay = 480,
+		.hsync_start = 480 + 77,
+		.hsync_end = 480 + 77 + 41,
+		.htotal = 480 + 77 + 41 + 2,
+		.vdisplay = 272,
+		.vsync_start = 272 + 16,
+		.vsync_end = 272 + 16 + 10,
+		.vtotal = 272 + 16 + 10 + 2,
+		.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+	},
+	{ /* 50 Hz */
+		.clock = 10800,
+		.hdisplay = 480,
+		.hsync_start = 480 + 17,
+		.hsync_end = 480 + 17 + 41,
+		.htotal = 480 + 17 + 41 + 2,
+		.vdisplay = 272,
+		.vsync_start = 272 + 116,
+		.vsync_end = 272 + 116 + 10,
+		.vtotal = 272 + 116 + 10 + 2,
+		.flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+	},
+};
+
+static const struct panel_desc qishenglong_gopher2b_lcd_panel = {
+	.modes = qishenglong_gopher2b_lcd_panel_modes,
+	.num_modes = ARRAY_SIZE(qishenglong_gopher2b_lcd_panel_modes),
+	.num_modes = 1,
Thank you for your patch. From a quick look though, you have .num_modes 
listed twice here. I believe the second line should be removed.

Cheers,
-Paul
quoted hunk
+	.bpc = 8,
+	.size = {
+		.width = 95,
+		.height = 54,
+	},
+	.bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+	.bus_flags = DRM_BUS_FLAG_DE_HIGH | 
DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE,
+	.connector_type = DRM_MODE_CONNECTOR_DPI,
+};
+
 static const struct drm_display_mode arm_rtsm_mode[] = {
 	{
 		.clock = 65000,
@@ -4753,6 +4794,9 @@ static const struct of_device_id 
platform_of_match[] = {
 	}, {
 		.compatible = "yes-optoelectronics,ytc700tlag-05-201c",
 		.data = &yes_optoelectronics_ytc700tlag_05_201c,
+	}, {
+		.compatible = "qishenglong,gopher2b-lcd-panel",
+		.data = &qishenglong_gopher2b_lcd_panel,
 	}, {
 		/* Must be the last entry */
 		.compatible = "panel-dpi",
--
2.32.0

Re: [PATCH 3/3] drm/panel-simple: add Gopher 2b LCD panel

From: Artjom Vejsel <hidden>
Date: 2021-07-24 16:27:50

Hello, thanks, Paul. I've sent V2.

On 22/07/2021 17.12, Paul Cercueil wrote:
Hi Artjom,

Le jeu., juil. 22 2021 at 17:04:32 +0300, Artjom Vejsel 
[off-list ref] a écrit :
quoted
The Gopher 2b LCD panel is used in Gopher 2b handhelds.
It's simple panel with NewVision NV3047 driver,
but SPI lines are not connected.
It has no specific name, since it's unique to that handhelds.
lot name at AliExpress: 4.3 inch 40PIN TFT LCD Screen COG
NV3047 Drive IC 480(RGB)*272 No Touch 24Bit RGB Interface

Signed-off-by: Artjom Vejsel <redacted>
---
 drivers/gpu/drm/panel/panel-simple.c | 44 ++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
diff --git a/drivers/gpu/drm/panel/panel-simple.c 
b/drivers/gpu/drm/panel/panel-simple.c
index 9b286bd4444f..9cce6b63a147 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -4306,6 +4306,47 @@ static const struct panel_desc 
yes_optoelectronics_ytc700tlag_05_201c = {
     .connector_type = DRM_MODE_CONNECTOR_LVDS,
 };

+static const struct drm_display_mode 
qishenglong_gopher2b_lcd_panel_modes[] = {
+    { /* 60 Hz */
+        .clock = 10800,
+        .hdisplay = 480,
+        .hsync_start = 480 + 77,
+        .hsync_end = 480 + 77 + 41,
+        .htotal = 480 + 77 + 41 + 2,
+        .vdisplay = 272,
+        .vsync_start = 272 + 16,
+        .vsync_end = 272 + 16 + 10,
+        .vtotal = 272 + 16 + 10 + 2,
+        .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+    },
+    { /* 50 Hz */
+        .clock = 10800,
+        .hdisplay = 480,
+        .hsync_start = 480 + 17,
+        .hsync_end = 480 + 17 + 41,
+        .htotal = 480 + 17 + 41 + 2,
+        .vdisplay = 272,
+        .vsync_start = 272 + 116,
+        .vsync_end = 272 + 116 + 10,
+        .vtotal = 272 + 116 + 10 + 2,
+        .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
+    },
+};
+
+static const struct panel_desc qishenglong_gopher2b_lcd_panel = {
+    .modes = qishenglong_gopher2b_lcd_panel_modes,
+    .num_modes = ARRAY_SIZE(qishenglong_gopher2b_lcd_panel_modes),
+    .num_modes = 1,
Thank you for your patch. From a quick look though, you have 
.num_modes listed twice here. I believe the second line should be 
removed.

Cheers,
-Paul
quoted
+    .bpc = 8,
+    .size = {
+        .width = 95,
+        .height = 54,
+    },
+    .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
+    .bus_flags = DRM_BUS_FLAG_DE_HIGH | 
DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE,
+    .connector_type = DRM_MODE_CONNECTOR_DPI,
+};
+
 static const struct drm_display_mode arm_rtsm_mode[] = {
     {
         .clock = 65000,
@@ -4753,6 +4794,9 @@ static const struct of_device_id 
platform_of_match[] = {
     }, {
         .compatible = "yes-optoelectronics,ytc700tlag-05-201c",
         .data = &yes_optoelectronics_ytc700tlag_05_201c,
+    }, {
+        .compatible = "qishenglong,gopher2b-lcd-panel",
+        .data = &qishenglong_gopher2b_lcd_panel,
     }, {
         /* Must be the last entry */
         .compatible = "panel-dpi",
-- 
2.32.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help