Commit graph

2634 commits

Author SHA1 Message Date
Daniel DeGrasse
8b7f23da28 soc: rt10xx: Enable USB2 controller clock
Enable USB2 controller clock on RT10xx SOC init, if nodelabel has
status="okay"

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2022-03-11 14:50:11 -08:00
Daniel DeGrasse
8156299bda soc: rt11xx: enable usb pll clock
USB pll clock should be enabled if USB driver is used. Add required
configuration for USB pll clock.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2022-03-11 14:50:11 -08:00
Julien Massot
ccddf12b9c soc: arm: add fvp_aemv8r_aarch32
This is mostly the same than the aarch64 one, excepted that we
force the armv8r fvp to run in aarch32 profile. So that we can simulate
the Cortex-R52.

Signed-off-by: Julien Massot <julien.massot@iot.bzh>
2022-03-11 10:59:48 +01:00
Yegor Yefremov
b4dfdb5afb soc: arm: nxp_lpc: fix typos
Typos were found with codespell utility.

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
2022-03-10 17:19:49 -05:00
Erwan Gouriou
ed6cc6dce3 soc/arm/st_stm32: stm32wb: Remove stack reset from shutdown
BLE stack reset should now be done in hci close function.
Remove from shutdown procedure.

Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
2022-03-10 13:28:41 -05:00
Kai Vehmanen
ec7451b485 soc/intel_adsp: add support for Intel Jasper Lake
Add a variant of Intel cAVS2.0 used in Jasper Lake based
products.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2022-03-10 09:26:41 -06:00
Peng Fan
84081ffddc soc: arm64: nxp_imx: Add i.MX8M Mini SoC A53 support
Add minimal SoC support for the NXP i.MX8M Mini series Cortex-A53 Core.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
2022-03-09 09:56:12 -06:00
Navin Sankar Velliangiri
90a11851ec soc: arm: nxp: add LPC55S06 support
Add initial support for the NXP LPC55S06.

Signed-off-by: Navin Sankar Velliangiri <navin@linumiz.com>
2022-03-09 09:46:17 -06:00
Gerard Marull-Paretas
dffaf5375c kconfig: tweak Kconfig prompts
Tweak some Kconfig prompts after the removal of "Enable...".

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-09 15:35:54 +01:00
Gerard Marull-Paretas
95fb0ded6b kconfig: remove Enable from boolean prompts
According to Kconfig guidelines, boolean prompts must not start with
"Enable...". The following command has been used to automate the changes
in this patch:

sed -i "s/bool \"[Ee]nables\? \(\w\)/bool \"\U\1/g" **/Kconfig*

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-09 15:35:54 +01:00
Andrzej Głąbek
70fb3124db drivers: serial: nrfx: Ensure that instances have some pins assigned
Add build assertions that will ensure that every peripheral for
which a driver instance is created has some pins assigned to it.
Neither pinctrl-0 nor *-pin properties can be currently marked as
required in devicetree, so these assertions will help users avoid
invalid configurations where it could be hard to figure out why
the UART is not working.

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
2022-03-09 12:05:22 +01:00
Jedrzej Ciupis
47ddbc2ed6 soc: arm: nordic: fix GPIO pin forwarder initialization
nRF5340 application core should not attempt to pass control over any
pins to the nRF5340 network core if the latter is disabled.

This commit fixes https://github.com/zephyrproject-rtos/zephyr/issues/43476.

