Re: [1/3] drm/tinydrm/Kconfig: Remove menuconfig DRM_TINYDRM

From: Jason Gunthorpe
Date: Tue Oct 01 2019 - 08:36:41 EST


On Thu, Jul 25, 2019 at 12:51:30PM +0200, Noralf TrÃnnes wrote:
> This makes the tiny drivers visible by default without having to enable a
> knob.
>
> Signed-off-by: Noralf TrÃnnes <noralf@xxxxxxxxxxx>
> Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx> to it once
> ---
> drivers/gpu/drm/Makefile | 2 +-
> drivers/gpu/drm/tinydrm/Kconfig | 37 +++++++++++++++++++--------------
> 2 files changed, 22 insertions(+), 17 deletions(-)

Bisection says this patch (28c47e16ea2a19adb47fe2c182cbd61cb854237c)
breaks kconfig stuff in v5.4-rc by creating circular
dependencies. Could someone send a -rc patch to fix this please?

THINKPAD_ACPI (defined at drivers/platform/x86/Kconfig:484), with definition...
...depends on FB_SSD1307 (defined at drivers/video/fbdev/Kconfig:2259), with definition...
...depends on FB (defined at drivers/video/fbdev/Kconfig:12), with definition...
...depends on DRM_KMS_FB_HELPER (defined at drivers/gpu/drm/Kconfig:79), with definition...
...depends on DRM_KMS_HELPER (defined at drivers/gpu/drm/Kconfig:73), with definition...
...depends on TINYDRM_REPAPER (defined at drivers/gpu/drm/tinydrm/Kconfig:51), with definition...
...depends on THERMAL (defined at drivers/thermal/Kconfig:6), with definition...
...depends on SENSORS_NPCM7XX (defined at drivers/hwmon/Kconfig:1285), with definition...
...depends on HWMON (defined at drivers/hwmon/Kconfig:6), with definition...
...depends on THINKPAD_ACPI (defined at drivers/platform/x86/Kconfig:484), with definition...
...depends on ACPI_VIDEO (defined at drivers/acpi/Kconfig:193), with definition...
...depends on ACER_WMI (defined at drivers/platform/x86/Kconfig:19), with definition...
...depends on BACKLIGHT_CLASS_DEVICE (defined at drivers/video/backlight/Kconfig:144), with definition...
...depends again on THINKPAD_ACPI (defined at drivers/platform/x86/Kconfig:484)

Full output:

kconfiglib.KconfigError:
Dependency loop
===============

THINKPAD_ACPI (defined at drivers/platform/x86/Kconfig:484), with definition...

config THINKPAD_ACPI
tristate "ThinkPad ACPI Laptop Extras"
select HWMON
select NVRAM
select NEW_LEDS
select LEDS_CLASS
select LEDS_TRIGGERS
select LEDS_TRIGGER_AUDIO
depends on ACPI && ACPI_BATTERY && INPUT && (RFKILL || RFKILL = n) && (ACPI_VIDEO || ACPI_VIDEO = n) && BACKLIGHT_CLASS_DEVICE && X86_PLATFORM_DEVICES && X86
help
This is a driver for the IBM and Lenovo ThinkPad laptops. It adds
support for Fn-Fx key combinations, Bluetooth control, video
output switching, ThinkLight control, UltraBay eject and more.
For more information about this driver see
<file:Documentation/admin-guide/laptops/thinkpad-acpi.rst> and
<http://ibm-acpi.sf.net/> .

This driver was formerly known as ibm-acpi.

Extra functionality will be available if the rfkill (CONFIG_RFKILL)
and/or ALSA (CONFIG_SND) subsystems are available in the kernel.
Note that if you want ThinkPad-ACPI to be built-in instead of
modular, ALSA and rfkill will also have to be built-in.

If you have an IBM or Lenovo ThinkPad laptop, say Y or M here.

...depends on ACPI_VIDEO (defined at drivers/acpi/Kconfig:193), with definition...

