mirror of
https://github.com/torvalds/linux.git
synced 2025-11-02 17:49:03 +02:00
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 <michael.riesch@wolfvision.net> Signed-off-by: Sebastian Reichel <sre@kernel.org> Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> Link: https://patchwork.freedesktop.org/patch/msgid/20230714013756.1546769-14-sre@kernel.org
This commit is contained in:
parent
e4572f99f8
commit
a411558cc1
1 changed files with 25 additions and 0 deletions
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue