mbox series

[0/2] Add DRM panel driver for Ilitek ILI9341 based panels in parallel RGB mode

Message ID 20190219132101.27196-1-josef@lusticky.cz (mailing list archive)
Headers show
Series Add DRM panel driver for Ilitek ILI9341 based panels in parallel RGB mode | expand

Message

Josef Luštický Feb. 19, 2019, 1:20 p.m. UTC
These patches add panel driver for ili9341-based panels in parallel RGB mode.
The driver was developed for DispleyTech DT024CTFT LCD panel [1] which features ILI9341 chip [2].
The driver was tested on the Allwinner A13 (sun5i) platform.

The driver supports 240x320 pixel resolution with 18-bit RGB (6 wires per color)
and SPI control bus with Data/Command GPIO pin.

The Data/Command GPIO is optional, however at the moment the driver requires it:
The display itself is capable of 9-bit SPI without the Data/Command GPIO.
Support for such configuration can be added later to the driver.

Optional HW reset gpio can be specified, otherwise SW reset command is used
during the initialization.

The ILI9341 displays have two command sets:
Level 1 conforms to MIPI specs
Level 2 is outside the MIPI specs - custom defines are used in the driver

The ILI9341 supports various RGB modes (e.g. NVSYNC, DE_LOW, clock freq, etc.),
however values that are presented in the ILI9341 datasheet [2] are used
by the driver in struct drm_display_mode.


General note on ILI9341-based displays:
The ILI9341 chip can be used in parallel RGB with SPI control
or in SPI only mode where the image data itself is also transferred via SPI.
This driver supports parallel RGB displays - it works with displays wired with 18-bit RGB input,
it does not support SPI data mode (i.e. Multi-inno mi0283qt or Adafruit yx240qv29 are not supported by this driver).
The SPI data mode is naturally much slower than the parallel RGB mode.

General note on DisplayTech DT024CTFT panel:
The panel supports different configuation options (18/16/6-bit RGB or 9/8-bit SPI) depending on the IM[0:3] wiring.
To keep this patch small for reveiw, at the moment only 18-bit RGB mode and 8-bit SPI with Data/Command GPIO
is supported by this driver.


I kindly ask you for a patch review.

Links to datasheet:
[1] https://www.displaytech-us.com/sites/default/files/display-data-sheet/DT024CTFT-v10_0.pdf
[2] https://cdn-shop.adafruit.com/datasheets/ILI9341.pdf

Best regards,
Josef Lusticky

Josef Lusticky (2):
  drm/panel: Add Ilitek ILI9341 panel driver
  dt-bindings: panel: Add Ilitek ILI9341 panel documentation

 .../bindings/display/panel/ilitek,ili9341.txt |  33 ++
 MAINTAINERS                                   |   6 +
 drivers/gpu/drm/panel/Kconfig                 |   7 +
 drivers/gpu/drm/panel/Makefile                |   1 +
 drivers/gpu/drm/panel/panel-ilitek-ili9341.c  | 320 ++++++++++++++++++
 5 files changed, 367 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/panel/ilitek,ili9341.txt
 create mode 100644 drivers/gpu/drm/panel/panel-ilitek-ili9341.c

Comments

Sam Ravnborg June 26, 2019, 12:57 p.m. UTC | #1
Hi Josef.

On Tue, Feb 19, 2019 at 02:20:59PM +0100, Josef Lusticky wrote:
> These patches add panel driver for ili9341-based panels in parallel RGB mode.
> The driver was developed for DispleyTech DT024CTFT LCD panel [1] which features ILI9341 chip [2].
> The driver was tested on the Allwinner A13 (sun5i) platform.
> 
> The driver supports 240x320 pixel resolution with 18-bit RGB (6 wires per color)
> and SPI control bus with Data/Command GPIO pin.
> 
> The Data/Command GPIO is optional, however at the moment the driver requires it:
> The display itself is capable of 9-bit SPI without the Data/Command GPIO.
> Support for such configuration can be added later to the driver.
> 
> Optional HW reset gpio can be specified, otherwise SW reset command is used
> during the initialization.
> 
> The ILI9341 displays have two command sets:
> Level 1 conforms to MIPI specs
> Level 2 is outside the MIPI specs - custom defines are used in the driver
> 
> The ILI9341 supports various RGB modes (e.g. NVSYNC, DE_LOW, clock freq, etc.),
> however values that are presented in the ILI9341 datasheet [2] are used
> by the driver in struct drm_display_mode.
> 
> 
> General note on ILI9341-based displays:
> The ILI9341 chip can be used in parallel RGB with SPI control
> or in SPI only mode where the image data itself is also transferred via SPI.
> This driver supports parallel RGB displays - it works with displays wired with 18-bit RGB input,
> it does not support SPI data mode (i.e. Multi-inno mi0283qt or Adafruit yx240qv29 are not supported by this driver).
> The SPI data mode is naturally much slower than the parallel RGB mode.
> 
> General note on DisplayTech DT024CTFT panel:
> The panel supports different configuation options (18/16/6-bit RGB or 9/8-bit SPI) depending on the IM[0:3] wiring.
> To keep this patch small for reveiw, at the moment only 18-bit RGB mode and 8-bit SPI with Data/Command GPIO
> is supported by this driver.
> 
> 
> I kindly ask you for a patch review.
Did you get around to send a v2 of this patchset?

	Sam
