blob: 3846b4fd5b6efa77fc66428a904226182d8c69d6 [file] [log] [blame]
# SPDX-License-Identifier: GPL-2.0-or-later
#
# (C) Copyright 2022 - Analog Devices, Inc.
#
# Written and/or maintained by Timesys Corporation
#
# Contact: Nathan Barrett-Morrison <nathan.morrison@timesys.com>
# Contact: Greg Malysa <greg.malysa@timesys.com>
#
# All 32-bit platforms require SYS_ARM_CACHE_WRITETHROUGH
# But it is ignored if selected here, so it must be in the defconfig
if ARCH_SC5XX
config SC57X
bool
select SUPPORT_SPL
select CPU_V7A
select PANIC_HANG
select COMMON_CLK_ADI_SC57X
select TIMER
select ADI_SC5XX_TIMER
config SC58X
bool
select SUPPORT_SPL
select CPU_V7A
select PANIC_HANG
select COMMON_CLK_ADI_SC58X
select TIMER
select ADI_SC5XX_TIMER
config SC59X
bool
select SUPPORT_SPL
select CPU_V7A
select PANIC_HANG
select COMMON_CLK_ADI_SC594
select TIMER
select ADI_SC5XX_TIMER
select NOP_PHY
config SC59X_64
bool
select SUPPORT_SPL
select PANIC_HANG
select MMC_SDHCI_ADMA_FORCE_32BIT
select ARM64
select DM
select DM_SERIAL
select COMMON_CLK_ADI_SC598
select GICV3
select GIC_600_CLEAR_RDPD
select NOP_PHY
config SC_BOOT_MODE
int "SC5XX boot mode select"
default 1
range 0 7
help
Mode 0: do nothing, just idle
Mode 1: boot ldr out of serial flash
Mode 7: boot ldr over uart
config SC_BOOT_SPI_BUS
int "sc5xx spi boot bus"
default 2
range 0 4
help
This is the SPI peripheral number to use for booting, X in the
expression `sf probe X:Y`
config SC_BOOT_SPI_SSEL
int "sc5xx spi boot chipselect"
default 1
range 0 6
help
This is the SPI chip select number to use for booting, Y in the
expression `sf probe X:Y`
config SC_BOOT_OSPI_BUS
int "sc5xx ospi boot bus"
default 0
help
This is the OSPI peripheral number to use for booting, X in the
expression `sf probe X:Y`
config SC_BOOT_OSPI_SSEL
int "sc5xx ospi boot chipselect"
default 0
help
This is the OSPI chip select number to use for booting, Y in the
expression `sf probe X:Y`
config SYS_FLASH_BASE
hex
default 0x60000000
config UART_CONSOLE
int
default 0
config UART4_SERIAL
bool
depends on DM_SERIAL
default y
config WDT_ADI
bool
default y
config WATCHDOG_TIMEOUT_MSECS
int
default 30000
config DW_PORTS
int
default 1
config ADI_BUG_EZKHW21
bool "SC584 EZKIT phy bug workaround"
depends on SC58X
help
This workaround affects the SC584 EZKIT and addresses bug EZKHW21.
It disables gigabit ethernet mode and limits the board to 100 Mbps
config ADI_CARRIER_SOMCRR_EZKIT
bool "Support the EV-SOMCRR-EZKIT"
depends on (SC59X || SC59X_64)
help
Say y to include support for the EV-SOMCRR-EZKIT carrier board,
which is compatible with the SC594 and SC598 SOMs. The EZKIT is
mutually incompatible with the EZLITE.
config ADI_CARRIER_SOMCRR_EZLITE
bool "Support the EV-SOMCRR-EZLITE"
depends on (SC59X || SC59X_64)
help
Say y to include support for the EV-SOMCRR-EZLITE carrier board,
which is compatible with the SC594 and SC598 SOMs. The EZLITE is
mutually incompatible with the EZKIT.
config ADI_SPL_FORCE_BMODE
int "Force the SPL to use this BMODE device during next boot stage"
default 0
range 0 9
depends on SPL
help
Force the SPL to use this BMODE device during next boot stage.
For example, if booting via QSPI, we can force the second stage
Of the boot process to use other peripherals via:
1 = QSPI -> QSPI
5 = QSPI -> OSPI
6 = QSPI -> eMMC
config ADI_USE_DMC0
bool "Configure DMC0"
default y
help
During hardware initialization, channel 0 of the DMC will be
initialized. Select this if you have DMC0 connected to external
DDR memory. This is expected to be true for every board using
an SC5xx SoC.
config ADI_USE_DMC1
bool "Configure DMC1"
help
During hardware initialization, channel 1 of the DMC will be
initialized. Not all processors have a DMC1. Select this if your
SoC has DMC1 and you have it connected to external DDR memory.
config ADI_USE_DDR2
bool "Configure DMC for DDR2 mode"
help
Configure the DMC in DDR2 mode. The default is DDR3 and not all
parts may actually support DDR2. Please consult the manual for
the SoC that you are using to determine if DDR2 mode is supported.
This also requires that DDR2 memory is present on the board or it
will probably cause strange failure.
menu "Clock configuration"
config CGU0_DF_DIV
int "CGU0_DF_DIV"
range 0 1
help
Select 0 to pass CLKIN to PLL
Select 1 to pass CLKIN/2 to PLL
config CGU0_VCO_MULT
int "CGU0_VCO_MULT"
range 0 127
help
VCO_MULT controls the MSEL (multiplier) bits in PLL_CTL
A value of 0 means 128
config CGU0_CCLK_DIV
int "CGU0_CCLK_DIV"
range 0 31
help
CCLK_DIV controls the core clock divider
A value of 0 means 32
CCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / CCLK_DIV
config CGU0_SCLK_DIV
int "CGU0_SCLK_DIV"
range 0 31
help
SCLK_DIV controls the system clock divider
A value of 0 means 32
SCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / SYSCLK_DIV
config CGU0_SCLK0_DIV
int "CGU0_SCLK0_DIV"
range 0 7
help
A value of 0 means 8
SCLK0 = SCLK / SCLK0_DIV
config CGU0_SCLK1_DIV
int "CGU0_SCLK1_DIV"
depends on (SC57X || SC58X)
range 0 7
help
A value of 0 means 8
SCLK1 = SCLK / SCLK1_DIV
config CGU0_DCLK_DIV
int "CGU0_DCLK_DIV"
range 0 31
help
DCLK_DIV controls the DDR clock divider
A value of 0 means 32
DCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / DCLK_DIV
config CGU0_OCLK_DIV
int "CGU0_OCLK_DIV"
range 0 127
help
OCLK_DIV controls the output clock divider
A value of 0 means 128
OCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / OCLK_DIV
config CGU0_DIV_S1SELEX
int "CGU0_DIV_S1SELEX"
depends on !SC57X && !SC58X
range 0 255
help
CGU0 SCLK1 Extended divisor register.
A value of 0 means 256.
SCLK1 = ((CLKIN / (1 + DF)) * VCO_MULT) / DIV_S1SELEX
config CGU0_CLKOUTSEL
int "CGU0_CLKOUTSEL"
default 0
range 0 31
help
Select signal driven through CLKOUT pin multiplexer.
This value varies on each SOC. Refer to
CGU_CLKOUTSEL.CLKOUTSEL in the Hardware Reference Manual
for values applicable to each SOC.
Commonly, values 0 and 1 select CLKIN0 or CLKIN1 respectively.
config CGU1_PLL3_DDRCLK
bool "DDRCLK From 3rd PLL"
depends on SC59X_64
help
3rd PLL output is connected to DMC block when set.
When cleared, DDR clock is CLKO3 output of CDU.
config CGU1_PLL3_VCO_MSEL
int "CGU0_PLL3_VCO_MSEL"
depends on CGU1_PLL3_DDRCLK
range 1 128
help
PLL multiplier value for the 3rd PLL.
DCLK = (CLKIN * PLL3_VCO_MSEL) / PLL3_DCLK_DIV
config CGU1_PLL3_DCLK_DIV
int "CGU0_PLL3_DCLK_DIV"
depends on CGU1_PLL3_DDRCLK
range 1 32
help
PLL divider value for the 3rd PLL.
DCLK = (CLKIN * PLL3_VCO_MSEL) / PLL3_DCLK_DIV
config CGU1_DF_DIV
int "CGU1_DF_DIV"
range 0 1
help
Select 0 to pass CLKIN to PLL
Select 1 to pass CLKIN/2 to PLL
config CGU1_VCO_MULT
int "CGU1_VCO_MULT"
range 0 127
help
VCO_MULT controls the MSEL (multiplier) bits in PLL_CTL
A value of 0 means 128
config CGU1_CCLK_DIV
int "CGU1_CCLK_DIV"
range 0 31
help
CCLK_DIV controls the core clock divider
A value of 0 means 32
CCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / CCLK_DIV
config CGU1_SCLK_DIV
int "CGU1_SCLK_DIV"
range 0 31
help
SCLK_DIV controls the system clock divider
A value of 0 means 32
SCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / SYSCLK_DIV
config CGU1_SCLK0_DIV
int "CGU1_SCLK0_DIV"
depends on (SC57X || SC58X || SC59X)
range 0 7
help
A value of 0 means 8
SCLK0 = SCLK / SCLK0_DIV
config CGU1_SCLK1_DIV
int "CGU1_SCLK1_DIV"
depends on (SC57X || SC58X)
range 0 7
help
A value of 0 means 8
SCLK1 = SCLK / SCLK1_DIV
config CGU1_DCLK_DIV
int "CGU1_DCLK_DIV"
range 0 31
help
DCLK_DIV controls the DDR clock divider
A value of 0 means 32
DCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / DCLK_DIV
config CGU1_OCLK_DIV
int "CGU1_OCLK_DIV"
range 0 127
help
OCLK_DIV controls the output clock divider
A value of 0 means 128
OCLK = ((CLKIN / (1 + DF)) * VCO_MULT) / OCLK_DIV
config CGU1_DIV_S0SELEX
int "CGU1_DIV_S0SELEX"
depends on !SC57X && !SC58X && !SC59X
range 0 255
help
CGU1 SCLK0 Extended divisor register.
A value of 0 means 256.
SCLK0 = ((CLKIN / (1 + DF)) * VCO_MULT) / DIV_S0SELEX
config CGU1_DIV_S1SELEX
int "CGU1_DIV_S1SELEX"
depends on !SC57X && !SC58X
range 0 255
help
CGU1 SCLK1 Extended divisor register.
A value of 0 means 256.
SCLK1 = ((CLKIN / (1 + DF)) * VCO_MULT) / DIV_S1SELEX
config CDU0_CGU1_CLKIN
int "CDU0 CGU1 CLKINn Select"
default 0
range 0 1
help
Selects source clock for CGU1.
0 for CLKIN0
1 for CLKIN1
config CDU0_CLKO0
int "CDU0_CLKO0"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO1
int "CDU0_CLKO1"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO2
int "CDU0_CLKO2"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO3
int "CDU0_CLKO3"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO4
int "CDU0_CLKO4"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO5
int "CDU0_CLKO5"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO6
int "CDU0_CLKO6"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO7
int "CDU0_CLKO7"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO8
int "CDU0_CLKO8"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO9
int "CDU0_CLKO9"
range 1 7
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO10
int "CDU0_CLKO10"
range 1 7
depends on (SC59X || SC59X_64)
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO12
int "CDU0_CLKO12"
range 1 7
depends on (SC59X || SC59X_64)
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO13
int "CDU0_CLKO13"
range 1 7
depends on SC59X_64
help
Clock source select. Refer to SOC Hardware Reference Manual
config CDU0_CLKO14
int "CDU0_CLKO14"
range 1 7
depends on SC59X_64
help
Clock source select. Refer to SOC Hardware Reference Manual
endmenu
config ADI_GPIO
bool
default y
config PINCTRL_ADI
bool
default y
endif