2023-07-14 01:57:56

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 00/19] Sitronix ST7789V improvements

Hi,

This adds panel support for Inanbo T28CP45TN89, which I found inside of a
handheld thermal camera. The panel is based on the st7789v controller. All
information is based on reverse engineering. I also appended the series
from Miquel Raynal adding EDT ET028013DMA panel support, so that I could
easily test it with my SPI_NO_RX setup. They are slightly different due
to rebasing.

Changes since PATCHv2:
* https://lore.kernel.org/all/[email protected]/
* https://lore.kernel.org/all/[email protected]/
* Add Rob Herring's R-b for the DT binding
* Make panel info "static const"
* Add Michael Riesch's R-b to all my patches
* Rebase to 6.5-rc1
* Append Miquel's series

Changes since PATCHv1:
* https://lore.kernel.org/all/[email protected]/
* Apply DT binding changes requested by Krzysztof Kozlowski and his Ack
* I changed the driver patches to avoid code duplication and splitted
the code a bit more

Greetings,

-- Sebastian

Miquel Raynal (6):
dt-bindings: display: st7789v: Add the edt,et028013dma panel
compatible
dt-bindings: display: st7789v: bound the number of Rx data lines
drm/panel: sitronix-st7789v: Use 9 bits per spi word by default
drm/panel: sitronix-st7789v: Clarify a definition
drm/panel: sitronix-st7789v: Add EDT ET028013DMA panel support
drm/panel: sitronix-st7789v: Check display ID

Sebastian Reichel (13):
dt-bindings: vendor-prefixes: add Inanbo
dt-bindings: display: st7789v: add Inanbo T28CP45TN89
drm/panel: sitronix-st7789v: add SPI ID table
drm/panel: sitronix-st7789v: remove unused constants
drm/panel: sitronix-st7789v: make reset GPIO optional
drm/panel: sitronix-st7789v: simplify st7789v_spi_write
drm/panel: sitronix-st7789v: improve error handling
drm/panel: sitronix-st7789v: avoid hardcoding mode info
drm/panel: sitronix-st7789v: avoid hardcoding panel size
drm/panel: sitronix-st7789v: add media bus format
drm/panel: sitronix-st7789v: avoid hardcoding invert mode
drm/panel: sitronix-st7789v: avoid hardcoding polarity info
drm/panel: sitronix-st7789v: add Inanbo T28CP45TN89 support

.../display/panel/sitronix,st7789v.yaml | 10 +-
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
.../gpu/drm/panel/panel-sitronix-st7789v.c | 262 +++++++++++++++---
3 files changed, 237 insertions(+), 37 deletions(-)

--
2.40.1



2023-07-14 01:58:23

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 12/19] drm/panel: sitronix-st7789v: avoid hardcoding polarity info

Add polarity information via mode and bus flags, so that they are no
longer hardcoded and forward the information to the DRM stack. This is
required for adding panels with different settings.

Reviewed-by: Michael Riesch <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
.../gpu/drm/panel/panel-sitronix-st7789v.c | 22 +++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
index ee84d7a9019e..94c805c79d05 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
@@ -28,6 +28,7 @@
#define ST7789V_RGBCTRL_VSYNC_HIGH BIT(3)
#define ST7789V_RGBCTRL_HSYNC_HIGH BIT(2)
#define ST7789V_RGBCTRL_PCLK_HIGH BIT(1)
+#define ST7789V_RGBCTRL_DE_LOW BIT(0)
#define ST7789V_RGBCTRL_VBP(n) ((n) & 0x7f)
#define ST7789V_RGBCTRL_HBP(n) ((n) & 0x1f)

@@ -112,6 +113,7 @@
struct st7789_panel_info {
const struct drm_display_mode *mode;
u32 bus_format;
+ u32 bus_flags;
bool invert_mode;
};

@@ -168,12 +170,15 @@ static const struct drm_display_mode default_mode = {
.vtotal = 320 + 8 + 4 + 4,
.width_mm = 61,
.height_mm = 103,
+ .flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
};

static const struct st7789_panel_info default_panel = {
.mode = &default_mode,
.invert_mode = true,
.bus_format = MEDIA_BUS_FMT_RGB666_1X18,
+ .bus_flags = DRM_BUS_FLAG_DE_HIGH |
+ DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE,
};