Josef Luštický June 26, 2019, 3:21 p.m. UTC | #2
Hello Sam, Rob,
thank you both for comments.

I've already prepared most of the code for v2 of this patchset.

At the moment I am investigating, if it's possible to use mipi_dbi_*
functions for the display initialization,
as Rob suggested ("Can't you use existing mipi_dbi_* functions instead
of rolling your own?").

I'll post v2 patchset soon.

Kind regards
Josef

st 26. 6. 2019 v 14:57 odesílatel Sam Ravnborg <sam@ravnborg.org> napsal:
>
> Hi Josef.
>
> On Tue, Feb 19, 2019 at 02:20:59PM +0100, Josef Lusticky wrote:
> > These patches add panel driver for ili9341-based panels in parallel RGB mode.
> > The driver was developed for DispleyTech DT024CTFT LCD panel [1] which features ILI9341 chip [2].
> > The driver was tested on the Allwinner A13 (sun5i) platform.
> >
> > The driver supports 240x320 pixel resolution with 18-bit RGB (6 wires per color)
> > and SPI control bus with Data/Command GPIO pin.
> >
> > The Data/Command GPIO is optional, however at the moment the driver requires it:
> > The display itself is capable of 9-bit SPI without the Data/Command GPIO.
> > Support for such configuration can be added later to the driver.
> >
> > Optional HW reset gpio can be specified, otherwise SW reset command is used
> > during the initialization.
> >
> > The ILI9341 displays have two command sets:
> > Level 1 conforms to MIPI specs
> > Level 2 is outside the MIPI specs - custom defines are used in the driver
> >
> > The ILI9341 supports various RGB modes (e.g. NVSYNC, DE_LOW, clock freq, etc.),
> > however values that are presented in the ILI9341 datasheet [2] are used
> > by the driver in struct drm_display_mode.
> >
> >
> > General note on ILI9341-based displays:
> > The ILI9341 chip can be used in parallel RGB with SPI control
> > or in SPI only mode where the image data itself is also transferred via SPI.
> > This driver supports parallel RGB displays - it works with displays wired with 18-bit RGB input,
> > it does not support SPI data mode (i.e. Multi-inno mi0283qt or Adafruit yx240qv29 are not supported by this driver).
> > The SPI data mode is naturally much slower than the parallel RGB mode.
> >
> > General note on DisplayTech DT024CTFT panel:
> > The panel supports different configuation options (18/16/6-bit RGB or 9/8-bit SPI) depending on the IM[0:3] wiring.
> > To keep this patch small for reveiw, at the moment only 18-bit RGB mode and 8-bit SPI with Data/Command GPIO
> > is supported by this driver.
> >
> >
> > I kindly ask you for a patch review.
> Did you get around to send a v2 of this patchset?
>
>         Sam
Sam Ravnborg June 26, 2019, 4:04 p.m. UTC | #3
Hi Josef.

On Wed, Jun 26, 2019 at 05:21:09PM +0200, Josef Luštický wrote:
> Hello Sam, Rob,
> thank you both for comments.
> 
> I've already prepared most of the code for v2 of this patchset.
> 
> At the moment I am investigating, if it's possible to use mipi_dbi_*
> functions for the display initialization,
> as Rob suggested ("Can't you use existing mipi_dbi_* functions instead
> of rolling your own?").
> 
> I'll post v2 patchset soon.
Thanks for the update. Looks forward for next round of patches.

Please check also what we have in drm/tinydrm/core/tinydrm-helpers.c.
If some of the functions are useable outside tinydrm - then we should
move them to a helper in drm/.
So we do not duplicate functionality.

And maybe this is what you already do and so everything is fine.

Do not hesitate to get back if you have any questions.

	Sam