# SPDX-License-Identifier: GPL-2.0-only
config DRM_PANEL
	bool
	depends on DRM
	help
	  Panel registration and lookup framework.

menu "Display Panels"
	depends on DRM && DRM_PANEL

config DRM_PANEL_ABT_Y030XX067A
	tristate "ABT Y030XX067A 320x480 LCD panel"
	depends on OF && SPI
	select REGMAP_SPI
	help
	  Say Y here to enable support for the Asia Better Technology Ltd.
	  Y030XX067A 320x480 3.0" panel as found in the YLM RG-280M, RG-300
	  and RG-99 handheld gaming consoles.

config DRM_PANEL_ARM_VERSATILE
	tristate "ARM Versatile panel driver"
	depends on OF
	depends on MFD_SYSCON
	select VIDEOMODE_HELPERS
	help
	  This driver supports the ARM Versatile panels connected to ARM
	  reference designs. The panel is detected using special registers
	  in the Versatile family syscon registers.

config DRM_PANEL_ASUS_Z00T_TM5P5_NT35596
	tristate "ASUS Z00T TM5P5 NT35596 panel"
	depends on GPIOLIB && OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the ASUS TMP5P5
	  NT35596 1080x1920 video mode panel as found in some Asus
	  Zenfone 2 Laser Z00T devices.

config DRM_PANEL_AUO_A030JTN01
	tristate "AUO A030JTN01"
	depends on SPI
	select REGMAP_SPI
	help
	  Say Y here to enable support for the AUO A030JTN01 320x480 3.0" panel
	  as found in the YLM RS-97 handheld gaming console.

config DRM_PANEL_BOE_BF060Y8M_AJ0
	tristate "Boe BF060Y8M-AJ0 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Boe BF060Y8M-AJ0
	  5.99" AMOLED modules. The panel has a 1080x2160 resolution and
	  uses 24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host and backlight is controlled through DSI commands.

config DRM_PANEL_BOE_HIMAX8279D
	tristate "Boe Himax8279d panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Boe Himax8279d
	  TFT-LCD modules. The panel has a 1200x1920 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host and has a built-in LED backlight.

config DRM_PANEL_BOE_TV101WUM_NL6
	tristate "BOE TV101WUM and AUO KD101N80 45NA 1200x1920 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to support for BOE TV101WUM and AUO KD101N80
	  45NA WUXGA PANEL DSI Video Mode panel

config DRM_PANEL_DSI_CM
	tristate "Generic DSI command mode panels"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  DRM panel driver for DSI command mode panels with support for
	  embedded and external backlights.

config DRM_PANEL_LVDS
	tristate "Generic LVDS panel driver"
	depends on OF
	depends on BACKLIGHT_CLASS_DEVICE
	select VIDEOMODE_HELPERS
	help
	  This driver supports LVDS panels that don't require device-specific
	  handling of power supplies or control signals. It implements automatic
	  backlight handling if the panel is attached to a backlight controller.

config DRM_PANEL_SIMPLE
	tristate "support for simple panels (other than eDP ones)"
	depends on OF
	depends on BACKLIGHT_CLASS_DEVICE
	depends on PM
	select VIDEOMODE_HELPERS
	help
	  DRM panel driver for dumb non-eDP panels that need at most a regulator
	  and a GPIO to be powered up. Optionally a backlight can be attached so
	  that it can be automatically turned off when the panel goes into a
	  low power state.

config DRM_PANEL_EDP
	tristate "support for simple Embedded DisplayPort panels"
	depends on OF
	depends on BACKLIGHT_CLASS_DEVICE
	depends on PM
	select VIDEOMODE_HELPERS
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_DP_AUX_BUS
	select DRM_KMS_HELPER
	help
	  DRM panel driver for dumb eDP panels that need at most a regulator and
	  a GPIO to be powered up. Optionally a backlight can be attached so
	  that it can be automatically turned off when the panel goes into a
	  low power state.