config ACPI_VIDEO
tristate "Video"
select THERMAL
depends on X86 && BACKLIGHT_CLASS_DEVICE && INPUT && ACPI
help
This driver implements the ACPI Extensions For Display Adapters
for integrated graphics devices on motherboard, as specified in
ACPI 2.0 Specification, Appendix B. This supports basic operations
such as defining the video POST device, retrieving EDID information,
and setting up a video output.

To compile this driver as a module, choose M here:
the module will be called video.

(select-related dependencies: (DRM_NOUVEAU && ACPI && X86 && BACKLIGHT_CLASS_DEVICE && INPUT && DRM && PCI && MMU && HAS_IOMEM) || (DRM_NOUVEAU && ACPI && X86 && DRM && PCI && MMU && HAS_IOMEM) || (DRM_I915 && ACPI && DRM && X86 && PCI && HAS_IOMEM) || (DRM_GMA500 && ACPI && DRM && PCI && X86 && MMU && HAS_IOMEM) || (ACER_WMI && ACPI && ACPI && BACKLIGHT_CLASS_DEVICE && SERIO_I8042 && INPUT && (RFKILL || RFKILL = n) && ACPI_WMI && X86_PLATFORM_DEVICES && X86))

...depends on ACER_WMI (defined at drivers/platform/x86/Kconfig:19), with definition...

config ACER_WMI
tristate "Acer WMI Laptop Extras"
select LEDS_CLASS
select NEW_LEDS
select INPUT_SPARSEKMAP
select ACPI_VIDEO if ACPI
depends on ACPI && BACKLIGHT_CLASS_DEVICE && SERIO_I8042 && INPUT && (RFKILL || RFKILL = n) && ACPI_WMI && X86_PLATFORM_DEVICES && X86
help
This is a driver for newer Acer (and Wistron) laptops. It adds
wireless radio and bluetooth control, and on some laptops,
exposes the mail LED and LCD backlight.

If you have an ACPI-WMI compatible Acer/ Wistron laptop, say Y or M
here.

...depends on SERIO_I8042 (defined at drivers/input/serio/Kconfig:29), with definition...

config SERIO_I8042
tristate "i8042 PC Keyboard controller"
default y
depends on ARCH_MIGHT_HAVE_PC_SERIO && SERIO && !UML
help
i8042 is the chip over which the standard AT keyboard and PS/2
mouse are connected to the computer. If you use these devices,
you'll need to say Y here.

If unsure, say Y.

To compile this driver as a module, choose M here: the
module will be called i8042.

(select-related dependencies: (KEYBOARD_ATKBD && ARCH_MIGHT_HAVE_PC_SERIO && INPUT_KEYBOARD && INPUT && !UML) || (MOUSE_PS2 && ARCH_MIGHT_HAVE_PC_SERIO && INPUT_MOUSE && INPUT && !UML))

...depends on SERIO (defined at drivers/input/serio/Kconfig:5), with definition...

config SERIO
tristate "Serial I/O support"
default y
depends on !UML
help
Say Yes here if you have any input device that uses serial I/O to
communicate with the system. This includes the
* standard AT keyboard and PS/2 mouse *
as well as serial mice, Sun keyboards, some joysticks and 6dof
devices and more.

If unsure, say Y.

To compile this driver as a module, choose M here: the
module will be called serio.

