# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2019, Pascal Linder <pascal.linder@edu.hefr.ch>

config VENDOR_KM
	bool
	help
	  Selected by any KM board to have additional configurations.

if VENDOR_KM

menu "KM Board Setup"

config KM_PNVRAM
	hex "Pseudo RAM"
	default 0x80000
	depends on !ARCH_SOCFPGA
	help
	  Start address of the pseudo non-volatile RAM for application.

config KM_PHRAM
	hex "Physical RAM"
	default 0x17F000 if ARM
	default 0x100000 if PPC
	depends on !ARCH_SOCFPGA
	help
	  Start address of the physical RAM, which is the mounted /var folder.

config KM_RESERVED_PRAM
	hex "Reserved RAM"
	default 0x801000 if ARCH_KIRKWOOD
	default 0x0 if MPC83xx
	default 0x1000 if MPC85xx
	depends on !ARCH_SOCFPGA
	help
	  Reserved physical RAM area at the end of memory for special purposes.

config KM_CRAMFS_ADDR
	hex "CRAMFS Address"
	default 0x2400000 if ARCH_KIRKWOOD
	default 0xC00000 if MPC83xx
	default 0x2000000 if MPC85xx
	depends on !ARCH_SOCFPGA
	help
	  Start address of the CRAMFS containing the Linux kernel.

config KM_KERNEL_ADDR
	hex "Kernel Load Address"
	default 0x2000000 if ARCH_KIRKWOOD
	default 0x400000 if MPC83xx
	default 0x1000000 if MPC85xx || ARCH_SOCFPGA
	help
	  Address where to load Linux kernel in RAM.

config KM_FDT_ADDR
	hex "FDT Load Address"
	default 0x23E0000 if ARCH_KIRKWOOD || ARCH_SOCFPGA
	default 0xB80000 if MPC83xx
	default 0x1F80000 if MPC85xx
	help
	  Address where to load flattened device tree in RAM.

config KM_CONSOLE_TTY
	string "KM Console"
	default "ttyS0"
	help
	  TTY console to use on board.

config KM_DEF_NETDEV
	string "Default Netdevice"
	default "eth0"
	help
	  Default netdevice for debug interface

config KM_COMMON_ETH_INIT
	bool "Common Ethernet Initialization"
	default y if ARCH_KIRKWOOD || MPC83xx
	default n if MPC85xx || ARCH_SOCFPGA
	help
	  Use the Ethernet initialization implemented in common code, which
	  detects if a Piggy board is present.

config PIGGY_MAC_ADDRESS_OFFSET
	int "Piggy Address Offset"
	default 0
	help
	  MAC address offset for the Piggy board.

config KM_MVEXTSW_ADDR
	hex "Marvell Switch Address"
	depends on MV88E6352_SWITCH
	default 0x10
	help
	  Address of external Marvell switch.

config KM_IVM_BUS
	int "IVM I2C Bus"
	default 0 if ARCH_SOCFPGA
	default 1 if ARCH_KIRKWOOD || MPC85xx
	default 2 if MPC83xx
	help
	  Identifier number of I2C bus, where the inventory EEPROM is connected to.

config SYS_IVM_EEPROM_ADR
	hex "IVM I2C Address"
	default 0x50
	help
	  I2C address of the EEPROM containing the inventory.

config SYS_IVM_EEPROM_MAX_LEN
	hex "IVM Length"
	default 0x400
	help
	  Maximum length of inventory in EEPROM.

config SYS_IVM_EEPROM_PAGE_LEN
	hex "IVM Page Size"
	default 0x100
	help
	  Page size of inventory in EEPROM.

source "board/keymile/km83xx/Kconfig"
source "board/keymile/kmp204x/Kconfig"
source "board/keymile/km_arm/Kconfig"

endmenu

endif
