blob: 0c65a11c27ad029edbd249fe1a4848269030f9ef [file] [log] [blame]
# Copyright (c) 2020 ITE Corporation. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0
config SOC_SERIES_ITE_IT8XXX2
select CPU_HAS_FPU if "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "zephyr" || RISCV_ISA_EXT_M
select HAS_PM
if SOC_SERIES_ITE_IT8XXX2
config SOC_IT8XXX2
select RISCV
select ATOMIC_OPERATIONS_BUILTIN
select RISCV_ISA_RV32I
select RISCV_ISA_EXT_ZICSR
select RISCV_ISA_EXT_ZIFENCEI
# Workaround mul instruction bug, see:
# https://www.ite.com.tw/uploads/product_download/it81202-bx-chip-errata.pdf
select RISCV_ISA_EXT_M if !(SOC_IT81302_BX || SOC_IT81202_BX)
select RISCV_ISA_EXT_A
select RISCV_ISA_EXT_C
config SOC_IT8XXX2_REG_SET_V1
bool
help
This option is selected by a variable of which soc, and will
determine the register for the IT81xx2 specification.
config SOC_IT8XXX2_REG_SET_V2
bool
help
This option is selected by a variable of which soc, and will
determine the register for the IT82xx2 specification.
config SOC_IT81302_BX
select SOC_IT8XXX2_REG_SET_V1
config SOC_IT81202_BX
select SOC_IT8XXX2_REG_SET_V1
config SOC_IT81302_CX
select SOC_IT8XXX2_REG_SET_V1
config SOC_IT81202_CX
select SOC_IT8XXX2_REG_SET_V1
config SOC_IT82202_AX
select SOC_IT8XXX2_REG_SET_V2
select SOC_IT8XXX2_EC_BUS_24MHZ if !DT_HAS_ITE_IT82XX2_USB_ENABLED
config SOC_IT82302_AX
select SOC_IT8XXX2_REG_SET_V2
select SOC_IT8XXX2_EC_BUS_24MHZ if !DT_HAS_ITE_IT82XX2_USB_ENABLED
config SOC_IT82002_AW
select SOC_IT8XXX2_REG_SET_V2
select SOC_IT8XXX2_EC_BUS_24MHZ if !DT_HAS_ITE_IT82XX2_USB_ENABLED
config SOC_IT8XXX2_PLL_FLASH_48M
bool "Flash frequency is 48MHz"
default y
select FLASH
help
Change frequency of PLL, CPU, and flash to 48MHz during initialization.
Set n to use the default settings.
(PLL and CPU run at 48MHz, flash frequency is 16MHz)
config SOC_IT8XXX2_GPIO_GROUP_K_L_DEFAULT_PULL_DOWN
bool "The pins of GPIO group K and L aren't bonding with pad"
default y
help
On IT81202 (128-pins package), the pins of GPIO group K and L aren't
bonding with pad. So we configure these pins as internal pull-down
at default to prevent leakage current due to floating.
config SOC_IT8XXX2_GPIO_H7_DEFAULT_OUTPUT_LOW
bool "The GPIOH7 isn't bonding with pad and is left floating internally"
default y
help
On IT81202/IT81302, the GPIOH7 isn't bonding with pad and is left
floating internally. We need to enable internal pull-down for the pin
to prevent leakage current, but IT81202/IT81302 doesn't have the
capability to pull it down. We can only set it as output low,
so we enable output low for it at initialization to prevent leakage.
config SOC_IT8XXX2_CPU_IDLE_GATING
bool
help
This option determines whether the entering CPU idle mode can be
gated by individual drivers. When this option is disabled, CPU idle
mode is always permitted.
config SOC_IT8XXX2_EC_BUS_24MHZ
bool "EC bus is 24MHz"
help
Raise EC bus to 24MHz (default is 8MHz).
This reduces read/write EC registers latency by 50%.
NOTE: There is limitation to enabling this config on it81xx2 series.
The clock_frequency of ite,it8xxx2-i2c node (i2c0, i2c1, and i2c2) will
be fixed at 400KHz.
choice
prompt "Clock source for PLL reference clock"
config SOC_IT8XXX2_INT_32K
bool "Use the +/-2.3% internal clock generator"
config SOC_IT8XXX2_EXT_32K
bool "Use external 32.768 kHz clock source"
endchoice
config SOC_IT8XXX2_USE_ILM
bool
default y
help
If enabled, Instruction Local Memory (ILM) will be configured to execute
code placed in the .__ram_code section out of RAM. This consumes RAM in
blocks of 4 kilobytes, but performance of code in ILM is much more
predictable than executing from Flash directly, and some code (such as code
that writes to the internal Flash) must execute out of RAM.
config SOC_IT8XXX2_EXCEPTIONS_IN_RAM
bool "Place exception handling code in RAM"
default y
select SOC_IT8XXX2_USE_ILM
help
Place exception handling (ISR entry/exit and related) code in ILM, which
has more reliable performance characteristics than executing directly from
Flash. This can significantly improve performance when under I-cache
pressure.
config SOC_IT8XXX2_SHA256_HW_ACCELERATE
bool "HW SHA256 calculation"
help
IT8XXX2 HW support sha256 calculation, and its calculation is faster than FW.
We place SHA256 message, hash and key data (total 512bytes) in RAM.
If we enable this config, because HW limits, the sha256 data must place in
first 4KB of RAM.
DT_CHOSEN_ZEPHYR_FLASH := zephyr,flash
config SOC_IT8XXX2_FLASH_SIZE_BYTES
hex
default $(dt_chosen_reg_size_hex,$(DT_CHOSEN_ZEPHYR_FLASH))
help
Total size of writable flash.
config ILM_MAX_SIZE
int "ILM Size in kB"
default 60 if SOC_IT81202_CX || SOC_IT81302_CX
default SRAM_SIZE
endif # SOC_SERIES_ITE_IT8XXX2