config DRM_PANEL_EBBG_FT8719
	tristate "EBBG FT8719 panel driver"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the EBBG FT8719
	  video mode panel. Mainly found on Xiaomi Poco F1 mobile phone.
	  The panel has a resolution of 1080x2246. It provides a MIPI DSI
	  interface to the host.

config DRM_PANEL_ELIDA_KD35T133
	tristate "Elida KD35T133 panel driver"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Elida
	  KD35T133 controller for 320x480 LCD panels with MIPI-DSI
	  system interfaces.

config DRM_PANEL_FEIXIN_K101_IM2BA02
	tristate "Feixin K101 IM2BA02 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Feixin K101 IM2BA02
	  4-lane 800x1280 MIPI DSI panel.

config DRM_PANEL_FEIYANG_FY07024DI26A30D
	tristate "Feiyang FY07024DI26A30-D MIPI-DSI LCD panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y if you want to enable support for panels based on the
	  Feiyang FY07024DI26A30-D MIPI-DSI interface.

config DRM_PANEL_HIMAX_HX8394
	tristate "HIMAX HX8394 MIPI-DSI LCD panels"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y if you want to enable support for panels based on the
	  Himax HX8394 controller, such as the HannStar HSD060BHW4
	  720x1440 TFT LCD panel that uses a MIPI-DSI interface.

	  If M is selected the module will be called panel-himax-hx8394.

config DRM_PANEL_ILITEK_IL9322
	tristate "Ilitek ILI9322 320x240 QVGA panels"
	depends on OF && SPI
	select REGMAP
	help
	  Say Y here if you want to enable support for Ilitek IL9322
	  QVGA (320x240) RGB, YUV and ITU-T BT.656 panels.

config DRM_PANEL_ILITEK_ILI9341
	tristate "Ilitek ILI9341 240x320 QVGA panels"
	depends on OF && SPI
	select DRM_KMS_HELPER
	select DRM_GEM_DMA_HELPER
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_MIPI_DBI
	help
	  Say Y here if you want to enable support for Ilitek IL9341
	  QVGA (240x320) RGB panels. support serial & parallel rgb
	  interface.

config DRM_PANEL_ILITEK_ILI9881C
	tristate "Ilitek ILI9881C-based panels"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y if you want to enable support for panels based on the
	  Ilitek ILI9881c controller.

config DRM_PANEL_INNOLUX_EJ030NA
        tristate "Innolux EJ030NA 320x480 LCD panel"
        depends on OF && SPI
        select REGMAP_SPI
        help
          Say Y here to enable support for the Innolux/Chimei EJ030NA
          320x480 3.0" panel as found in the RS97 V2.1, RG300(non-ips)
          and LDK handheld gaming consoles.

config DRM_PANEL_INNOLUX_P079ZCA
	tristate "Innolux P079ZCA panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Innolux P079ZCA
	  TFT-LCD modules. The panel has a 1024x768 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host and has a built-in LED backlight.

config DRM_PANEL_JADARD_JD9365DA_H3
	tristate "Jadard JD9365DA-H3 WXGA DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Jadard JD9365DA-H3
	  WXGA MIPI DSI panel. The panel support TFT dot matrix LCD with
	  800RGBx1280 dots at maximum.

config DRM_PANEL_JDI_LT070ME05000
	tristate "JDI LT070ME05000 WUXGA DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for JDI DSI video mode
	  panel as found in Google Nexus 7 (2013) devices.
	  The panel has a 1200(RGB)×1920 (WUXGA) resolution and uses
	  24 bit per pixel.

config DRM_PANEL_JDI_R63452
	tristate "JDI R63452 Full HD DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the JDI R63452
	  DSI command mode panel as found in Xiaomi Mi 5 Devices.

