# 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_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_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_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_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_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_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_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_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_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_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_DP_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_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_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_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_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_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_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_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 pannel 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_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_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_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_R66451
	tristate "Visionox R66451"
	depends on OF
	depends on DRM_MIPI_DSI
	depends on BACKLIGHT_CLASS_DEVICE
	select DRM_DISPLAY_DP_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_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