static int st7789v_get_modes(struct drm_panel *panel,
@@ -198,6 +203,7 @@ static int st7789v_get_modes(struct drm_panel *panel,
connector->display_info.bpc = 6;
connector->display_info.width_mm = ctx->info->mode->width_mm;
connector->display_info.height_mm = ctx->info->mode->height_mm;
+ connector->display_info.bus_flags = ctx->info->bus_flags;
drm_display_info_set_bus_formats(&connector->display_info,
&ctx->info->bus_format, 1);

@@ -207,7 +213,7 @@ static int st7789v_get_modes(struct drm_panel *panel,
static int st7789v_prepare(struct drm_panel *panel)
{
struct st7789v *ctx = panel_to_st7789v(panel);
- u8 pixel_fmt;
+ u8 pixel_fmt, polarity;
int ret;

switch (ctx->info->bus_format) {
@@ -225,6 +231,16 @@ static int st7789v_prepare(struct drm_panel *panel)

pixel_fmt = (pixel_fmt << 4) | pixel_fmt;

+ polarity = 0;
+ if (ctx->info->mode->flags & DRM_MODE_FLAG_PVSYNC)
+ polarity |= ST7789V_RGBCTRL_VSYNC_HIGH;
+ if (ctx->info->mode->flags & DRM_MODE_FLAG_PHSYNC)
+ polarity |= ST7789V_RGBCTRL_HSYNC_HIGH;
+ if (ctx->info->bus_flags & DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE)
+ polarity |= ST7789V_RGBCTRL_PCLK_HIGH;
+ if (ctx->info->bus_flags & DRM_BUS_FLAG_DE_LOW)
+ polarity |= ST7789V_RGBCTRL_DE_LOW;
+
ret = regulator_enable(ctx->power);
if (ret)
return ret;
@@ -340,9 +356,7 @@ static int st7789v_prepare(struct drm_panel *panel)
ST7789V_TEST(ret, st7789v_write_command(ctx, ST7789V_RGBCTRL_CMD));
ST7789V_TEST(ret, st7789v_write_data(ctx, ST7789V_RGBCTRL_WO |
ST7789V_RGBCTRL_RCM(2) |
- ST7789V_RGBCTRL_VSYNC_HIGH |
- ST7789V_RGBCTRL_HSYNC_HIGH |
- ST7789V_RGBCTRL_PCLK_HIGH));
+ polarity));
ST7789V_TEST(ret, st7789v_write_data(ctx, ST7789V_RGBCTRL_VBP(8)));
ST7789V_TEST(ret, st7789v_write_data(ctx, ST7789V_RGBCTRL_HBP(20)));

--
2.40.1


2023-07-14 01:58:49

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 16/19] drm/panel: sitronix-st7789v: Use 9 bits per spi word by default

From: Miquel Raynal <[email protected]>

The Sitronix controller expects 9-bit words, provide this as default at
probe time rather than specifying this in each and every access.

Signed-off-by: Miquel Raynal <[email protected]>
Reviewed-by: Sam Ravnborg <[email protected]>
Acked-by: Maxime Ripard <[email protected]>
Reviewed-by: Sebastian Reichel <[email protected]>
Tested-by: Sebastian Reichel <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
drivers/gpu/drm/panel/panel-sitronix-st7789v.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
index 55e475471f43..33bdf9ee4085 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
@@ -142,7 +142,6 @@ static int st7789v_spi_write(struct st7789v *ctx, enum st7789v_prefix prefix,
u16 txbuf = ((prefix & 1) << 8) | data;

xfer.tx_buf = &txbuf;
- xfer.bits_per_word = 9;
xfer.len = sizeof(txbuf);

return spi_sync_transfer(ctx->spi, &xfer, 1);
@@ -436,6 +435,11 @@ static int st7789v_probe(struct spi_device *spi)
spi_set_drvdata(spi, ctx);
ctx->spi = spi;

+ spi->bits_per_word = 9;
+ ret = spi_setup(spi);
+ if (ret < 0)
+ return dev_err_probe(&spi->dev, ret, "Failed to setup spi\n");
+
ctx->info = device_get_match_data(&spi->dev);

drm_panel_init(&ctx->panel, dev, &st7789v_drm_funcs,
--
2.40.1


2023-07-14 01:58:54

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 04/19] drm/panel: sitronix-st7789v: remove unused constants

ST7789V_COLMOD_RGB_FMT_18BITS and ST7789V_COLMOD_CTRL_FMT_18BITS
are unused in favour of MIPI_DCS_PIXEL_FMT_18BIT, remove them.

Reviewed-by: Michael Riesch <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
drivers/gpu/drm/panel/panel-sitronix-st7789v.c | 3 ---
1 file changed, 3 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
index e4d8dea1db36..f7566551b5e2 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
@@ -15,9 +15,6 @@
#include <drm/drm_modes.h>
#include <drm/drm_panel.h>

-#define ST7789V_COLMOD_RGB_FMT_18BITS (6 << 4)
-#define ST7789V_COLMOD_CTRL_FMT_18BITS (6 << 0)
-
#define ST7789V_RAMCTRL_CMD 0xb0
#define ST7789V_RAMCTRL_RM_RGB BIT(4)
#define ST7789V_RAMCTRL_DM_RGB BIT(0)
--
2.40.1


2023-07-14 01:58:58

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 02/19] dt-bindings: display: st7789v: add Inanbo T28CP45TN89

Add compatible value for Inanbo t28cp45tn89 and make reset GPIO non
mandatory, since it might not be connected to the CPU.

Reviewed-by: Michael Riesch <[email protected]>
Acked-by: Rob Herring <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
.../devicetree/bindings/display/panel/sitronix,st7789v.yaml | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml b/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml
index fa6556363cca..75e935f0547b 100644
--- a/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml
+++ b/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml
@@ -15,7 +15,9 @@ allOf:

properties:
compatible:
- const: sitronix,st7789v
+ enum:
+ - inanbo,t28cp45tn89-v17
+ - sitronix,st7789v

reg: true
reset-gpios: true
@@ -33,7 +35,6 @@ properties:
required:
- compatible
- reg
- - reset-gpios
- power-supply

unevaluatedProperties: false
--
2.40.1


2023-07-14 01:58:58

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 13/19] drm/panel: sitronix-st7789v: add Inanbo T28CP45TN89 support

UNI-T UTi260b has a Inanbo T28CP45TN89 v17 panel. I could not find
proper documentation for the panel apart from a technical drawing, but
according to the vendor U-Boot it is based on a Sitronix st7789v chip.
I generated the init sequence by modifying the default one until proper
graphics output has been seen on the device.

Reviewed-by: Michael Riesch <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
.../gpu/drm/panel/panel-sitronix-st7789v.c | 25 +++++++++++++++++++
1 file changed, 25 insertions(+)

diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
index 94c805c79d05..55e475471f43 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
@@ -173,6 +173,21 @@ static const struct drm_display_mode default_mode = {
.flags = DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC,
};

+static const struct drm_display_mode t28cp45tn89_mode = {
+ .clock = 6008,
+ .hdisplay = 240,
+ .hsync_start = 240 + 38,
+ .hsync_end = 240 + 38 + 10,
+ .htotal = 240 + 38 + 10 + 10,
+ .vdisplay = 320,
+ .vsync_start = 320 + 8,
+ .vsync_end = 320 + 8 + 4,
+ .vtotal = 320 + 8 + 4 + 4,
+ .width_mm = 43,
+ .height_mm = 57,
+ .flags = DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_NVSYNC,
+};
+
static const struct st7789_panel_info default_panel = {
.mode = &default_mode,
.invert_mode = true,
@@ -181,6 +196,14 @@ static const struct st7789_panel_info default_panel = {
DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE,
};

+static const struct st7789_panel_info t28cp45tn89_panel = {
+ .mode = &t28cp45tn89_mode,
+ .invert_mode = false,
+ .bus_format = MEDIA_BUS_FMT_RGB565_1X16,
+ .bus_flags = DRM_BUS_FLAG_DE_HIGH |
+ DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE,
+};
+
static int st7789v_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{
@@ -446,12 +469,14 @@ static void st7789v_remove(struct spi_device *spi)

static const struct spi_device_id st7789v_spi_id[] = {
{ "st7789v", (unsigned long) &default_panel },
+ { "t28cp45tn89-v17", (unsigned long) &t28cp45tn89_panel },
{ }
};
MODULE_DEVICE_TABLE(spi, st7789v_spi_id);

static const struct of_device_id st7789v_of_match[] = {
{ .compatible = "sitronix,st7789v", .data = &default_panel },
+ { .compatible = "inanbo,t28cp45tn89-v17", .data = &t28cp45tn89_panel },
{ }
};
MODULE_DEVICE_TABLE(of, st7789v_of_match);
--
2.40.1


2023-07-14 01:58:59

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 15/19] dt-bindings: display: st7789v: bound the number of Rx data lines

From: Miquel Raynal <[email protected]>

The ST7789V LCD controller supports regular SPI wiring, as well as no Rx
data line at all. The operating system needs to know whether it can read
registers from the device or not. Let's detail this specific design
possibility by bounding the spi-rx-bus-width property.

Signed-off-by: Miquel Raynal <[email protected]>
Acked-by: Krzysztof Kozlowski <[email protected]>
Reviewed-by: Sebastian Reichel <[email protected]>
Tested-by: Sebastian Reichel <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
.../devicetree/bindings/display/panel/sitronix,st7789v.yaml | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml b/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml
index 9f4157b02b84..905c064cd106 100644
--- a/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml
+++ b/Documentation/devicetree/bindings/display/panel/sitronix,st7789v.yaml
@@ -29,6 +29,10 @@ properties:
spi-cpha: true
spi-cpol: true

+ spi-rx-bus-width:
+ minimum: 0
+ maximum: 1
+
dc-gpios:
maxItems: 1
description: DCX pin, Display data/command selection pin in parallel interface
--
2.40.1


2023-07-14 01:58:59

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 06/19] drm/panel: sitronix-st7789v: simplify st7789v_spi_write

st7789v_spi_write initializes a message with just
a single transfer, spi_sync_transfer can be used
for that.

Reviewed-by: Michael Riesch <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
drivers/gpu/drm/panel/panel-sitronix-st7789v.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
index 1d43b8cc1647..6290bd49d055 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7789v.c
@@ -129,17 +129,13 @@ static int st7789v_spi_write(struct st7789v *ctx, enum st7789v_prefix prefix,
u8 data)
{
struct spi_transfer xfer = { };
- struct spi_message msg;
u16 txbuf = ((prefix & 1) << 8) | data;

- spi_message_init(&msg);
-
xfer.tx_buf = &txbuf;
xfer.bits_per_word = 9;
xfer.len = sizeof(txbuf);

- spi_message_add_tail(&xfer, &msg);
- return spi_sync(ctx->spi, &msg);
+ return spi_sync_transfer(ctx->spi, &xfer, 1);
}

static int st7789v_write_command(struct st7789v *ctx, u8 cmd)
--
2.40.1


2023-07-14 01:59:39

by Sebastian Reichel

[permalink] [raw]
Subject: [PATCH v3 01/19] dt-bindings: vendor-prefixes: add Inanbo

Shenzhen INANBO Electronic Technology Co., Ltd. manufacturers TFT/OLED
LCD panels.

Reviewed-by: Michael Riesch <[email protected]>
Acked-by: Krzysztof Kozlowski <[email protected]>
Signed-off-by: Sebastian Reichel <[email protected]>
---
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 af60bf1a6664..1e2e51401dc5 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -617,6 +617,8 @@ patternProperties:
description: Imagination Technologies Ltd.
"^imi,.*":
description: Integrated Micro-Electronics Inc.
+ "^inanbo,.*":
+ description: Shenzhen INANBO Electronic Technology Co., Ltd.
"^incircuit,.*":
description: In-Circuit GmbH
"^indiedroid,.*":
--
2.40.1


2023-07-15 15:56:25

by Miquel Raynal

[permalink] [raw]
Subject: Re: [PATCH v3 00/19] Sitronix ST7789V improvements

Hi Sebastian,

+ Thomas

[email protected] wrote on Fri, 14 Jul 2023 03:37:37 +0200:

> Hi,
>
> This adds panel support for Inanbo T28CP45TN89, which I found inside of a
> handheld thermal camera. The panel is based on the st7789v controller. All
> information is based on reverse engineering. I also appended the series
> from Miquel Raynal adding EDT ET028013DMA panel support, so that I could
> easily test it with my SPI_NO_RX setup. They are slightly different due
> to rebasing.

Thanks a lot! I'll continue following the series and provide my help
when required.

Cheers,
Miquèl

>
> Changes since PATCHv2:
> * https://lore.kernel.org/all/[email protected]/
> * https://lore.kernel.org/all/[email protected]/
> * Add Rob Herring's R-b for the DT binding
> * Make panel info "static const"
> * Add Michael Riesch's R-b to all my patches
> * Rebase to 6.5-rc1
> * Append Miquel's series
>
> Changes since PATCHv1:
> * https://lore.kernel.org/all/[email protected]/
> * Apply DT binding changes requested by Krzysztof Kozlowski and his Ack
> * I changed the driver patches to avoid code duplication and splitted
> the code a bit more
>
> Greetings,
>
> -- Sebastian
>
> Miquel Raynal (6):
> dt-bindings: display: st7789v: Add the edt,et028013dma panel
> compatible
> dt-bindings: display: st7789v: bound the number of Rx data lines
> drm/panel: sitronix-st7789v: Use 9 bits per spi word by default
> drm/panel: sitronix-st7789v: Clarify a definition
> drm/panel: sitronix-st7789v: Add EDT ET028013DMA panel support
> drm/panel: sitronix-st7789v: Check display ID
>
> Sebastian Reichel (13):
> dt-bindings: vendor-prefixes: add Inanbo
> dt-bindings: display: st7789v: add Inanbo T28CP45TN89
> drm/panel: sitronix-st7789v: add SPI ID table
> drm/panel: sitronix-st7789v: remove unused constants
> drm/panel: sitronix-st7789v: make reset GPIO optional
> drm/panel: sitronix-st7789v: simplify st7789v_spi_write
> drm/panel: sitronix-st7789v: improve error handling
> drm/panel: sitronix-st7789v: avoid hardcoding mode info
> drm/panel: sitronix-st7789v: avoid hardcoding panel size
> drm/panel: sitronix-st7789v: add media bus format
> drm/panel: sitronix-st7789v: avoid hardcoding invert mode
> drm/panel: sitronix-st7789v: avoid hardcoding polarity info
> drm/panel: sitronix-st7789v: add Inanbo T28CP45TN89 support
>
> .../display/panel/sitronix,st7789v.yaml | 10 +-
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> .../gpu/drm/panel/panel-sitronix-st7789v.c | 262 +++++++++++++++---
> 3 files changed, 237 insertions(+), 37 deletions(-)
>

2023-08-01 08:57:15

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH v3 00/19] Sitronix ST7789V improvements

