# SPDX-License-Identifier: GPL-2.0
config UNICORE32
	def_bool y
	select ARCH_32BIT_OFF_T
	select ARCH_HAS_DEVMEM_IS_ALLOWED
	select ARCH_MIGHT_HAVE_PC_PARPORT
	select ARCH_MIGHT_HAVE_PC_SERIO
	select HAVE_KERNEL_GZIP
	select HAVE_KERNEL_BZIP2
	select GENERIC_ATOMIC64
	select HAVE_KERNEL_LZO
	select HAVE_KERNEL_LZMA
	select HAVE_PCI
	select VIRT_TO_BUS
	select ARCH_HAVE_CUSTOM_GPIO_H
	select GENERIC_FIND_FIRST_BIT
	select GENERIC_IRQ_PROBE
	select GENERIC_IRQ_SHOW
	select ARCH_WANT_FRAME_POINTERS
	select GENERIC_IOMAP
	select MODULES_USE_ELF_REL
	select NEED_DMA_MAP_STATE
	help
	  UniCore-32 is 32-bit Instruction Set Architecture,
	  including a series of low-power-consumption RISC chip
	  designs licensed by PKUnity Ltd.
	  Please see web page at <http://www.pkunity.com/>.

config GENERIC_CSUM
	def_bool y

config NO_IOPORT_MAP
	bool

config STACKTRACE_SUPPORT
	def_bool y

config LOCKDEP_SUPPORT
	def_bool y

config RWSEM_GENERIC_SPINLOCK
	def_bool y

config RWSEM_XCHGADD_ALGORITHM
	bool

config ARCH_HAS_ILOG2_U32
	bool

config ARCH_HAS_ILOG2_U64
	bool

config GENERIC_HWEIGHT
	def_bool y

config GENERIC_CALIBRATE_DELAY
	def_bool y

config ARCH_MAY_HAVE_PC_FDC
	bool

config ZONE_DMA
	def_bool y

menu "System Type"

config MMU
	def_bool y

config ARCH_FPGA
	bool

config ARCH_PUV3
	def_bool y
	select CPU_UCV2
	select GENERIC_CLOCKEVENTS
	select HAVE_CLK
	select GPIOLIB

# CONFIGs for ARCH_PUV3

if ARCH_PUV3

choice
	prompt "Board Selection"
	default PUV3_DB0913

config PUV3_FPGA_DLX200
	select ARCH_FPGA
	bool "FPGA board"

config PUV3_DB0913
	bool "DEBUG board (0913)"

config PUV3_NB0916
	bool "NetBook board (0916)"
	select PWM
	select PWM_PUV3

config PUV3_SMW0919
	bool "Security Mini-Workstation board (0919)"

endchoice

config PUV3_PM
	def_bool y if !ARCH_FPGA

endif

source "arch/unicore32/mm/Kconfig"

comment "Floating point support"

config UNICORE_FPU_F64
	def_bool y if !ARCH_FPGA

endmenu

menu "Kernel Features"

source "kernel/Kconfig.hz"

config LEDS
	def_bool y
	depends on GPIOLIB

config ALIGNMENT_TRAP
	def_bool y
	help
	  Unicore processors can not fetch/store information which is not
	  naturally aligned on the bus, i.e., a 4 byte fetch must start at an
	  address divisible by 4. On 32-bit Unicore processors, these non-aligned
	  fetch/store instructions will be emulated in software if you say
	  here, which has a severe performance impact. This is necessary for
	  correct operation of some network protocols. With an IP-only
	  configuration it is safe to say N, otherwise say Y.

endmenu

menu "Boot options"

config CMDLINE
	string "Default kernel command string"
	default ""

config CMDLINE_FORCE
	bool "Always use the default kernel command string"
	depends on CMDLINE != ""
	help
	  Always use the default kernel command string, even if the boot
	  loader passes other arguments to the kernel.
	  This is useful if you cannot or don't want to change the
	  command-line options your boot loader passes to the kernel.

	  If unsure, say N.

endmenu

menu "Power management options"

source "kernel/power/Kconfig"

source "drivers/cpufreq/Kconfig"

config ARCH_SUSPEND_POSSIBLE
	def_bool y if !ARCH_FPGA

config ARCH_HIBERNATION_POSSIBLE
	def_bool y if !ARCH_FPGA

endmenu

if ARCH_PUV3

config PUV3_GPIO
	bool
	depends on !ARCH_FPGA
	select GPIO_SYSFS
	default y

if PUV3_NB0916

menu "PKUnity NetBook-0916 Features"

config I2C_BATTERY_BQ27200
	tristate "I2C Battery BQ27200 Support"
	select I2C_PUV3
	select POWER_SUPPLY
	select BATTERY_BQ27XXX

config I2C_EEPROM_AT24
	tristate "I2C EEPROMs AT24 support"
	select I2C_PUV3
	select EEPROM_AT24

config LCD_BACKLIGHT
	tristate "LCD Backlight support"
	select BACKLIGHT_LCD_SUPPORT
	select BACKLIGHT_PWM

endmenu

endif

endif