config DRM_PANEL_KHADAS_TS050
	tristate "Khadas TS050 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Khadas TS050 TFT-LCD
	  panel module. The panel has a 1080x1920 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host, a built-in LED backlight and touch controller.

config DRM_PANEL_KINGDISPLAY_KD097D04
	tristate "Kingdisplay kd097d04 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Kingdisplay kd097d04
	  TFT-LCD modules. The panel has a 1536x2048 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host and has a built-in LED backlight.

config DRM_PANEL_LEADTEK_LTK050H3146W
	tristate "Leadtek LTK050H3146W panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Leadtek LTK050H3146W
	  TFT-LCD modules. The panel has a 720x1280 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host and has a built-in LED backlight.

config DRM_PANEL_LEADTEK_LTK500HD1829
	tristate "Leadtek LTK500HD1829 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Kingdisplay kd097d04
	  TFT-LCD modules. The panel has a 1536x2048 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host and has a built-in LED backlight.

config DRM_PANEL_SAMSUNG_LD9040
	tristate "Samsung LD9040 RGB/SPI panel"
	depends on OF && SPI
	select VIDEOMODE_HELPERS

config DRM_PANEL_LG_LB035Q02
	tristate "LG LB035Q024573 RGB panel"
	depends on GPIOLIB && OF && SPI
	help
	  Say Y here if you want to enable support for the LB035Q02 RGB panel
	  (found on the Gumstix Overo Palo35 board). To compile this driver as
	  a module, choose M here.

config DRM_PANEL_LG_LG4573
	tristate "LG4573 RGB/SPI panel"
	depends on OF && SPI
	select VIDEOMODE_HELPERS
	help
	  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_NEC_NL8048HL11
	tristate "NEC NL8048HL11 RGB panel"
	depends on GPIOLIB && OF && SPI
	help
	  Say Y here if you want to enable support for the NEC NL8048HL11 RGB
	  panel (found on the Zoom2/3/3630 SDP boards). To compile this driver
	  as a module, choose M here.

config DRM_PANEL_NEWVISION_NV3051D
	tristate "NewVision NV3051D DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  This driver supports the NV3051D based panel found on the Anbernic
	  RG353P and RG353V.

config DRM_PANEL_NEWVISION_NV3052C
	tristate "NewVision NV3052C RGB/SPI panel"
	depends on OF && SPI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_MIPI_DBI
	help
	  Say Y here if you want to enable support for the panels built
	  around the NewVision NV3052C display controller.

config DRM_PANEL_NOVATEK_NT35510
	tristate "Novatek NT35510 RGB panel driver"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the panels built
	  around the Novatek NT35510 display controller, such as some
	  Hydis panels.

config DRM_PANEL_NOVATEK_NT35560
	tristate "Novatek NT35560 DSI command mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select VIDEOMODE_HELPERS
	help
	  Say Y here if you want to enable the Novatek NT35560 display
	  controller. This panel supports DSI in both command and video
	  mode. This supports several panels such as Sony ACX424AKM and
	  ACX424AKP.

config DRM_PANEL_NOVATEK_NT35950
	tristate "Novatek NT35950 DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the panels built
	  around the Novatek NT35950 display controller, such as some
	  Sharp panels used in Sony Xperia Z5 Premium and XZ Premium
	  mobile phones.

config DRM_PANEL_NOVATEK_NT36672A
	tristate "Novatek NT36672A DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the panels built
	  around the Novatek NT36672A display controller, such as some
	  Tianma panels used in a few Xiaomi Poco F1 mobile phones.

config DRM_PANEL_NOVATEK_NT39016
	tristate "Novatek NT39016 RGB/SPI panel"
	depends on OF && SPI
	depends on BACKLIGHT_CLASS_DEVICE
	select REGMAP_SPI
	help
	  Say Y here if you want to enable support for the panels built
	  around the Novatek NT39016 display controller.

