# SPDX-License-Identifier: GPL-2.0+
#
# Loongson-2 series SoC drivers
#

config LOONGSON2_GUTS
	tristate "Loongson-2 SoC Global UtiliTieS (GUTS) register block"
	depends on LOONGARCH || COMPILE_TEST
	select SOC_BUS
	help
	 The global utilities block controls PCIE device enabling, alternate
	 function selection for multiplexed signals, consistency of HDA, USB
	 and PCIE, configuration of memory controller, rtc controller, lio
	 controller, and clock control. This patch adds a driver to manage
	 and access global utilities block for LoongArch architecture Loongson-2
	 SoCs. Initially only reading SVR and registering soc device are
	 supported. Other guts accesses, such as reading firmware configuration
	 by default, should eventually be added into this driver as well.

config LOONGSON2_PM
	bool "Loongson-2 SoC Power Management Controller Driver"
	depends on LOONGARCH && OF
	depends on INPUT=y
	help
	  The Loongson-2's power management controller was ACPI, supports ACPI
	  S2Idle (Suspend To Idle), ACPI S3 (Suspend To RAM), ACPI S4 (Suspend To
	  Disk), ACPI S5 (Soft Shutdown) and supports multiple wake-up methods
	  (USB, GMAC, PWRBTN, etc.). This driver was to add power management
	  controller support that base on dts for Loongson-2 series SoCs.
