Add Support for RK3566 Powkiddy RGB30
Subsystems (6)
cover Add Support for RK3566 Powkiddy RGB30
From: Chris Morgan <[email protected]>
Add support for the Powkiddy RGB30 handheld gaming console.
Chris Morgan (5):
dt-bindings: vendor-prefixes: document Powkiddy
dt-bindings: panel: Add Powkiddy RGB30 panel compatible drm/panel: st7703: Add Powkiddy RGB30 Panel Support
dt-bindings: arm64: rockchip: add Powkiddy RGB30
arm64: dts: rockchip: add support for Powkiddy RGB30
.../devicetree/bindings/arm/rockchip.yaml | 5 + .../display/panel/rocktech,jh057n00900.yaml | 2 + .../devicetree/bindings/vendor-prefixes.yaml | 2 + arch/arm64/boot/dts/rockchip/Makefile | 1 + .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 152 ++++++++++++++++++ drivers/gpu/drm/panel/panel-sitronix-st7703.c | 89 ++++++++++ 6 files changed, 251 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts
Signature · 1 line
2.34.1
PATCH 1/5 dt-bindings: vendor-prefixes: document Powkiddy
From: Chris Morgan <[email protected]>
Document Powkiddy (https://powkiddy.com/).
--- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/vendor-prefixes.yaml +2 -0
@@ -1081,6 +1081,8 @@ patternProperties: description: Powertip Tech. Corp. "^powervr,.*": description: PowerVR (deprecated, use img) + "^powkiddy,.*": + description: Powkiddy "^primux,.*": description: Primux Trading, S.L. "^probox2,.*":
Signature · 1 line
2.34.1
Re: [PATCH 1/5] dt-bindings: vendor-prefixes: document Powkiddy
Quoted 6 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Document Powkiddy (https://powkiddy.com/).
Signed-off-by Chris Morgan <[email protected]>---
Best regards,
Krzysztof
PATCH 2/5 dt-bindings: panel: Add Powkiddy RGB30 panel compatible
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
The Powkiddy RGB30 panel is a 4 inch 720x720 MIPI-DSI LCD panel. It appears to be based on the ST7703 LCD controller (this is assumed from the init sequence similarity between this and other displays). Powkiddy would not share the part number or name for the display from the bill of materials and there were no obvious external markings, so name the panel for the device (Powkiddy RGB30).
--- .../devicetree/bindings/display/panel/rocktech,jh057n00900.yaml | 2 ++ 1 file changed, 2 insertions(+)
Documentation/devicetree/bindings/display/panel/rocktech,jh057n00900.yaml +2 -0
@@ -22,6 +22,8 @@ properties: enum: # Anberic RG353V-V2 5.0" 640x480 TFT LCD panel - anbernic,rg353v-panel-v2 + # Powkiddy RGB30 3.0" 720x720 TFT LCD panel + - powkiddy,rgb30-panel # Rocktech JH057N00900 5.5" 720x1440 TFT LCD panel - rocktech,jh057n00900 # Xingbangda XBD599 5.99" 720x1440 TFT LCD panel
Signature · 1 line
2.34.1
Re: [PATCH 2/5] dt-bindings: panel: Add Powkiddy RGB30 panel compatible
Quoted 8 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 panel is a 4 inch 720x720 MIPI-DSI LCD panel. It appears to be based on the ST7703 LCD controller (this is assumed from the init sequence similarity between this and other displays). Powkiddy would not share the part number or name for the display from the bill of materials and there were no obvious external markings, so name the panel for the device (Powkiddy RGB30).
Best regards,
Krzysztof
PATCH 3/5 drm/panel: st7703: Add Powkiddy RGB30 Panel Support
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
The Powkiddy RGB30 4 inch panel is a 4 inch 720x720 DSI panel used in the Powkiddy RGB30 handheld gaming device. Add support for it.
TODO: The panel seems to not resume properly from suspend. I've confirmed on the other ST7703 based devices it works correctly.
--- drivers/gpu/drm/panel/panel-sitronix-st7703.c | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+)
drivers/gpu/drm/panel/panel-sitronix-st7703.c +89 -0
@@ -433,6 +433,94 @@ static const struct st7703_panel_desc rg353v2_desc = { .init_sequence = rg353v2_init_sequence, }; +static int rgb30panel_init_sequence (struct st7703 *ctx) +{ +struct mipi_dsi_device *dsi =to_mipi_dsi_device (ctx->dev); + +/* Init sequence extracted from Powkiddy RGB30 BSP kernel. */ + +/* +* For some reason this specific panel must be taken out of sleep +* before the full init sequence, or else it will not display. +*/ +mipi_dsi_dcs_exit_sleep_mode (dsi); +msleep (250 ); + +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEXTC ,0xf1 ,0x12 ,0x83 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETMIPI ,0x33 ,0x81 ,0x05 ,0xf9 , +0x0e ,0x0e ,0x20 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x44 ,0x25 ,0x00 ,0x90 ,0x0a ,0x00 , +0x00 ,0x01 ,0x4f ,0x01 ,0x00 ,0x00 ,0x37 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER_EXT ,0x25 ,0x22 ,0xf0 , +0x63 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_UNKNOWN_BF ,0x02 ,0x11 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETRGBIF ,0x10 ,0x10 ,0x28 , +0x28 ,0x03 ,0xff ,0x00 ,0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETSCR ,0x73 ,0x73 ,0x50 ,0x50 , +0x00 ,0x00 ,0x12 ,0x70 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVDC ,0x46 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPANEL ,0x0b ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETCYC ,0x80 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETDISP ,0x3c ,0x12 ,0x30 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEQ ,0x07 ,0x07 ,0x0b ,0x0b , +0x03 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0xff ,0x00 , +0xc0 ,0x10 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER ,0x36 ,0x00 ,0x32 , +0x32 ,0x77 ,0xf1 ,0xcc ,0xcc ,0x77 ,0x77 ,0x33 , +0x33 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETBGP ,0x0a ,0x0a ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVCOM ,0x88 ,0x88 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP1 ,0xc8 ,0x10 ,0x0a ,0x10 , +0x0f ,0xa1 ,0x80 ,0x12 ,0x31 ,0x23 ,0x47 ,0x86 , +0xa1 ,0x80 ,0x47 ,0x08 ,0x00 ,0x00 ,0x0d ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x0d ,0x00 ,0x00 ,0x00 , +0x48 ,0x02 ,0x8b ,0xaf ,0x46 ,0x02 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x48 ,0x13 ,0x8b ,0xaf ,0x57 , +0x13 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP2 ,0x96 ,0x12 ,0x01 ,0x01 , +0x01 ,0x78 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x4f ,0x31 ,0x8b ,0xa8 ,0x31 ,0x75 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x4f ,0x20 ,0x8b ,0xa8 ,0x20 , +0x64 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x23 ,0x00 , +0x00 ,0x01 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x40 ,0xa1 ,0x80 ,0x00 ,0x00 ,0x00 , +0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGAMMA ,0x00 ,0x0a ,0x0f , +0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d ,0x10 , +0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ,0x00 ,0x0a , +0x0f ,0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d , +0x10 ,0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ); + +return 0 ; +} + +static const struct drm_display_mode rgb30panel_mode = { + .hdisplay =720 , + .hsync_start =720 +45 , + .hsync_end =720 +45 +4 , + .htotal =720 +45 +4 +45 , + .vdisplay =720 , + .vsync_start =720 +15 , + .vsync_end =720 +15 +3 , + .vtotal =720 +15 +3 +11 , + .clock =36570 , + .flags =DRM_MODE_FLAG_NHSYNC |DRM_MODE_FLAG_NVSYNC , + .width_mm =76 , + .height_mm =76 , +}; + +static const struct st7703_panel_desc rgb30panel_desc = { + .mode = &rgb30panel_mode, + .lanes =4 , + .mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_VIDEO_BURST | +MIPI_DSI_MODE_NO_EOT_PACKET |MIPI_DSI_MODE_LPM , + .format =MIPI_DSI_FMT_RGB888 , + .init_sequence = rgb30panel_init_sequence, +}; +static int st7703_enable (struct drm_panel *panel) {struct st7703 *ctx =panel_to_st7703 (panel);
@@ -694,6 +782,7 @@ static void st7703_remove(struct mipi_dsi_device *dsi)static const struct of_device_id st7703_of_match[] = { { .compatible ="anbernic,rg353v-panel-v2" , .data = &rg353v2_desc }, + { .compatible ="powkiddy,rgb30-panel" , .data = &rgb30panel_desc }, { .compatible ="rocktech,jh057n00900" , .data = &jh057n00900_panel_desc }, { .compatible ="xingbangda,xbd599" , .data = &xbd599_desc }, {/* sentinel */ }
Signature · 1 line
2.34.1
Re: [PATCH 3/5] drm/panel: st7703: Add Powkiddy RGB30 Panel Support
Hi Chris,
Quoted 7 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 4 inch panel is a 4 inch 720x720 DSI panel used in the Powkiddy RGB30 handheld gaming device. Add support for it.
TODO: The panel seems to not resume properly from suspend. I've confirmed on the other ST7703 based devices it works correctly.
Regarding drm-misc-next has improvements regarding this prompted by the PinePhone. Maybe that fixes suspend for you too?
Cheers,
-- Guido
Quoted 116 lines
Signed-off-by Chris Morgan <[email protected]>--- drivers/gpu/drm/panel/panel-sitronix-st7703.c | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+)drivers/gpu/drm/panel/panel-sitronix-st7703.c +89
-0@@ -433,6 +433,94 @@ static const struct st7703_panel_desc rg353v2_desc = { .init_sequence = rg353v2_init_sequence, }; +static int rgb30panel_init_sequence (struct st7703 *ctx) +{ +struct mipi_dsi_device *dsi =to_mipi_dsi_device (ctx->dev); + +/* Init sequence extracted from Powkiddy RGB30 BSP kernel. */ + +/* +* For some reason this specific panel must be taken out of sleep +* before the full init sequence, or else it will not display. +*/ +mipi_dsi_dcs_exit_sleep_mode (dsi); +msleep (250 ); + +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEXTC ,0xf1 ,0x12 ,0x83 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETMIPI ,0x33 ,0x81 ,0x05 ,0xf9 , +0x0e ,0x0e ,0x20 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x44 ,0x25 ,0x00 ,0x90 ,0x0a ,0x00 , +0x00 ,0x01 ,0x4f ,0x01 ,0x00 ,0x00 ,0x37 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER_EXT ,0x25 ,0x22 ,0xf0 , +0x63 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_UNKNOWN_BF ,0x02 ,0x11 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETRGBIF ,0x10 ,0x10 ,0x28 , +0x28 ,0x03 ,0xff ,0x00 ,0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETSCR ,0x73 ,0x73 ,0x50 ,0x50 , +0x00 ,0x00 ,0x12 ,0x70 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVDC ,0x46 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPANEL ,0x0b ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETCYC ,0x80 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETDISP ,0x3c ,0x12 ,0x30 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEQ ,0x07 ,0x07 ,0x0b ,0x0b , +0x03 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0xff ,0x00 , +0xc0 ,0x10 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER ,0x36 ,0x00 ,0x32 , +0x32 ,0x77 ,0xf1 ,0xcc ,0xcc ,0x77 ,0x77 ,0x33 , +0x33 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETBGP ,0x0a ,0x0a ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVCOM ,0x88 ,0x88 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP1 ,0xc8 ,0x10 ,0x0a ,0x10 , +0x0f ,0xa1 ,0x80 ,0x12 ,0x31 ,0x23 ,0x47 ,0x86 , +0xa1 ,0x80 ,0x47 ,0x08 ,0x00 ,0x00 ,0x0d ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x0d ,0x00 ,0x00 ,0x00 , +0x48 ,0x02 ,0x8b ,0xaf ,0x46 ,0x02 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x48 ,0x13 ,0x8b ,0xaf ,0x57 , +0x13 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP2 ,0x96 ,0x12 ,0x01 ,0x01 , +0x01 ,0x78 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x4f ,0x31 ,0x8b ,0xa8 ,0x31 ,0x75 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x4f ,0x20 ,0x8b ,0xa8 ,0x20 , +0x64 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x23 ,0x00 , +0x00 ,0x01 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x40 ,0xa1 ,0x80 ,0x00 ,0x00 ,0x00 , +0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGAMMA ,0x00 ,0x0a ,0x0f , +0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d ,0x10 , +0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ,0x00 ,0x0a , +0x0f ,0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d , +0x10 ,0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ); + +return 0 ; +} + +static const struct drm_display_mode rgb30panel_mode = { + .hdisplay =720 , + .hsync_start =720 +45 , + .hsync_end =720 +45 +4 , + .htotal =720 +45 +4 +45 , + .vdisplay =720 , + .vsync_start =720 +15 , + .vsync_end =720 +15 +3 , + .vtotal =720 +15 +3 +11 , + .clock =36570 , + .flags =DRM_MODE_FLAG_NHSYNC |DRM_MODE_FLAG_NVSYNC , + .width_mm =76 , + .height_mm =76 , +}; + +static const struct st7703_panel_desc rgb30panel_desc = { + .mode = &rgb30panel_mode, + .lanes =4 , + .mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_VIDEO_BURST | +MIPI_DSI_MODE_NO_EOT_PACKET |MIPI_DSI_MODE_LPM , + .format =MIPI_DSI_FMT_RGB888 , + .init_sequence = rgb30panel_init_sequence, +}; +static int st7703_enable (struct drm_panel *panel) {struct st7703 *ctx =panel_to_st7703 (panel);@@ -694,6 +782,7 @@ static void st7703_remove(struct mipi_dsi_device *dsi)static const struct of_device_id st7703_of_match[] = { { .compatible ="anbernic,rg353v-panel-v2" , .data = &rg353v2_desc }, + { .compatible ="powkiddy,rgb30-panel" , .data = &rgb30panel_desc }, { .compatible ="rocktech,jh057n00900" , .data = &jh057n00900_panel_desc }, { .compatible ="xingbangda,xbd599" , .data = &xbd599_desc }, {/* sentinel */ }Signature · 1 line
2.34.1
Re: [PATCH 3/5] drm/panel: st7703: Add Powkiddy RGB30 Panel Support
Confirmed that those pending patches DO fix the panel suspend issues. Thank you.
Quoted 134 lines · Guido Günther
Hi Chris,
Quoted 7 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 4 inch panel is a 4 inch 720x720 DSI panel used in the Powkiddy RGB30 handheld gaming device. Add support for it.
TODO: The panel seems to not resume properly from suspend. I've confirmed on the other ST7703 based devices it works correctly.
Regarding drm-misc-next has improvements regarding this prompted by the PinePhone. Maybe that fixes suspend for you too?
Cheers,
-- GuidoQuoted 116 lines
Signed-off-by Chris Morgan <[email protected]>--- drivers/gpu/drm/panel/panel-sitronix-st7703.c | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+)drivers/gpu/drm/panel/panel-sitronix-st7703.c +89
-1@@ -433,6 +433,94 @@ static const struct st7703_panel_desc rg353v2_desc = { .init_sequence = rg353v2_init_sequence, }; +static int rgb30panel_init_sequence (struct st7703 *ctx) +{ +struct mipi_dsi_device *dsi =to_mipi_dsi_device (ctx->dev); + +/* Init sequence extracted from Powkiddy RGB30 BSP kernel. */ + +/* +* For some reason this specific panel must be taken out of sleep +* before the full init sequence, or else it will not display. +*/ +mipi_dsi_dcs_exit_sleep_mode (dsi); +msleep (250 ); + +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEXTC ,0xf1 ,0x12 ,0x83 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETMIPI ,0x33 ,0x81 ,0x05 ,0xf9 , +0x0e ,0x0e ,0x20 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x44 ,0x25 ,0x00 ,0x90 ,0x0a ,0x00 , +0x00 ,0x01 ,0x4f ,0x01 ,0x00 ,0x00 ,0x37 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER_EXT ,0x25 ,0x22 ,0xf0 , +0x63 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_UNKNOWN_BF ,0x02 ,0x11 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETRGBIF ,0x10 ,0x10 ,0x28 , +0x28 ,0x03 ,0xff ,0x00 ,0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETSCR ,0x73 ,0x73 ,0x50 ,0x50 , +0x00 ,0x00 ,0x12 ,0x70 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVDC ,0x46 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPANEL ,0x0b ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETCYC ,0x80 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETDISP ,0x3c ,0x12 ,0x30 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEQ ,0x07 ,0x07 ,0x0b ,0x0b , +0x03 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0xff ,0x00 , +0xc0 ,0x10 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER ,0x36 ,0x00 ,0x32 , +0x32 ,0x77 ,0xf1 ,0xcc ,0xcc ,0x77 ,0x77 ,0x33 , +0x33 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETBGP ,0x0a ,0x0a ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVCOM ,0x88 ,0x88 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP1 ,0xc8 ,0x10 ,0x0a ,0x10 , +0x0f ,0xa1 ,0x80 ,0x12 ,0x31 ,0x23 ,0x47 ,0x86 , +0xa1 ,0x80 ,0x47 ,0x08 ,0x00 ,0x00 ,0x0d ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x0d ,0x00 ,0x00 ,0x00 , +0x48 ,0x02 ,0x8b ,0xaf ,0x46 ,0x02 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x48 ,0x13 ,0x8b ,0xaf ,0x57 , +0x13 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP2 ,0x96 ,0x12 ,0x01 ,0x01 , +0x01 ,0x78 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x4f ,0x31 ,0x8b ,0xa8 ,0x31 ,0x75 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x4f ,0x20 ,0x8b ,0xa8 ,0x20 , +0x64 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x23 ,0x00 , +0x00 ,0x01 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x40 ,0xa1 ,0x80 ,0x00 ,0x00 ,0x00 , +0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGAMMA ,0x00 ,0x0a ,0x0f , +0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d ,0x10 , +0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ,0x00 ,0x0a , +0x0f ,0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d , +0x10 ,0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ); + +return 0 ; +} + +static const struct drm_display_mode rgb30panel_mode = { + .hdisplay =720 , + .hsync_start =720 +45 , + .hsync_end =720 +45 +4 , + .htotal =720 +45 +4 +45 , + .vdisplay =720 , + .vsync_start =720 +15 , + .vsync_end =720 +15 +3 , + .vtotal =720 +15 +3 +11 , + .clock =36570 , + .flags =DRM_MODE_FLAG_NHSYNC |DRM_MODE_FLAG_NVSYNC , + .width_mm =76 , + .height_mm =76 , +}; + +static const struct st7703_panel_desc rgb30panel_desc = { + .mode = &rgb30panel_mode, + .lanes =4 , + .mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_VIDEO_BURST | +MIPI_DSI_MODE_NO_EOT_PACKET |MIPI_DSI_MODE_LPM , + .format =MIPI_DSI_FMT_RGB888 , + .init_sequence = rgb30panel_init_sequence, +}; +static int st7703_enable (struct drm_panel *panel) {struct st7703 *ctx =panel_to_st7703 (panel);@@ -694,6 +782,7 @@ static void st7703_remove(struct mipi_dsi_device *dsi)static const struct of_device_id st7703_of_match[] = { { .compatible ="anbernic,rg353v-panel-v2" , .data = &rg353v2_desc }, + { .compatible ="powkiddy,rgb30-panel" , .data = &rgb30panel_desc }, { .compatible ="rocktech,jh057n00900" , .data = &jh057n00900_panel_desc }, { .compatible ="xingbangda,xbd599" , .data = &xbd599_desc }, {/* sentinel */ } --2.34.1
Re: [PATCH 3/5] drm/panel: st7703: Add Powkiddy RGB30 Panel Support
Quoted 1 line · Chris Morgan
Confirmed that those pending patches DO fix the panel suspend issues. Thank you.
Awesome, that's great to hear! Perhaps a "Tested-by" in the original LKML thread [1] could help with having the patch pulled sooner.
Links:
[1] https://lore.kernel.org/lkml/[email protected]/T/
Quoted 136 lines · Guido Günther
Quoted 124 lines
Hi Chris,
Quoted 7 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 4 inch panel is a 4 inch 720x720 DSI panel used in the Powkiddy RGB30 handheld gaming device. Add support for it.
TODO: The panel seems to not resume properly from suspend. I've confirmed on the other ST7703 based devices it works correctly.
Regarding drm-misc-next has improvements regarding this prompted by the PinePhone. Maybe that fixes suspend for you too?
Cheers,
-- GuidoQuoted 107 lines
Signed-off-by Chris Morgan <[email protected]>--- drivers/gpu/drm/panel/panel-sitronix-st7703.c | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+)drivers/gpu/drm/panel/panel-sitronix-st7703.c +88
-0@@ -433,6 +433,94 @@ static const struct st7703_panel_desc rg353v2_desc = { .init_sequence = rg353v2_init_sequence, }; +static int rgb30panel_init_sequence (struct st7703 *ctx) +{ +struct mipi_dsi_device *dsi =to_mipi_dsi_device (ctx->dev); + +/* Init sequence extracted from Powkiddy RGB30 BSP kernel. */ + +/* +* For some reason this specific panel must be taken out of sleep +* before the full init sequence, or else it will not display. +*/ +mipi_dsi_dcs_exit_sleep_mode (dsi); +msleep (250 ); + +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEXTC ,0xf1 ,0x12 ,0x83 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETMIPI ,0x33 ,0x81 ,0x05 ,0xf9 , +0x0e ,0x0e ,0x20 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x44 ,0x25 ,0x00 ,0x90 ,0x0a ,0x00 , +0x00 ,0x01 ,0x4f ,0x01 ,0x00 ,0x00 ,0x37 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER_EXT ,0x25 ,0x22 ,0xf0 , +0x63 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_UNKNOWN_BF ,0x02 ,0x11 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETRGBIF ,0x10 ,0x10 ,0x28 , +0x28 ,0x03 ,0xff ,0x00 ,0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETSCR ,0x73 ,0x73 ,0x50 ,0x50 , +0x00 ,0x00 ,0x12 ,0x70 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVDC ,0x46 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPANEL ,0x0b ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETCYC ,0x80 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETDISP ,0x3c ,0x12 ,0x30 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETEQ ,0x07 ,0x07 ,0x0b ,0x0b , +0x03 ,0x0b ,0x00 ,0x00 ,0x00 ,0x00 ,0xff ,0x00 , +0xc0 ,0x10 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETPOWER ,0x36 ,0x00 ,0x32 , +0x32 ,0x77 ,0xf1 ,0xcc ,0xcc ,0x77 ,0x77 ,0x33 , +0x33 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETBGP ,0x0a ,0x0a ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETVCOM ,0x88 ,0x88 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP1 ,0xc8 ,0x10 ,0x0a ,0x10 , +0x0f ,0xa1 ,0x80 ,0x12 ,0x31 ,0x23 ,0x47 ,0x86 , +0xa1 ,0x80 ,0x47 ,0x08 ,0x00 ,0x00 ,0x0d ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x0d ,0x00 ,0x00 ,0x00 , +0x48 ,0x02 ,0x8b ,0xaf ,0x46 ,0x02 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x48 ,0x13 ,0x8b ,0xaf ,0x57 , +0x13 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGIP2 ,0x96 ,0x12 ,0x01 ,0x01 , +0x01 ,0x78 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x4f ,0x31 ,0x8b ,0xa8 ,0x31 ,0x75 ,0x88 ,0x88 , +0x88 ,0x88 ,0x88 ,0x4f ,0x20 ,0x8b ,0xa8 ,0x20 , +0x64 ,0x88 ,0x88 ,0x88 ,0x88 ,0x88 ,0x23 ,0x00 , +0x00 ,0x01 ,0x02 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 , +0x00 ,0x00 ,0x40 ,0xa1 ,0x80 ,0x00 ,0x00 ,0x00 , +0x00 ); +mipi_dsi_dcs_write_seq (dsi,ST7703_CMD_SETGAMMA ,0x00 ,0x0a ,0x0f , +0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d ,0x10 , +0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ,0x00 ,0x0a , +0x0f ,0x29 ,0x3b ,0x3f ,0x42 ,0x39 ,0x06 ,0x0d , +0x10 ,0x13 ,0x15 ,0x14 ,0x15 ,0x10 ,0x17 ); + +return 0 ; +} + +static const struct drm_display_mode rgb30panel_mode = { + .hdisplay =720 , + .hsync_start =720 +45 , + .hsync_end =720 +45 +4 , + .htotal =720 +45 +4 +45 , + .vdisplay =720 , + .vsync_start =720 +15 , + .vsync_end =720 +15 +3 , + .vtotal =720 +15 +3 +11 , + .clock =36570 , + .flags =DRM_MODE_FLAG_NHSYNC |DRM_MODE_FLAG_NVSYNC , + .width_mm =76 , + .height_mm =76 , +}; + +static const struct st7703_panel_desc rgb30panel_desc = { + .mode = &rgb30panel_mode, + .lanes =4 , + .mode_flags =MIPI_DSI_MODE_VIDEO |MIPI_DSI_MODE_VIDEO_BURST | +MIPI_DSI_MODE_NO_EOT_PACKET |MIPI_DSI_MODE_LPM , + .format =MIPI_DSI_FMT_RGB888 , + .init_sequence = rgb30panel_init_sequence, +}; +static int st7703_enable (struct drm_panel *panel) {struct st7703 *ctx =panel_to_st7703 (panel);@@ -694,6 +782,7 @@ static void st7703_remove(struct mipi_dsi_device *dsi)Quoted 10 lines
Quoted 9 lines
drivers/gpu/drm/panel/panel-sitronix-st7703.c +1
-1static const struct of_device_id st7703_of_match[] = { { .compatible ="anbernic,rg353v-panel-v2" , .data = &rg353v2_desc }, + { .compatible ="powkiddy,rgb30-panel" , .data = &rgb30panel_desc }, { .compatible ="rocktech,jh057n00900" , .data = &jh057n00900_panel_desc }, { .compatible ="xingbangda,xbd599" , .data = &xbd599_desc }, {/* sentinel */ } --2.34.1
Quoted 4 lines
_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip
_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip
Heiko Stübner
maintainerRe: [PATCH 3/5] drm/panel: st7703: Add Powkiddy RGB30 Panel Support
Hi,
Am Montag, 16. Oktober 2023, 18:07:52 CEST schrieb Dragan Simic:
Quoted 24 lines · Chris Morgan
Quoted 2 lines
Confirmed that those pending patches DO fix the panel suspend issues. Thank you.
Awesome, that's great to hear! Perhaps a "Tested-by" in the original LKML thread [1] could help with having the patch pulled sooner.
Links:
[1]
https://lore.kernel.org/lkml/[email protected]/T/Quoted 12 lines
Quoted 10 lines · Guido Günther
Hi Chris,
Quoted 7 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 4 inch panel is a 4 inch 720x720 DSI panel used in the Powkiddy RGB30 handheld gaming device. Add support for it.
TODO: The panel seems to not resume properly from suspend. I've confirmed on the other ST7703 based devices it works correctly.
so this TODO item could go away, right?
I can remove it when applying the patch, just want to make sure all review comments are addressed - only the suspend thing it seems.
Thanks
Heiko
Re: [PATCH 3/5] drm/panel: st7703: Add Powkiddy RGB30 Panel Support
Quoted 25 lines · Heiko Stübner
Hi,
Am Montag, 16. Oktober 2023, 18:07:52 CEST schrieb Dragan Simic:
Quoted 22 lines · Chris Morgan
Quoted 2 lines
Confirmed that those pending patches DO fix the panel suspend issues. Thank you.
Awesome, that's great to hear! Perhaps a "Tested-by" in the original LKML thread [1] could help with having the patch pulled sooner.
Links:
[1]
https://lore.kernel.org/lkml/[email protected]/T/Quoted 10 lines
Quoted 8 lines · Guido Günther
Hi Chris,
Quoted 5 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 4 inch panel is a 4 inch 720x720 DSI panel used in the Powkiddy RGB30 handheld gaming device. Add support for it.
Quoted 6 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
TODO: The panel seems to not resume properly from suspend. I've confirmed on the other ST7703 based devices it works correctly.
so this TODO item could go away, right?
I can remove it when applying the patch, just want to make sure all review comments are addressed - only the suspend thing it seems.
That is correct, but let me send a v2 of this instead. I'll remove this verbiage among other fixes. End users wanted me to see if I could get this panel to run at precisely 60hz, which I believe I am able to do with the addition of a new PLL clock in clk_rk3568. I believe I have taken every constraint detailed in the datasheet to heart for the new frequency I'll be requesting. By using the frequency of 292500000 for the VPLL I can get the panel running at 59.969hz which in my view is close enough to the ideal 59.98hz.
I also accidentally left the UART2 active even though this device has no exposed UART port, so I need to fix that too by disabling it.
Lastly I'll add my tested by to the dri-devel patches as well.
Thank you,
Chris
Quoted 6 lines
Thanks
Heiko
Heiko Stübner
maintainerRe: [PATCH 3/5] drm/panel: st7703: Add Powkiddy RGB30 Panel Support
Hi Chris,
Am Montag, 16. Oktober 2023, 20:26:58 CEST schrieb Chris Morgan:
Quoted 42 lines · Heiko Stübner
Quoted 25 lines
Hi,
Am Montag, 16. Oktober 2023, 18:07:52 CEST schrieb Dragan Simic:
Quoted 22 lines · Chris Morgan
Quoted 2 lines
Confirmed that those pending patches DO fix the panel suspend issues. Thank you.
Awesome, that's great to hear! Perhaps a "Tested-by" in the original LKML thread [1] could help with having the patch pulled sooner.
Links:
[1]
https://lore.kernel.org/lkml/[email protected]/T/Quoted 10 lines
Quoted 8 lines · Guido Günther
Hi Chris,
Quoted 5 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 4 inch panel is a 4 inch 720x720 DSI panel used in the Powkiddy RGB30 handheld gaming device. Add support for it.
Quoted 6 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
TODO: The panel seems to not resume properly from suspend. I've confirmed on the other ST7703 based devices it works correctly.
so this TODO item could go away, right?
I can remove it when applying the patch, just want to make sure all review comments are addressed - only the suspend thing it seems.That is correct, but let me send a v2 of this instead. I'll remove this verbiage among other fixes. End users wanted me to see if I could get this panel to run at precisely 60hz, which I believe I am able to do with the addition of a new PLL clock in
clk_rk3568. I believe I have taken every constraint detailed in the datasheet to heart for the new frequency I'll be requesting. By using the frequency of 292500000 for the VPLL I can get the panel running at 59.969hz which in my view is close enough to the ideal 59.98hz.
Quoted 4 lines
I also accidentally left the UART2 active even though this device has no exposed UART port, so I need to fix that too by disabling it.
Lastly I'll add my tested by to the dri-devel patches as well.
too late ;-)
Looks like your mail and me applying the series happened at a similar time and I just saw your mail.
So if you want to change the dts now, please do a followup patch.
Thanks
Heiko
PATCH 4/5 dt-bindings: arm64: rockchip: add Powkiddy RGB30
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
The Powkiddy RGB30 is a portable handheld console from Powkiddy which uses the Rockchip RK3566 SoC.
--- Documentation/devicetree/bindings/arm/rockchip.yaml | 5 +++++ 1 file changed, 5 insertions(+)
Documentation/devicetree/bindings/arm/rockchip.yaml +5 -0
@@ -669,6 +669,11 @@ properties: - const: pine64,soquartz - const: rockchip,rk3566 + - description: Powkiddy RGB30 + items: + - const: powkiddy,rgb30 + - const: rockchip,rk3566 + - description: Radxa Compute Module 3(CM3) items: - enum:
Signature · 1 line
2.34.1
Re: [PATCH 4/5] dt-bindings: arm64: rockchip: add Powkiddy RGB30
Quoted 5 lines · Chris Morgan
From: Chris Morgan <[email protected]>
The Powkiddy RGB30 is a portable handheld console from Powkiddy which uses the Rockchip RK3566 SoC.
Best regards,
Krzysztof
PATCH 5/5 arm64: dts: rockchip: add support for Powkiddy RGB30
In reply to Chris MorganFrom: Chris Morgan <[email protected]>
The Powkiddy RGB30 is a portable game device based on the Rockchip RK3566 SoC. It has GPIO buttons on the face and sides for input, stereo speakers, a 720x720 4 inch DSI display, a USB-C host port and a USB-C peripheral port, dual SD card slots, WiFi, Bluetooth, and 1GB of RAM.
Working/Tested:
- SDMMC
- UART (for debugging)
- Buttons
- Charging/battery/PMIC
- Speaker/Headphones
- USB
- WiFi
- Bluetooth
- Display (at 59.04hz)
Not Working/TODO:
- Display does not resume from suspend properly. I'm working with the manufacturer to resolve this.
--- arch/arm64/boot/dts/rockchip/Makefile | 1 + .../dts/rockchip/rk3566-powkiddy-rgb30.dts | 152 ++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts
arch/arm64/boot/dts/rockchip/Makefile +1 -0
@@ -77,6 +77,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg353vs.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-anbernic-rg503.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.1.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-pinenote-v1.2.dtb +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-powkiddy-rgb30.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-a.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-quartz64-b.dtb dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3566-radxa-cm3-io.dtb
arch/arm64/boot/dts/rockchip/rk3566-powkiddy-rgb30.dts new file +152 -0
152 lines not on this page · raw message
Signature · 1 line
2.34.1
Re: (subset) [PATCH 0/5] Add Support for RK3566 Powkiddy RGB30
In reply to Chris MorganQuoted 4 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Add support for the Powkiddy RGB30 handheld gaming console.
Quoted 8 lines
Chris Morgan (5):
dt-bindings: vendor-prefixes: document Powkiddy
dt-bindings: panel: Add Powkiddy RGB30 panel compatible drm/panel: st7703: Add Powkiddy RGB30 Panel Support
dt-bindings: arm64: rockchip: add Powkiddy RGB30
arm64: dts: rockchip: add support for Powkiddy RGB30[...]
Applied, thanks!
[1/5] dt-bindings: vendor-prefixes: document Powkiddy
commit: 00e395c8edf7fb6fa0830125d91c2b4bc381eefd
[2/5] dt-bindings: panel: Add Powkiddy RGB30 panel compatible
commit: daee0320a13724e5a584726b693eee87bbd96172
[3/5] drm/panel: st7703: Add Powkiddy RGB30 Panel Support
commit: 636a989eb4d022e1756009592445aedaaf7424d8Best regards,
Signature · 1 line
Heiko Stuebner <[email protected]>
Re: (subset) [PATCH 0/5] Add Support for RK3566 Powkiddy RGB30
In reply to Chris MorganQuoted 4 lines · Chris Morgan
From: Chris Morgan <[email protected]>
Add support for the Powkiddy RGB30 handheld gaming console.
Quoted 8 lines
Chris Morgan (5):
dt-bindings: vendor-prefixes: document Powkiddy
dt-bindings: panel: Add Powkiddy RGB30 panel compatible drm/panel: st7703: Add Powkiddy RGB30 Panel Support
dt-bindings: arm64: rockchip: add Powkiddy RGB30
arm64: dts: rockchip: add support for Powkiddy RGB30[...]
Applied, thanks!
[4/5] dt-bindings: arm64: rockchip: add Powkiddy RGB30
commit: 64d0de4f65c2951ccdc7a7aebe8a7e3455946f5f
[5/5] arm64: dts: rockchip: add support for Powkiddy RGB30
commit: 1e9ac3e8a6a9d4da9efbad2d8e95cc1140e0e23fBest regards,
Signature · 1 line
Heiko Stuebner <[email protected]>