(select-related dependencies: (KEYBOARD_ATKBD && INPUT_KEYBOARD && INPUT && !UML) || (KEYBOARD_LKKBD && INPUT_KEYBOARD && INPUT && !UML) || (KEYBOARD_HIL && (GSC || HP300) && INPUT_KEYBOARD && INPUT && !UML) || (KEYBOARD_NEWTON && INPUT_KEYBOARD && INPUT && !UML) || (KEYBOARD_STOWAWAY && INPUT_KEYBOARD && INPUT && !UML) || (KEYBOARD_SUNKBD && INPUT_KEYBOARD && INPUT && !UML) || (KEYBOARD_XTKBD && INPUT_KEYBOARD && INPUT && !UML) || (MOUSE_PS2 && INPUT_MOUSE && INPUT && !UML) || (MOUSE_SERIAL && INPUT_MOUSE && INPUT && !UML) || (MOUSE_VSXXXAA && INPUT_MOUSE && INPUT && !UML) || (JOYSTICK_WARRIOR && INPUT_JOYSTICK && INPUT && !UML) || (JOYSTICK_MAGELLAN && INPUT_JOYSTICK && INPUT && !UML) || (JOYSTICK_SPACEORB && INPUT_JOYSTICK && INPUT && !UML) || (JOYSTICK_SPACEBALL && INPUT_JOYSTICK && INPUT && !UML) || (JOYSTICK_STINGER && INPUT_JOYSTICK && INPUT && !UML) || (JOYSTICK_TWIDJOY && INPUT_JOYSTICK && INPUT && !UML) || (JOYSTICK_ZHENHUA && INPUT_JOYSTICK && INPUT && !UML) || (TABLET_SERIAL_WACOM4 && INPUT_TABLET && INPUT && !UML) || (TOUCHSCREEN_DYNAPRO && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_HAMPSHIRE && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_EGALAX_SERIAL && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_FUJITSU && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_GUNZE && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_ELO && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_WACOM_W8001 && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_MTOUCH && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_INEXIO && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_PENMOUNT && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_TOUCHRIGHT && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_TOUCHWIN && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_TOUCHIT213 && INPUT_TOUCHSCREEN && INPUT && !UML) || (TOUCHSCREEN_TSC_SERIO && INPUT_TOUCHSCREEN && INPUT && !UML) || (RMI4_F03_SERIO && RMI4_CORE && RMI4_F03 && RMI4_CORE && INPUT && !UML) || (I2C_TAOS_EVM && TTY && HAS_IOMEM && I2C) || (USB_PULSE8_CEC && USB_ACM && MEDIA_CEC_SUPPORT && MEDIA_USB_SUPPORT && USB && MEDIA_SUPPORT && MEDIA_SUPPORT) || (USB_RAINSHADOW_CEC && USB_ACM && MEDIA_CEC_SUPPORT && MEDIA_USB_SUPPORT && USB && MEDIA_SUPPORT && MEDIA_SUPPORT))

...depends on RMI4_F03 (defined at drivers/input/rmi4/Kconfig:46), with definition...

config RMI4_F03
bool "RMI4 Function 03 (PS2 Guest)"
depends on RMI4_CORE && RMI4_CORE && INPUT && !UML
help
Say Y here if you want to add support for RMI4 function 03.

Function 03 provides PS2 guest support for RMI4 devices. This
includes support for TrackPoints on TouchPads.

(select-related dependencies: HID_RMI && HID && HID && HID && INPUT)

...depends on HID_RMI (defined at drivers/hid/Kconfig:919), with definition...

config HID_RMI
tristate "Synaptics RMI4 device support"
select RMI4_CORE
select RMI4_F03
select RMI4_F11
select RMI4_F12
select RMI4_F30
depends on HID && HID && HID && INPUT
help
Support for Synaptics RMI4 touchpads.
Say Y here if you have a Synaptics RMI4 touchpads over i2c-hid or usbhid
and want support for its special functionalities.

...depends on HID (defined at drivers/hid/Kconfig:8), with definition...

config HID
tristate "HID bus support"
default y
depends on INPUT && INPUT
help
A human interface device (HID) is a type of computer device that
interacts directly with and takes input from humans. The term "HID"
most commonly used to refer to the USB-HID specification, but other
devices (such as, but not strictly limited to, Bluetooth) are
designed using HID specification (this involves certain keyboards,
mice, tablets, etc). This option adds the HID bus to the kernel,
together with generic HID layer code. The HID devices are added and
removed from the HID bus by the transport-layer drivers, such as
usbhid (USB_HID) and hidp (BT_HIDP).