config DRM_PANEL_MANTIX_MLAF057WE51
	tristate "Mantix MLAF057WE51-X MIPI-DSI LCD panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Mantix
	  MLAF057WE51-X MIPI DSI panel as e.g. used in the Librem 5. It
	  has a resolution of 720x1440 pixels, a built in backlight and touch
	  controller.

config DRM_PANEL_OLIMEX_LCD_OLINUXINO
	tristate "Olimex LCD-OLinuXino panel"
	depends on OF
	depends on I2C
	depends on BACKLIGHT_CLASS_DEVICE
	select CRC32
	help
	  The panel is used with different sizes LCDs, from 480x272 to
	  1280x800, and 24 bit per pixel.

	  Say Y here if you want to enable support for Olimex Ltd.
	  LCD-OLinuXino panel.

config DRM_PANEL_ORISETECH_OTA5601A
        tristate "Orise Technology ota5601a RGB/SPI panel"
        depends on SPI
        depends on BACKLIGHT_CLASS_DEVICE
        select REGMAP_SPI
        help
          Say Y here if you want to enable support for the panels built
          around the Orise Technology OTA9601A display controller.

config DRM_PANEL_ORISETECH_OTM8009A
	tristate "Orise Technology otm8009a 480x800 dsi 2dl panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Orise Technology
	  otm8009a 480x800 dsi 2dl panel.

config DRM_PANEL_OSD_OSD101T2587_53TS
	tristate "OSD OSD101T2587-53TS DSI 1920x1200 video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for One Stop Displays
	  OSD101T2587-53TS 10.1" 1920x1200 dsi panel.

config DRM_PANEL_PANASONIC_VVX10F034N00
	tristate "Panasonic VVX10F034N00 1920x1200 video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Panasonic VVX10F034N00
	  WUXGA (1920x1200) Novatek NT1397-based DSI panel as found in some
	  Xperia Z2 tablets

config DRM_PANEL_RASPBERRYPI_TOUCHSCREEN
	tristate "Raspberry Pi 7-inch touchscreen panel"
	depends on DRM_MIPI_DSI
	help
	  Say Y here if you want to enable support for the Raspberry
	  Pi 7" Touchscreen.  To compile this driver as a module,
	  choose M here.

config DRM_PANEL_RAYDIUM_RM67191
	tristate "Raydium RM67191 FHD 1080x1920 DSI video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Raydium RM67191 FHD
	  (1080x1920) DSI panel.

config DRM_PANEL_RAYDIUM_RM68200
	tristate "Raydium RM68200 720x1280 DSI video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Raydium RM68200
	  720x1280 DSI video mode panel.

config DRM_PANEL_RONBO_RB070D30
	tristate "Ronbo Electronics RB070D30 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Ronbo Electronics
	  RB070D30 1024x600 DSI panel.

config DRM_PANEL_SAMSUNG_ATNA33XC20
	tristate "Samsung ATNA33XC20 eDP panel"
	depends on OF
	depends on BACKLIGHT_CLASS_DEVICE
	depends on PM
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_DP_AUX_BUS
	help
	  DRM panel driver for the Samsung ATNA33XC20 panel. This panel can't
	  be handled by the DRM_PANEL_SIMPLE driver because its power
	  sequencing is non-standard.

config DRM_PANEL_SAMSUNG_DB7430
	tristate "Samsung DB7430-based DPI panels"
	depends on OF && SPI && GPIOLIB
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_MIPI_DBI
	help
	  Say Y here if you want to enable support for the Samsung
	  DB7430 DPI display controller used in such devices as the
	  LMS397KF04 480x800 DPI panel.

config DRM_PANEL_SAMSUNG_S6D16D0
	tristate "Samsung S6D16D0 DSI video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_S6D27A1
	tristate "Samsung S6D27A1 DPI panel driver"
	depends on OF && SPI && GPIOLIB
	select DRM_MIPI_DBI
	help
	  Say Y here if you want to enable support for the Samsung
	  S6D27A1 DPI 480x800 panel.

	  This panel can be found in Samsung Galaxy Ace 2
	  GT-I8160 mobile phone.

