| eae5fe79 | 15-Sep-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: A64: Add AXP803 PMIC support to power off the board
Boards with the Allwinner A64 SoC are mostly paired with an AXP803 PMIC, which allows to programmatically power down the board.
Use th
allwinner: A64: Add AXP803 PMIC support to power off the board
Boards with the Allwinner A64 SoC are mostly paired with an AXP803 PMIC, which allows to programmatically power down the board.
Use the newly introduced RSB driver to detect and program the PMIC on boot, then later to turn off the main voltage rails when receiving a PSCI SYSTEM_POWER_OFF command.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| d5ddf67a | 14-Oct-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: H6: Factor out I2C platform setup
In the H6 platform code there is a routine to do the platform initialisation of the R_I2C controller. We will need a very similar setup routine to initia
allwinner: H6: Factor out I2C platform setup
In the H6 platform code there is a routine to do the platform initialisation of the R_I2C controller. We will need a very similar setup routine to initialise the RSB controller on the A64.
Move this code to sunxi_common.c and generalise it to support all SoCs and also to cover the related RSB bus.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 3d22228f | 01-Oct-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: H5: Implement power down for H5 reference design boards
Allwinner produces reference board designs, which apparently most board vendors copy from. So every H5 board I checked uses regulat
allwinner: H5: Implement power down for H5 reference design boards
Allwinner produces reference board designs, which apparently most board vendors copy from. So every H5 board I checked uses regulators which are controlled by the same PortL GPIO pins to power the ARM CPU cores, the DRAM and the I/O ports. Add a SoC specific power down routine, which turns those regulators off when ATF detects running on an H5 SoC and the rich OS triggers a SYSTEM_POWEROFF PSCI call.
NOTE: It sounds very tempting to turn the CPU power off, but this is not working as expected, instead the system is rebooting. Most probably this is due to VCC-SYS also being controlled by the same GPIO line, and turning this off requires an elaborate and not fully understood setup. Apparently not even Allwinner reference code is turning this regulator off. So for now we refrain to pulling down PL8, the power consumption is quite low anyway, so we are as close to poweroff as reasonably possible. Many thanks to Samuel for doing some research on that topic.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 7020dca0 | 14-Oct-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Introduce GPIO helper function
Many boards without a dedicated PMIC contain simple regulators, which can be controlled via GPIO pins.
To later allow turning them off easily, introduce a
allwinner: Introduce GPIO helper function
Many boards without a dedicated PMIC contain simple regulators, which can be controlled via GPIO pins.
To later allow turning them off easily, introduce a simple function to configure a given pin as a GPIO out pin and set it to the desired level.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 4ec1a239 | 14-Oct-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Export sunxi_private.h
So far we have a sunxi_private.h header file in the common code directory. This holds the prototypes of various functions we share in *common* code. However we will
allwinner: Export sunxi_private.h
So far we have a sunxi_private.h header file in the common code directory. This holds the prototypes of various functions we share in *common* code. However we will need some of those in the platform specific code parts as well, and want to introduce new functions shared across the whole platform port.
So move the sunxi_private.h file into the common/include directory, so that it becomes visible to all parts of the platform code. Fix up the existing #includes and add missing ones, also add the sunxi_read_soc_id() prototype here.
This will be used in follow up patches.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| f953c30f | 01-Oct-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: A64/H5: Add basic and generic shutdown method
Some boards don't have a PMIC, so they can't easily turn their power off. To cover those boards anyway, let's turn off as many devices and cl
allwinner: A64/H5: Add basic and generic shutdown method
Some boards don't have a PMIC, so they can't easily turn their power off. To cover those boards anyway, let's turn off as many devices and clocks as possible, so that the power consumption is reduced. Then halt the last core, as before. This will later be extended with proper PMIC support for supported boards.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| fe57c7d4 | 08-Sep-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Pass SoC ID to sunxi_pmic_setup()
In the BL31 platform setup we read the Allwinner SoC ID to identify the chip and print its name. In addition to that we will need to differentiate the po
allwinner: Pass SoC ID to sunxi_pmic_setup()
In the BL31 platform setup we read the Allwinner SoC ID to identify the chip and print its name. In addition to that we will need to differentiate the power setup between the SoCs, to pass on the SoC ID to the PMIC setup routine.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 123bcb3f | 16-Sep-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Introduce names for SoC IDs
We will soon make more use of the Allwinner SoC ID, to differentiate the platform setup. Introduce definitions to avoid dealing with magic numbers and make the
allwinner: Introduce names for SoC IDs
We will soon make more use of the Allwinner SoC ID, to differentiate the platform setup. Introduce definitions to avoid dealing with magic numbers and make the code more readable.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| f78f00aa | 15-Oct-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: H6: Fix SRAM size
The SRAM in the Allwinner H6 SoC starts at 0x2000, with the last part ending at 0x117fff (although with gaps in between). So SUNXI_SRAM_SIZE should be 0xf8000, not 0x980
allwinner: H6: Fix SRAM size
The SRAM in the Allwinner H6 SoC starts at 0x2000, with the last part ending at 0x117fff (although with gaps in between). So SUNXI_SRAM_SIZE should be 0xf8000, not 0x98000.
Fix this to map the arisc exception vector area, which we will need shortly.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| 43060513 | 11-Oct-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Disable USE_COHERENT_MEM
According to the documentation, platforms may choose to trade memory footprint for performance (and elegancy) by not providing a separately mapped coherent page.
allwinner: Disable USE_COHERENT_MEM
According to the documentation, platforms may choose to trade memory footprint for performance (and elegancy) by not providing a separately mapped coherent page.
Since a debug build is getting close to the SRAM size limit already, this allows us to save about 3.5KB of BSS and have some room for future enhancements.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| c3af6b00 | 20-Sep-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Adjust memory mapping to fit into 256MB
At the moment we map as much of the DRAM into EL3 as possible, however we actually don't use it. The only exception is the secure DRAM for BL32 (if
allwinner: Adjust memory mapping to fit into 256MB
At the moment we map as much of the DRAM into EL3 as possible, however we actually don't use it. The only exception is the secure DRAM for BL32 (if that is configured).
To decrease the memory footprint of ATF, we save on some page tables by reducing the memory mapping to the actually required regions: SRAM, device MMIO, secure DRAM and U-Boot (to be used later). This introduces a non-identity mapping for the DRAM regions.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| a80490c5 | 27-Sep-2018 |
Andre Przywara <andre.przywara@arm.com> |
allwinner: Unify platform.mk files
For the two different platforms we support in the Allwinner port we mostly rely on header files covering the differences. This leads to the platform.mk files in th
allwinner: Unify platform.mk files
For the two different platforms we support in the Allwinner port we mostly rely on header files covering the differences. This leads to the platform.mk files in the respective directories to be almost identical.
To avoid further divergence and make sure that one platform doesn't break accidentally, let's create a shared allwinner-common.mk file and include that from the platform directory.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
show more ...
|
| cc5859ca | 10-Oct-2018 |
Soby Mathew <soby.mathew@arm.com> |
Multi-console: Deprecate the `finish_console_register` macro
The `finish_console_register` macro is used by the multi console framework to register the `console_t` driver callbacks. It relied on wea
Multi-console: Deprecate the `finish_console_register` macro
The `finish_console_register` macro is used by the multi console framework to register the `console_t` driver callbacks. It relied on weak references to the `ldr` instruction to populate 0 to the callback in case the driver has not defined the appropriate function. Use of `ldr` instruction to load absolute address to a reference makes the binary position dependant. These instructions should be replaced with adrp/adr instruction for position independant executable(PIE). But adrp/adr instructions don't work well with weak references as described in GNU ld bugzilla issue 22589.
This patch defines a new version of `finish_console_register` macro which can spcify which driver callbacks are valid and deprecates the old one. If any of the argument is not specified, then the macro populates 0 for that callback. Hence the functionality of the previous deprecated macro is preserved. The USE_FINISH_CONSOLE_REG_2 define is used to select the new variant of the macro and will be removed once the deprecated variant is removed.
All the upstream console drivers have been migrated to use the new macro in this patch.
NOTE: Platforms be aware that the new variant of the `finish_console_register` should be used and the old variant is deprecated.
Change-Id: Ia6a67aaf2aa3ba93932992d683587bbd0ad25259 Signed-off-by: Soby Mathew <soby.mathew@arm.com>
show more ...
|
| bde0f327 | 18-Oct-2018 |
Jerome Forissier <jerome.forissier@linaro.org> |
qemu: increase PLAT_QEMU_DT_MAX_SIZE to 1 MiB
Since upstream QEMU commit 14ec3cbd7c1e ("device_tree: Increase FDT_MAX_SIZE to 1 MiB"), which is included in release v2.12.1 and later, BL2 initializat
qemu: increase PLAT_QEMU_DT_MAX_SIZE to 1 MiB
Since upstream QEMU commit 14ec3cbd7c1e ("device_tree: Increase FDT_MAX_SIZE to 1 MiB"), which is included in release v2.12.1 and later, BL2 initialization fails with the following error (-3 is -FDT_ERR_NOSPACE):
ERROR: Invalid Device Tree at 0x40000000: error -3
Increase PLAT_QEMU_DT_MAX_SIZE accordingly.
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| b911dddc | 11-Oct-2018 |
Chandni Cherukuri <chandni.cherukuri@arm.com> |
plat/arm/scmi: introduce plat_css_get_scmi_info API
The default values of 'plat_css_scmi_plat_info' is not applicable for all the platforms. There should be a provision to let platform code to regis
plat/arm/scmi: introduce plat_css_get_scmi_info API
The default values of 'plat_css_scmi_plat_info' is not applicable for all the platforms. There should be a provision to let platform code to register a platform specific instance of scmi_channel_plat_info_t.
Add a new API 'plat_css_get_scmi_info' which lets the platform to register a platform specific instance of scmi_channel_plat_info_t and remove the default values.
In addition to this, the existing 'plat_css_scmi_plat_info' structure is removed from the common code and instantiated for the platforms that need it. This allows for a consistent provisioning of the SCMI channel information across all the existing and upcoming platforms.
Change-Id: I4fb65d7f2f165b78697b4677f1e8d81edebeac06 Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
show more ...
|
| 8c7b55f9 | 17-Aug-2018 |
Chandni Cherukuri <chandni.cherukuri@arm.com> |
plat/arm/sgi: add system-id node in HW_CONFIG dts
Dynamically populating the 'system-id' node in the HW_CONFIG dts makes it difficult to enforce memory overlap checks. So add the system-id node in t
plat/arm/sgi: add system-id node in HW_CONFIG dts
Dynamically populating the 'system-id' node in the HW_CONFIG dts makes it difficult to enforce memory overlap checks. So add the system-id node in the HW_CONFIG dts file as a place holder with 'platform-id' and 'config-id' set to zero.
The code at BL2 stage determines the values of 'platform-id' and 'config-id' at runtime and updates the corresponding fields in the system-id node of HW_CONFIG dts.
Change-Id: I2ca9980b994ac418da8afa0c72716ede10aff68a Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
show more ...
|
| 63197d01 | 04-Sep-2018 |
Chandni Cherukuri <chandni.cherukuri@arm.com> |
plat/arm/sgi: move fdts files to sgi575 board directory
To align the placement of ftds files with that of other Arm platforms, move the ftds files from plat/arm/css/sgi/ to plat/arm/board/sgi575.
C
plat/arm/sgi: move fdts files to sgi575 board directory
To align the placement of ftds files with that of other Arm platforms, move the ftds files from plat/arm/css/sgi/ to plat/arm/board/sgi575.
Change-Id: Id7c772eb5cf3d308d4e02a3c8099218e889a0e96 Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
show more ...
|
| a50a5830 | 14-Aug-2018 |
Chandni Cherukuri <chandni.cherukuri@arm.com> |
plat/arm/sgi: remove unused code
On SGI platforms, the interconnect is setup by the SCP and so the existing unused interconnect setup in sgi575 platform code can be removed. As a result of this, sgi
plat/arm/sgi: remove unused code
On SGI platforms, the interconnect is setup by the SCP and so the existing unused interconnect setup in sgi575 platform code can be removed. As a result of this, sgi_plat_config.c and sgi_bl1_setup.c files can be removed as these files are now empty or can be substainated by the existing weak functions.
Change-Id: I3c883e4d1959d890bf2213a9be01f02551ea3a45 Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
show more ...
|
| 91e6f26f | 10-Aug-2018 |
Chandni Cherukuri <chandni.cherukuri@arm.com> |
plat/arm/sgi: reorganize platform macros
In preparation of adding support for upcoming SGI platforms, macros common to all the SGI platforms are moved into sgi_base_platform_def.h file. Macros that
plat/arm/sgi: reorganize platform macros
In preparation of adding support for upcoming SGI platforms, macros common to all the SGI platforms are moved into sgi_base_platform_def.h file. Macros that are specific to sgi575 platform remain in the platform_def.h file. In addition to this, the platform_def.h file is moved to sgi575 board directory. Also the ENT_CPU_SOURCES has been renamed to SGI_CPU_SOURCES and moved from sgi-common.mk to board specific makefile platform.mk
Change-Id: Iccdd9f070f4feea232b9fbf4fdcc0ef2e8eccbf2 Signed-off-by: Chandni Cherukuri <chandni.cherukuri@arm.com>
show more ...
|
| 0595abce | 18-Oct-2018 |
Soby Mathew <soby.mathew@arm.com> |
Merge pull request #1632 from Yann-lms/stm32mp1_mmc
Add MMC support for STM32MP1 |
| 42a29337 | 29-Jun-2018 |
Grzegorz Jaszczyk <jaz@semihalf.com> |
mvebu: cp110: introduce COMPHY porting layer
Some of COMPHY parameters depends on the hw connection between the SoC and the PHY, which can vary on different boards e.g. due to different wires length
mvebu: cp110: introduce COMPHY porting layer
Some of COMPHY parameters depends on the hw connection between the SoC and the PHY, which can vary on different boards e.g. due to different wires length. Define the "porting layer" with some defaults parameters. It ease updating static values which needs to be updated due to board differences, which are now grouped in one place.
Example porting layer for a8k-db is under: plat/marvell/a8k/a80x0/board/phy-porting-layer.h
If for some boards parameters are not defined (missing phy-porting-layer.h), the default values are used (drivers/marvell/comphy/phy-default-porting-layer.h) and the following compilation warning is show: "Using default comphy params - you may need to suit them to your board".
The common COMPHY driver code is extracted in order to be shared with future COMPHY driver for A3700 SoC platforms
Signed-off-by: Grzegorz Jaszczyk <jaz@semihalf.com> Signed-off-by: Igal Liberman <igall@marvell.com> Signed-off-by: Konstantin Porotchkin <kostap@marvell.com>
show more ...
|
| a51443fa | 18-Oct-2018 |
Soby Mathew <soby.mathew@arm.com> |
Merge pull request #1582 from ldts/rcar_gen3/upstream
rcar_gen3: initial support |
| 0059be2d | 18-Oct-2018 |
Soby Mathew <soby.mathew@arm.com> |
Merge pull request #1553 from glneo/dcache-late-disable
Allow D-Cache to remain on during core power-down |
| 97f12332 | 18-Oct-2018 |
Soby Mathew <soby.mathew@arm.com> |
Merge pull request #1629 from robertovargas-arm/hw-assisted-coherency-lock
Optimize bakery locks when HW_ASSISTED_COHERENCY is enabled |
| 1278f363 | 18-Oct-2018 |
Soby Mathew <soby.mathew@arm.com> |
Merge pull request #1631 from deepan02/deepak-arm/relocate-jump_if_cpu_midr
plat/arm: relocate the jump_if_cpu_midr macro. |