For docs and specs, see http://www.usb.org/developers/hidpage/

If unsure, say Y.

(select-related dependencies: (BT_HIDP && BT_BREDR && INPUT && NET) || (USB_HID && USB && INPUT && USB && INPUT) || (I2C_HID && I2C && INPUT && I2C && INPUT) || (INTEL_ISH_HID && (X86_64 || COMPILE_TEST) && PCI && INPUT))

...depends on I2C_HID (defined at drivers/hid/i2c-hid/Kconfig:5), with definition...

config I2C_HID
tristate "HID over I2C transport layer"
default n
select HID
depends on I2C && INPUT && I2C && INPUT
help
Say Y here if you use a keyboard, a touchpad, a touchscreen, or any
other HID based devices which is connected to your computer via I2C.

If unsure, say N.

This support is also available as a module. If so, the module
will be called i2c-hid.

...depends on I2C (defined at drivers/i2c/Kconfig:8), with definition...

config I2C
tristate "I2C support"
select RT_MUTEXES
select IRQ_DOMAIN
help
I2C (pronounce: I-squared-C) is a slow serial bus protocol used in
many micro controller applications and developed by Philips. SMBus,
or System Management Bus is a subset of the I2C protocol. More
information is contained in the directory <file:Documentation/i2c/>,
especially in the file called "summary" there.

Both I2C and SMBus are supported here. You will need this for
hardware sensors support, and also for Video For Linux support.

If you want I2C support, you should say Y here and also to the
specific driver for your bus adapter(s) below.

This I2C support can also be built as a module. If so, the module
will be called i2c-core.

(select-related dependencies: (X86_INTEL_MID && X86_EXTENDED_PLATFORM && X86_PLATFORM_DEVICES && PCI && (X86_64 || (PCI_GOANY && X86_32)) && X86_IO_APIC) || (CAN_PEAK_PCIEC && CAN_PEAK_PCI && CAN_SJA1000 && CAN_DEV && CAN && NET) || (IGB && PCI && NET_VENDOR_INTEL && ETHERNET && NETDEVICES) || (SFC && PCI && NET_VENDOR_SOLARFLARE && ETHERNET && NETDEVICES) || (SFC_FALCON && PCI && NET_VENDOR_SOLARFLARE && ETHERNET && NETDEVICES) || (IPMI_SSIF && IPMI_HANDLER) || I3C || (MEDIA_SUBDRV_AUTOSELECT && (MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_CAMERA_SUPPORT || MEDIA_SDR_SUPPORT) && HAS_IOMEM && MEDIA_SUPPORT) || (DRM && (AGP || AGP = n) && !EMULATED_CMPXCHG && HAS_DMA && HAS_IOMEM) || (FB_DDC && FB && HAS_IOMEM) || (SND_AOA_ONYX && SND_AOA && SND && !UML && SOUND) || (SND_AOA_TAS && SND_AOA && SND && !UML && SOUND) || (ARCH_R8A7790 && ARM && ARCH_RENESAS && SOC_RENESAS) || (ARCH_R8A7791 && ARM && ARCH_RENESAS && SOC_RENESAS) || (ARCH_R8A7793 && ARM && ARCH_RENESAS && SOC_RENESAS) || (PHY_EXYNOS5250_SATA && SOC_EXYNOS5250 && HAS_IOMEM && OF))

...depends on FB_DDC (defined at drivers/video/fbdev/Kconfig:63), with definition...

config FB_DDC
tristate
select I2C_ALGOBIT
select I2C
depends on FB && HAS_IOMEM

