| 777da538 | 04-Oct-2021 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
zynqmp: drivers: CSUDMA module
This module provides a mechanism to transfer data between memory and peripherals. The data path is selected in the Secure Stream Switch register in the CSU.
Signed-of
zynqmp: drivers: CSUDMA module
This module provides a mechanism to transfer data between memory and peripherals. The data path is selected in the Secure Stream Switch register in the CSU.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| e4a0a852 | 04-Oct-2021 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
zynqmp: drivers: Physically Unclonable Function (PUF)
This block is used to generate black keys via the AES-GCM module. The PUF KEK - feeding the AES-GCM block - is also unique for each device.
The
zynqmp: drivers: Physically Unclonable Function (PUF)
This block is used to generate black keys via the AES-GCM module. The PUF KEK - feeding the AES-GCM block - is also unique for each device.
The KEK is only available once the board has been secured via programmable eFUSES (RSA_EN authentication via the PPK fuses).
Registering the PUF should be done using the Xilinx tools so the adequate eFUSES are written.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| 8d8a4fa0 | 04-Oct-2021 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
zynqmp: drivers: CSU module base definitions
CSU registers and offsets for submodules
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Reviewed-by: Vesa Jääskeläinen <vesa.jaaskelainen@vaisa
zynqmp: drivers: CSU module base definitions
CSU registers and offsets for submodules
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Reviewed-by: Vesa Jääskeläinen <vesa.jaaskelainen@vaisala.com> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| 88544a9f | 17-Feb-2020 |
Remi Koman <remi.koman@nxp.com> |
drivers: imx: add MU driver
Add Message Unit driver. This driver is needed to communicate with the security controller.
Signed-off-by: Remi Koman <remi.koman@nxp.com> Signed-off-by: Clement Faure <
drivers: imx: add MU driver
Add Message Unit driver. This driver is needed to communicate with the security controller.
Signed-off-by: Remi Koman <remi.koman@nxp.com> Signed-off-by: Clement Faure <clement.faure@nxp.com> Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 6e4e7a23 | 27-Oct-2021 |
Etienne Carriere <etienne.carriere@linaro.org> |
drivers: clk: rename clk_dt_get_fn to clk_dt_get_func
Rename type clk_dt_get_fn to clk_dt_get_func for consistency in OP-TEE OS implementation where all other function prototype type definitions use
drivers: clk: rename clk_dt_get_fn to clk_dt_get_func
Rename type clk_dt_get_fn to clk_dt_get_func for consistency in OP-TEE OS implementation where all other function prototype type definitions use _func as suffix.
Acked-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| 6c9ed842 | 19-Sep-2021 |
Etienne Carriere <etienne.carriere@linaro.org> |
drivers: clk: implement clk_is_enabled()
Add clock API function clk_is_enabled(). It is not very useful at runtime since clock state can change at any time. The API function is useful during specifi
drivers: clk: implement clk_is_enabled()
Add clock API function clk_is_enabled(). It is not very useful at runtime since clock state can change at any time. The API function is useful during specific system sequences where OP-TEE core knows is executes atomically (primary core boot, low power sequences).
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| 7e6a39fe | 03-Sep-2021 |
Etienne Carriere <etienne.carriere@linaro.org> |
drivers: clk: add platform data per compatible identifier
Add a platform data reference field in struct dt_device_match so that a driver knows data related to the compatible it is probed for.
Signe
drivers: clk: add platform data per compatible identifier
Add a platform data reference field in struct dt_device_match so that a driver knows data related to the compatible it is probed for.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| dd7e1845 | 16-Sep-2021 |
Clément Léger <clement.leger@bootlin.com> |
dts: at91: add device trees for sama5d2_xplained
Import device-tree from linux for sama5d2 and relicense them with dual GPL/BSD 3-Clause
Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Ack
dts: at91: add device trees for sama5d2_xplained
Import device-tree from linux for sama5d2 and relicense them with dual GPL/BSD 3-Clause
Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com> Signed-off-by: Clément Léger <clement.leger@bootlin.com>
show more ...
|
| dbe94a85 | 25-Jun-2021 |
Clément Léger <clement.leger@bootlin.com> |
drivers: clk: add devicetree support
When using a devicetree, it is often useful to have clocks parsing. This support adds clocks properties parsing and allow having clock providers and users. Clock
drivers: clk: add devicetree support
When using a devicetree, it is often useful to have clocks parsing. This support adds clocks properties parsing and allow having clock providers and users. Clocks drivers can also be declared with CLK_DT_DECLARE. They will be probed automatically by the clock core. On the user side, function clk_dt_get_by_name and clk_dt_get_by_idx allows to retrieve a clock from the device tree description and match it with the provider clocks. The core ensure the clocks are probed hierarchically. This support is enabled using CFG_DRIVERS_CLK_DT.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Clément Léger <clement.leger@bootlin.com>
show more ...
|
| 2305544b | 10-Jun-2021 |
Clément Léger <clement.leger@bootlin.com> |
drivers: clk: add generic clock framework
In order to ease clock support in OP-TEE, add a generic clock framework which allows to add clocks driver and handle clock hierarchy. This clock framework p
drivers: clk: add generic clock framework
In order to ease clock support in OP-TEE, add a generic clock framework which allows to add clocks driver and handle clock hierarchy. This clock framework provides various functions to enable/disable clock and to get their rate. Some basic behavior are supported such as gating when parent or rate is set. This option is enabled using CFG_DRIVERS_CLK which is disabled by default.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Clément Léger <clement.leger@bootlin.com>
show more ...
|
| 5e588771 | 10-Jun-2021 |
Clément Léger <clement.leger@bootlin.com> |
drivers: add type field to dt_driver struct
In order to keep the current mechanism simple but allow parsing the device tree by iterating on driver (clocks for instance), add a type field to dt drive
drivers: add type field to dt_driver struct
In order to keep the current mechanism simple but allow parsing the device tree by iterating on driver (clocks for instance), add a type field to dt driver struct which will allow differentiating drivers when iterating on entries and thus avoid casting struct dt_driver::driver to the wrong type in case a bad DT is provided. This will also allow adding a more generic driver model by probing generic driver based on their compatible.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Clément Léger <clement.leger@bootlin.com>
show more ...
|
| a94111b9 | 31-Aug-2021 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: virtualization.h: add dummy static inline functions
Adds dummy static inline functions to replace the normal virt_*() functions in virtualization.h when CFG_VIRTUALIZATION is not configured.
core: virtualization.h: add dummy static inline functions
Adds dummy static inline functions to replace the normal virt_*() functions in virtualization.h when CFG_VIRTUALIZATION is not configured.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com> Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| bddb2f89 | 31-Aug-2021 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: virt: use TEE_Result return type for virt_*() functions
Uses TEE_Result as return type for all virt_*() functions returning anything but void in <kernel/virtualization.h>
Reviewed-by: Etienne
core: virt: use TEE_Result return type for virt_*() functions
Uses TEE_Result as return type for all virt_*() functions returning anything but void in <kernel/virtualization.h>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| be501eb1 | 05-Oct-2021 |
Jorge Ramirez-Ortiz <jorge@foundries.io> |
util: rename ALIGNMENT_IS_OK to IS_ALIGNED_WITH_TYPE
Implement the renamed macro using the IS_ALIGNED definition.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Reviewed-by: Etienne Carrie
util: rename ALIGNMENT_IS_OK to IS_ALIGNED_WITH_TYPE
Implement the renamed macro using the IS_ALIGNED definition.
Signed-off-by: Jorge Ramirez-Ortiz <jorge@foundries.io> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 702fe5a7 | 10-Aug-2021 |
Clément Léger <clement.leger@bootlin.com> |
core: kernel: interrupt: add type and prio for interrupts
When describing a device in the device tree, it is sometimes necessary to parse the interrupts properties and propagates them until adding t
core: kernel: interrupt: add type and prio for interrupts
When describing a device in the device tree, it is sometimes necessary to parse the interrupts properties and propagates them until adding the interrupt. For instance some interrupt-cells allows to describe priority and type of interrupt:
interrupts = <67 IRQ_TYPE_LEVEL_HIGH 2>;
With existing support, only the interrupt number is returned by `dt_get_irq()`. This patch adds type and prio parameter which are passed to `dt_get_irq_type_prio()` and `itr_add_type_prio()`. This allows interrupt drivers to fill this from devicetree in `dt_get_irq()` but also use these information in the `add()` callback. Additionally, it allows to specify these flags manually when not using devicetree.
These parameters can then be used by the interrupt controller driver to setup the irq line correctly.
Signed-off-by: Clément Léger <clement.leger@bootlin.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| 888bb63d | 13-Oct-2021 |
Clément Léger <clement.leger@bootlin.com> |
core: kernel: interrupt: rename len argument of dt_get_irq to count
len can be missleading, use a more descriptive name.
Signed-off-by: Clément Léger <clement.leger@bootlin.com> Reviewed-by: Etienn
core: kernel: interrupt: rename len argument of dt_get_irq to count
len can be missleading, use a more descriptive name.
Signed-off-by: Clément Léger <clement.leger@bootlin.com> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| bd59a6ad | 31-Aug-2021 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add call_preinitcalls()
Adds call_preinitcalls() for really early initcalls. This function is supposed to be called before call_initcalls() is called. With virtualization enabled it is called
core: add call_preinitcalls()
Adds call_preinitcalls() for really early initcalls. This function is supposed to be called before call_initcalls() is called. With virtualization enabled it is called in a blocking context when the OP-TEE partition is created.
Reviewed-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| aae59a1e | 24-Sep-2021 |
Etienne Carriere <etienne.carriere@linaro.org> |
drivers: stm32_gpio: inline function when without GPIO support
Provide an implementation for GPIO configuration when the driver is not embedded (CFG_STM32_GPIO!=y). In such configuration, platform c
drivers: stm32_gpio: inline function when without GPIO support
Provide an implementation for GPIO configuration when the driver is not embedded (CFG_STM32_GPIO!=y). In such configuration, platform cannot configure the GPIO pins hence place an assert() instruction.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jerome Forissier <jerome@forissier.org>
show more ...
|
| e4ca953c | 10-Aug-2021 |
Clement Faure <clement.faure@nxp.com> |
drivers: imx: add OCOTP driver
Add OCOTP driver for imx6, imx7, imx7ulp and imx8m platforms. The implementation only supports the read of OCOTP shadow registers. It also implements the tee_otp_get_d
drivers: imx: add OCOTP driver
Add OCOTP driver for imx6, imx7, imx7ulp and imx8m platforms. The implementation only supports the read of OCOTP shadow registers. It also implements the tee_otp_get_die_id() function.
Signed-off-by: Clement Faure <clement.faure@nxp.com> Acked-by: Jerome Forissier <jerome@forissier.org>
show more ...
|
| df45c114 | 17-Sep-2021 |
Etienne Carriere <etienne.carriere@linaro.org> |
core: dt: fix missing const attribute on fdt reference
The standard FDT reference in libfdt and friends is a const void *. Fix few function prototypes that miss the const attribute.
Signed-off-by:
core: dt: fix missing const attribute on fdt reference
The standard FDT reference in libfdt and friends is a const void *. Fix few function prototypes that miss the const attribute.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jerome Forissier <jerome@forissier.org>
show more ...
|
| c2e4eb43 | 23-May-2021 |
Anton Rybakov <a.rybakov@omp.ru> |
core_mmu: fix phys_to_virt() to check length
phys_to_virt() function without length parameter doesn`t always have ability to find the correct mapping for requested physical address. This is because
core_mmu: fix phys_to_virt() to check length
phys_to_virt() function without length parameter doesn`t always have ability to find the correct mapping for requested physical address. This is because physical address can be mapped in the same time in different virtual regions with different length. So the first found region which contains the requested physical address possibly doesn`t have enough mapped data. This is fixed by adding the length parameter to phys_to_virt() function. Length parameter can be set to 1 if caller knows that requested (pa + len) doesn`t cross mapping granule boundary.
core_mmu_get_va() and io_pa_or_va() functions now are take length parameter too as they based on phys_to_virt() in case of MMU enabled.
Signed-off-by: Anton Rybakov <a.rybakov@omp.ru> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Tested-by: Etienne Carriere <etienne.carriere@linaro.org> (stm32mp1-157C_DK2) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx6dlsabreauto) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx6dlsabresd) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx6qpsabreauto) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx6sllevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx6ulevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx6ullevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx6ulzevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx7dsabresd) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx7ulpevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx8mmevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx8mnevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx8mqevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx8mpevk) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx8qmmek) Tested-by: Clement Faure <clement.faure@nxp.com> (imx-mx8qxpmek)
show more ...
|
| 927d81ac | 27-Aug-2021 |
Jerome Forissier <jerome@forissier.org> |
core: panic: introduce cpu_idle() function
Adds a cpu_idle() weak function to panic.h/panic.c, which can later be implemented in arch-specific code. The purpose is to avoid a busy loop (which is the
core: panic: introduce cpu_idle() function
Adds a cpu_idle() weak function to panic.h/panic.c, which can later be implemented in arch-specific code. The purpose is to avoid a busy loop (which is the default implementation) when __do_panic() is done but cannot return.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| ff01e245 | 24-Jun-2021 |
Anton Rybakov <a.rybakov@omp.ru> |
mm: split mobj_tee_ram onto rw/rx parts
Now mobj_tee_ram memory abstraction contains both TEE_RAM_RX and TEE_RAM_RW regions joined together. This patch splits it to mobj_tee_ram_rx and mobj_tee_ram_
mm: split mobj_tee_ram onto rw/rx parts
Now mobj_tee_ram memory abstraction contains both TEE_RAM_RX and TEE_RAM_RW regions joined together. This patch splits it to mobj_tee_ram_rx and mobj_tee_ram_rw to manage RX/RW memory objects separately.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Anton Rybakov <a.rybakov@omp.ru>
show more ...
|
| 1b02ce1d | 21-Jun-2021 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add overflow check in SHDR_ENC_GET_SIZE()
Prior to this patch could the additions in the macro SHDR_ENC_GET_SIZE() cause an integer overflow. So fix this by using the ADD_OVERFLOW() macro and
core: add overflow check in SHDR_ENC_GET_SIZE()
Prior to this patch could the additions in the macro SHDR_ENC_GET_SIZE() cause an integer overflow. So fix this by using the ADD_OVERFLOW() macro and a helper function. In case of overflow return 0 which never can be a correct size.
Reviewed-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Ruchika Gupta <ruchika.gupta@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reported-by: Patrik Lantz <Patrik.Lantz@axis.com> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 077732a0 | 12-May-2021 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: make __wq_rpc() static again
With dependency chains properly broken for various ops structs we can make __wq_rpc() static again and remove it from link_dummies_paged.c.
Acked-by: Jerome Foris
core: make __wq_rpc() static again
With dependency chains properly broken for various ops structs we can make __wq_rpc() static again and remove it from link_dummies_paged.c.
Acked-by: Jerome Forissier <jerome@forissier.org> Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|