| 7c4883ae | 30-Nov-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: gic: make GICR base optional
The physical address of the redistributor was, before this patch, always used, regardless of whether affinity routing is enabled or otherwise not needed.
Using th
core: gic: make GICR base optional
The physical address of the redistributor was, before this patch, always used, regardless of whether affinity routing is enabled or otherwise not needed.
Using the redistributor is optional if gic_init_donate_sgi_to_ns() isn't called. So allow the GICR base address to be passed as zero if gic_init_donate_sgi_to_ns() isn't called. However, gic_init_donate_sgi_to_ns() will panic if called without a previously configured GICR base address.
Fixes: 05089e5f9a56 ("core: gic: use redistributor CPU interface") Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| ace929f0 | 23-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: regulator: fix variable sized voltages fallback
Fix build issue reported by Clang on variable size field desc not being located at the end of struct voltages_fallback. The error was reporte
drivers: regulator: fix variable sized voltages fallback
Fix build issue reported by Clang on variable size field desc not being located at the end of struct voltages_fallback. The error was reported with a trace message like below:
core/include/drivers/regulator.h:118:4: warning: field 'voltages_fallback' with variable sized type 'struct voltages_fallback' not at the end of a struct or class is a GNU extension [-Wgnu-variable-sized-type-not-at-end] } voltages_fallback; ^ core/drivers/regulator/regulator_fixed.c:27:19: warning: field 'regulator' with variable sized type 'struct regulator' not at the end of a struct or class is a GNU extension [-Wgnu-variable-sized-type-not-at-end] struct regulator regulator; ^ 2 warnings generated.
To achieve this the variable size field entries is removed from struct regulator_voltages that is renamed struct regulator_voltages_desc. API function regulator_supported_voltages() and regulator drivers handler function ::supported_voltages are updated the get 2 input arguments the second being the levels arrays which size is defined by the description argument.
Impacted sources files are updated accordingly.
Fixes: 43c155ba111d ("drivers: regulator: list supported levels") Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 8122e61d | 04-Dec-2023 |
Zexi Yu <yuzexi@hisilicon.com> |
drivers: crypto: hisilicon: fix QM cache start and done define
Address offset of qm_cache_wb_start and qm_cache_wb_done is wrong.
Fixes: c7f9abcee87f ("drivers: implement HiSilicon Queue Management
drivers: crypto: hisilicon: fix QM cache start and done define
Address offset of qm_cache_wb_start and qm_cache_wb_done is wrong.
Fixes: c7f9abcee87f ("drivers: implement HiSilicon Queue Management (QM) module") Signed-off-by: Zexi Yu <yuzexi@hisilicon.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> [Edit commit subject] Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| aac2c716 | 28-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: clk: print clock tree with debug trace level
Change clk_print_tree() to print the clock tree with debug trace level instead of info trace level.
Add a test on TRACE_LEVEL >= TRACE_DEBUG in
drivers: clk: print clock tree with debug trace level
Change clk_print_tree() to print the clock tree with debug trace level instead of info trace level.
Add a test on TRACE_LEVEL >= TRACE_DEBUG in clk_print_tree() to ensures no unless code is embedded when the trace level is too low.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 4362d4f9 | 27-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: clk: remove spinlock in clk_print_tree()
Remove spinlock handling from clk_print_tree(). This lock may mask interrupts for a long period of time which and may affect the system behavior. Si
drivers: clk: remove spinlock in clk_print_tree()
Remove spinlock handling from clk_print_tree(). This lock may mask interrupts for a long period of time which and may affect the system behavior. Since there is no clock unregistering and clock destroying function, all clock references used are safe to use, even outside the locked state. Whether or not printed information is accurate is not an issue as clk_print_tree() is concerned as the function is only informative.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| e64dede3 | 26-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: clk: print tree without recursion
Remove recursive calls used in clk_print_tree() implementation using list parsing algorithm to prevent uncontrolled stack overflows.
Print "-- No register
drivers: clk: print tree without recursion
Remove recursive calls used in clk_print_tree() implementation using list parsing algorithm to prevent uncontrolled stack overflows.
Print "-- No registered clock" instead of nothing after "Clock tree summary" trace message when there are no registered clocks.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Co-developed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| bff6a848 | 26-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: clk: assert registered clock pointer is not NULL
Fix clk_register() assertion entry instruction to print an assertion error message on NULL clock pointer instead of issuing a segmentation f
drivers: clk: assert registered clock pointer is not NULL
Fix clk_register() assertion entry instruction to print an assertion error message on NULL clock pointer instead of issuing a segmentation fault.
Fixes: 2305544b3b9b ("drivers: clk: add generic clock framework") Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 2b13eca6 | 24-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: clk: change queue from STAILQ to SLIST
Replace registered clock list from a STAILQ queue to a SLIST queue that is enough for our purpose.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro
drivers: clk: change queue from STAILQ to SLIST
Replace registered clock list from a STAILQ queue to a SLIST queue that is enough for our purpose.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 84603456 | 23-Oct-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: gic: add gic_init_donate_sgi_to_ns()
Adds gic_init_donate_sgi_to_ns() which changes a secure SGI to become non-secure.
Secure world currently has a few SGIs to spare while normal world typica
core: gic: add gic_init_donate_sgi_to_ns()
Adds gic_init_donate_sgi_to_ns() which changes a secure SGI to become non-secure.
Secure world currently has a few SGIs to spare while normal world typically have reserved each of the non-secure SGIs for different purposes.
In case another non-secure SGI is needed secure world can donate one of its unused SGIs. This configuration will then deviate from the standard GIC configuration where SGI ID0-ID7 are non-secure and ID8-ID15 are secure.
Platforms using gic_init_donate_sgi_to_ns() should also use gic_init_per_cpu() instead of the deprecated gic_cpu_init().
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 5da157f5 | 22-Nov-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: deprecate gic_cpu_init()
Deprecates gic_cpu_init() in favor of the new function gic_init_per_cpu(). gic_cpu_init() is only supposed to be called by secondary CPUs in non-TF-A configurations w
core: deprecate gic_cpu_init()
Deprecates gic_cpu_init() in favor of the new function gic_init_per_cpu(). gic_cpu_init() is only supposed to be called by secondary CPUs in non-TF-A configurations while gic_init_per_cpu() should be called by all secondary CPUs. gic_init_per_cpu() itself takes CFG_WITH_ARM_TRUSTED_FW into account instead of having each platform doing that.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 05089e5f | 23-Oct-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: gic: use redistributor CPU interface
GICv3 has a redistributor CPU interface that until now hasn't been used. To prepare for coming patches that need to access the redistributor initialize a l
core: gic: use redistributor CPU interface
GICv3 has a redistributor CPU interface that until now hasn't been used. To prepare for coming patches that need to access the redistributor initialize a list with each CPU specific redistributor address. A new function gic_init_v3() is added with a parameter for the redistributor base address.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 69171bec | 23-Oct-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: gic: check gic version
Adds a check to see that the version of the GIC matches the expected version.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <e
core: gic: check gic version
Adds a check to see that the version of the GIC matches the expected version.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| c4292779 | 21-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: regulator: print regulator tree summary
Changes implementation of regulator_print_state() to better show the regulator tree hierarchy and renames the function to regulator_print_tree().
Th
drivers: regulator: print regulator tree summary
Changes implementation of regulator_print_state() to better show the regulator tree hierarchy and renames the function to regulator_print_tree().
The function now depends on CFG_DRIVERS_REGULATOR_PRINT_TREE being enabled.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Co-developed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 950549e4 | 24-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: regulator: fix getting GPIO for level control
Swap the 2 calls to find gpio property in "regulator-gpio" compatible node. The call that expects to get a TEE_ERROR_ITEM_NOT_FOUND return valu
drivers: regulator: fix getting GPIO for level control
Swap the 2 calls to find gpio property in "regulator-gpio" compatible node. The call that expects to get a TEE_ERROR_ITEM_NOT_FOUND return value (as described in the inline comment) for an unsupported 2nd level control GPIO can fail with TEE_ERROR_DEFER_DRIVER_INIT return value when the 1st GPIO phandle listed in the 'gpios' DT node property relates to a GPIO driver that is not yet probed. Fix that by first getting the required GPIO control level and then testing presence of other GPIO phandle in the 'gpios' DT property.
Fixes: f164f0f83420 ("drivers: regulator: GPIO controlled regulator") Reviewed-by: Gatien Chevallier <gatien.chevallier@foss.st.com> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 9b72ef09 | 17-Nov-2023 |
loubaihui <loubaihui1@huawei.com> |
core: drivers: fix random number reading errors in hisi_trng
Fixes arguments passed to IO_READ32_POLL_TIMEOUT() macro and missing local variable definition in hisi_trng driver.
Fixes: fb5592f9cfeb
core: drivers: fix random number reading errors in hisi_trng
Fixes arguments passed to IO_READ32_POLL_TIMEOUT() macro and missing local variable definition in hisi_trng driver.
Fixes: fb5592f9cfeb ("core: drivers: add HiSilicon TRNG implementation") Signed-off-by: loubaihui <loubaihui1@huawei.com> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 7d41fd4c | 13-Nov-2023 |
loubaihui <loubaihui1@huawei.com> |
core: drivers: modify debug and error messages in hisi_trng
Modify debug and error messages in hisi_trng.c
Fixes: fb5592f9cfeb ("core: drivers: add HiSilicon TRNG implementation") Signed-off-by: lo
core: drivers: modify debug and error messages in hisi_trng
Modify debug and error messages in hisi_trng.c
Fixes: fb5592f9cfeb ("core: drivers: add HiSilicon TRNG implementation") Signed-off-by: loubaihui <loubaihui1@huawei.com> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| c7f9abce | 21-Nov-2023 |
Xiaoxu Zeng <zengxiaoxu@huawei.com> |
drivers: implement HiSilicon Queue Management (QM) module
The Hisilicon QM is a Queue Management module. In order to unify the interface between accelerator and software, a unified queue management
drivers: implement HiSilicon Queue Management (QM) module
The Hisilicon QM is a Queue Management module. In order to unify the interface between accelerator and software, a unified queue management module QM is used to interact with software. Each accelerator module integrates a QM. Software issues tasks to the SQ (Submmision Queue),and the QM obtains the address of the SQE (Submmision Queue Element). The BD (Buffer Description, same as SQE) information is sent to the accelerator. After the task processing is complete, the accelerator applies for a write-back address from the QM to write back the SQ.
Signed-off-by: Xiaoxu Zeng <zengxiaoxu@huawei.com> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 23f9bd99 | 02-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: regulator: IO domain regulators for STM32MP13
Add STM32MP13 IO domains regulators allowing a consumer to manage IO domains are voltage regulators.
Acked-by: Patrick Delaunay <patrick.delau
drivers: regulator: IO domain regulators for STM32MP13
Add STM32MP13 IO domains regulators allowing a consumer to manage IO domains are voltage regulators.
Acked-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Acked-by: Gatien Chevallier <gatien.chevallier@foss.st.com> Co-developed-by: Pascal Paillet <p.paillet@foss.st.com> Signed-off-by: Pascal Paillet <p.paillet@foss.st.com> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 8c7282be | 10-Oct-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: gic: use DT bindings
Use DT bindings GIC_PPI and GIC_SIP instead of 1 and 0 raw values.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@li
drivers: gic: use DT bindings
Use DT bindings GIC_PPI and GIC_SIP instead of 1 and 0 raw values.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 14885eb1 | 05-Oct-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: gic: register to dt_driver
Registers GIC driver as an interrupt controller in DT_DRIVER providers when DT is supported. This change allows interrupt consumer nodes to leverage interrupts an
drivers: gic: register to dt_driver
Registers GIC driver as an interrupt controller in DT_DRIVER providers when DT is supported. This change allows interrupt consumer nodes to leverage interrupts and interrupts-extended properties DT bindings for their device drivers to retrieve their interrupts.
Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| 33a0c835 | 14-Jun-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
core: interrupt: registering interrupt providers
Adds interrupt chip framework API functions for an interrupt controller to register as an interrupt provider in the driver probing sequence based on
core: interrupt: registering interrupt providers
Adds interrupt chip framework API functions for an interrupt controller to register as an interrupt provider in the driver probing sequence based on device tree. This allows interrupt consumer to be deferred when a dependent interrupt controller is not yet initialized.
Interrupt controllers register a driver in DT_DRIVER providers list with: interrupt_register_provider().
Interrupt consumer can get their interrupt through DT data with interrupt_dt_get(), interrupt_dt_get_by_index() or interrupt_dt_get_by_name().
This change removes inclusion of interrupt.h from kernel/dt.h as it is not needed and conflicts with inclusion of kernel/dt.h from kernel/interrupt.h.
Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| cd04d138 | 17-Nov-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: clk: print clock tree summary
Adds clk_print_summary() to print the clock tree current state on core console using the info trace level. Clock framework spinlock is help while clock tree is
drivers: clk: print clock tree summary
Adds clk_print_summary() to print the clock tree current state on core console using the info trace level. Clock framework spinlock is help while clock tree is printed.
The feature depends on CFG_DRIVERS_CLK_PRINT_TREE being enabled.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Co-developed-by: Gabriel Fernandez <gabriel.fernandez@foss.st.com> Signed-off-by: Gabriel Fernandez <gabriel.fernandez@foss.st.com> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| bce2f88a | 19-Nov-2023 |
Vincent Mailhol <mailhol.vincent@wanadoo.fr> |
tree-wide: remove useless newline character in *MSG() messages
The *MSG() macros take care of printing a newline. Adding a newline character ('\n') is useless. Remove it.
Signed-off-by: Vincent Mai
tree-wide: remove useless newline character in *MSG() messages
The *MSG() macros take care of printing a newline. Adding a newline character ('\n') is useless. Remove it.
Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Acked-by: Etienne Carriere <etienne.carriere@foss.st.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| f164f0f8 | 11-Sep-2023 |
Etienne Carriere <etienne.carriere@foss.st.com> |
drivers: regulator: GPIO controlled regulator
Implements a GPIO controlled regulators driver compliant with DT nodes compatible with regulator-gpio. These regulators use GPIO pins to select the volt
drivers: regulator: GPIO controlled regulator
Implements a GPIO controlled regulators driver compliant with DT nodes compatible with regulator-gpio. These regulators use GPIO pins to select the voltage level. The implementation supports only dual voltage level selection using a single pin. The DT bindings allows more pins to select between more voltages but no known platform currently requires that so we preferred the simplified case.
Acked-by: Gatien Chevallier <gatien.chevallier@foss.st.com> Signed-off-by: Etienne Carriere <etienne.carriere@foss.st.com>
show more ...
|
| ec740b9f | 23-Oct-2023 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: interrupt_raise_sgi() updates
Adds ITR_CPU_MASK_TO_THIS_CPU and ITR_CPU_MASK_TO_OTHER_CPUS to simplify targeting CPUs in some use cases. The cpu_mask parameter is changed to a uint32_t to make
core: interrupt_raise_sgi() updates
Adds ITR_CPU_MASK_TO_THIS_CPU and ITR_CPU_MASK_TO_OTHER_CPUS to simplify targeting CPUs in some use cases. The cpu_mask parameter is changed to a uint32_t to make room for the two new flags.
The gic driver is updated to support this new flag.
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Gatien Chevallier <gatien.chevallier@foss.st.com> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|