(select-related dependencies: (FB_CYBER2000_DDC && FB_CYBER2000 && HAS_IOMEM) || (FB_NVIDIA_I2C && FB_NVIDIA && HAS_IOMEM) || (FB_RIVA_I2C && FB_RIVA && HAS_IOMEM) || (FB_I740 && FB && PCI && HAS_IOMEM) || (FB_I810_I2C && FB_I810 && FB_I810_GTF && HAS_IOMEM) || (FB_INTEL_I2C && FB_INTEL && HAS_IOMEM) || (FB_MATROX_I2C && FB_MATROX && HAS_IOMEM) || (FB_RADEON_I2C && FB_RADEON && HAS_IOMEM) || (FB_S3_DDC && FB_S3 && HAS_IOMEM) || (FB_SAVAGE_I2C && FB_SAVAGE && HAS_IOMEM) || (FB_3DFX_I2C && FB_3DFX && HAS_IOMEM) || (FB_TRIDENT && FB && PCI && HAS_IOMEM))

...depends on FB_S3 (defined at drivers/video/fbdev/Kconfig:1314), with definition...

config FB_S3
tristate "S3 Trio/Virge support"
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
select FB_TILEBLITTING
select FB_SVGALIB
select VGASTATE
select FONT_8x16 if FRAMEBUFFER_CONSOLE
depends on FB && PCI && HAS_IOMEM
help
Driver for graphics boards with S3 Trio / S3 Virge chip.

...depends on FB (defined at drivers/video/fbdev/Kconfig:12), with definition...

menuconfig FB
tristate "Support for frame buffer devices"
select FB_CMDLINE
select FB_NOTIFY
depends on HAS_IOMEM
help
The frame buffer device provides an abstraction for the graphics
hardware. It represents the frame buffer of some video hardware and
allows application software to access the graphics hardware through
a well-defined interface, so the software doesn't need to know
anything about the low-level (hardware register) stuff.

Frame buffer devices work identically across the different
architectures supported by Linux and make the implementation of
application programs easier and more portable; at this point, an X
server exists which uses the frame buffer device exclusively.
On several non-X86 architectures, the frame buffer device is the
only way to use the graphics hardware.

The device is accessed through special device nodes, usually located
in the /dev directory, i.e. /dev/fb*.

You need an utility program called fbset to make full use of frame
buffer devices. Please read <file:Documentation/fb/framebuffer.rst>
and the Framebuffer-HOWTO at
<http://www.munted.org.uk/programming/Framebuffer-HOWTO-1.3.html> for more
information.

Say Y here and to the driver for your graphics board below if you
are compiling a kernel for a non-x86 architecture.

If you are compiling for the x86 architecture, you can say Y if you
want to play with it, but it is not essential. Please note that
running graphical applications that directly touch the hardware
(e.g. an accelerated X server) and that are not frame buffer
device-aware may cause unexpected results. If unsure, say N.

(select-related dependencies: (DRM_KMS_FB_HELPER && DRM_KMS_HELPER && HAS_IOMEM) || (DRM_VMWGFX && DRM && PCI && X86 && MMU && HAS_IOMEM))

...depends on DRM_KMS_HELPER (defined at drivers/gpu/drm/Kconfig:73), with definition...

config DRM_KMS_HELPER
tristate
depends on DRM && HAS_IOMEM
help
CRTC helpers for KMS drivers.

