# 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_TD4320
	tristate "BOE TD4320 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 BOE TD4320 1080x2340
	  video mode panel found in Xiaomi Redmi Note 7 smartphones.

config DRM_PANEL_BOE_TH101MB31UIG002_28A
	tristate "Boe TH101MB31UIG002-28A 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
	  TH101MB31UIG002-28A TFT-LCD modules. The panel has a 800x1280
	  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_BOE_TV101WUM_LL2
	tristate "BOE TV101WUM LL2 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-LL2
	  WUXGA PANEL DSI Video Mode panel

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_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_HIMAX_HX8279
	tristate "Himax HX8279-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
	  Himax HX8279 controller, such as the Startek KD070FHFID078
	  7.0" 1200x1920 IPS LCD panel that uses a MIPI-DSI interface
	  and others.

config DRM_PANEL_HIMAX_HX83102
	tristate "Himax HX83102-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
	  Himax HX83102 controller.

config DRM_PANEL_HIMAX_HX83112A
	tristate "Himax HX83112A-based DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_KMS_HELPER
	help
	  Say Y here if you want to enable support for Himax HX83112A-based
	  display panels, such as the one found in the Fairphone 4 smartphone.

config DRM_PANEL_HIMAX_HX83112B
	tristate "Himax HX83112B-based DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_KMS_HELPER
	help
	  Say Y here if you want to enable support for Himax HX83112B-based
	  display panels, such as the one found in the Fairphone 3 smartphone.

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_HYDIS_HV101HD1
	tristate "Hydis HV101HD1 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 Hydis HV101HD1
	  2-lane 1366x768 MIPI DSI panel found in ASUS VivoTab RT TF600T.
	  HV101HD1 is a color active matrix TFT LCD module using amorphous
	  silicon TFT's (Thin Film Transistors) as an active switching devices.

	  If M is selected the module will be called panel-hydis-hv101hd1

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 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_ILI9805
	tristate "Ilitek ILI9805-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 ILI9805 controller.

config DRM_PANEL_ILITEK_ILI9806E
	tristate "Ilitek ILI9806E-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 ILI9806E controller.

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_ILITEK_ILI9882T
	tristate "Ilitek ILI9882t-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 ILI9882t 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_LPM102A188A
	tristate "JDI LPM102A188A DSI panel"
	depends on OF && GPIOLIB
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for JDI LPM102A188A DSI
	  command mode panel as found in Google Pixel C devices.
	  The panel has a 2560×1800 resolution. It provides a MIPI DSI interface
	  to the host.

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_LINCOLNTECH_LCD197
	tristate "Lincoln Technologies lcd197 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 lincolntech lcd197
	  TFT-LCD modules. The panel has a 1080x1920 resolution and uses
	  24 bit RGB per pixel. It provides a MIPI DSI interface to
	  the host.

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_LD070WX3
	tristate "LG LD070WX3 MIPI DSI 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 support for the LD070WX3 MIPI DSI
	  panel found in the NVIDIA Tegra Note 7 tablet.

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

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_LG_SW43408
	tristate "LG SW43408 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_DISPLAY_DSC_HELPER
	select DRM_DISPLAY_HELPER
	help
	  Say Y here if you want to enable support for LG sw43408 panel.
	  The panel has a 1080x2160@60Hz 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_MAGNACHIP_D53E6EA8966
	tristate "Magnachip D53E6EA8966 DSI panel"
	depends on OF && SPI
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_MIPI_DBI
	help
	  DRM panel driver for the Samsung AMS495QA01 panel controlled
	  with the Magnachip D53E6EA8966 panel IC. This panel receives
	  video data via DSI but commands via 9-bit SPI using DBI.

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_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_NT36523
	tristate "Novatek NT36523 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 NT36523 display controller, such as some
	  Boe panels used in Xiaomi Mi Pad 5 and 5 Pro tablets.

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_NT36672E
	tristate "Novatek NT36672E 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 Novatek NT36672E DSI Video Mode
	  LCD panel module. The panel has a resolution of 1080x2408 and uses 24 bit
	  RGB per pixel.

config DRM_PANEL_NOVATEK_NT37801
	tristate "Novatek NT37801/NT37810 AMOLED DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_DISPLAY_DSC_HELPER
	select DRM_DISPLAY_HELPER
	help
	  Say Y here if you want to enable support for Novatek NT37801 (or
	  NT37810) AMOLED DSI Video Mode LCD panel module with 1440x3200
	  resolution.

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_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_RM67200
	tristate "Raydium RM67200-based DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	help
	  Say Y here if you want to enable support for Raydium RM67200-based
	  DSI video mode panels. This panel controller can be found in the
	  Wanchanglong W552793BAA panel found on the Rockchip RK3588 EVB1
	  evaluation boards.

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_RAYDIUM_RM692E5
	tristate "Raydium RM692E5-based DSI panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_DISPLAY_DSC_HELPER
	select DRM_DISPLAY_HELPER
	help
	  Say Y here if you want to enable support for Raydium RM692E5-based
	  display panels, such as the one found in the Fairphone 5 smartphone.

config DRM_PANEL_RAYDIUM_RM69380
	tristate "Raydium RM69380-based DSI panel"
	depends on OF && GPIOLIB
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Raydium RM69380-based
	  display panels.

	  This panel controller can be found in the Lenovo Xiaoxin Pad Pro 2021
	  in combination with an EDO OLED panel.

