On Mon, Jun 25, 2018 at 09:44:35AM +0300, Stefan Mavrodiev wrote: > This patch adds Olimex Ltd. LCD-OLinuXino bridge panel driver. The > panel is used with different LCDs (currently from 480x272 to 1280x800). > Small EEPROM chip is used for identification, which holds some > factory data and timing requirements. > > Signed-off-by: Stefan Mavrodiev > --- > Changes for v2: > - Changed lcd_olinuxino_funcs to static const > > .../display/panel/olimex,lcd-olinuxino.txt | 42 +++ > MAINTAINERS | 6 + > drivers/gpu/drm/panel/Kconfig | 10 + > drivers/gpu/drm/panel/Makefile | 1 + > drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c | 360 +++++++++++++++++++++ > 5 files changed, 419 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.txt > create mode 100644 drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > > diff --git a/Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.txt b/Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.txt > new file mode 100644 > index 0000000..a89f9c8 > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.txt > @@ -0,0 +1,42 @@ > +Binding for Olimex Ltd. LCD-OLinuXino bridge panel. > + > +This device can be used as bridge between a host controller and LCD panels. > +Currently supported LCDs are: > + - LCD-OLinuXino-4.3TS > + - LCD-OLinuXino-5 > + - LCD-OLinuXino-7 > + - LCD-OLinuXino-10 > + > +The panel itself contains: > + - AT24C16C EEPROM holding panel identification and timing requirements > + - AR1021 resistive touch screen controller (optional) > + - FT5x6 capacitive touch screnn controller (optional) > + - GT911/GT928 capacitive touch screen controller (optional) > + > +The above chips share same I2C bus. The EEPROM is factory preprogrammed with > +device information (id, serial, etc.) and timing requirements. > + > +Touchscreen bingings can be found in these files: > + - input/touchscreen/goodix.txt > + - input/touchscreen/edt-ft5x06.txt > + - input/touchscreen/ar1021.txt > + > +Required properties: > + - compatible: should be "olimex,lcd-olinuxino" > + - reg: address of the configuration EEPROM, should be <0x50> > + - power-supply: phandle of the regulator that provides the supply voltage > + > +Optional properties: > + - enable-gpios: GPIO pin to enable or disable the panel > + - backlight: phandle of the backlight device attacked to the panel > + > +Example: > +&i2c2 { > + panel@50 { > + compatible = "olimex,lcd-olinuxino"; > + reg = <0x50>; > + power-supply = <®_vcc5v0>; > + enable-gpios = <&pio 7 8 GPIO_ACTIVE_HIGH>; > + backlight = <&backlight>; > + }; > +}; > diff --git a/MAINTAINERS b/MAINTAINERS > index 624c3fd..30343f1 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -4557,6 +4557,12 @@ S: Supported > F: drivers/gpu/drm/nouveau/ > F: include/uapi/drm/nouveau_drm.h > > +DRM DRIVER FOR OLIMEX LCD-OLINUXINO PANELS > +M: Stefan Mavrodiev > +S: Maintained > +F: drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > +F: Documentation/devicetree/bindings/display/panel/olimex,lcd-olinuxino.txt > + > DRM DRIVER FOR PERVASIVE DISPLAYS REPAPER PANELS > M: Noralf Trønnes > S: Maintained > diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig > index 25682ff..0292994 100644 > --- a/drivers/gpu/drm/panel/Kconfig > +++ b/drivers/gpu/drm/panel/Kconfig > @@ -81,6 +81,16 @@ config DRM_PANEL_LG_LG4573 > Say Y here if you want to enable support for LG4573 RGB panel. > To compile this driver as a module, choose M here. > > +config DRM_PANEL_OLIMEX_LCD_OLINUXINO > + tristate "Olimex LCD-OLinuXino panel" > + depends on OF > + depends on I2C > + depends on BACKLIGHT_CLASS_DEVICE > + help > + Say Y here if you want to enable support for Olimex Ltd. > + LCD-OLinuXino panel. The panel is used with different sizes LCDs, > + from 480x272 to 1280x800, and 24 bit per pixel. > + > config DRM_PANEL_ORISETECH_OTM8009A > tristate "Orise Technology otm8009a 480x800 dsi 2dl panel" > depends on OF > diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile > index f26efc1..185027f 100644 > --- a/drivers/gpu/drm/panel/Makefile > +++ b/drivers/gpu/drm/panel/Makefile > @@ -6,6 +6,7 @@ obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o > obj-$(CONFIG_DRM_PANEL_INNOLUX_P079ZCA) += panel-innolux-p079zca.o > obj-$(CONFIG_DRM_PANEL_JDI_LT070ME05000) += panel-jdi-lt070me05000.o > obj-$(CONFIG_DRM_PANEL_LG_LG4573) += panel-lg-lg4573.o > +obj-$(CONFIG_DRM_PANEL_OLIMEX_LCD_OLINUXINO) += panel-olimex-lcd-olinuxino.o > obj-$(CONFIG_DRM_PANEL_ORISETECH_OTM8009A) += panel-orisetech-otm8009a.o > obj-$(CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00) += panel-panasonic-vvx10f034n00.o > obj-$(CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN) += panel-raspberrypi-touchscreen.o > diff --git a/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > new file mode 100644 > index 0000000..89d7816 > --- /dev/null > +++ b/drivers/gpu/drm/panel/panel-olimex-lcd-olinuxino.c > @@ -0,0 +1,360 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * LCD-OLinuXino support for panel driver > + * > + * Copyright (C) 2018 Olimex Ltd. > + * Author: Stefan Mavrodiev > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include > + > +#include