diff --git a/arch/arm64/boot/dts/qcom/msm8939-huawei-kiwi.dts b/arch/arm64/boot/dts/qcom/msm8939-huawei-kiwi.dts index f037987bd988db..0e4455b94bd9b6 100644 --- a/arch/arm64/boot/dts/qcom/msm8939-huawei-kiwi.dts +++ b/arch/arm64/boot/dts/qcom/msm8939-huawei-kiwi.dts @@ -240,6 +240,7 @@ panel@0 { compatible = "huawei,kiwi-panel"; + //compatible = "huawei,kiwi-auo-otm1901a"; reg = <0>; vsp-supply = <®_lcd_pos>; diff --git a/drivers/gpu/drm/panel/msm8916-generated/Kconfig b/drivers/gpu/drm/panel/msm8916-generated/Kconfig index ac026ebf0be973..aa1214916346f9 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/Kconfig +++ b/drivers/gpu/drm/panel/msm8916-generated/Kconfig @@ -29,6 +29,10 @@ config DRM_PANEL_HUAWEI_BOE_OTM8019A tristate "Huawei BOE OTM8019A" default DRM_PANEL_MSM8916_GENERATED +config DRM_PANEL_HUAWEI_KIWI_AUO_OTM1901A + tristate "Huawei KIWI AUO OTM1901A" + default DRM_PANEL_MSM8916_GENERATED + config DRM_PANEL_HUAWEI_KIWI_CMI_NT35532 tristate "Huawei KIWI CMI NT35532" default DRM_PANEL_MSM8916_GENERATED diff --git a/drivers/gpu/drm/panel/msm8916-generated/Makefile b/drivers/gpu/drm/panel/msm8916-generated/Makefile index 272d0cc9b8b860..116972ca26bab2 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/Makefile +++ b/drivers/gpu/drm/panel/msm8916-generated/Makefile @@ -4,6 +4,7 @@ obj-$(CONFIG_DRM_PANEL_ALCATEL_IDOL3_R63315) += panel-alcatel-idol3-r63315.o obj-$(CONFIG_DRM_PANEL_ASUS_Z00L_OTM1284A) += panel-asus-z00l-otm1284a.o obj-$(CONFIG_DRM_PANEL_ASUS_Z010D_R69339) += panel-asus-z010d-r69339.o obj-$(CONFIG_DRM_PANEL_HUAWEI_BOE_OTM8019A) += panel-huawei-boe-otm8019a.o +obj-$(CONFIG_DRM_PANEL_HUAWEI_KIWI_AUO_OTM1901A) += panel-huawei-kiwi-auo-otm1901a.o obj-$(CONFIG_DRM_PANEL_HUAWEI_KIWI_CMI_NT35532) += panel-huawei-kiwi-cmi-nt35532.o obj-$(CONFIG_DRM_PANEL_HUAWEI_KIWI_TIANMA_NT35596) += panel-huawei-kiwi-tianma-nt35596.o obj-$(CONFIG_DRM_PANEL_HUAWEI_TIANMA_NT35521) += panel-huawei-tianma-nt35521.o diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c index b6fea9cd4fd844..9867ed80eb7627 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-auo-hx8394d.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c index 76a68f38569d5d..0aee7395ed4ce0 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-nt35596.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c index 1ba418d5c5e7ac..b40d28df6594bc 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-alcatel-idol3-r63315.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c index b8d79efa0b779b..5ad53aff52eb82 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z00l-otm1284a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c index c3587ff64ad669..a81bdc0bfe18df 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-asus-z010d-r69339.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c index 502f7555b09a21..6fcc9bf177ca2c 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-boe-otm8019a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-auo-otm1901a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-auo-otm1901a.c new file mode 100644 index 00000000000000..f885eb690a3247 --- /dev/null +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-auo-otm1901a.c @@ -0,0 +1,652 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright (c) 2023 FIXME +// Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: +// Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +struct auo_otm1901a_5p5xa { + struct drm_panel panel; + struct mipi_dsi_device *dsi; + struct regulator_bulk_data supplies[2]; + struct gpio_desc *reset_gpio; + bool prepared; +}; + +static inline +struct auo_otm1901a_5p5xa *to_auo_otm1901a_5p5xa(struct drm_panel *panel) +{ + return container_of(panel, struct auo_otm1901a_5p5xa, panel); +} + +#define dsi_generic_write_seq(dsi, seq...) do { \ + static const u8 d[] = { seq }; \ + int ret; \ + ret = mipi_dsi_generic_write(dsi, d, ARRAY_SIZE(d)); \ + if (ret < 0) \ + return ret; \ + } while (0) + +#define dsi_dcs_write_seq(dsi, seq...) do { \ + static const u8 d[] = { seq }; \ + int ret; \ + ret = mipi_dsi_dcs_write_buffer(dsi, d, ARRAY_SIZE(d)); \ + if (ret < 0) \ + return ret; \ + } while (0) + +static void auo_otm1901a_5p5xa_reset(struct auo_otm1901a_5p5xa *ctx) +{ + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + usleep_range(5000, 6000); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + usleep_range(5000, 6000); + gpiod_set_value_cansleep(ctx->reset_gpio, 0); + usleep_range(15000, 16000); +} + +static int auo_otm1901a_5p5xa_on(struct auo_otm1901a_5p5xa *ctx) +{ + struct mipi_dsi_device *dsi = ctx->dsi; + struct device *dev = &dsi->dev; + int ret; + + dsi->mode_flags |= MIPI_DSI_MODE_LPM; + + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xff, 0x19, 0x01, 0x01, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0xff, 0x19, 0x01); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x1c, 0x33); + dsi_generic_write_seq(dsi, 0x00, 0xa0); + dsi_generic_write_seq(dsi, 0xc1, 0xe8); + dsi_generic_write_seq(dsi, 0x00, 0xa7); + dsi_generic_write_seq(dsi, 0xc1, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xc0, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01); + dsi_generic_write_seq(dsi, 0x00, 0xc0); + dsi_generic_write_seq(dsi, 0xc0, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x01); + dsi_generic_write_seq(dsi, 0x00, 0x9a); + dsi_generic_write_seq(dsi, 0xc0, 0x1e); + dsi_generic_write_seq(dsi, 0x00, 0xac); + dsi_generic_write_seq(dsi, 0xc0, 0x06); + dsi_generic_write_seq(dsi, 0x00, 0xdc); + dsi_generic_write_seq(dsi, 0xc0, 0x06); + dsi_generic_write_seq(dsi, 0x00, 0x81); + dsi_generic_write_seq(dsi, 0xa5, 0x06); + dsi_generic_write_seq(dsi, 0x00, 0x82); + dsi_generic_write_seq(dsi, 0xc4, 0xf0); + dsi_generic_write_seq(dsi, 0x00, 0x92); + dsi_generic_write_seq(dsi, 0xe9, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xf3, 0x01); + dsi_generic_write_seq(dsi, 0x00, 0x93); + dsi_generic_write_seq(dsi, 0xc5, 0x1e); + dsi_generic_write_seq(dsi, 0x00, 0x95); + dsi_generic_write_seq(dsi, 0xc5, 0x32); + dsi_generic_write_seq(dsi, 0x00, 0x97); + dsi_generic_write_seq(dsi, 0xc5, 0x19); + dsi_generic_write_seq(dsi, 0x00, 0x99); + dsi_generic_write_seq(dsi, 0xc5, 0x2d); + dsi_generic_write_seq(dsi, 0x00, 0x9b); + dsi_generic_write_seq(dsi, 0xc5, 0x44, 0x40); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xd8, 0x1f, 0x1f); + dsi_generic_write_seq(dsi, 0x00, 0xb3); + dsi_generic_write_seq(dsi, 0xc0, 0xcc); + dsi_generic_write_seq(dsi, 0x00, 0xbc); + dsi_generic_write_seq(dsi, 0xc0, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x84); + dsi_generic_write_seq(dsi, 0xc4, 0x22); + dsi_generic_write_seq(dsi, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0xc4, 0x38); + dsi_generic_write_seq(dsi, 0x00, 0x94); + dsi_generic_write_seq(dsi, 0xc1, 0x84); + dsi_generic_write_seq(dsi, 0x00, 0x98); + dsi_generic_write_seq(dsi, 0xc1, 0x74); + dsi_generic_write_seq(dsi, 0x00, 0xcd); + dsi_generic_write_seq(dsi, 0xf5, 0x19); + dsi_generic_write_seq(dsi, 0x00, 0xdb); + dsi_generic_write_seq(dsi, 0xf5, 0x19); + dsi_generic_write_seq(dsi, 0x00, 0xf5); + dsi_generic_write_seq(dsi, 0xc1, 0x40); + dsi_generic_write_seq(dsi, 0x00, 0xb9); + dsi_generic_write_seq(dsi, 0xc0, 0x11); + dsi_generic_write_seq(dsi, 0x00, 0x8d); + dsi_generic_write_seq(dsi, 0xf5, 0x20); + dsi_generic_write_seq(dsi, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0xc0, + 0x00, 0x86, 0x00, 0x0a, 0x0a, 0x00, 0x86, 0x0a, + 0x0a, 0x00, 0x86, 0x00, 0x0a, 0x0a); + dsi_generic_write_seq(dsi, 0x00, 0xf0); + dsi_generic_write_seq(dsi, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0x00, 0xa0); + dsi_generic_write_seq(dsi, 0xc0, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x1e, 0x06); + dsi_generic_write_seq(dsi, 0x00, 0xd0); + dsi_generic_write_seq(dsi, 0xc0, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x1e, 0x06); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xc2, 0x82, 0x00, 0x3d, 0x40); + dsi_generic_write_seq(dsi, 0x00, 0xb0); + dsi_generic_write_seq(dsi, 0xc2, + 0x01, 0x00, 0x45, 0x43, 0x01, 0x01, 0x45, 0x43); + dsi_generic_write_seq(dsi, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0xc3, + 0x84, 0x04, 0x01, 0x00, 0x02, 0x87, 0x83, 0x04, + 0x01, 0x00, 0x02, 0x87); + dsi_generic_write_seq(dsi, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0xcc, + 0x09, 0x0d, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x0e, 0x28, 0x28, 0x28, 0x28); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xcc, + 0x0d, 0x09, 0x12, 0x11, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, 0x0e, 0x28, 0x28, 0x28, 0x28); + dsi_generic_write_seq(dsi, 0x00, 0xa0); + dsi_generic_write_seq(dsi, 0xcc, + 0x1d, 0x1e, 0x1f, 0x19, 0x1a, 0x1b, 0x1c, 0x20, + 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27); + dsi_generic_write_seq(dsi, 0x00, 0xb0); + dsi_generic_write_seq(dsi, 0xcc, + 0x01, 0x02, 0x03, 0x05, 0x06, 0x07, 0x04, 0x08); + dsi_generic_write_seq(dsi, 0x00, 0xc0); + dsi_generic_write_seq(dsi, 0xcc, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0xd0); + dsi_generic_write_seq(dsi, 0xcc, + 0xff, 0x00, 0x30, 0xc0, 0x0f, 0x30, 0x00, 0x00, + 0x33, 0x03, 0x00, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0xde); + dsi_generic_write_seq(dsi, 0xcc, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xcb, + 0x30, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0xa0); + dsi_generic_write_seq(dsi, 0xcb, + 0x15, 0x15, 0x05, 0xf5, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0xb0); + dsi_generic_write_seq(dsi, 0xcb, + 0x00, 0x01, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0xc0); + dsi_generic_write_seq(dsi, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0xd0); + dsi_generic_write_seq(dsi, 0xcb, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0xe0); + dsi_generic_write_seq(dsi, 0xcb, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0xf0); + dsi_generic_write_seq(dsi, 0xcb, + 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x80); + dsi_generic_write_seq(dsi, 0xcd, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x01, 0x12, 0x11, 0x03, 0x04, 0x0b, 0x17); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xcd, + 0x3d, 0x02, 0x3d, 0x25, 0x25, 0x25, 0x1f, 0x20, + 0x21, 0x25, 0x25); + dsi_generic_write_seq(dsi, 0x00, 0xa0); + dsi_generic_write_seq(dsi, 0xcd, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, + 0x01, 0x12, 0x11, 0x03, 0x04, 0x0b, 0x17); + dsi_generic_write_seq(dsi, 0x00, 0xb0); + dsi_generic_write_seq(dsi, 0xcd, + 0x17, 0x02, 0x3d, 0x25, 0x25, 0x25, 0x1f, 0x20, + 0x21, 0x25, 0x25); + dsi_generic_write_seq(dsi, 0x00, 0xd4); + dsi_generic_write_seq(dsi, 0xc3, 0x01, 0x01, 0x01, 0x01); + dsi_generic_write_seq(dsi, 0x00, 0xf2); + dsi_generic_write_seq(dsi, 0xc1, 0x80, 0x0f, 0x0f); + dsi_generic_write_seq(dsi, 0x00, 0xf7); + dsi_generic_write_seq(dsi, 0xc3, 0x03, 0x1b, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0xb0); + dsi_generic_write_seq(dsi, 0xca, 0x04); + dsi_generic_write_seq(dsi, 0x00, 0xb1); + dsi_generic_write_seq(dsi, 0xca, 0x04); + dsi_generic_write_seq(dsi, 0x00, 0xb3); + dsi_generic_write_seq(dsi, 0xca, 0x48); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xb0, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xe1, + 0x1f, 0x2e, 0x33, 0x3c, 0x42, 0x49, 0x54, 0x64, + 0x6c, 0x7d, 0x88, 0x90, 0x6b, 0x67, 0x63, 0x54, + 0x43, 0x33, 0x27, 0x21, 0x18, 0x00, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xe2, + 0x1f, 0x2e, 0x33, 0x3c, 0x42, 0x49, 0x54, 0x64, + 0x6c, 0x7d, 0x88, 0x90, 0x6b, 0x67, 0x63, 0x54, + 0x43, 0x33, 0x27, 0x21, 0x18, 0x00, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xe3, + 0x37, 0x3e, 0x41, 0x47, 0x4d, 0x52, 0x5b, 0x68, + 0x70, 0x81, 0x8a, 0x91, 0x6a, 0x66, 0x62, 0x54, + 0x43, 0x33, 0x29, 0x23, 0x1b, 0x13, 0x0c, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xe4, + 0x37, 0x3e, 0x41, 0x47, 0x4d, 0x52, 0x5b, 0x68, + 0x70, 0x81, 0x8a, 0x91, 0x6a, 0x66, 0x62, 0x54, + 0x43, 0x33, 0x29, 0x23, 0x1b, 0x13, 0x0c, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xe5, + 0x1f, 0x2a, 0x2f, 0x38, 0x40, 0x46, 0x51, 0x62, + 0x6b, 0x7e, 0x88, 0x90, 0x6b, 0x67, 0x64, 0x56, + 0x45, 0x35, 0x2b, 0x25, 0x1e, 0x0f, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xe6, + 0x1f, 0x2a, 0x2f, 0x38, 0x40, 0x46, 0x51, 0x62, + 0x6b, 0x7e, 0x88, 0x90, 0x6b, 0x67, 0x64, 0x56, + 0x45, 0x35, 0x2b, 0x25, 0x1e, 0x0f, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x90); + dsi_generic_write_seq(dsi, 0xca, + 0xcc, 0xff, 0xa8, 0xff, 0x80, 0xff, 0x00, 0x00, + 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x10); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0xb0, 0xab, 0xbc, 0xbb, 0xb9, 0xcb, 0x88, 0x88, + 0x88, 0x78, 0x77, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x11); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0xb0, 0xaa, 0xac, 0xbb, 0xa9, 0xcb, 0x88, 0x88, + 0x88, 0x78, 0x77, 0x77, 0x67, 0x66, 0x66, 0x66, + 0x66, 0x66); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x12); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0xb0, 0xb9, 0x9b, 0xac, 0xa9, 0xbb, 0x88, 0x88, + 0x88, 0x78, 0x77, 0x77, 0x77, 0x77, 0x66, 0x66, + 0x66, 0x66); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x13); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0xa0, 0xaa, 0xaa, 0xbb, 0x98, 0xbb, 0x88, 0x88, + 0x88, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x67, + 0x66, 0x66); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x14); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0xa0, 0x9a, 0xaa, 0xba, 0xa8, 0xba, 0x88, 0x88, + 0x88, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x67, 0x66); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x15); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0xa0, 0x99, 0xaa, 0xaa, 0x99, 0xaa, 0x88, 0x88, + 0x88, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x16); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x90, 0x9a, 0x9a, 0xaa, 0x98, 0xaa, 0x88, 0x88, + 0x88, 0x88, 0x78, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x17); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x90, 0x99, 0x9a, 0xa9, 0x99, 0xa9, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x78, 0x77, 0x77, 0x77, 0x77, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x18); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x90, 0x99, 0x99, 0xa9, 0x98, 0xa9, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x78, 0x77, 0x77, 0x77, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x19); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x90, 0x98, 0xa9, 0xa8, 0x88, 0xa9, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x78, 0x77, 0x77, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x1a); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x90, 0x98, 0x99, 0xa8, 0x88, 0x99, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x78, 0x77, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x1b); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x90, 0x88, 0x99, 0x98, 0x89, 0xa8, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x1c); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x80, 0x98, 0xa8, 0x97, 0x89, 0x98, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x77, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x1d); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x80, 0x88, 0x89, 0x98, 0x88, 0x89, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x77); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x1e); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x80, 0x88, 0x98, 0x88, 0x89, 0x88, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x78); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x1f); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc7, + 0x80, 0x88, 0x88, 0x88, 0x88, 0x98, 0x88, 0x88, + 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, + 0x88, 0x88); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xc6, 0x00); + dsi_generic_write_seq(dsi, 0x00, 0x00); + dsi_generic_write_seq(dsi, 0xff, 0xff, 0xff, 0xff); + dsi_dcs_write_seq(dsi, 0x51, 0x00); + dsi_dcs_write_seq(dsi, 0x53, 0x24); + dsi_dcs_write_seq(dsi, 0x55, 0x01); + dsi_dcs_write_seq(dsi, 0x5e, 0x28); + + ret = mipi_dsi_dcs_exit_sleep_mode(dsi); + if (ret < 0) { + dev_err(dev, "Failed to exit sleep mode: %d\n", ret); + return ret; + } + msleep(120); + + ret = mipi_dsi_dcs_set_display_on(dsi); + if (ret < 0) { + dev_err(dev, "Failed to set display on: %d\n", ret); + return ret; + } + msleep(20); + + return 0; +} + +static int auo_otm1901a_5p5xa_off(struct auo_otm1901a_5p5xa *ctx) +{ + struct mipi_dsi_device *dsi = ctx->dsi; + struct device *dev = &dsi->dev; + int ret; + + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; + + ret = mipi_dsi_dcs_set_display_off(dsi); + if (ret < 0) { + dev_err(dev, "Failed to set display off: %d\n", ret); + return ret; + } + msleep(40); + + ret = mipi_dsi_dcs_enter_sleep_mode(dsi); + if (ret < 0) { + dev_err(dev, "Failed to enter sleep mode: %d\n", ret); + return ret; + } + msleep(120); + + return 0; +} + +static int auo_otm1901a_5p5xa_prepare(struct drm_panel *panel) +{ + struct auo_otm1901a_5p5xa *ctx = to_auo_otm1901a_5p5xa(panel); + struct device *dev = &ctx->dsi->dev; + int ret; + + if (ctx->prepared) + return 0; + + ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + if (ret < 0) { + dev_err(dev, "Failed to enable regulators: %d\n", ret); + return ret; + } + + auo_otm1901a_5p5xa_reset(ctx); + + ret = auo_otm1901a_5p5xa_on(ctx); + if (ret < 0) { + dev_err(dev, "Failed to initialize panel: %d\n", ret); + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + return ret; + } + + ctx->prepared = true; + return 0; +} + +static int auo_otm1901a_5p5xa_unprepare(struct drm_panel *panel) +{ + struct auo_otm1901a_5p5xa *ctx = to_auo_otm1901a_5p5xa(panel); + struct device *dev = &ctx->dsi->dev; + int ret; + + if (!ctx->prepared) + return 0; + + ret = auo_otm1901a_5p5xa_off(ctx); + if (ret < 0) + dev_err(dev, "Failed to un-initialize panel: %d\n", ret); + + gpiod_set_value_cansleep(ctx->reset_gpio, 1); + regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); + + ctx->prepared = false; + return 0; +} + +static const struct drm_display_mode auo_otm1901a_5p5xa_mode = { + .clock = (1080 + 104 + 20 + 54) * (1920 + 14 + 2 + 46) * 60 / 1000, + .hdisplay = 1080, + .hsync_start = 1080 + 104, + .hsync_end = 1080 + 104 + 20, + .htotal = 1080 + 104 + 20 + 54, + .vdisplay = 1920, + .vsync_start = 1920 + 14, + .vsync_end = 1920 + 14 + 2, + .vtotal = 1920 + 14 + 2 + 46, + .width_mm = 68, + .height_mm = 121, +}; + +static int auo_otm1901a_5p5xa_get_modes(struct drm_panel *panel, + struct drm_connector *connector) +{ + struct drm_display_mode *mode; + + mode = drm_mode_duplicate(connector->dev, &auo_otm1901a_5p5xa_mode); + if (!mode) + return -ENOMEM; + + drm_mode_set_name(mode); + + mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; + connector->display_info.width_mm = mode->width_mm; + connector->display_info.height_mm = mode->height_mm; + drm_mode_probed_add(connector, mode); + + return 1; +} + +static const struct drm_panel_funcs auo_otm1901a_5p5xa_panel_funcs = { + .prepare = auo_otm1901a_5p5xa_prepare, + .unprepare = auo_otm1901a_5p5xa_unprepare, + .get_modes = auo_otm1901a_5p5xa_get_modes, +}; + +static int auo_otm1901a_5p5xa_bl_update_status(struct backlight_device *bl) +{ + struct mipi_dsi_device *dsi = bl_get_data(bl); + u16 brightness = backlight_get_brightness(bl); + int ret; + + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; + + ret = mipi_dsi_dcs_set_display_brightness(dsi, brightness); + if (ret < 0) + return ret; + + dsi->mode_flags |= MIPI_DSI_MODE_LPM; + + return 0; +} + +// TODO: Check if /sys/class/backlight/.../actual_brightness actually returns +// correct values. If not, remove this function. +static int auo_otm1901a_5p5xa_bl_get_brightness(struct backlight_device *bl) +{ + struct mipi_dsi_device *dsi = bl_get_data(bl); + u16 brightness; + int ret; + + dsi->mode_flags &= ~MIPI_DSI_MODE_LPM; + + ret = mipi_dsi_dcs_get_display_brightness(dsi, &brightness); + if (ret < 0) + return ret; + + dsi->mode_flags |= MIPI_DSI_MODE_LPM; + + return brightness & 0xff; +} + +static const struct backlight_ops auo_otm1901a_5p5xa_bl_ops = { + .update_status = auo_otm1901a_5p5xa_bl_update_status, + .get_brightness = auo_otm1901a_5p5xa_bl_get_brightness, +}; + +static struct backlight_device * +auo_otm1901a_5p5xa_create_backlight(struct mipi_dsi_device *dsi) +{ + struct device *dev = &dsi->dev; + const struct backlight_properties props = { + .type = BACKLIGHT_RAW, + .brightness = 255, + .max_brightness = 255, + }; + + return devm_backlight_device_register(dev, dev_name(dev), dev, dsi, + &auo_otm1901a_5p5xa_bl_ops, &props); +} + +static int auo_otm1901a_5p5xa_probe(struct mipi_dsi_device *dsi) +{ + struct device *dev = &dsi->dev; + struct auo_otm1901a_5p5xa *ctx; + int ret; + + ctx = devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + + ctx->supplies[0].supply = "vsp"; + ctx->supplies[1].supply = "vsn"; + ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies), + ctx->supplies); + if (ret < 0) + return dev_err_probe(dev, ret, "Failed to get regulators\n"); + + ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(ctx->reset_gpio)) + return dev_err_probe(dev, PTR_ERR(ctx->reset_gpio), + "Failed to get reset-gpios\n"); + + ctx->dsi = dsi; + mipi_dsi_set_drvdata(dsi, ctx); + + dsi->lanes = 4; + dsi->format = MIPI_DSI_FMT_RGB888; + dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | + MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_MODE_NO_EOT_PACKET | + MIPI_DSI_CLOCK_NON_CONTINUOUS; + + drm_panel_init(&ctx->panel, dev, &auo_otm1901a_5p5xa_panel_funcs, + DRM_MODE_CONNECTOR_DSI); + + ctx->panel.backlight = auo_otm1901a_5p5xa_create_backlight(dsi); + if (IS_ERR(ctx->panel.backlight)) + return dev_err_probe(dev, PTR_ERR(ctx->panel.backlight), + "Failed to create backlight\n"); + + drm_panel_add(&ctx->panel); + + ret = mipi_dsi_attach(dsi); + if (ret < 0) { + dev_err(dev, "Failed to attach to DSI host: %d\n", ret); + drm_panel_remove(&ctx->panel); + return ret; + } + + return 0; +} + +static void auo_otm1901a_5p5xa_remove(struct mipi_dsi_device *dsi) +{ + struct auo_otm1901a_5p5xa *ctx = mipi_dsi_get_drvdata(dsi); + int ret; + + ret = mipi_dsi_detach(dsi); + if (ret < 0) + dev_err(&dsi->dev, "Failed to detach from DSI host: %d\n", ret); + + drm_panel_remove(&ctx->panel); +} + +static const struct of_device_id auo_otm1901a_5p5xa_of_match[] = { + { .compatible = "huawei,kiwi-auo-otm1901a" }, // FIXME + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, auo_otm1901a_5p5xa_of_match); + +static struct mipi_dsi_driver auo_otm1901a_5p5xa_driver = { + .probe = auo_otm1901a_5p5xa_probe, + .remove = auo_otm1901a_5p5xa_remove, + .driver = { + .name = "panel-auo-otm1901a-5p5xa", + .of_match_table = auo_otm1901a_5p5xa_of_match, + }, +}; +module_mipi_dsi_driver(auo_otm1901a_5p5xa_driver); + +MODULE_AUTHOR("linux-mdss-dsi-panel-driver-generator "); // FIXME +MODULE_DESCRIPTION("DRM driver for AUO_OTM1901A_5P5_1080PXA_VIDEO"); +MODULE_LICENSE("GPL"); diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c index 856b105e1dd37a..99f1e6293c2b16 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-cmi-nt35532.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c index c7cbdb36c63e62..33f0c575666f1c 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-kiwi-tianma-nt35596.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c index 1fcad8822a13bd..fefc8e43c8bbb5 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-huawei-tianma-nt35521.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c index 67e256bc409217..2ce138c767d20e 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-booyi-otm1287.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c index 71cb377a1361a7..d2c76b71059b43 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-longcheer-dijing-ili9881c.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c index cc2f2c0548d4db..b709463b0cd997 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-harpia-boe.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c index 69d6a799c33740..e5682dfaba920a 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-osprey-inx.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c index 713a77e1bc9e1a..c77ec4c427a449 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-motorola-surnia-boe.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c index 3d5302f7593d8b..6f5fb122f405eb 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061-ams549bu19-id400418.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c index c1f424e08c1fe2..e782fb3ec6d199 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-ea8061v-ams497ee01.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c index 8945c935db99ff..4bd9d2b946b264 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-hx8389c-gh9607501a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c index 7fbd3ae4fef650..e5d0a261a042ab 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d78a0-gh9607501a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c index d32d9dc571b6e0..0c7772ccfbfd94 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-lsl080al03.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c index 9adbeaddd5775f..b32c063d5b1b60 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-s6d7aa0-ltl101at01.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c index 6df5a2069ef0cc..70b412a77a38ae 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-samsung-sc7798a-bv045wvm.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c index c0734006916c31..8cd346a7067f6a 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-nt35521.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c index 70359dd38c6721..34b1f71700ea4d 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-auo-r61308.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c index 072b590bc13102..bfa77f6943825d 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-boe-nt35521s.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c index 1ea2f6b34aec76..4e92205d4b5342 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-ebbg-otm1285a.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c index 5558b402a508f8..5fa57a3cc4133b 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-qimei-ili9881.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c index 64dfd46ba2b475..74594101798f54 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-sharp-r69431.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c index ff633bbb760c07..dd9bc9320388f9 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-tianma-hx8394d.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME) diff --git a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c index 796debbad4818b..38fde9ea8308a4 100644 --- a/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c +++ b/drivers/gpu/drm/panel/msm8916-generated/panel-wingtech-yassy-ili9881.c @@ -1,5 +1,5 @@ // SPDX-License-Identifier: GPL-2.0-only -// Copyright (c) 2022 FIXME +// Copyright (c) 2023 FIXME // Generated with linux-mdss-dsi-panel-driver-generator from vendor device tree: // Copyright (c) 2013, The Linux Foundation. All rights reserved. (FIXME)