config DRM_PANEL_RENESAS_R61307
	tristate "Renesas R61307 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 KOE tx13d100vm0eaa
	  IPS-LCD module with Renesas R69328 IC. The panel has a 1024x768
	  resolution and uses 24 bit RGB per pixel.

	  This panel controller can be found in LG Optimus Vu P895 smartphone
	  in combination with LCD panel.

config DRM_PANEL_RENESAS_R69328
	tristate "Renesas R69328 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 JDI dx12d100vm0eaa
	  IPS-LCD module with Renesas R69328 IC. The panel has a 720x1280
	  resolution and uses 24 bit RGB per pixel.

	  This panel controller can be found in LG Optimus 4X P895 smartphone
	  in combination with LCD 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_AMS581VF01
	tristate "Samsung AMS581VF01 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y or M here if you want to enable support for the
	  Samsung AMS581VF01 FHD Plus (2340x1080@60Hz) CMD mode panel.

config DRM_PANEL_SAMSUNG_AMS639RQ08
	tristate "Samsung AMS639RQ08 panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y or M here if you want to enable support for the
	  Samsung AMS639RQ08 FHD Plus (2340x1080@60Hz) CMD mode panel.

config DRM_PANEL_SAMSUNG_S6E88A0_AMS427AP24
	tristate "Samsung AMS427AP24 panel with S6E88A0 controller"
	depends on GPIOLIB && OF && REGULATOR
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Samsung AMS427AP24 panel
	  with S6E88A0 controller (found in Samsung Galaxy S4 Mini Value Edition
	  GT-I9195I). To compile this driver as a module, choose M here.

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_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_DISPLAY_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_LD9040
	tristate "Samsung LD9040 RGB/SPI panel"
	depends on OF && SPI
	depends on BACKLIGHT_CLASS_DEVICE
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_S6E3FA7
	tristate "Samsung S6E3FA7 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 Samsung S6E3FA7
	  1920x2220 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_S6D7AA0
	tristate "Samsung S6D7AA0 MIPI-DSI video mode panel controller"
	depends on OF
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_MIPI_DSI
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_S6E3FC2X01
	tristate "Samsung S6E3FC2X01 DSI panel controller"
	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 S6E3FC2 DDIC and connected MIPI DSI panel.
	  Currently supported panels:

	    Samsung AMS641RW (found in the OnePlus 6T smartphone)

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_S6E3HA8
	tristate "Samsung S6E3HA8 DSI video mode panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_DISPLAY_DSC_HELPER
	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_S6E8AA0
	tristate "Samsung S6E8AA0 DSI video mode panel"
	depends on OF
	select DRM_MIPI_DSI
	select VIDEOMODE_HELPERS

config DRM_PANEL_SAMSUNG_S6E8AA5X01_AMS561RA01
	tristate "Samsung AMS561RA01 panel with S6E8AA5X01 controller"
	depends on GPIOLIB && OF && REGULATOR
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to enable support for Samsung AMS561RA01
	  panel, which uses Samsung's S6E8AA5X01 controller. The panel has a
	  ~5.6 inch AMOLED display, and the controller is driven by the MIPI
	  DSI protocol with 4 lanes.

config DRM_PANEL_SAMSUNG_SOFEF00
	tristate "Samsung SOFEF00 DSI panel controller"
	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
	  panel SOFEF00 DDIC and connected panel.
	  Currently supported panels:

	    Samsung AMS628NW01 (found in OnePlus 6, 1080x2280@60Hz)

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_LQ079L1SX01
	tristate "Sharp LQ079L1SX01 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 support for Sharp LQ079L1SX01
	  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.

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

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 SPI || DRM_MIPI_DSI
	select DRM_MIPI_DBI if SPI
	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_TD4353_JDI
	tristate "Sony TD4353 JDI 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 Tama
	  TD4353 JDI command mode panel as found on some Sony Xperia
	  XZ2 and XZ2 Compact smartphones.

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_STARTEK_KD070FHFID015
	tristate "STARTEK KD070FHFID015 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 STARTEK KD070FHFID015 DSI panel
	  based on RENESAS-R69429 controller. The panel is a 7-inch TFT LCD display
	  with a resolution of 1024 x 600 pixels. It provides a MIPI DSI interface to
	  the host, a built-in LED backlight and touch controller.

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_DISPLAY_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_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_SUMMIT
	tristate "Apple Summit display panel"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y if you want to enable support for the "Summit" display panel
	  used as a touchbar on certain Apple laptops.

config DRM_PANEL_SYNAPTICS_R63353
	tristate "Synaptics R63353-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
	  Synaptics R63353 controller.

config DRM_PANEL_SYNAPTICS_TDDI
	tristate "Synaptics TDDI display panels"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	help
	  Say Y if you want to enable support for the Synaptics TDDI display
	  panels. There are multiple MIPI DSI panels manufactured under the TDDI
	  namesake, with varying resolutions and data lanes. They also have a
	  built-in LED backlight and a touch controller.

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_G2647FB105
	tristate "Visionox G2647FB105"
	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 Visionox
	  G2647FB105 (2340x1080@60Hz) AMOLED DSI cmd mode panel.

config DRM_PANEL_VISIONOX_R66451
	tristate "Visionox R66451"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_DISPLAY_DSC_HELPER
	select DRM_DISPLAY_HELPER
	help
	  Say Y here if you want to enable support for Visionox
	  R66451 1080x2340 AMOLED DSI 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_RM692E5
	tristate "Visionox RM692E5"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_DISPLAY_DSC_HELPER
	select DRM_DISPLAY_HELPER
	help
	  Say Y here if you want to enable support for Visionox RM692E5 amoled
	  display panels, such as the one found in the Nothing Phone (1)
	  smartphone.

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