Signed-off-by: Jedrzej Ciupis <jedrzej.ciupis@nordicsemi.no>
2022-03-08 09:32:33 -08:00
Krzysztof Chruscinski
47ae656cc1 all: Deprecate UTIL_LISTIFY and replace with LISTIFY
UTIL_LISTIFY is deprecated. Replacing it with LISTIFY.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2022-03-08 11:03:30 +01:00
Kai Vehmanen
209331734b xtensa: intel_adsp: use cavs_ipc driver only if enabled in Kconfig
Commit bdce0a5742 ("soc/intel_adsp: Add a cavs_ipc driver to manage
host IPC") added a new driver for cAVS IPC. Although patch included the
CONFIG_CAVS_IPC option, in practise this had no effect and instead
driver was enabled whenever device tree included IPC hardware. This
caused IPC errors in SOF application builds where two drivers, one out
of tree in SOF and one in Zephyr, initialize the same hardware.

Fix the issue by enabling the driver only when CONFIG_CAVS_IPC is
enabled.

BugLink: https://github.com/thesofproject/sof/issues/5477
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
2022-03-07 16:35:30 -05:00
Daniel DeGrasse
cbb52e8c50 soc: mimxrt1064: Enable low power clocking for mimxrt1064
Enables low power clocks for mimxrt1064. This allows the soc to
transition into very low power states during idle, as most PLLs can be
disabled. Power states need to be enabled and selected at the board
level.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2022-03-07 13:53:14 -06:00
Daniel DeGrasse
e9ce5cd282 soc: rt10xx: Add power management support
Add power management code for the RT10xx SOC. By default, the code will
simply gate the core clock and transition the SOC to WAIT mode when
sleeping, but if clocking hooks are register to reduce clock frequencies
these will be called as well, and the SOC core voltage will be lowered
for additional power savings.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2022-03-07 13:53:14 -06:00
Daniel DeGrasse
cb685709e5 soc: nxp_imx: Enable inclusion of power management HAL drivers
Add KConfig symbols to select power management HAL drivers required for low
power modes. Set ZTEST_NO_YEILD if PM is enabled, since RT series SOCs
do not connect to a debugger in WAIT mode.

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2022-03-07 13:53:14 -06:00
Henrik Brix Andersen
2ffce62f61 soc: arm: nxp: kinetis: fix pinctrl compilation for ke1xf SoC series
The NXP KE1xF SoC series does not support neither slew rate nor open
drain PORT configuration registers.

Fix pinctrl compilation for the KE1xF by defining dummy register macros
for the SRE and ODE registers.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-07 13:52:12 -06:00
Jay Vasanth
63ac835988 i2c: update MEC172x i2c module for pinctrl
Changes to i2c module to support pinctrl

Signed-off-by: Jay Vasanth <jay.vasanth@microchip.com>
2022-03-07 11:03:06 +01:00
Jay Vasanth
5cccbb13bc gpio: MEC172x: update gpio module for pinctrl
Changes to gpio module to support pinctrl

Signed-off-by: Jay Vasanth <jay.vasanth@microchip.com>
2022-03-07 11:03:06 +01:00
Jay Vasanth
2cd02bd826 drivers: pinctrl: Microchip MEC172x pinctrl driver
Add core files for Microchip MEC172x pinctrl driver

Signed-off-by: Jay Vasanth <jay.vasanth@microchip.com>
2022-03-07 11:03:06 +01:00
Guy Morand
6614f917ba soc: arm: nxp_imx: Add HAS_MCUX_IGPIO in SoC support
This enables the mcux_igpio driver for this SoC.

Signed-off-by: Guy Morand <guy.morand@bytesatwork.ch>
2022-03-04 13:23:28 -06:00
Gerard Marull-Paretas
7746abdc39 soc: arm: microchip_mec: mec1501: remove SOC_POWER_MANAGEMENT
Remove a redundant symbol that was used as a proxy to enable CONFIG_PM.
If an application needs to enable PM, it should just enable PM subsystem
Kconfig options. Furthermore, there's no clue "SOC_POWER_MANAGEMENT" is
a Microchip specific option.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-04 09:05:45 -06:00
Gerard Marull-Paretas
ee30559f07 soc: arm: nuvoton_npcx: s/SOC_POWER_MANAGEMENT_TRACE/NPCX_PM_TRACE
Rename CONFIG_SOC_POWER_MANAGEMENT_TRACE to CONFIG_NPCX_PM_TRACE so that
it is clear that it's a NPCX specific option.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-04 09:05:45 -06:00
Gerard Marull-Paretas
57f0316785 soc: arm: nuvoton_npcx: remove SOC_POWER_MANAGEMENT
Remove a redundant symbol that was used as a proxy to enable CONFIG_PM
and CONFIG_PM_DEVICE. If an application needs to enable PM, it should
just enable PM subsystem Kconfig options. Furthermore, there's no clue
"SOC_POWER_MANAGEMENT" is a NPCX specific option.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-04 09:05:45 -06:00
Tim Lin
056738514a ITE: drivers/adc: implement ADC channels 13-16
The ADC driver of IT81302 chip can support channels 0-7 & 13-16.
This PR adds to implement ADC channels 13-16.

Signed-off-by: Tim Lin <tim2.lin@ite.corp-partner.google.com>
2022-03-04 09:03:04 -06:00
Sylvio Alves
90e6f97ccc soc: esp32s2: add flash dts values into cmake config
This configures soc and flash size definition
using DTSI information instead of hardcoded
values.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2022-03-04 08:54:51 -06:00
Sylvio Alves
c2bcff1f7d soc: esp32s2: prepare kconfigs and cmake to support mcuboot
This modifies esp32s2 SOC configuration to support MCUBoot.

CmakeLists is moved from board to soc specific. It also
includes MCUBoot changes.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2022-03-04 08:54:51 -06:00
Sylvio Alves
b8cfeb9523 soc: esp32s2: update startup code to map IROM and DROM segments
This change updates startup code to setup MMU mappings.

west: update hal_espressif revision so that rom calls, i.e
esp_rom_Cache_*, can properly be used in MMU mapping.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2022-03-04 08:54:51 -06:00
Sylvio Alves
dc1472be92 soc: esp32s2: linker script update to support mcuboot
This change creates XiP image handling and proper
LMA and VMA regions configurations.

This also adds common-ram.ld and common-rom.ld sections that
require explicit handling due to image sections limitation
in esptool.

Move additional drivers into IRAM to protect against
flash cache disable read/write operation.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
2022-03-04 08:54:51 -06:00
Daniel DeGrasse
bdbb72a95a soc: kinetis: Add common pinctrl include file
Add pinctrl include file to define SOC specific pinctrl_soc_t structure,
used to store pin configuration for pinctrl driver

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2022-03-03 13:00:20 -06:00
Bryce Wilkins
c11d1ba621 soc: Conditionally attach SFRO clock to FlexCOMM0
Attaching SFRO clock to FlexCOMM0 should be conditional on the
device tree as an application may not need SFRO attached to FlexCOMM0.

Signed-off-by: Bryce Wilkins <bryce.wilkins@gmail.com>
2022-03-03 10:04:19 -06:00
Tom Burdick
6a0837af2c soc/intel_adsp: Dedup the Kconfig driver options
The same options were copied to each Kconfig.defconfig, in different
places (my own doing) for both DMA and I2S. This dedups the defines and
moves them into the common soc Kconfig.defconfig.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2022-03-03 08:50:41 -05:00
Daniel Baluta
feffe639a3 soc: xtensa: adsp: Fix i.MX8 hw_cycles_per_sec definition
Acorrding to RM, HIFI4 DSP default configured frequency is:
	- 666Mhz for i.MX8
	- 800Mhz for i.MX8M

Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com>
2022-03-02 10:08:52 -08:00
Kamil Piszczek
cf6a58d3f6 bluetooth: hci: rpmsg: use ipc service library
The Bluetooth HCI driver based on the RPMsg transport now uses the IPC
service module. The compatible Bluetooth sample - HCI RPMsg - has also
been migrated to the new IPC solution.

Signed-off-by: Kamil Piszczek <Kamil.Piszczek@nordicsemi.no>
2022-03-02 17:03:01 +01:00
Krzysztof Chruscinski
f0825801f6 soc: arm: nordic_nrf: nrf53: Add init priority for sync_rtc
Add configurable init priority for nrf53 synchronized rtc module.
Add build time assert to ensure that initialization is done after
mbox.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2022-03-02 09:42:09 -06:00
Konrad Leszczynski
1247bd75b3 xtensa: intel_adsp: make common rimage_modules.c cavs-specific
Make xtensa/intel_adsp/common/rimage_modules.c CAVS-specific by adding a
guard.

Signed-off-by: Konrad Leszczynski <konrad.leszczynski@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2022-03-01 16:20:42 -05:00
Konrad Leszczynski
1236e309db xtensa: intel_adsp: make common boot.c cavs-specific
Make xtensa/intel_adsp/common/boot.c CAVS-specific by adding a guard.

Signed-off-by: Konrad Leszczynski <konrad.leszczynski@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2022-03-01 16:20:42 -05:00
Anas Nashif
79f86ad3be intel_adsp: some SoCs boot core0 differently
Make the boot process CAVS specific.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2022-03-01 16:20:42 -05:00
Anas Nashif
6e10011f9b intel_adsp: init soc only for SoCs marked as ADSP_CAVS
Skip the soc init for not CAVS SoCs. This will be done in the non-CAVS
SoC soc.c.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2022-03-01 16:20:42 -05:00
Anas Nashif
985085ab00 intel_adsp: cavs: build multiprocessing code conditionally
Build code conditionally and depend on CONFIG_INTEL_ADSP_CAVS.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2022-03-01 16:20:42 -05:00
YuLong Yao
988ae3044e soc: arm: gigadevice: add support for GD32e10x
Add support for the E10x series.

Signed-off-by: YuLong Yao <feilongphone@gmail.com>
2022-03-01 18:06:14 +01:00
Andy Ross
fd929f5190 tests/boards/intel_adsp: Add ipm_cavs_host test
Add a fairly simple test of the IPM-over-IPC driver.  This hits all
the code, but works by implementing the host side of the protocol
partially in the C test code.  The message is sent with an initial
payload, and then IPC commands from the firmware copy the data over
into the "inbox" region to simulate data being sent via the host.
Then we make sure it lands correctly as if the host driver had done it
directly.

This requries a new command in the cavstool script that will copy a
word from the "outbox" region to the "inbox" region (both are just
different SRAM windows, conceptually no different than the way the
script is already managing log output), but no significant surgery.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00
Andy Ross
3da9c9213e tests/intel_adsp: Add clock calibration test
Now that we have easy access to code on the host, it's trivial to
check the clock against host timestamps with high precision.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00
Andy Ross
005e12bdac soc/intel_adsp: Add hardware race workaround to cavstool
On cAVS 1.8 (specifically) there seems to be a propagation delay on
the IPC registers.  Hitting the TDA register to signal DONE too soon
after clearing the interrupt via TDR can cause the interrupt to be
dropped.  Merely polling for it to read back correctly isn't
sufficient, we need an actual sleep here.

(The behavior that a message won't send while an existing message is
in progress is actually a hardware feature that is new with 1.8.  My
guess is it's a little glitchy in its first version.)

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00
Andy Ross
45242d9214 tests/intel_adsp: MP core power fixups for older cAVS platforms
On cAVS before 2.5, core power was controlled by the host.  Add a
command to the cavstool.py script to allow us to do that under test
command so we can exercise multiprocessor startup/shutdown outside of
SOF.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00
Andy Ross
3b995a0f6c soc/intel_adsp: Rework core start/restart API
Remove the soc_relaunch_cpu() API.  There's now nothing that this does
that isn't already done by the kernel's own z_smp_start_cpu() API.  We
don't need a SOC-level API for this anymore.

Rename soc_halt_cpu() to soc_adsp_halt_cpu() to clarify the domain,
simplify by removing the synchronization (there's nothing to
synchronize!).  Also move its declaration and docs into the soc.h
header.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00
Andy Ross
2b210cb3db kernel: Refactor SMP cpu initialization a bit
Things had gotten a little tangled in there so let's do some cleanup.

Remove the distressingly-special-purpose z_reinit_idle_thread() hook
(which existed to support secondary core bringup when
SMP_BOOT_DELAY=y), and just fold that into a generic z_init_cpu(),
which we can call in obvious and symmetric ways from main
initialization, z_smp_init(), and z_smp_start_cpu() (the now-official
programmatic hook for starting cpus).

Remove the "#if CONFIG_MP_NUM_CPUS > 1" exclusions.  These weren't
saving any code size and were propagating themselves into platform
layers trying to avoid build failures.

There are some "special" APIs added for SOF which need to go away in
favor of the newer/generic z_smp_start_cpu().  Collect them in one
place and put them under a "#ifdef CONFIG_SOF" to prevent them from
being used in Zephyr apps.

Move some function declarations that didn't have homes into
<kernel/thread.h>.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00
Andy Ross
318aecb86f tests/boards: Add intel_adsp board integration/smoke test
As Zephyr begins to absorb drivers for these platforms that had
previously been managed by the SOF app, there's a need for a rapid
board-specific smoke test to use during development.

This starts with the smp_boot_delay test (itself a unit test for a
SOF-derived feature) and adds a host IPC case (that needs to match
code in cavstool.py on the other side of the PCI bus!).

It will grow more features over time as needed.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00
Andy Ross
bdce0a5742 soc/intel_adsp: Add a cavs_ipc driver to manage host IPC
This is a slightly higher level Zephyr device that manages the host
IPC device for applications.  There's an interface to make synchronous
and asynchronous calls, to receive commands via (interrupt context)
callbacks and emit async "done" notifications after processing is
complete.  It should work for pretty much any application
architecture.

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2022-03-01 09:59:15 -05:00