Hi,

On Fri, 14 Jul 2023 03:37:37 +0200, Sebastian Reichel wrote:
> This adds panel support for Inanbo T28CP45TN89, which I found inside of a
> handheld thermal camera. The panel is based on the st7789v controller. All
> information is based on reverse engineering. I also appended the series
> from Miquel Raynal adding EDT ET028013DMA panel support, so that I could
> easily test it with my SPI_NO_RX setup. They are slightly different due
> to rebasing.
>
> [...]

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

[01/19] dt-bindings: vendor-prefixes: add Inanbo
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=b93e0e203e27492a2277169e05ac59afb9bf7fcd
[02/19] dt-bindings: display: st7789v: add Inanbo T28CP45TN89
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=ff984a81cf601a68ba99a9c3264145f4d931783d
[03/19] drm/panel: sitronix-st7789v: add SPI ID table
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=11649154ec46f1c7f7c58bac22e2c5927ca6b6a2
[04/19] drm/panel: sitronix-st7789v: remove unused constants
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=c2974f43b1237e0c985760156bc3ca4dccbb5243
[05/19] drm/panel: sitronix-st7789v: make reset GPIO optional
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=b6b65e45e09a2e940e48722fa0bfdf16e6f4edf8
[06/19] drm/panel: sitronix-st7789v: simplify st7789v_spi_write
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=fbad26dcb657830e59ba2ca5eaba6be0019b97f9
[07/19] drm/panel: sitronix-st7789v: improve error handling
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=bc2aa99b2306bc9d91586bc9187bfef4e61d3882
[08/19] drm/panel: sitronix-st7789v: avoid hardcoding mode info
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=9b4454fa2528c617b5986517c9c73e50e30d237d
[09/19] drm/panel: sitronix-st7789v: avoid hardcoding panel size
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=4098d1867f27de2443c33e116b064ad3082aecb9
[10/19] drm/panel: sitronix-st7789v: add media bus format
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=a4b563b1d19dea9de366f81cae6342d80b663a45
[11/19] drm/panel: sitronix-st7789v: avoid hardcoding invert mode
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=7a6288726cf6bc0fa1bca0f24922a06425b84bf1
[12/19] drm/panel: sitronix-st7789v: avoid hardcoding polarity info
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=e4572f99f8a7dfd8a081c9135943ab82abe6f692
[13/19] drm/panel: sitronix-st7789v: add Inanbo T28CP45TN89 support
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=a411558cc14309073616e72d259083602585b296
[14/19] dt-bindings: display: st7789v: Add the edt,et028013dma panel compatible
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=893cfba7c56aa3fed34935b6fbc14a008c3b8172
[15/19] dt-bindings: display: st7789v: bound the number of Rx data lines
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=9943981aa3ab7841186827fce2177279c766b6df
[16/19] drm/panel: sitronix-st7789v: Use 9 bits per spi word by default
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=6b00e72e4bee08048379a6365251b195b8a946d1
[17/19] drm/panel: sitronix-st7789v: Clarify a definition
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=a368b40836e7fc4f24dbb0fcfb9dedcde1dcaa38
[18/19] drm/panel: sitronix-st7789v: Add EDT ET028013DMA panel support
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=71f739082160b5e4def3a7083dc25583cc195d04
[19/19] drm/panel: sitronix-st7789v: Check display ID
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=290cdd7959a734a0ef20ec096af7810177c4b9f8

--
Neil