(select-related dependencies: (DRM_DEBUG_SELFTEST && DRM && DEBUG_KERNEL && HAS_IOMEM) || (DRM_FBDEV_EMULATION && DRM && HAS_IOMEM) || (DRM_HDLCD && DRM && OF && (ARM || ARM64) && COMMON_CLK && HAS_IOMEM) || (DRM_MALI_DISPLAY && DRM && OF && (ARM || ARM64) && COMMON_CLK && HAS_IOMEM) || (DRM_KOMEDA && DRM && OF && COMMON_CLK && HAS_IOMEM) || (DRM_RADEON && DRM && PCI && MMU && HAS_IOMEM) || (DRM_AMDGPU && DRM && PCI && MMU && HAS_IOMEM) || (DRM_NOUVEAU && DRM && PCI && MMU && HAS_IOMEM) || (DRM_I915 && DRM && X86 && PCI && HAS_IOMEM) || (DRM_VKMS && DRM && HAS_IOMEM) || (DRM_EXYNOS && OF && DRM && (ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || ARCH_MULTIPLATFORM || COMPILE_TEST) && HAS_IOMEM) || (DRM_ROCKCHIP && DRM && ROCKCHIP_IOMMU && HAS_IOMEM) || (DRM_VMWGFX && DRM && PCI && X86 && MMU && HAS_IOMEM) || (DRM_GMA500 && DRM && PCI && X86 && MMU && HAS_IOMEM) || (DRM_UDL && DRM && USB_SUPPORT && USB_ARCH_HAS_HCD && HAS_IOMEM) || (DRM_AST && DRM && PCI && MMU && HAS_IOMEM) || (DRM_MGAG200 && DRM && PCI && MMU && HAS_IOMEM) || (DRM_CIRRUS_QEMU && DRM && PCI && MMU && HAS_IOMEM) || (DRM_ARMADA && DRM && HAVE_CLK && ARM && MMU && HAS_IOMEM) || (DRM_ATMEL_HLCDC && DRM && OF && COMMON_CLK && MFD_ATMEL_HLCDC && ARM && HAS_IOMEM) || (DRM_RCAR_DU && DRM && OF && (ARM || ARM64) && (ARCH_RENESAS || COMPILE_TEST) && HAS_IOMEM) || (DRM_SHMOBILE && DRM && ARM && (ARCH_SHMOBILE || COMPILE_TEST) && HAS_IOMEM) || (DRM_SUN4I && DRM && (ARM || ARM64) && COMMON_CLK && (ARCH_SUNXI || COMPILE_TEST) && HAS_IOMEM) || (DRM_OMAP && DRM && (ARCH_OMAP2PLUS || ARCH_MULTIPLATFORM) && HAS_IOMEM) || (DRM_TILCDC && DRM && OF && ARM && HAS_IOMEM) || (DRM_QXL && DRM && PCI && MMU && HAS_IOMEM) || (DRM_BOCHS && DRM && PCI && MMU && HAS_IOMEM) || (DRM_VIRTIO_GPU && DRM && VIRTIO && MMU && HAS_IOMEM) || (DRM_MSM && DRM && (ARCH_QCOM || SOC_IMX5 || (ARM && COMPILE_TEST)) && OF && COMMON_CLK && MMU && (INTERCONNECT || !INTERCONNECT) && HAS_IOMEM) || (DRM_FSL_DCU && DRM && OF && ARM && COMMON_CLK && HAS_IOMEM) || (DRM_TEGRA && (ARCH_TEGRA || (ARM && COMPILE_TEST)) && COMMON_CLK && DRM && OF && HAS_IOMEM) || (DRM_STM && DRM && (ARCH_STM32 || ARCH_MULTIPLATFORM) && HAS_IOMEM) || (DRM_ANALOGIX_ANX78XX && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_CDNS_DSI && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_DUMB_VGA_DAC && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_NXP_PTN3460 && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_PARADE_PS8622 && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_SIL_SII8620 && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_SII902X && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_TOSHIBA_TC358767 && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_TI_TFP410 && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_TI_SN65DSI86 && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_I2C_ADV7511 && OF && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_DW_HDMI && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_DW_MIPI_DSI && DRM && DRM_BRIDGE && HAS_IOMEM) || (DRM_STI && OF && DRM && (ARCH_STI || ARCH_MULTIPLATFORM) && HAS_IOMEM) || (DRM_IMX && DRM && (ARCH_MXC || ARCH_MULTIPLATFORM || COMPILE_TEST) && IMX_IPUV3_CORE && HAS_IOMEM) || (DRM_INGENIC && (MIPS || COMPILE_TEST) && DRM && CMA && OF && HAS_IOMEM) || (DRM_VC4 && (ARCH_BCM || ARCH_BCM2835 || COMPILE_TEST) && DRM && SND && SND_SOC && COMMON_CLK && HAS_IOMEM) || (DRM_ARCPGU && DRM && OF && HAS_IOMEM) || (DRM_HISI_HIBMC && DRM && PCI && MMU && HAS_IOMEM) || (DRM_HISI_KIRIN && DRM && OF && ARM64 && HAS_IOMEM) || (DRM_MEDIATEK && DRM && (ARCH_MEDIATEK || (ARM && COMPILE_TEST)) && COMMON_CLK && HAVE_ARM_SMCCC && OF && HAS_IOMEM) || (DRM_ZTE && DRM && ARCH_ZX && HAS_IOMEM) || (DRM_MXSFB && DRM && OF && COMMON_CLK && HAS_IOMEM) || (DRM_MESON && DRM && OF && (ARM || ARM64) && (ARCH_MESON || COMPILE_TEST) && HAS_IOMEM) || (TINYDRM_HX8357D && DRM && SPI && HAS_IOMEM) || (TINYDRM_ILI9225 && DRM && SPI && HAS_IOMEM) || (TINYDRM_ILI9341 && DRM && SPI && HAS_IOMEM) || (TINYDRM_MI0283QT && DRM && SPI && HAS_IOMEM) || (TINYDRM_REPAPER && DRM && SPI && (THERMAL || !THERMAL) && HAS_IOMEM) || (TINYDRM_ST7586 && DRM && SPI && HAS_IOMEM) || (TINYDRM_ST7735R && DRM && SPI && HAS_IOMEM) || (DRM_PL111 && DRM && (ARM || ARM64 || COMPILE_TEST) && COMMON_CLK && HAS_IOMEM) || (DRM_TVE200 && DRM && CMA && (ARM || COMPILE_TEST) && OF && HAS_IOMEM) || (DRM_XEN_FRONTEND && DRM_XEN && DRM && HAS_IOMEM) || (DRM_VBOXVIDEO && DRM && X86 && PCI && HAS_IOMEM) || (DRM_ASPEED_GFX && DRM && OF && (COMPILE_TEST || ARCH_ASPEED) && HAS_IOMEM) || (DRM_MCDE && DRM && CMA && (ARM || COMPILE_TEST) && OF && HAS_IOMEM) || (DRM_GM12U320 && DRM && USB && HAS_IOMEM))

