[PATCH RFC v6 16/21] drm: panel: Add support for Himax HX8369A MIPI DSI panel
On 12/29/2014 06:50 PM, Andrzej Hajda wrote: > On 12/29/2014 11:07 AM, Liu Ying wrote: >> On 12/29/2014 05:09 PM, Andrzej Hajda wrote: >>> On 12/29/2014 07:39 AM, Liu Ying wrote: This patch adds support for Himax HX8369A MIPI DSI panel. Signed-off-by: Liu Ying --- v5->v6: * Make the checkpatch.pl script be happier. * Do not set the dsi channel number to be zero in probe(), because the MIPI DSI bus driver would set it. v4->v5: * Address Andrzej Hajda's comments. * Get the bs-gpios property instead of the bs[3:0]-gpios properties. * Implement error propagation for panel register configurations. * Other minor changes to improve the code quality. v3->v4: * Move the relevant dt-bindings to a separate patch to address Stefan Wahren's comment. v2->v3: * Sort the included header files alphabetically. v1->v2: * Address almost all comments from Thierry Reding. * Remove several DT properties as they can be implied by the compatible string. * Add the HIMAX/himax prefixes to the driver's Kconfig name and driver name. * Move the driver's Makefile entry place to sort the entries alphabetically. * Reuse several standard DCS functions instead of inventing wheels. * Move the panel resetting and power logics to the driver probe/remove stages. This may simplify panel prepare/unprepare hooks. The power consumption should not change a lot at DPMS since the panel enters sleep mode at that time. * Add the module author. * Other minor changes, such as coding style issues. drivers/gpu/drm/panel/Kconfig | 5 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-himax-hx8369a.c | 614 3 files changed, 620 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-himax-hx8369a.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 024e98e..81b0bf0 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -16,6 +16,11 @@ config DRM_PANEL_SIMPLE that it can be automatically turned off when the panel goes into a low power state. +config DRM_PANEL_HIMAX_HX8369A + tristate "Himax HX8369A panel" + depends on OF + select DRM_MIPI_DSI + config DRM_PANEL_LD9040 tristate "LD9040 RGB/SPI panel" depends on OF && SPI diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 4b2a043..d5dbe06 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -1,4 +1,5 @@ obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o +obj-$(CONFIG_DRM_PANEL_HIMAX_HX8369A) += panel-himax-hx8369a.o obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o diff --git a/drivers/gpu/drm/panel/panel-himax-hx8369a.c b/drivers/gpu/drm/panel/panel-himax-hx8369a.c new file mode 100644 index 000..eee36a7 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-himax-hx8369a.c @@ -0,0 +1,614 @@ +/* + * Himax HX8369A panel driver. + * + * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This driver is based on Samsung s6e8aa0 panel driver. + */ + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#define WRDISBV 0x51 +#define WRCTRLD 0x53 +#define WRCABC0x55 +#define SETPOWER 0xb1 +#define SETDISP 0xb2 +#define SETCYC0xb4 +#define SETVCOM 0xb6 +#define SETEXTC 0xb9 +#define SETMIPI 0xba +#define SETPANEL 0xcc +#define SETGIP0xd5 +#define SETGAMMA 0xe0 + +#define HX8369A_MIN_BRIGHTNESS0x00 +#define HX8369A_MAX_BRIGHTNESS0xff + +enum hx8369a_mpu_interface { + HX8369A_DBI_TYPE_A_8BIT, + HX8369A_DBI_TYPE_A_9BIT, + HX8369A_DBI_TYPE_A_16BIT, + HX8369A_DBI_TYPE_A_18BIT, + HX8369A_DBI_TYPE_B_8BIT, + HX8369A_DBI_TYPE_B_9BIT, + HX8369A_DBI_TYPE_B_16BIT, + HX8369A_DBI_TYPE_B_18BIT, + HX8369A_DSI_CMD_MODE, +
[PATCH RFC v6 16/21] drm: panel: Add support for Himax HX8369A MIPI DSI panel
On 12/29/2014 05:09 PM, Andrzej Hajda wrote: > On 12/29/2014 07:39 AM, Liu Ying wrote: >> This patch adds support for Himax HX8369A MIPI DSI panel. >> >> Signed-off-by: Liu Ying >> --- >> v5->v6: >> * Make the checkpatch.pl script be happier. >> * Do not set the dsi channel number to be zero in probe(), because the >> MIPI DSI >> bus driver would set it. >> >> v4->v5: >> * Address Andrzej Hajda's comments. >> * Get the bs-gpios property instead of the bs[3:0]-gpios properties. >> * Implement error propagation for panel register configurations. >> * Other minor changes to improve the code quality. >> >> v3->v4: >> * Move the relevant dt-bindings to a separate patch to address Stefan >> Wahren's comment. >> >> v2->v3: >> * Sort the included header files alphabetically. >> >> v1->v2: >> * Address almost all comments from Thierry Reding. >> * Remove several DT properties as they can be implied by the compatible >> string. >> * Add the HIMAX/himax prefixes to the driver's Kconfig name and driver >> name. >> * Move the driver's Makefile entry place to sort the entries >> alphabetically. >> * Reuse several standard DCS functions instead of inventing wheels. >> * Move the panel resetting and power logics to the driver probe/remove >> stages. >> This may simplify panel prepare/unprepare hooks. The power consumption >> should >> not change a lot at DPMS since the panel enters sleep mode at that time. >> * Add the module author. >> * Other minor changes, such as coding style issues. >> >> drivers/gpu/drm/panel/Kconfig | 5 + >> drivers/gpu/drm/panel/Makefile | 1 + >> drivers/gpu/drm/panel/panel-himax-hx8369a.c | 614 >> >> 3 files changed, 620 insertions(+) >> create mode 100644 drivers/gpu/drm/panel/panel-himax-hx8369a.c >> >> diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig >> index 024e98e..81b0bf0 100644 >> --- a/drivers/gpu/drm/panel/Kconfig >> +++ b/drivers/gpu/drm/panel/Kconfig >> @@ -16,6 +16,11 @@ config DRM_PANEL_SIMPLE >>that it can be automatically turned off when the panel goes into a >>low power state. >> >> +config DRM_PANEL_HIMAX_HX8369A >> +tristate "Himax HX8369A panel" >> +depends on OF >> +select DRM_MIPI_DSI >> + >> config DRM_PANEL_LD9040 >> tristate "LD9040 RGB/SPI panel" >> depends on OF && SPI >> diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile >> index 4b2a043..d5dbe06 100644 >> --- a/drivers/gpu/drm/panel/Makefile >> +++ b/drivers/gpu/drm/panel/Makefile >> @@ -1,4 +1,5 @@ >> obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o >> +obj-$(CONFIG_DRM_PANEL_HIMAX_HX8369A) += panel-himax-hx8369a.o >> obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o >> obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o >> obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o >> diff --git a/drivers/gpu/drm/panel/panel-himax-hx8369a.c >> b/drivers/gpu/drm/panel/panel-himax-hx8369a.c >> new file mode 100644 >> index 000..eee36a7 >> --- /dev/null >> +++ b/drivers/gpu/drm/panel/panel-himax-hx8369a.c >> @@ -0,0 +1,614 @@ >> +/* >> + * Himax HX8369A panel driver. >> + * >> + * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License version 2 as >> + * published by the Free Software Foundation. >> + * >> + * This driver is based on Samsung s6e8aa0 panel driver. >> + */ >> + >> +#include >> +#include >> +#include >> + >> +#include >> +#include >> +#include >> + >> +#include >> +#include >> +#include >> + >> +#define WRDISBV 0x51 >> +#define WRCTRLD 0x53 >> +#define WRCABC 0x55 >> +#define SETPOWER0xb1 >> +#define SETDISP 0xb2 >> +#define SETCYC 0xb4 >> +#define SETVCOM 0xb6 >> +#define SETEXTC 0xb9 >> +#define SETMIPI 0xba >> +#define SETPANEL0xcc >> +#define SETGIP 0xd5 >> +#define SETGAMMA0xe0 >> + >> +#define HX8369A_MIN_BRIGHTNESS 0x00 >> +#define HX8369A_MAX_BRIGHTNESS 0xff >> + >> +enum hx8369a_mpu_interface { >> +HX8369A_DBI_TYPE_A_8BIT, >> +HX8369A_DBI_TYPE_A_9BIT, >> +HX8369A_DBI_TYPE_A_16BIT, >> +HX8369A_DBI_TYPE_A_18BIT, >> +HX8369A_DBI_TYPE_B_8BIT, >> +HX8369A_DBI_TYPE_B_9BIT, >> +HX8369A_DBI_TYPE_B_16BIT, >> +HX8369A_DBI_TYPE_B_18BIT, >> +HX8369A_DSI_CMD_MODE, >> +HX8369A_DBI_TYPE_B_24BIT, >> +HX8369A_DSI_VIDEO_MODE, >> +HX8369A_MDDI, >> +HX8369A_DPI_DBI_TYPE_C_OPT1, >> +HX8369A_DPI_DBI_TYPE_C_OPT2, >> +HX8369A_DPI_DBI_TYPE_C_OPT3 >> +}; >> + >> +enum hx8369a_resolution { >> +HX8369A_RES_480_864, >> +HX8369A_RES_480_854, >> +HX8369A_RES_480_800, >> +HX8369A_RES_480_640, >> +HX8369A_RES_360_640, >> +
[PATCH RFC v6 16/21] drm: panel: Add support for Himax HX8369A MIPI DSI panel
This patch adds support for Himax HX8369A MIPI DSI panel. Signed-off-by: Liu Ying --- v5->v6: * Make the checkpatch.pl script be happier. * Do not set the dsi channel number to be zero in probe(), because the MIPI DSI bus driver would set it. v4->v5: * Address Andrzej Hajda's comments. * Get the bs-gpios property instead of the bs[3:0]-gpios properties. * Implement error propagation for panel register configurations. * Other minor changes to improve the code quality. v3->v4: * Move the relevant dt-bindings to a separate patch to address Stefan Wahren's comment. v2->v3: * Sort the included header files alphabetically. v1->v2: * Address almost all comments from Thierry Reding. * Remove several DT properties as they can be implied by the compatible string. * Add the HIMAX/himax prefixes to the driver's Kconfig name and driver name. * Move the driver's Makefile entry place to sort the entries alphabetically. * Reuse several standard DCS functions instead of inventing wheels. * Move the panel resetting and power logics to the driver probe/remove stages. This may simplify panel prepare/unprepare hooks. The power consumption should not change a lot at DPMS since the panel enters sleep mode at that time. * Add the module author. * Other minor changes, such as coding style issues. drivers/gpu/drm/panel/Kconfig | 5 + drivers/gpu/drm/panel/Makefile | 1 + drivers/gpu/drm/panel/panel-himax-hx8369a.c | 614 3 files changed, 620 insertions(+) create mode 100644 drivers/gpu/drm/panel/panel-himax-hx8369a.c diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig index 024e98e..81b0bf0 100644 --- a/drivers/gpu/drm/panel/Kconfig +++ b/drivers/gpu/drm/panel/Kconfig @@ -16,6 +16,11 @@ config DRM_PANEL_SIMPLE that it can be automatically turned off when the panel goes into a low power state. +config DRM_PANEL_HIMAX_HX8369A + tristate "Himax HX8369A panel" + depends on OF + select DRM_MIPI_DSI + config DRM_PANEL_LD9040 tristate "LD9040 RGB/SPI panel" depends on OF && SPI diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile index 4b2a043..d5dbe06 100644 --- a/drivers/gpu/drm/panel/Makefile +++ b/drivers/gpu/drm/panel/Makefile @@ -1,4 +1,5 @@ obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o +obj-$(CONFIG_DRM_PANEL_HIMAX_HX8369A) += panel-himax-hx8369a.o obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o diff --git a/drivers/gpu/drm/panel/panel-himax-hx8369a.c b/drivers/gpu/drm/panel/panel-himax-hx8369a.c new file mode 100644 index 000..eee36a7 --- /dev/null +++ b/drivers/gpu/drm/panel/panel-himax-hx8369a.c @@ -0,0 +1,614 @@ +/* + * Himax HX8369A panel driver. + * + * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This driver is based on Samsung s6e8aa0 panel driver. + */ + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#define WRDISBV0x51 +#define WRCTRLD0x53 +#define WRCABC 0x55 +#define SETPOWER 0xb1 +#define SETDISP0xb2 +#define SETCYC 0xb4 +#define SETVCOM0xb6 +#define SETEXTC0xb9 +#define SETMIPI0xba +#define SETPANEL 0xcc +#define SETGIP 0xd5 +#define SETGAMMA 0xe0 + +#define HX8369A_MIN_BRIGHTNESS 0x00 +#define HX8369A_MAX_BRIGHTNESS 0xff + +enum hx8369a_mpu_interface { + HX8369A_DBI_TYPE_A_8BIT, + HX8369A_DBI_TYPE_A_9BIT, + HX8369A_DBI_TYPE_A_16BIT, + HX8369A_DBI_TYPE_A_18BIT, + HX8369A_DBI_TYPE_B_8BIT, + HX8369A_DBI_TYPE_B_9BIT, + HX8369A_DBI_TYPE_B_16BIT, + HX8369A_DBI_TYPE_B_18BIT, + HX8369A_DSI_CMD_MODE, + HX8369A_DBI_TYPE_B_24BIT, + HX8369A_DSI_VIDEO_MODE, + HX8369A_MDDI, + HX8369A_DPI_DBI_TYPE_C_OPT1, + HX8369A_DPI_DBI_TYPE_C_OPT2, + HX8369A_DPI_DBI_TYPE_C_OPT3 +}; + +enum hx8369a_resolution { + HX8369A_RES_480_864, + HX8369A_RES_480_854, + HX8369A_RES_480_800, + HX8369A_RES_480_640, + HX8369A_RES_360_640, + HX8369A_RES_480_720, +}; + +struct hx8369a_panel_desc { + const struct drm_display_mode *mode; + + /* ms */ + unsigned int power_on_delay; + unsigned int reset_delay; + + unsigned int dsi_lanes; +}; + +struct hx8369a { + struct device *dev; + struct drm_panel panel; + + const struct hx8369a_panel_desc *pd; + + struct regulator_bulk_data supplies[5]; + struct gpio_desc *reset_gpio; + struct gpio_desc
[PATCH RFC v6 16/21] drm: panel: Add support for Himax HX8369A MIPI DSI panel
On 12/29/2014 11:07 AM, Liu Ying wrote: > On 12/29/2014 05:09 PM, Andrzej Hajda wrote: >> On 12/29/2014 07:39 AM, Liu Ying wrote: >>> This patch adds support for Himax HX8369A MIPI DSI panel. >>> >>> Signed-off-by: Liu Ying >>> --- >>> v5->v6: >>> * Make the checkpatch.pl script be happier. >>> * Do not set the dsi channel number to be zero in probe(), because the >>> MIPI DSI >>> bus driver would set it. >>> >>> v4->v5: >>> * Address Andrzej Hajda's comments. >>> * Get the bs-gpios property instead of the bs[3:0]-gpios properties. >>> * Implement error propagation for panel register configurations. >>> * Other minor changes to improve the code quality. >>> >>> v3->v4: >>> * Move the relevant dt-bindings to a separate patch to address Stefan >>> Wahren's comment. >>> >>> v2->v3: >>> * Sort the included header files alphabetically. >>> >>> v1->v2: >>> * Address almost all comments from Thierry Reding. >>> * Remove several DT properties as they can be implied by the compatible >>> string. >>> * Add the HIMAX/himax prefixes to the driver's Kconfig name and driver >>> name. >>> * Move the driver's Makefile entry place to sort the entries >>> alphabetically. >>> * Reuse several standard DCS functions instead of inventing wheels. >>> * Move the panel resetting and power logics to the driver probe/remove >>> stages. >>> This may simplify panel prepare/unprepare hooks. The power consumption >>> should >>> not change a lot at DPMS since the panel enters sleep mode at that time. >>> * Add the module author. >>> * Other minor changes, such as coding style issues. >>> >>> drivers/gpu/drm/panel/Kconfig | 5 + >>> drivers/gpu/drm/panel/Makefile | 1 + >>> drivers/gpu/drm/panel/panel-himax-hx8369a.c | 614 >>> >>> 3 files changed, 620 insertions(+) >>> create mode 100644 drivers/gpu/drm/panel/panel-himax-hx8369a.c >>> >>> diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig >>> index 024e98e..81b0bf0 100644 >>> --- a/drivers/gpu/drm/panel/Kconfig >>> +++ b/drivers/gpu/drm/panel/Kconfig >>> @@ -16,6 +16,11 @@ config DRM_PANEL_SIMPLE >>> that it can be automatically turned off when the panel goes into a >>> low power state. >>> >>> +config DRM_PANEL_HIMAX_HX8369A >>> + tristate "Himax HX8369A panel" >>> + depends on OF >>> + select DRM_MIPI_DSI >>> + >>> config DRM_PANEL_LD9040 >>> tristate "LD9040 RGB/SPI panel" >>> depends on OF && SPI >>> diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile >>> index 4b2a043..d5dbe06 100644 >>> --- a/drivers/gpu/drm/panel/Makefile >>> +++ b/drivers/gpu/drm/panel/Makefile >>> @@ -1,4 +1,5 @@ >>> obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o >>> +obj-$(CONFIG_DRM_PANEL_HIMAX_HX8369A) += panel-himax-hx8369a.o >>> obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o >>> obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o >>> obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o >>> diff --git a/drivers/gpu/drm/panel/panel-himax-hx8369a.c >>> b/drivers/gpu/drm/panel/panel-himax-hx8369a.c >>> new file mode 100644 >>> index 000..eee36a7 >>> --- /dev/null >>> +++ b/drivers/gpu/drm/panel/panel-himax-hx8369a.c >>> @@ -0,0 +1,614 @@ >>> +/* >>> + * Himax HX8369A panel driver. >>> + * >>> + * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. >>> + * >>> + * This program is free software; you can redistribute it and/or modify >>> + * it under the terms of the GNU General Public License version 2 as >>> + * published by the Free Software Foundation. >>> + * >>> + * This driver is based on Samsung s6e8aa0 panel driver. >>> + */ >>> + >>> +#include >>> +#include >>> +#include >>> + >>> +#include >>> +#include >>> +#include >>> + >>> +#include >>> +#include >>> +#include >>> + >>> +#define WRDISBV0x51 >>> +#define WRCTRLD0x53 >>> +#define WRCABC 0x55 >>> +#define SETPOWER 0xb1 >>> +#define SETDISP0xb2 >>> +#define SETCYC 0xb4 >>> +#define SETVCOM0xb6 >>> +#define SETEXTC0xb9 >>> +#define SETMIPI0xba >>> +#define SETPANEL 0xcc >>> +#define SETGIP 0xd5 >>> +#define SETGAMMA 0xe0 >>> + >>> +#define HX8369A_MIN_BRIGHTNESS 0x00 >>> +#define HX8369A_MAX_BRIGHTNESS 0xff >>> + >>> +enum hx8369a_mpu_interface { >>> + HX8369A_DBI_TYPE_A_8BIT, >>> + HX8369A_DBI_TYPE_A_9BIT, >>> + HX8369A_DBI_TYPE_A_16BIT, >>> + HX8369A_DBI_TYPE_A_18BIT, >>> + HX8369A_DBI_TYPE_B_8BIT, >>> + HX8369A_DBI_TYPE_B_9BIT, >>> + HX8369A_DBI_TYPE_B_16BIT, >>> + HX8369A_DBI_TYPE_B_18BIT, >>> + HX8369A_DSI_CMD_MODE, >>> + HX8369A_DBI_TYPE_B_24BIT, >>> + HX8369A_DSI_VIDEO_MODE, >>> + HX8369A_MDDI, >>> + HX8369A_DPI_DBI_TYPE_C_OPT1, >>> + HX8369A_DPI_DBI_TYPE_C_OPT2, >>> + HX8369A_DPI_DBI_TYPE_C_OPT3 >>> +}; >>> + >>> +enum hx8369a_resolution { >>> +
[PATCH RFC v6 16/21] drm: panel: Add support for Himax HX8369A MIPI DSI panel
On 12/29/2014 07:39 AM, Liu Ying wrote: > This patch adds support for Himax HX8369A MIPI DSI panel. > > Signed-off-by: Liu Ying > --- > v5->v6: > * Make the checkpatch.pl script be happier. > * Do not set the dsi channel number to be zero in probe(), because the MIPI > DSI >bus driver would set it. > > v4->v5: > * Address Andrzej Hajda's comments. > * Get the bs-gpios property instead of the bs[3:0]-gpios properties. > * Implement error propagation for panel register configurations. > * Other minor changes to improve the code quality. > > v3->v4: > * Move the relevant dt-bindings to a separate patch to address Stefan >Wahren's comment. > > v2->v3: > * Sort the included header files alphabetically. > > v1->v2: > * Address almost all comments from Thierry Reding. > * Remove several DT properties as they can be implied by the compatible > string. > * Add the HIMAX/himax prefixes to the driver's Kconfig name and driver name. > * Move the driver's Makefile entry place to sort the entries alphabetically. > * Reuse several standard DCS functions instead of inventing wheels. > * Move the panel resetting and power logics to the driver probe/remove > stages. >This may simplify panel prepare/unprepare hooks. The power consumption > should >not change a lot at DPMS since the panel enters sleep mode at that time. > * Add the module author. > * Other minor changes, such as coding style issues. > > drivers/gpu/drm/panel/Kconfig | 5 + > drivers/gpu/drm/panel/Makefile | 1 + > drivers/gpu/drm/panel/panel-himax-hx8369a.c | 614 > > 3 files changed, 620 insertions(+) > create mode 100644 drivers/gpu/drm/panel/panel-himax-hx8369a.c > > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig > index 024e98e..81b0bf0 100644 > --- a/drivers/gpu/drm/panel/Kconfig > +++ b/drivers/gpu/drm/panel/Kconfig > @@ -16,6 +16,11 @@ config DRM_PANEL_SIMPLE > that it can be automatically turned off when the panel goes into a > low power state. > > +config DRM_PANEL_HIMAX_HX8369A > + tristate "Himax HX8369A panel" > + depends on OF > + select DRM_MIPI_DSI > + > config DRM_PANEL_LD9040 > tristate "LD9040 RGB/SPI panel" > depends on OF && SPI > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile > index 4b2a043..d5dbe06 100644 > --- a/drivers/gpu/drm/panel/Makefile > +++ b/drivers/gpu/drm/panel/Makefile > @@ -1,4 +1,5 @@ > obj-$(CONFIG_DRM_PANEL_SIMPLE) += panel-simple.o > +obj-$(CONFIG_DRM_PANEL_HIMAX_HX8369A) += panel-himax-hx8369a.o > obj-$(CONFIG_DRM_PANEL_LD9040) += panel-ld9040.o > obj-$(CONFIG_DRM_PANEL_S6E8AA0) += panel-s6e8aa0.o > obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o > diff --git a/drivers/gpu/drm/panel/panel-himax-hx8369a.c > b/drivers/gpu/drm/panel/panel-himax-hx8369a.c > new file mode 100644 > index 000..eee36a7 > --- /dev/null > +++ b/drivers/gpu/drm/panel/panel-himax-hx8369a.c > @@ -0,0 +1,614 @@ > +/* > + * Himax HX8369A panel driver. > + * > + * Copyright (C) 2011-2014 Freescale Semiconductor, Inc. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This driver is based on Samsung s6e8aa0 panel driver. > + */ > + > +#include > +#include > +#include > + > +#include > +#include > +#include > + > +#include > +#include > +#include > + > +#define WRDISBV 0x51 > +#define WRCTRLD 0x53 > +#define WRCABC 0x55 > +#define SETPOWER 0xb1 > +#define SETDISP 0xb2 > +#define SETCYC 0xb4 > +#define SETVCOM 0xb6 > +#define SETEXTC 0xb9 > +#define SETMIPI 0xba > +#define SETPANEL 0xcc > +#define SETGIP 0xd5 > +#define SETGAMMA 0xe0 > + > +#define HX8369A_MIN_BRIGHTNESS 0x00 > +#define HX8369A_MAX_BRIGHTNESS 0xff > + > +enum hx8369a_mpu_interface { > + HX8369A_DBI_TYPE_A_8BIT, > + HX8369A_DBI_TYPE_A_9BIT, > + HX8369A_DBI_TYPE_A_16BIT, > + HX8369A_DBI_TYPE_A_18BIT, > + HX8369A_DBI_TYPE_B_8BIT, > + HX8369A_DBI_TYPE_B_9BIT, > + HX8369A_DBI_TYPE_B_16BIT, > + HX8369A_DBI_TYPE_B_18BIT, > + HX8369A_DSI_CMD_MODE, > + HX8369A_DBI_TYPE_B_24BIT, > + HX8369A_DSI_VIDEO_MODE, > + HX8369A_MDDI, > + HX8369A_DPI_DBI_TYPE_C_OPT1, > + HX8369A_DPI_DBI_TYPE_C_OPT2, > + HX8369A_DPI_DBI_TYPE_C_OPT3 > +}; > + > +enum hx8369a_resolution { > + HX8369A_RES_480_864, > + HX8369A_RES_480_854, > + HX8369A_RES_480_800, > + HX8369A_RES_480_640, > + HX8369A_RES_360_640, > + HX8369A_RES_480_720, > +}; > + > +struct hx8369a_panel_desc { > + const struct drm_display_mode *mode; > + > + /* ms */ > + unsigned int power_on_delay; > + unsigned int