| 760f7941 | 18-Jan-2019 |
Anson Huang <Anson.Huang@nxp.com> |
imx: add i.MX8 SoCs build info SIP(silicon provider) service support
This patch adds NXP i.MX8 SoCs' build info SIP support for easy debug. With this function enabled, TF-A's commit hash can be show
imx: add i.MX8 SoCs build info SIP(silicon provider) service support
This patch adds NXP i.MX8 SoCs' build info SIP support for easy debug. With this function enabled, TF-A's commit hash can be showed in u-boot debug console when booting up, when there is any issue which could be related to TF-A, users can use the commit hash value to easily identify which commit introduces the issue.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
show more ...
|
| 869eebc3 | 18-Jan-2019 |
Anson Huang <Anson.Huang@nxp.com> |
imx: add i.MX8 SoCs thermal alarm SIP(silicon provider) service support
For NXP's i.MX8 SoCs with system controller inside, thermal sensors are maintained by SCFW, Linux needs to call SMC to trap to
imx: add i.MX8 SoCs thermal alarm SIP(silicon provider) service support
For NXP's i.MX8 SoCs with system controller inside, thermal sensors are maintained by SCFW, Linux needs to call SMC to trap to TF-A for thermal alarm operation etc. by calling SCFW API.
This patch adds temperature alarm SIP service support.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
show more ...
|
| dbfa45e8 | 18-Jan-2019 |
Anson Huang <Anson.Huang@nxp.com> |
imx: add i.MX8 SoCs OTP SIP(silicon provider) service support
For NXP's i.MX8 SoCs with system controller inside, OTP is maintained by SCFW, Linux needs to call SMC to trap to TF-A for OTP read/writ
imx: add i.MX8 SoCs OTP SIP(silicon provider) service support
For NXP's i.MX8 SoCs with system controller inside, OTP is maintained by SCFW, Linux needs to call SMC to trap to TF-A for OTP read/write etc. operations by calling SCFW API.
This patch adds OTP SIP service support.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
show more ...
|
| 936840f1 | 18-Jan-2019 |
Anson Huang <Anson.Huang@nxp.com> |
imx: support for i.MX8 SoCs misc IPC
NXP's i.MX8 SoCs have system controller (M4 core) which takes control of misc functions like temperature alarm, dma etc., other Cortex-A clusters can send out co
imx: support for i.MX8 SoCs misc IPC
NXP's i.MX8 SoCs have system controller (M4 core) which takes control of misc functions like temperature alarm, dma etc., other Cortex-A clusters can send out command via MU (Message Unit) to system controller for misc operation etc..
This patch adds misc IPC(inter-processor communication) support.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
show more ...
|
| d3996c59 | 15-Jan-2019 |
Anson Huang <Anson.Huang@nxp.com> |
imx: add cpu-freq SIP runtime service support
On i.MX8QM/i.MX8QX with system controller inside, the CPU's clock rate is managed by SCFW(system controller firmware) and can ONLY be changed from secur
imx: add cpu-freq SIP runtime service support
On i.MX8QM/i.MX8QX with system controller inside, the CPU's clock rate is managed by SCFW(system controller firmware) and can ONLY be changed from secure world, so SIP runtime service is needed for setting CPU's clock rate, this patch adds cpu-freq SIP runtime service support.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
show more ...
|
| 025514ba | 15-Jan-2019 |
Anson Huang <Anson.Huang@nxp.com> |
imx: add imx8qm/imx8qx SRTC SIP runtime service support
On i.MX8QM/i.MX8QX with system controller inside, the SRTC is managed by SCFW(system controller firmware) and some functions like setting SRTC
imx: add imx8qm/imx8qx SRTC SIP runtime service support
On i.MX8QM/i.MX8QX with system controller inside, the SRTC is managed by SCFW(system controller firmware) and some functions like setting SRTC's time etc. can ONLY be requested from secure world, so SIP runtime service is needed for such kind of operations, this patch adds SRTC SIP runtime service support for i.MX8QM and i.MX8QX.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
show more ...
|
| b42ceebb | 25-May-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_wdog: Add code to initialize the wdog block
The watchdog block on the IMX is mercifully simple. This patch maps the various registers and bits associated with the block.
We are mostly only
imx: imx_wdog: Add code to initialize the wdog block
The watchdog block on the IMX is mercifully simple. This patch maps the various registers and bits associated with the block.
We are mostly only really interested in the power-down-enable (PDE) bits in the block for the purposes of ATF.
The i.MX7 Solo Applications Processor Reference Manual details the PDE bit as follows:
"Power Down Enable bit. Reset value of this bit is 1, which means the power down counter inside the WDOG is enabled after reset. The software must write 0 to this bit to disable the counter within 16 seconds of reset de-assertion. Once disabled this counter cannot be enabled again. See Power-down counter event for operation of this counter."
This patch does that zero write in-lieu of later phases in the boot no-longer have the necessary permissions to rewrite the PDE bit directly.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| ca52cbe6 | 11-Jul-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_caam: Add code to initialize the CAAM job-rings to NS-world
This patch defines the most basic part of the CAAM and the only piece of the CAAM silicon we are really interested in, in ATF, th
imx: imx_caam: Add code to initialize the CAAM job-rings to NS-world
This patch defines the most basic part of the CAAM and the only piece of the CAAM silicon we are really interested in, in ATF, the CAAM control structure.
The CAAM itself is a huge address space of some 32k, way out of scope for the purpose we have in ATF.
This patch adds a simple CAAM init function that assigns ownership of the CAAM job-rings to the non-secure MID with the ownership bit set to non-secure.
This will allow later logic in the boot process such as OPTEE, u-boot and Linux to assign job-rings as appropriate, restricting if necessary but leaving open the main functionality of the CAAM to the Linux NS runtime.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| db05fb77 | 03-Jul-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_hab: Define a HAB header file
The High Assurance Boot or HAB is an on-chip method of providing a root-of-trust from the reset vector to subsequent stages in the bootup flow of the Cortex-A7
imx: imx_hab: Define a HAB header file
The High Assurance Boot or HAB is an on-chip method of providing a root-of-trust from the reset vector to subsequent stages in the bootup flow of the Cortex-A7 on the i.MX series of processors.
This patch adds a simple header file with pointer offsets of the provided set of HAH API callbacks in the BootROM.
The relative offset of the function pointers is a constant and known quantum, a software-contract between NXP and an implementation which is defined in the NXP HAB documentation.
All we need is the correct base offset and then we can map the set of function pointers relative to that offset.
imx_hab_arch.h provides the correct offset and the imx_hab.h hooks the offset to the pre-determined callbacks.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Reviewed-by: Ryan Harkin <ryan.harkin@linaro.org>
show more ...
|
| a60ca3b4 | 25-Jun-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_snvs: Define a SNVS header and memory map
This commit defines two things.
- The basic SNVS memory map. At the moment that is total overkill for the permission bits we need to set inside
imx: imx_snvs: Define a SNVS header and memory map
This commit defines two things.
- The basic SNVS memory map. At the moment that is total overkill for the permission bits we need to set inside the SNVS but, for the sake of completeness define the whole SNVS area as a struct.
- The bits of the HPCOMR register
A permission fix will need to be applied to the SNVS block prior to switching on TrustZone. All we need to do is waggle a bit in the HPCOMR register. To do that waggle we first need to define the bits of the HPCOMR register.
- A imx_snvs_init() function definition
Declare the snvs_init() function so that it can be called from our platform setup code.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| c3334cb1 | 25-May-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_csu: Add a simple CSU layer
- Add a header to define imx_csu_init(). - Defines the Central Security Unit's Config Security Level permission bits. - Define CSU_CSL_OPEN_ACCESS permission b
imx: imx_csu: Add a simple CSU layer
- Add a header to define imx_csu_init(). - Defines the Central Security Unit's Config Security Level permission bits. - Define CSU_CSL_OPEN_ACCESS permission bitmask - Run a loop to setup peripheral CSU permissions
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| 49a64134 | 25-May-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_aips: Add initial AIPS support
This patch adds an initial AHB-to-IP TrustZone (AIPS-TZ) initialization routine. Setting up the AIPSTZ controller is required to inform the SoC interconnect f
imx: imx_aips: Add initial AIPS support
This patch adds an initial AHB-to-IP TrustZone (AIPS-TZ) initialization routine. Setting up the AIPSTZ controller is required to inform the SoC interconnect fabric which bus-masters can read/write and if the read/writes are buffered.
For our purposes the initial configuration is for everything to be open. We can lock-down later on as necessary.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| 965bda4d | 20-Jun-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_io_mux: Define an IO-mux layer
This patch defines:
- The full range of IO-mux register offsets relative to the base address of the IO-mux block base address.
- The bits for muxing the U
imx: imx_io_mux: Define an IO-mux layer
This patch defines:
- The full range of IO-mux register offsets relative to the base address of the IO-mux block base address.
- The bits for muxing the UART1 TX/RX lines.
- The bits for muxing the UART6 TX/RX lines.
- The pad control pad bits for the UART
Two functions are provided to configure pad muxes:
- void io_muxc_set_pad_alt_function(pad_mux_offset, alt_function) Takes a pad_mux_offset and sets the alt_function bit-mask supplied. This will have the effect of switching the pad into one of its defined peripheral functions. These peripheral function modes are defined in the NXP documentation and need to be referred to in order to correctly configure a new alternative-function.
- void io_muxc_set_pad_features(pad_feature_offset, pad_features) Takes a pad_feature_offset and applies a pad_features bit-mask to the indicated pad. This function allows the setting of PAD drive-strength, pull-up values, hysteresis glitch filters and slew-rate settings.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| 6176a4e5 | 16-Jul-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_clock: usb: Add USB clock API
This set of patches adds a very minimal layer of USB enabling patches to clock.c. Unlike the watchdog or UART blocks the USB clocks pertain to PHYs, the main U
imx: imx_clock: usb: Add USB clock API
This set of patches adds a very minimal layer of USB enabling patches to clock.c. Unlike the watchdog or UART blocks the USB clocks pertain to PHYs, the main USB clock etc, not to different instances of the same IP block.
As a result this patch-set takes the clock CCGR clock identifier directly rather than as an index of an instance of blocks of the same type.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| bbdcdd04 | 13-Jul-2018 |
Bryan O'Donoghue <bryan.odonoghue@linaro.org> |
imx: imx_clock: wdog: Add watchdog clock API
This patch adds a set of functions to enable the clock for each of the watchdog IP blocks.
Unlike the MMC and UART blocks, the watchdog blocks operate o
imx: imx_clock: wdog: Add watchdog clock API
This patch adds a set of functions to enable the clock for each of the watchdog IP blocks.
Unlike the MMC and UART blocks, the watchdog blocks operate off of the one root clock, only the clock-gates are enable/disabled individually.
As a consequence the function clock_set_wdog_clk_root_bits() is used to set the root-slice just once for all of the watchdog blocks.
Future implementations may need to change this model but for now on the one supported processor and similar NXP SoCs this model should work fine.
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|
| 14cf32aa | 28-Jun-2018 |
Jun Nie <jun.nie@linaro.org> |
imx: imx_clock: mmc: Add USDHC clock API
This patch adds an API to configure up the base USDHC clocks, taking a bit-mask of silicon specific bits as an input from a higher layer in order to direct t
imx: imx_clock: mmc: Add USDHC clock API
This patch adds an API to configure up the base USDHC clocks, taking a bit-mask of silicon specific bits as an input from a higher layer in order to direct the necessary clock source.
Signed-off-by: Jun Nie <jun.nie@linaro.org> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
show more ...
|