...depends on THERMAL (defined at drivers/thermal/Kconfig:6), with definition...

menuconfig THERMAL
bool "Generic Thermal sysfs driver"
help
Generic Thermal Sysfs driver offers a generic mechanism for
thermal management. Usually it's made up of one or more thermal
zone and cooling device.
Each thermal zone contains its own temperature, trip points,
cooling devices.
All platforms with ACPI thermal support can use this driver.
If you want this support, you should say Y here.

(select-related dependencies: (ACPI_VIDEO && X86 && BACKLIGHT_CLASS_DEVICE && INPUT && ACPI) || (ACPI_CPU_FREQ_PSS && ACPI) || (ACPI_THERMAL && ACPI_PROCESSOR && ACPI) || (DRM_NOUVEAU && ACPI && X86 && DRM && PCI && MMU && HAS_IOMEM) || (DRM_ETNAVIV && DRM_ETNAVIV_THERMAL && DRM && MMU && HAS_IOMEM) || (MMC_SDHCI_OMAP && MMC_SDHCI_PLTFM && OF && MMC) || (INTEL_MENLOW && ACPI_THERMAL && X86_PLATFORM_DEVICES && X86))

(imply-related dependencies: (ACPI_VIDEO && X86 && BACKLIGHT_CLASS_DEVICE && INPUT && ACPI) || (ACPI_CPU_FREQ_PSS && ACPI) || (ACPI_THERMAL && ACPI_PROCESSOR && ACPI) || (DRM_NOUVEAU && ACPI && X86 && DRM && PCI && MMU && HAS_IOMEM) || (DRM_ETNAVIV && DRM_ETNAVIV_THERMAL && DRM && MMU && HAS_IOMEM) || (MMC_SDHCI_OMAP && MMC_SDHCI_PLTFM && OF && MMC) || (INTEL_MENLOW && ACPI_THERMAL && X86_PLATFORM_DEVICES && X86))