config DRM_PANEL_SAMSUNG_S6E3HA2
	tristate "Samsung S6E3HA2 DSI video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_S6E63J0X03
	tristate "Samsung S6E63J0X03 DSI command mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_S6E63M0
	tristate "Samsung S6E63M0 RGB panel"
	depends on OF
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Samsung S6E63M0
	  AMOLED LCD panel. This panel can be accessed using SPI or
	  DSI.

config DRM_PANEL_SAMSUNG_S6E63M0_SPI
	tristate "Samsung S6E63M0 RGB SPI interface"
	depends on SPI
	depends on DRM_PANEL_SAMSUNG_S6E63M0
	default DRM_PANEL_SAMSUNG_S6E63M0
	select DRM_MIPI_DBI
	help
	  Say Y here if you want to be able to access the Samsung
	  S6E63M0 panel using SPI.

config DRM_PANEL_SAMSUNG_S6E63M0_DSI
	tristate "Samsung S6E63M0 RGB DSI interface"
	depends on DRM_MIPI_DSI
	depends on DRM_PANEL_SAMSUNG_S6E63M0
	help
	  Say Y here if you want to be able to access the Samsung
	  S6E63M0 panel using DSI.

config DRM_PANEL_SAMSUNG_S6E88A0_AMS452EF01
	tristate "Samsung AMS452EF01 panel with S6E88A0 DSI video mode controller"
	depends on OF
	select DRM_MIPI_DSI
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_S6E8AA0
	tristate "Samsung S6E8AA0 DSI video mode panel"
	depends on OF
	select DRM_MIPI_DSI
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_SOFEF00
	tristate "Samsung sofef00/s6e3fc2x01 OnePlus 6/6T DSI cmd mode panels"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select VIDEOMODE_HELPERS
	help
	  Say Y or M here if you want to enable support for the Samsung AMOLED
	  command mode panels found in the OnePlus 6/6T smartphones.

	  The panels are 2280x1080@60Hz and 2340x1080@60Hz respectively

config DRM_PANEL_SEIKO_43WVF1G
	tristate "Seiko 43WVF1G panel"
	depends on OF
	depends on BACKLIGHT_CLASS_DEVICE
	select VIDEOMODE_HELPERS
	help
	  Say Y here if you want to enable support for the Seiko
	  43WVF1G controller for 800x480 LCD panels

config DRM_PANEL_SHARP_LQ101R1SX01
	tristate "Sharp LQ101R1SX01 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Sharp LQ101R1SX01
	  TFT-LCD modules. The panel has a 2560x1600 resolution and uses
	  24 bit RGB per pixel. It provides a dual MIPI DSI interface to
	  the host and has a built-in LED backlight.

	  To compile this driver as a module, choose M here: the module
	  will be called panel-sharp-lq101r1sx01.

config DRM_PANEL_SHARP_LS037V7DW01
	tristate "Sharp LS037V7DW01 VGA LCD panel"
	depends on GPIOLIB && OF && REGULATOR
	help
	  Say Y here if you want to enable support for Sharp LS037V7DW01 VGA
	  (480x640) LCD panel (found on the TI SDP3430 board).

config DRM_PANEL_SHARP_LS043T1LE01
	tristate "Sharp LS043T1LE01 qHD video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Sharp LS043T1LE01 qHD
	  (540x960) DSI panel as found on the Qualcomm APQ8074 Dragonboard

config DRM_PANEL_SHARP_LS060T1SX01
	tristate "Sharp LS060T1SX01 FullHD video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Sharp LS060T1SX01 6.0"
	  FullHD (1080x1920) DSI panel as found in Dragonboard Display Adapter
	  Bundle.

config DRM_PANEL_SITRONIX_ST7701
	tristate "Sitronix ST7701 panel driver"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Sitronix
	  ST7701 controller for 480X864 LCD panels with MIPI/RGB/SPI
	  system interfaces.

config DRM_PANEL_SITRONIX_ST7703
	tristate "Sitronix ST7703 based MIPI touchscreen panels"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Sitronix ST7703 based
	  panels, souch as Rocktech JH057N00900 MIPI DSI panel as e.g. used in
	  the Librem 5 devkit. It has a resolution of 720x1440 pixels, a built
	  in backlight and touch controller.
	  Touch input support is provided by the goodix driver and needs to be
	  selected separately.

config DRM_PANEL_SITRONIX_ST7789V
	tristate "Sitronix ST7789V panel"
	depends on OF && SPI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Sitronix
	  ST7789V controller for 240x320 LCD panels

config DRM_PANEL_SONY_ACX565AKM
	tristate "Sony ACX565AKM panel"
	depends on GPIOLIB && OF && SPI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Sony ACX565AKM
	  800x600 3.5" panel (found on the Nokia N900).

config DRM_PANEL_SONY_TULIP_TRULY_NT35521
	tristate "Sony Tulip Truly NT35521 panel"
	depends on GPIOLIB && OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Sony Tulip
	  NT35521 1280x720 video mode panel as found on Sony Xperia M4
	  Aqua phone.

config DRM_PANEL_TDO_TL070WSH30
	tristate "TDO TL070WSH30 DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for TDO TL070WSH30 TFT-LCD
	  panel module. The panel has a 1024×600 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host, a built-in LED backlight and touch controller.

config DRM_PANEL_TPO_TD028TTEC1
	tristate "Toppoly (TPO) TD028TTEC1 panel driver"
	depends on OF && SPI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for TPO TD028TTEC1 480x640
	  2.8" panel (found on the OpenMoko Neo FreeRunner and Neo 1973).

config DRM_PANEL_TPO_TD043MTEA1
	tristate "Toppoly (TPO) TD043MTEA1 panel driver"
	depends on GPIOLIB && OF && REGULATOR && SPI
	help
	  Say Y here if you want to enable support for TPO TD043MTEA1 800x480
	  4.3" panel (found on the OMAP3 Pandora board).

config DRM_PANEL_TPO_TPG110
	tristate "TPO TPG 800x400 panel"
	depends on OF && SPI && GPIOLIB
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for TPO TPG110
	  400CH LTPS TFT LCD Single Chip Digital Driver for up to
	  800x400 LCD panels.

config DRM_PANEL_TRULY_NT35597_WQXGA
	tristate "Truly WQXGA"
	depends on OF
	depends on DRM_MIPI_DSI
	help
	  Say Y here if you want to enable support for Truly NT35597 WQXGA Dual DSI
	  Video Mode panel

config DRM_PANEL_VISIONOX_RM69299
	tristate "Visionox RM69299"
	depends on OF
	depends on DRM_MIPI_DSI
	help
	  Say Y here if you want to enable support for Visionox
	  RM69299  DSI Video Mode panel.

config DRM_PANEL_VISIONOX_VTDR6130
	tristate "Visionox VTDR6130"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Visionox
	  VTDR6130 1080x2400 AMOLED DSI panel.

config DRM_PANEL_WIDECHIPS_WS2401
	tristate "Widechips WS2401 DPI panel driver"
	depends on SPI && GPIOLIB
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_MIPI_DBI
	help
	  Say Y here if you want to enable support for the Widechips WS2401 DPI
	  480x800 display controller used in panels such as Samsung LMS380KF01.
	  This display is used in the Samsung Galaxy Ace 2 GT-I8160 (Codina).

config DRM_PANEL_XINPENG_XPP055C272
	tristate "Xinpeng XPP055C272 panel driver"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for the Xinpeng
	  XPP055C272 controller for 720x1280 LCD panels with MIPI/RGB/SPI
	  system interfaces.
endmenu