...depends on SENSORS_MLXREG_FAN (defined at drivers/hwmon/Kconfig:952), with definition...

config SENSORS_MLXREG_FAN
tristate "Mellanox Mellanox FAN driver"
select REGMAP
imply THERMAL
depends on MELLANOX_PLATFORM && HWMON
help
This option enables support for the FAN control on the Mellanox
Ethernet and InfiniBand switches. The driver can be activated by the
platform device add call. Say Y to enable these. To compile this
driver as a module, choose 'M' here: the module will be called
mlxreg-fan.

...depends on HWMON (defined at drivers/hwmon/Kconfig:6), with definition...

menuconfig HWMON
tristate "Hardware Monitoring support"
default y
depends on HAS_IOMEM
help
Hardware monitoring devices let you monitor the hardware health
of a system. Most modern motherboards include such a device. It
can include temperature sensors, voltage sensors, fan speed
sensors and various additional features such as the ability to
control the speed of the fans. If you want this support you
should say Y here and also to the specific driver(s) for your
sensors chip(s) below.

To find out which specific driver(s) you need, use the
sensors-detect script from the lm_sensors package. Read
<file:Documentation/hwmon/userspace-tools.rst> for details.

This support can also be built as a module. If so, the module
will be called hwmon.

(select-related dependencies: I8K || (HABANA_AI && PCI && HAS_IOMEM) || (DRM_RADEON && DRM && PCI && MMU && HAS_IOMEM) || (DRM_AMDGPU && DRM && PCI && MMU && HAS_IOMEM) || (THINKPAD_ACPI && ACPI && ACPI_BATTERY && INPUT && (RFKILL || RFKILL = n) && (ACPI_VIDEO || ACPI_VIDEO = n) && BACKLIGHT_CLASS_DEVICE && X86_PLATFORM_DEVICES && X86) || (EEEPC_LAPTOP && ACPI && INPUT && (RFKILL || RFKILL = n) && (ACPI_VIDEO || ACPI_VIDEO = n) && HOTPLUG_PCI && BACKLIGHT_CLASS_DEVICE && X86_PLATFORM_DEVICES && X86) || (CPU_HWMON && LOONGSON_MACH3X && MIPS_PLATFORM_DEVICES && MIPS) || (NTB_IDT && PCI && NTB))

(imply-related dependencies: I8K || (HABANA_AI && PCI && HAS_IOMEM) || (DRM_RADEON && DRM && PCI && MMU && HAS_IOMEM) || (DRM_AMDGPU && DRM && PCI && MMU && HAS_IOMEM) || (THINKPAD_ACPI && ACPI && ACPI_BATTERY && INPUT && (RFKILL || RFKILL = n) && (ACPI_VIDEO || ACPI_VIDEO = n) && BACKLIGHT_CLASS_DEVICE && X86_PLATFORM_DEVICES && X86) || (EEEPC_LAPTOP && ACPI && INPUT && (RFKILL || RFKILL = n) && (ACPI_VIDEO || ACPI_VIDEO = n) && HOTPLUG_PCI && BACKLIGHT_CLASS_DEVICE && X86_PLATFORM_DEVICES && X86) || (CPU_HWMON && LOONGSON_MACH3X && MIPS_PLATFORM_DEVICES && MIPS) || (NTB_IDT && PCI && NTB))

...depends again on THINKPAD_ACPI (defined at drivers/platform/x86/Kconfig:484)