History log of /u-boot/arch/arm/mach-uniphier/Makefile
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 103c5f18 08-Aug-2021 Simon Glass <sjg@chromium.org>

mmc: Rename MMC_SUPPORT to MMC

Rename these options so that CONFIG_IS_ENABLED can be used with them.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
[trini: Fixup some incorrect renames]
Signed-off-by: Tom Rini <trini@konsulko.com>

# 2dbb6beb 30-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove unused uniphier_pin_init()

This function is unused since commit 862274913f8f ("bus:
uniphier-system-bus: move hardware init from board files").

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 57859503 10-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove NAND reset code

Now that commit 3e57f879eee6 ("mtd: nand: raw: denali: Assert reset
before deassert") added the reset assertion, this code in the board
file is unneeded.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7877c98 09-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove sbc/ directory

Now that this directory contains only uniphier_sbc_boot_is_swapped(),
move it to boot-device.c and delete the sbc/ directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# ce4e9ff4 14-Feb-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move NAND reset assertion to U-Boot proper from SPL

The comment /* deassert reset */ is wrong. It asserts the reset.

It no longer needs to stay in SPL. The NAND controller reset is
handled in the driver. So, this assert can be moved to the
board_init() of U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 34ded875 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: detect register base addresses run-time

Until the last SoC, the register addresses have been hard-coded because
they are always constant. For a planned new SoC, the register bases
will be completely changed. I insist on supporting multiple SoCs/boards
by a single defconfig (uniphier_v8_defconfig) since duplicating similar
defconfig files is a maintenance burden. The base addresses must be
fixed-up at run-time somehow.

Previously, the board init code identified the SoC by reading out the
SG_REVISION register. This is much easier than parsing DT.

You cannot do it any more because the base address of SG will be
changed. The SG_REVISION register exists to read out the SoC ID, but
you never know its address before identifying the SoC. Oh well.

So, the possible solution is to parse the DT, and find out the node
with "*-soc-glue" compatible string. Then, sg_base is set to the value
of the "reg" property. The sc_base is set up likewise.

It is worth noting a pit-fall. Having sc_base and sg_base in the global
scope will make the life easier, but the global variables are poorly
supported before the relocation. In fact, the .bss section overwraps
with DT. Allocating them in the .bss section would break DT. So, I gave
dummy initializers to assign them in the .data section.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# f7f39057 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: check DT to determine whether to initialize SBC

If CONFIG_MICRO_SUPPORT_CARD is enabled, U-Boot initialize SBC
(System Bus Controller), which may not be really necessary.

Check the "socionext,uniphier-system-bus" node in DT run-time.
If and only if it is found and its "status" property is okay,
initialize the SBC block.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 65fce763 19-Jul-2018 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: split ft_board_setup() out to a separate file

Prepare to add more fdt fixup code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# acf15001 26-Apr-2018 Lokesh Vutla <lokeshvutla@ti.com>

arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A

Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
armv7 folder. This led to a misconception of creating separate folders
for armv7m and armv7r. There is no reason to create separate folder for
other armv7 based architectures when it can co-exist with few Kconfig
symbols.

As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
can co exist in the same folder.

Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Suggested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>

# 83d290c5 06-May-2018 Tom Rini <trini@konsulko.com>

SPDX: Convert all of our single license tags to Linux Kernel style

When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from. So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry. Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents. There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>

# fed9c766 20-Apr-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: enable PSCI sysreset for uniphier_v8_defconfig

This configuration is supposed to be used with ARM Trusted Firmware,
so the SYSTEM_RESET is implemented in BL31. Invoke PSCI instead of
U-Boot's own reset code because we need to coordinate with SCP
(System Control Processor) for the system-level power management.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 784548ef 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rework spl_boot_device() and related code

The current implementation has ugly switch statements here and there,
and duplicates similar code. Rework it using table lookups for SoC
data and reduce code duplication.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 81c847bf 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move spl_boot_mode() to a separate file

The spl_boot_mode() is unrelated to the other code in this file.
Besides, this function is only called from common/spl/spl_mmc.c,
so it is reasonable to guard with CONFIG_SPL_MMC_SUPPORT.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e5957e8d 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move MMC code to a separate file

Currently, arch/arm/mach-uniphier/boot-mode/boot-mode.c is messed up
with unrelated code; there is no reason why the "mmcsetn" command
must be placed in this file.

Split out the MMC code into arch/arm/mach-uniphier/mmc-first-dev.c.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9c572684 27-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile board data only for SPL

Now U-Boot proper need not get the uniphier_boards array. Compile
it only for SPL.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e27d6c7d 21-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: simplify SoC ID get function

Currently, uniphier_get_soc_type() converts the SoC ID (this is
read from the revision register) to an enum symbol to use it for SoC
identification. Come to think of it, there is no need for the
conversion in the first place. Using the SoC ID from the register
as-is a straightforward way.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 26b09c02 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move SBC and Support Card init code to U-Boot proper

Initialize SBC and Support Card in U-Boot proper instead of SPL.

We may run different firmware (ex. ARM Trusted Firmware) before
U-Boot, and basic SoC initialization may be done there. In that
case, SPL may not be used.

The motivation for preparing SBC and Support Card in SPL was to use
LED for early debugging, but this is not mandatory to boot SoCs.
With this commit, LED will be unavailable in SPL, but we can use a
debug serial instead. So, this change will not be a big deal.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# a8e6300d 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor spl_init_board()

Merge init-*.c into a single file using a table of callbacks because
the initialization flow is almost common among SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8d6c99c6 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor MEMCONF init code

Currently, memconf-sld3.c and memconf-pxs2.c duplicate the code.

There are 3 patterns in terms of MEMCONF init:
- DRAM 2 channels: LD4, sLD8, Pro4, Pro5, LD11
- DRAM 3 channels: sLD3
- DRAM 3 channels (Ch2 is disable by MEMCONF[21]): Pxs2, LD20

All of them can be moved into a single file by a little more
refactoring.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fcc238ba 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: collect clock/PLL init code into a single directory

Now PLLs for DRAM controller are initialized in SPL, and the others
in U-Boot proper. Setting up all of them in a single directory will
be helpful when we want to share code between SPL and U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b78ffc53 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move XIRQ pin-mux settings of LD11/LD20

This is the last code in the mach-uniphier/pinctrl/ directory.
Push the remaining code out to delete the directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 68557ec3 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate System Bus pin-mux settings for LD11/LD20

Use the pin-mux data in the pinctrl drivers by directly calling
pinctrl_generic_set_state().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 5ac9dfbe 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate NAND pin-mux settings

The NAND subsystem has not supported the Driver Model yet, but the
NAND pin-mux data are already in the pinctrl drivers. Use them by
calling pinctrl_generic_set_state() directly.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b2916712 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge board init functions into board_init()

Currently, the UniPhier platform calls several init functions in the
following order:

[1] spl_board_init()
[2] board_early_init_f()
[3] board_init()
[4] board_early_init_r()
[5] board_late_init()

The serial console is not ready at the point of [2], so we want to
avoid using [2] from the view point of debuggability. Fortunately,
all of the initialization in [2] can be delayed until [3]. I see no
good reason to split into [3] and [4]. So, merge [2] through [4].

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 43a8cc90 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: use checkboard() instead of misc_init_f()

We can use checkboard() stub to show additional board information,
so misc_init_f() should not be used for this purpose.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9d0c2ceb 20-Apr-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: add PH1-LD20 SoC support

This is the first ARMv8 SoC from Socionext Inc.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d5cf3297 18-Mar-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: support Debug UART

For ARM32 architecture, CONFIG_DEBUG_LL is available for early
low-level debugging (and actually UniPhier 32bit SoCs use it), but
ARM64 architecture does not support it. Instead, CONFIG_DEBUG_UART
is available as an architecture-independent debug facility.

This commit supports it on all the UniPhier SoCs (including the new
ARMv8 SoCs), which is very useful for new SoC bringups.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fe5ea57b 26-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: prepare directory structure for ARMv8 SoC support

Before adding ARMv8 support, this commit refactors the directory
structure. Move ARMv7 specific files to arch/arm/mach-uniphier/arm32
to avoid a mess by mixture of ARMv7 and ARMv8 code. Also move the
"select CPU_V7" to the lower-level menu because we will have to
select ARM64 instead of CPU_V7 for ARMv8 SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 126f9bad 04-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: fix makefiles to build cmd_ddr(m)phy.c

The U-Boot proper building needs to descend arch/arm/mach-uniphier/dram
to build these commands.

Fixes: 93d92d46cd01 ("ARM: uniphier: add dump command for DDR Multi PHY registers")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 4b50369f 02-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: create early page table at run-time

UniPhier SoCs are not equipped with dedicated on-chip SRAM. Instead,
locked outer cache is used as RAM area during the early boot stage
where DRAM is not ready yet. This effectively means MMU must be
always enabled while we are in SPL.

Currently, the SPL image for UniPhier SoCs contains the page table
statically defined at compile time. It has been a burden because the
16KB page table occupies a quarter memory footprint of the 64KB SPL
image.

Finally, there is no more room to implement new features in SPL.
Setting aside the NOR boot mode, this issue can be solved by creating
the page table onto RAM at run time.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 042b28f4 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_pinmon.c to boot-mode subdirectory

This command shows the boot mode pins, so it would be more at home
in the boot-mode subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9ca66164 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_ddrphy.c to dram subdirectory

This command shows the register dump of the DDR PHY, so it would be
more at home in the dram subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 33886693 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge umc/ and ddrphy/ into a single directory

The UMC (Universal Memory Controller) and the DDR PHY block are
highly related to each other. It is better to have both code in the
same directory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 69947007 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile uniphier_get_board_param() for U-Boot proper

Compile this file for U-Boot proper as well as SPL, so that the
U-Boot proper can call uniphier_get_board_param().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 323d1f9d 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: allow to enable multiple SoCs

Before this commit, the Kconfig menu in mach-uniphier only allowed us
to choose one SoC to be compiled. Each SoC has its own defconfig file
for the build-test coverage. Consequently, some defconfig files are
duplicated with only the difference in CONFIG_DEFAULT_DEVICE_TREE and
CONFIG_{SOC_NAME}=y.

Now, most of board-specific parameters have been moved to device trees,
so it makes sense to include init code of multiple SoCs into a single
image as long as the SoCs have similar architecture. In fact, some
SoCs of UniPhier family are very similar:
- PH1-LD4 and PH1-sLD8
- PH1-LD6b and ProXstream2 (will be added in the upcoming commit)

This commit will be helpful to merge some defconfig files for better
maintainability.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e6eecca5 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: unify low-level debug init code

Move init code of low-level debug into a single file.
This is helpful to create an image that runs on multiple SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8497ccc4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rename CONFIG_MACH_* to CONFIG_ARCH_UNIPHIER_*

I want these prefixed with CONFIG_ARCH_UNIPHIER_ to clarify
they belong to UniPhier SoC family.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7728aa4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move CONFIG_SUPPORT_CARD_* macros to local file

It is no longer necessary to define CONFIG_SUPPORT_CARD_* globally.
Move them to a C file as local macros. Also, rename the C file.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9879842c 11-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: drop DCC micro support card support

Historically (for compatibility with very old platforms), two
different types of micro support cards have been used with the
UniPhier SoC development boards. It has been painful to maintain
both. Having one of them is enough.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>

# 3365b4eb 20-Jul-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add PH1-sLD3 SoC support

The init code for UMC (Unified Memory Controller) and PLL has not
been mainlined yet, but U-boot proper should work.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 62118b7b 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: optimize kicking secondary CPUs code

Currently, the secondary CPU(s) are kicked three times:
Boot ROM ---(kick)--> SPL ---(kick)--> U-boot ---(kick)--> Linux.
It makes the boot sequence very complicated.

This commit merges the first and the second kicks, so the secondary
CPU(s) can directly jump from SPL to Linux.
arch/arm/mach-uniphier/smp.S is no longer necessary.

Linux boot test passed.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# def3feb8 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add empty lowlevel_init to U-boot proper

To remove the ifdef conditional of CONFIG_SKIP_LOWLEVEL_INIT,
add late_lowlevel_init.S to U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 6cc21206 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: consolidate MEMCONF setting code

This code is duplicated in ph1-ld4/sg_init.c and ph1-pro4/sg_init.c.
Merge the same code into a new file, memconf.c.

The helper functions no longer have to be placed in the header file.
Also, move them into memconf.c.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 4c425570 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: move SoC sources to mach-uniphier

Move
arch/arm/cpu/armv7/uniphier/* -> arch/arm/mach-uniphier/*

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 2dbb6beb 30-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove unused uniphier_pin_init()

This function is unused since commit 862274913f8f ("bus:
uniphier-system-bus: move hardware init from board files").

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 57859503 10-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove NAND reset code

Now that commit 3e57f879eee6 ("mtd: nand: raw: denali: Assert reset
before deassert") added the reset assertion, this code in the board
file is unneeded.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7877c98 09-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove sbc/ directory

Now that this directory contains only uniphier_sbc_boot_is_swapped(),
move it to boot-device.c and delete the sbc/ directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# ce4e9ff4 14-Feb-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move NAND reset assertion to U-Boot proper from SPL

The comment /* deassert reset */ is wrong. It asserts the reset.

It no longer needs to stay in SPL. The NAND controller reset is
handled in the driver. So, this assert can be moved to the
board_init() of U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 34ded875 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: detect register base addresses run-time

Until the last SoC, the register addresses have been hard-coded because
they are always constant. For a planned new SoC, the register bases
will be completely changed. I insist on supporting multiple SoCs/boards
by a single defconfig (uniphier_v8_defconfig) since duplicating similar
defconfig files is a maintenance burden. The base addresses must be
fixed-up at run-time somehow.

Previously, the board init code identified the SoC by reading out the
SG_REVISION register. This is much easier than parsing DT.

You cannot do it any more because the base address of SG will be
changed. The SG_REVISION register exists to read out the SoC ID, but
you never know its address before identifying the SoC. Oh well.

So, the possible solution is to parse the DT, and find out the node
with "*-soc-glue" compatible string. Then, sg_base is set to the value
of the "reg" property. The sc_base is set up likewise.

It is worth noting a pit-fall. Having sc_base and sg_base in the global
scope will make the life easier, but the global variables are poorly
supported before the relocation. In fact, the .bss section overwraps
with DT. Allocating them in the .bss section would break DT. So, I gave
dummy initializers to assign them in the .data section.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# f7f39057 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: check DT to determine whether to initialize SBC

If CONFIG_MICRO_SUPPORT_CARD is enabled, U-Boot initialize SBC
(System Bus Controller), which may not be really necessary.

Check the "socionext,uniphier-system-bus" node in DT run-time.
If and only if it is found and its "status" property is okay,
initialize the SBC block.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 65fce763 19-Jul-2018 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: split ft_board_setup() out to a separate file

Prepare to add more fdt fixup code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# acf15001 26-Apr-2018 Lokesh Vutla <lokeshvutla@ti.com>

arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A

Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
armv7 folder. This led to a misconception of creating separate folders
for armv7m and armv7r. There is no reason to create separate folder for
other armv7 based architectures when it can co-exist with few Kconfig
symbols.

As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
can co exist in the same folder.

Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Suggested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>

# 83d290c5 06-May-2018 Tom Rini <trini@konsulko.com>

SPDX: Convert all of our single license tags to Linux Kernel style

When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from. So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry. Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents. There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>

# fed9c766 20-Apr-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: enable PSCI sysreset for uniphier_v8_defconfig

This configuration is supposed to be used with ARM Trusted Firmware,
so the SYSTEM_RESET is implemented in BL31. Invoke PSCI instead of
U-Boot's own reset code because we need to coordinate with SCP
(System Control Processor) for the system-level power management.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 784548ef 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rework spl_boot_device() and related code

The current implementation has ugly switch statements here and there,
and duplicates similar code. Rework it using table lookups for SoC
data and reduce code duplication.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 81c847bf 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move spl_boot_mode() to a separate file

The spl_boot_mode() is unrelated to the other code in this file.
Besides, this function is only called from common/spl/spl_mmc.c,
so it is reasonable to guard with CONFIG_SPL_MMC_SUPPORT.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e5957e8d 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move MMC code to a separate file

Currently, arch/arm/mach-uniphier/boot-mode/boot-mode.c is messed up
with unrelated code; there is no reason why the "mmcsetn" command
must be placed in this file.

Split out the MMC code into arch/arm/mach-uniphier/mmc-first-dev.c.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9c572684 27-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile board data only for SPL

Now U-Boot proper need not get the uniphier_boards array. Compile
it only for SPL.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e27d6c7d 21-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: simplify SoC ID get function

Currently, uniphier_get_soc_type() converts the SoC ID (this is
read from the revision register) to an enum symbol to use it for SoC
identification. Come to think of it, there is no need for the
conversion in the first place. Using the SoC ID from the register
as-is a straightforward way.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 26b09c02 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move SBC and Support Card init code to U-Boot proper

Initialize SBC and Support Card in U-Boot proper instead of SPL.

We may run different firmware (ex. ARM Trusted Firmware) before
U-Boot, and basic SoC initialization may be done there. In that
case, SPL may not be used.

The motivation for preparing SBC and Support Card in SPL was to use
LED for early debugging, but this is not mandatory to boot SoCs.
With this commit, LED will be unavailable in SPL, but we can use a
debug serial instead. So, this change will not be a big deal.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# a8e6300d 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor spl_init_board()

Merge init-*.c into a single file using a table of callbacks because
the initialization flow is almost common among SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8d6c99c6 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor MEMCONF init code

Currently, memconf-sld3.c and memconf-pxs2.c duplicate the code.

There are 3 patterns in terms of MEMCONF init:
- DRAM 2 channels: LD4, sLD8, Pro4, Pro5, LD11
- DRAM 3 channels: sLD3
- DRAM 3 channels (Ch2 is disable by MEMCONF[21]): Pxs2, LD20

All of them can be moved into a single file by a little more
refactoring.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fcc238ba 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: collect clock/PLL init code into a single directory

Now PLLs for DRAM controller are initialized in SPL, and the others
in U-Boot proper. Setting up all of them in a single directory will
be helpful when we want to share code between SPL and U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b78ffc53 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move XIRQ pin-mux settings of LD11/LD20

This is the last code in the mach-uniphier/pinctrl/ directory.
Push the remaining code out to delete the directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 68557ec3 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate System Bus pin-mux settings for LD11/LD20

Use the pin-mux data in the pinctrl drivers by directly calling
pinctrl_generic_set_state().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 5ac9dfbe 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate NAND pin-mux settings

The NAND subsystem has not supported the Driver Model yet, but the
NAND pin-mux data are already in the pinctrl drivers. Use them by
calling pinctrl_generic_set_state() directly.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b2916712 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge board init functions into board_init()

Currently, the UniPhier platform calls several init functions in the
following order:

[1] spl_board_init()
[2] board_early_init_f()
[3] board_init()
[4] board_early_init_r()
[5] board_late_init()

The serial console is not ready at the point of [2], so we want to
avoid using [2] from the view point of debuggability. Fortunately,
all of the initialization in [2] can be delayed until [3]. I see no
good reason to split into [3] and [4]. So, merge [2] through [4].

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 43a8cc90 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: use checkboard() instead of misc_init_f()

We can use checkboard() stub to show additional board information,
so misc_init_f() should not be used for this purpose.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9d0c2ceb 20-Apr-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: add PH1-LD20 SoC support

This is the first ARMv8 SoC from Socionext Inc.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d5cf3297 18-Mar-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: support Debug UART

For ARM32 architecture, CONFIG_DEBUG_LL is available for early
low-level debugging (and actually UniPhier 32bit SoCs use it), but
ARM64 architecture does not support it. Instead, CONFIG_DEBUG_UART
is available as an architecture-independent debug facility.

This commit supports it on all the UniPhier SoCs (including the new
ARMv8 SoCs), which is very useful for new SoC bringups.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fe5ea57b 26-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: prepare directory structure for ARMv8 SoC support

Before adding ARMv8 support, this commit refactors the directory
structure. Move ARMv7 specific files to arch/arm/mach-uniphier/arm32
to avoid a mess by mixture of ARMv7 and ARMv8 code. Also move the
"select CPU_V7" to the lower-level menu because we will have to
select ARM64 instead of CPU_V7 for ARMv8 SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 126f9bad 04-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: fix makefiles to build cmd_ddr(m)phy.c

The U-Boot proper building needs to descend arch/arm/mach-uniphier/dram
to build these commands.

Fixes: 93d92d46cd01 ("ARM: uniphier: add dump command for DDR Multi PHY registers")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 4b50369f 02-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: create early page table at run-time

UniPhier SoCs are not equipped with dedicated on-chip SRAM. Instead,
locked outer cache is used as RAM area during the early boot stage
where DRAM is not ready yet. This effectively means MMU must be
always enabled while we are in SPL.

Currently, the SPL image for UniPhier SoCs contains the page table
statically defined at compile time. It has been a burden because the
16KB page table occupies a quarter memory footprint of the 64KB SPL
image.

Finally, there is no more room to implement new features in SPL.
Setting aside the NOR boot mode, this issue can be solved by creating
the page table onto RAM at run time.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 042b28f4 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_pinmon.c to boot-mode subdirectory

This command shows the boot mode pins, so it would be more at home
in the boot-mode subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9ca66164 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_ddrphy.c to dram subdirectory

This command shows the register dump of the DDR PHY, so it would be
more at home in the dram subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 33886693 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge umc/ and ddrphy/ into a single directory

The UMC (Universal Memory Controller) and the DDR PHY block are
highly related to each other. It is better to have both code in the
same directory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 69947007 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile uniphier_get_board_param() for U-Boot proper

Compile this file for U-Boot proper as well as SPL, so that the
U-Boot proper can call uniphier_get_board_param().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 323d1f9d 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: allow to enable multiple SoCs

Before this commit, the Kconfig menu in mach-uniphier only allowed us
to choose one SoC to be compiled. Each SoC has its own defconfig file
for the build-test coverage. Consequently, some defconfig files are
duplicated with only the difference in CONFIG_DEFAULT_DEVICE_TREE and
CONFIG_{SOC_NAME}=y.

Now, most of board-specific parameters have been moved to device trees,
so it makes sense to include init code of multiple SoCs into a single
image as long as the SoCs have similar architecture. In fact, some
SoCs of UniPhier family are very similar:
- PH1-LD4 and PH1-sLD8
- PH1-LD6b and ProXstream2 (will be added in the upcoming commit)

This commit will be helpful to merge some defconfig files for better
maintainability.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e6eecca5 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: unify low-level debug init code

Move init code of low-level debug into a single file.
This is helpful to create an image that runs on multiple SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8497ccc4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rename CONFIG_MACH_* to CONFIG_ARCH_UNIPHIER_*

I want these prefixed with CONFIG_ARCH_UNIPHIER_ to clarify
they belong to UniPhier SoC family.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7728aa4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move CONFIG_SUPPORT_CARD_* macros to local file

It is no longer necessary to define CONFIG_SUPPORT_CARD_* globally.
Move them to a C file as local macros. Also, rename the C file.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9879842c 11-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: drop DCC micro support card support

Historically (for compatibility with very old platforms), two
different types of micro support cards have been used with the
UniPhier SoC development boards. It has been painful to maintain
both. Having one of them is enough.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>

# 3365b4eb 20-Jul-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add PH1-sLD3 SoC support

The init code for UMC (Unified Memory Controller) and PLL has not
been mainlined yet, but U-boot proper should work.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 62118b7b 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: optimize kicking secondary CPUs code

Currently, the secondary CPU(s) are kicked three times:
Boot ROM ---(kick)--> SPL ---(kick)--> U-boot ---(kick)--> Linux.
It makes the boot sequence very complicated.

This commit merges the first and the second kicks, so the secondary
CPU(s) can directly jump from SPL to Linux.
arch/arm/mach-uniphier/smp.S is no longer necessary.

Linux boot test passed.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# def3feb8 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add empty lowlevel_init to U-boot proper

To remove the ifdef conditional of CONFIG_SKIP_LOWLEVEL_INIT,
add late_lowlevel_init.S to U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 6cc21206 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: consolidate MEMCONF setting code

This code is duplicated in ph1-ld4/sg_init.c and ph1-pro4/sg_init.c.
Merge the same code into a new file, memconf.c.

The helper functions no longer have to be placed in the header file.
Also, move them into memconf.c.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 4c425570 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: move SoC sources to mach-uniphier

Move
arch/arm/cpu/armv7/uniphier/* -> arch/arm/mach-uniphier/*

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 57859503 10-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove NAND reset code

Now that commit 3e57f879eee6 ("mtd: nand: raw: denali: Assert reset
before deassert") added the reset assertion, this code in the board
file is unneeded.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7877c98 09-Jul-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: remove sbc/ directory

Now that this directory contains only uniphier_sbc_boot_is_swapped(),
move it to boot-device.c and delete the sbc/ directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# ce4e9ff4 14-Feb-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move NAND reset assertion to U-Boot proper from SPL

The comment /* deassert reset */ is wrong. It asserts the reset.

It no longer needs to stay in SPL. The NAND controller reset is
handled in the driver. So, this assert can be moved to the
board_init() of U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 34ded875 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: detect register base addresses run-time

Until the last SoC, the register addresses have been hard-coded because
they are always constant. For a planned new SoC, the register bases
will be completely changed. I insist on supporting multiple SoCs/boards
by a single defconfig (uniphier_v8_defconfig) since duplicating similar
defconfig files is a maintenance burden. The base addresses must be
fixed-up at run-time somehow.

Previously, the board init code identified the SoC by reading out the
SG_REVISION register. This is much easier than parsing DT.

You cannot do it any more because the base address of SG will be
changed. The SG_REVISION register exists to read out the SoC ID, but
you never know its address before identifying the SoC. Oh well.

So, the possible solution is to parse the DT, and find out the node
with "*-soc-glue" compatible string. Then, sg_base is set to the value
of the "reg" property. The sc_base is set up likewise.

It is worth noting a pit-fall. Having sc_base and sg_base in the global
scope will make the life easier, but the global variables are poorly
supported before the relocation. In fact, the .bss section overwraps
with DT. Allocating them in the .bss section would break DT. So, I gave
dummy initializers to assign them in the .data section.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# f7f39057 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: check DT to determine whether to initialize SBC

If CONFIG_MICRO_SUPPORT_CARD is enabled, U-Boot initialize SBC
(System Bus Controller), which may not be really necessary.

Check the "socionext,uniphier-system-bus" node in DT run-time.
If and only if it is found and its "status" property is okay,
initialize the SBC block.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 65fce763 19-Jul-2018 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: split ft_board_setup() out to a separate file

Prepare to add more fdt fixup code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# acf15001 26-Apr-2018 Lokesh Vutla <lokeshvutla@ti.com>

arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A

Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
armv7 folder. This led to a misconception of creating separate folders
for armv7m and armv7r. There is no reason to create separate folder for
other armv7 based architectures when it can co-exist with few Kconfig
symbols.

As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
can co exist in the same folder.

Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Suggested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>

# 83d290c5 06-May-2018 Tom Rini <trini@konsulko.com>

SPDX: Convert all of our single license tags to Linux Kernel style

When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from. So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry. Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents. There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>

# fed9c766 20-Apr-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: enable PSCI sysreset for uniphier_v8_defconfig

This configuration is supposed to be used with ARM Trusted Firmware,
so the SYSTEM_RESET is implemented in BL31. Invoke PSCI instead of
U-Boot's own reset code because we need to coordinate with SCP
(System Control Processor) for the system-level power management.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 784548ef 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rework spl_boot_device() and related code

The current implementation has ugly switch statements here and there,
and duplicates similar code. Rework it using table lookups for SoC
data and reduce code duplication.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 81c847bf 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move spl_boot_mode() to a separate file

The spl_boot_mode() is unrelated to the other code in this file.
Besides, this function is only called from common/spl/spl_mmc.c,
so it is reasonable to guard with CONFIG_SPL_MMC_SUPPORT.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e5957e8d 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move MMC code to a separate file

Currently, arch/arm/mach-uniphier/boot-mode/boot-mode.c is messed up
with unrelated code; there is no reason why the "mmcsetn" command
must be placed in this file.

Split out the MMC code into arch/arm/mach-uniphier/mmc-first-dev.c.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9c572684 27-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile board data only for SPL

Now U-Boot proper need not get the uniphier_boards array. Compile
it only for SPL.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e27d6c7d 21-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: simplify SoC ID get function

Currently, uniphier_get_soc_type() converts the SoC ID (this is
read from the revision register) to an enum symbol to use it for SoC
identification. Come to think of it, there is no need for the
conversion in the first place. Using the SoC ID from the register
as-is a straightforward way.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 26b09c02 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move SBC and Support Card init code to U-Boot proper

Initialize SBC and Support Card in U-Boot proper instead of SPL.

We may run different firmware (ex. ARM Trusted Firmware) before
U-Boot, and basic SoC initialization may be done there. In that
case, SPL may not be used.

The motivation for preparing SBC and Support Card in SPL was to use
LED for early debugging, but this is not mandatory to boot SoCs.
With this commit, LED will be unavailable in SPL, but we can use a
debug serial instead. So, this change will not be a big deal.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# a8e6300d 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor spl_init_board()

Merge init-*.c into a single file using a table of callbacks because
the initialization flow is almost common among SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8d6c99c6 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor MEMCONF init code

Currently, memconf-sld3.c and memconf-pxs2.c duplicate the code.

There are 3 patterns in terms of MEMCONF init:
- DRAM 2 channels: LD4, sLD8, Pro4, Pro5, LD11
- DRAM 3 channels: sLD3
- DRAM 3 channels (Ch2 is disable by MEMCONF[21]): Pxs2, LD20

All of them can be moved into a single file by a little more
refactoring.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fcc238ba 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: collect clock/PLL init code into a single directory

Now PLLs for DRAM controller are initialized in SPL, and the others
in U-Boot proper. Setting up all of them in a single directory will
be helpful when we want to share code between SPL and U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b78ffc53 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move XIRQ pin-mux settings of LD11/LD20

This is the last code in the mach-uniphier/pinctrl/ directory.
Push the remaining code out to delete the directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 68557ec3 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate System Bus pin-mux settings for LD11/LD20

Use the pin-mux data in the pinctrl drivers by directly calling
pinctrl_generic_set_state().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 5ac9dfbe 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate NAND pin-mux settings

The NAND subsystem has not supported the Driver Model yet, but the
NAND pin-mux data are already in the pinctrl drivers. Use them by
calling pinctrl_generic_set_state() directly.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b2916712 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge board init functions into board_init()

Currently, the UniPhier platform calls several init functions in the
following order:

[1] spl_board_init()
[2] board_early_init_f()
[3] board_init()
[4] board_early_init_r()
[5] board_late_init()

The serial console is not ready at the point of [2], so we want to
avoid using [2] from the view point of debuggability. Fortunately,
all of the initialization in [2] can be delayed until [3]. I see no
good reason to split into [3] and [4]. So, merge [2] through [4].

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 43a8cc90 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: use checkboard() instead of misc_init_f()

We can use checkboard() stub to show additional board information,
so misc_init_f() should not be used for this purpose.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9d0c2ceb 20-Apr-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: add PH1-LD20 SoC support

This is the first ARMv8 SoC from Socionext Inc.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d5cf3297 18-Mar-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: support Debug UART

For ARM32 architecture, CONFIG_DEBUG_LL is available for early
low-level debugging (and actually UniPhier 32bit SoCs use it), but
ARM64 architecture does not support it. Instead, CONFIG_DEBUG_UART
is available as an architecture-independent debug facility.

This commit supports it on all the UniPhier SoCs (including the new
ARMv8 SoCs), which is very useful for new SoC bringups.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fe5ea57b 26-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: prepare directory structure for ARMv8 SoC support

Before adding ARMv8 support, this commit refactors the directory
structure. Move ARMv7 specific files to arch/arm/mach-uniphier/arm32
to avoid a mess by mixture of ARMv7 and ARMv8 code. Also move the
"select CPU_V7" to the lower-level menu because we will have to
select ARM64 instead of CPU_V7 for ARMv8 SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 126f9bad 04-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: fix makefiles to build cmd_ddr(m)phy.c

The U-Boot proper building needs to descend arch/arm/mach-uniphier/dram
to build these commands.

Fixes: 93d92d46cd01 ("ARM: uniphier: add dump command for DDR Multi PHY registers")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 4b50369f 02-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: create early page table at run-time

UniPhier SoCs are not equipped with dedicated on-chip SRAM. Instead,
locked outer cache is used as RAM area during the early boot stage
where DRAM is not ready yet. This effectively means MMU must be
always enabled while we are in SPL.

Currently, the SPL image for UniPhier SoCs contains the page table
statically defined at compile time. It has been a burden because the
16KB page table occupies a quarter memory footprint of the 64KB SPL
image.

Finally, there is no more room to implement new features in SPL.
Setting aside the NOR boot mode, this issue can be solved by creating
the page table onto RAM at run time.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 042b28f4 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_pinmon.c to boot-mode subdirectory

This command shows the boot mode pins, so it would be more at home
in the boot-mode subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9ca66164 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_ddrphy.c to dram subdirectory

This command shows the register dump of the DDR PHY, so it would be
more at home in the dram subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 33886693 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge umc/ and ddrphy/ into a single directory

The UMC (Universal Memory Controller) and the DDR PHY block are
highly related to each other. It is better to have both code in the
same directory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 69947007 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile uniphier_get_board_param() for U-Boot proper

Compile this file for U-Boot proper as well as SPL, so that the
U-Boot proper can call uniphier_get_board_param().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 323d1f9d 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: allow to enable multiple SoCs

Before this commit, the Kconfig menu in mach-uniphier only allowed us
to choose one SoC to be compiled. Each SoC has its own defconfig file
for the build-test coverage. Consequently, some defconfig files are
duplicated with only the difference in CONFIG_DEFAULT_DEVICE_TREE and
CONFIG_{SOC_NAME}=y.

Now, most of board-specific parameters have been moved to device trees,
so it makes sense to include init code of multiple SoCs into a single
image as long as the SoCs have similar architecture. In fact, some
SoCs of UniPhier family are very similar:
- PH1-LD4 and PH1-sLD8
- PH1-LD6b and ProXstream2 (will be added in the upcoming commit)

This commit will be helpful to merge some defconfig files for better
maintainability.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e6eecca5 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: unify low-level debug init code

Move init code of low-level debug into a single file.
This is helpful to create an image that runs on multiple SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8497ccc4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rename CONFIG_MACH_* to CONFIG_ARCH_UNIPHIER_*

I want these prefixed with CONFIG_ARCH_UNIPHIER_ to clarify
they belong to UniPhier SoC family.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7728aa4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move CONFIG_SUPPORT_CARD_* macros to local file

It is no longer necessary to define CONFIG_SUPPORT_CARD_* globally.
Move them to a C file as local macros. Also, rename the C file.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9879842c 11-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: drop DCC micro support card support

Historically (for compatibility with very old platforms), two
different types of micro support cards have been used with the
UniPhier SoC development boards. It has been painful to maintain
both. Having one of them is enough.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>

# 3365b4eb 20-Jul-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add PH1-sLD3 SoC support

The init code for UMC (Unified Memory Controller) and PLL has not
been mainlined yet, but U-boot proper should work.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 62118b7b 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: optimize kicking secondary CPUs code

Currently, the secondary CPU(s) are kicked three times:
Boot ROM ---(kick)--> SPL ---(kick)--> U-boot ---(kick)--> Linux.
It makes the boot sequence very complicated.

This commit merges the first and the second kicks, so the secondary
CPU(s) can directly jump from SPL to Linux.
arch/arm/mach-uniphier/smp.S is no longer necessary.

Linux boot test passed.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# def3feb8 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add empty lowlevel_init to U-boot proper

To remove the ifdef conditional of CONFIG_SKIP_LOWLEVEL_INIT,
add late_lowlevel_init.S to U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 6cc21206 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: consolidate MEMCONF setting code

This code is duplicated in ph1-ld4/sg_init.c and ph1-pro4/sg_init.c.
Merge the same code into a new file, memconf.c.

The helper functions no longer have to be placed in the header file.
Also, move them into memconf.c.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 4c425570 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: move SoC sources to mach-uniphier

Move
arch/arm/cpu/armv7/uniphier/* -> arch/arm/mach-uniphier/*

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# ce4e9ff4 14-Feb-2020 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move NAND reset assertion to U-Boot proper from SPL

The comment /* deassert reset */ is wrong. It asserts the reset.

It no longer needs to stay in SPL. The NAND controller reset is
handled in the driver. So, this assert can be moved to the
board_init() of U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 34ded875 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: detect register base addresses run-time

Until the last SoC, the register addresses have been hard-coded because
they are always constant. For a planned new SoC, the register bases
will be completely changed. I insist on supporting multiple SoCs/boards
by a single defconfig (uniphier_v8_defconfig) since duplicating similar
defconfig files is a maintenance burden. The base addresses must be
fixed-up at run-time somehow.

Previously, the board init code identified the SoC by reading out the
SG_REVISION register. This is much easier than parsing DT.

You cannot do it any more because the base address of SG will be
changed. The SG_REVISION register exists to read out the SoC ID, but
you never know its address before identifying the SoC. Oh well.

So, the possible solution is to parse the DT, and find out the node
with "*-soc-glue" compatible string. Then, sg_base is set to the value
of the "reg" property. The sc_base is set up likewise.

It is worth noting a pit-fall. Having sc_base and sg_base in the global
scope will make the life easier, but the global variables are poorly
supported before the relocation. In fact, the .bss section overwraps
with DT. Allocating them in the .bss section would break DT. So, I gave
dummy initializers to assign them in the .data section.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# f7f39057 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: check DT to determine whether to initialize SBC

If CONFIG_MICRO_SUPPORT_CARD is enabled, U-Boot initialize SBC
(System Bus Controller), which may not be really necessary.

Check the "socionext,uniphier-system-bus" node in DT run-time.
If and only if it is found and its "status" property is okay,
initialize the SBC block.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 65fce763 19-Jul-2018 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: split ft_board_setup() out to a separate file

Prepare to add more fdt fixup code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# acf15001 26-Apr-2018 Lokesh Vutla <lokeshvutla@ti.com>

arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A

Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
armv7 folder. This led to a misconception of creating separate folders
for armv7m and armv7r. There is no reason to create separate folder for
other armv7 based architectures when it can co-exist with few Kconfig
symbols.

As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
can co exist in the same folder.

Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Suggested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>

# 83d290c5 06-May-2018 Tom Rini <trini@konsulko.com>

SPDX: Convert all of our single license tags to Linux Kernel style

When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from. So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry. Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents. There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>

# fed9c766 20-Apr-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: enable PSCI sysreset for uniphier_v8_defconfig

This configuration is supposed to be used with ARM Trusted Firmware,
so the SYSTEM_RESET is implemented in BL31. Invoke PSCI instead of
U-Boot's own reset code because we need to coordinate with SCP
(System Control Processor) for the system-level power management.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 784548ef 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rework spl_boot_device() and related code

The current implementation has ugly switch statements here and there,
and duplicates similar code. Rework it using table lookups for SoC
data and reduce code duplication.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 81c847bf 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move spl_boot_mode() to a separate file

The spl_boot_mode() is unrelated to the other code in this file.
Besides, this function is only called from common/spl/spl_mmc.c,
so it is reasonable to guard with CONFIG_SPL_MMC_SUPPORT.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e5957e8d 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move MMC code to a separate file

Currently, arch/arm/mach-uniphier/boot-mode/boot-mode.c is messed up
with unrelated code; there is no reason why the "mmcsetn" command
must be placed in this file.

Split out the MMC code into arch/arm/mach-uniphier/mmc-first-dev.c.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9c572684 27-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile board data only for SPL

Now U-Boot proper need not get the uniphier_boards array. Compile
it only for SPL.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e27d6c7d 21-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: simplify SoC ID get function

Currently, uniphier_get_soc_type() converts the SoC ID (this is
read from the revision register) to an enum symbol to use it for SoC
identification. Come to think of it, there is no need for the
conversion in the first place. Using the SoC ID from the register
as-is a straightforward way.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 26b09c02 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move SBC and Support Card init code to U-Boot proper

Initialize SBC and Support Card in U-Boot proper instead of SPL.

We may run different firmware (ex. ARM Trusted Firmware) before
U-Boot, and basic SoC initialization may be done there. In that
case, SPL may not be used.

The motivation for preparing SBC and Support Card in SPL was to use
LED for early debugging, but this is not mandatory to boot SoCs.
With this commit, LED will be unavailable in SPL, but we can use a
debug serial instead. So, this change will not be a big deal.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# a8e6300d 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor spl_init_board()

Merge init-*.c into a single file using a table of callbacks because
the initialization flow is almost common among SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8d6c99c6 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor MEMCONF init code

Currently, memconf-sld3.c and memconf-pxs2.c duplicate the code.

There are 3 patterns in terms of MEMCONF init:
- DRAM 2 channels: LD4, sLD8, Pro4, Pro5, LD11
- DRAM 3 channels: sLD3
- DRAM 3 channels (Ch2 is disable by MEMCONF[21]): Pxs2, LD20

All of them can be moved into a single file by a little more
refactoring.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fcc238ba 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: collect clock/PLL init code into a single directory

Now PLLs for DRAM controller are initialized in SPL, and the others
in U-Boot proper. Setting up all of them in a single directory will
be helpful when we want to share code between SPL and U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b78ffc53 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move XIRQ pin-mux settings of LD11/LD20

This is the last code in the mach-uniphier/pinctrl/ directory.
Push the remaining code out to delete the directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 68557ec3 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate System Bus pin-mux settings for LD11/LD20

Use the pin-mux data in the pinctrl drivers by directly calling
pinctrl_generic_set_state().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 5ac9dfbe 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate NAND pin-mux settings

The NAND subsystem has not supported the Driver Model yet, but the
NAND pin-mux data are already in the pinctrl drivers. Use them by
calling pinctrl_generic_set_state() directly.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b2916712 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge board init functions into board_init()

Currently, the UniPhier platform calls several init functions in the
following order:

[1] spl_board_init()
[2] board_early_init_f()
[3] board_init()
[4] board_early_init_r()
[5] board_late_init()

The serial console is not ready at the point of [2], so we want to
avoid using [2] from the view point of debuggability. Fortunately,
all of the initialization in [2] can be delayed until [3]. I see no
good reason to split into [3] and [4]. So, merge [2] through [4].

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 43a8cc90 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: use checkboard() instead of misc_init_f()

We can use checkboard() stub to show additional board information,
so misc_init_f() should not be used for this purpose.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9d0c2ceb 20-Apr-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: add PH1-LD20 SoC support

This is the first ARMv8 SoC from Socionext Inc.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d5cf3297 18-Mar-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: support Debug UART

For ARM32 architecture, CONFIG_DEBUG_LL is available for early
low-level debugging (and actually UniPhier 32bit SoCs use it), but
ARM64 architecture does not support it. Instead, CONFIG_DEBUG_UART
is available as an architecture-independent debug facility.

This commit supports it on all the UniPhier SoCs (including the new
ARMv8 SoCs), which is very useful for new SoC bringups.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fe5ea57b 26-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: prepare directory structure for ARMv8 SoC support

Before adding ARMv8 support, this commit refactors the directory
structure. Move ARMv7 specific files to arch/arm/mach-uniphier/arm32
to avoid a mess by mixture of ARMv7 and ARMv8 code. Also move the
"select CPU_V7" to the lower-level menu because we will have to
select ARM64 instead of CPU_V7 for ARMv8 SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 126f9bad 04-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: fix makefiles to build cmd_ddr(m)phy.c

The U-Boot proper building needs to descend arch/arm/mach-uniphier/dram
to build these commands.

Fixes: 93d92d46cd01 ("ARM: uniphier: add dump command for DDR Multi PHY registers")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 4b50369f 02-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: create early page table at run-time

UniPhier SoCs are not equipped with dedicated on-chip SRAM. Instead,
locked outer cache is used as RAM area during the early boot stage
where DRAM is not ready yet. This effectively means MMU must be
always enabled while we are in SPL.

Currently, the SPL image for UniPhier SoCs contains the page table
statically defined at compile time. It has been a burden because the
16KB page table occupies a quarter memory footprint of the 64KB SPL
image.

Finally, there is no more room to implement new features in SPL.
Setting aside the NOR boot mode, this issue can be solved by creating
the page table onto RAM at run time.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 042b28f4 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_pinmon.c to boot-mode subdirectory

This command shows the boot mode pins, so it would be more at home
in the boot-mode subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9ca66164 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_ddrphy.c to dram subdirectory

This command shows the register dump of the DDR PHY, so it would be
more at home in the dram subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 33886693 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge umc/ and ddrphy/ into a single directory

The UMC (Universal Memory Controller) and the DDR PHY block are
highly related to each other. It is better to have both code in the
same directory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 69947007 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile uniphier_get_board_param() for U-Boot proper

Compile this file for U-Boot proper as well as SPL, so that the
U-Boot proper can call uniphier_get_board_param().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 323d1f9d 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: allow to enable multiple SoCs

Before this commit, the Kconfig menu in mach-uniphier only allowed us
to choose one SoC to be compiled. Each SoC has its own defconfig file
for the build-test coverage. Consequently, some defconfig files are
duplicated with only the difference in CONFIG_DEFAULT_DEVICE_TREE and
CONFIG_{SOC_NAME}=y.

Now, most of board-specific parameters have been moved to device trees,
so it makes sense to include init code of multiple SoCs into a single
image as long as the SoCs have similar architecture. In fact, some
SoCs of UniPhier family are very similar:
- PH1-LD4 and PH1-sLD8
- PH1-LD6b and ProXstream2 (will be added in the upcoming commit)

This commit will be helpful to merge some defconfig files for better
maintainability.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e6eecca5 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: unify low-level debug init code

Move init code of low-level debug into a single file.
This is helpful to create an image that runs on multiple SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8497ccc4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rename CONFIG_MACH_* to CONFIG_ARCH_UNIPHIER_*

I want these prefixed with CONFIG_ARCH_UNIPHIER_ to clarify
they belong to UniPhier SoC family.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7728aa4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move CONFIG_SUPPORT_CARD_* macros to local file

It is no longer necessary to define CONFIG_SUPPORT_CARD_* globally.
Move them to a C file as local macros. Also, rename the C file.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9879842c 11-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: drop DCC micro support card support

Historically (for compatibility with very old platforms), two
different types of micro support cards have been used with the
UniPhier SoC development boards. It has been painful to maintain
both. Having one of them is enough.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>

# 3365b4eb 20-Jul-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add PH1-sLD3 SoC support

The init code for UMC (Unified Memory Controller) and PLL has not
been mainlined yet, but U-boot proper should work.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 62118b7b 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: optimize kicking secondary CPUs code

Currently, the secondary CPU(s) are kicked three times:
Boot ROM ---(kick)--> SPL ---(kick)--> U-boot ---(kick)--> Linux.
It makes the boot sequence very complicated.

This commit merges the first and the second kicks, so the secondary
CPU(s) can directly jump from SPL to Linux.
arch/arm/mach-uniphier/smp.S is no longer necessary.

Linux boot test passed.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# def3feb8 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add empty lowlevel_init to U-boot proper

To remove the ifdef conditional of CONFIG_SKIP_LOWLEVEL_INIT,
add late_lowlevel_init.S to U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 6cc21206 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: consolidate MEMCONF setting code

This code is duplicated in ph1-ld4/sg_init.c and ph1-pro4/sg_init.c.
Merge the same code into a new file, memconf.c.

The helper functions no longer have to be placed in the header file.
Also, move them into memconf.c.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 4c425570 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: move SoC sources to mach-uniphier

Move
arch/arm/cpu/armv7/uniphier/* -> arch/arm/mach-uniphier/*

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 34ded875 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: detect register base addresses run-time

Until the last SoC, the register addresses have been hard-coded because
they are always constant. For a planned new SoC, the register bases
will be completely changed. I insist on supporting multiple SoCs/boards
by a single defconfig (uniphier_v8_defconfig) since duplicating similar
defconfig files is a maintenance burden. The base addresses must be
fixed-up at run-time somehow.

Previously, the board init code identified the SoC by reading out the
SG_REVISION register. This is much easier than parsing DT.

You cannot do it any more because the base address of SG will be
changed. The SG_REVISION register exists to read out the SoC ID, but
you never know its address before identifying the SoC. Oh well.

So, the possible solution is to parse the DT, and find out the node
with "*-soc-glue" compatible string. Then, sg_base is set to the value
of the "reg" property. The sc_base is set up likewise.

It is worth noting a pit-fall. Having sc_base and sg_base in the global
scope will make the life easier, but the global variables are poorly
supported before the relocation. In fact, the .bss section overwraps
with DT. Allocating them in the .bss section would break DT. So, I gave
dummy initializers to assign them in the .data section.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# f7f39057 10-Jul-2019 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: check DT to determine whether to initialize SBC

If CONFIG_MICRO_SUPPORT_CARD is enabled, U-Boot initialize SBC
(System Bus Controller), which may not be really necessary.

Check the "socionext,uniphier-system-bus" node in DT run-time.
If and only if it is found and its "status" property is okay,
initialize the SBC block.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 65fce763 19-Jul-2018 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: split ft_board_setup() out to a separate file

Prepare to add more fdt fixup code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# acf15001 26-Apr-2018 Lokesh Vutla <lokeshvutla@ti.com>

arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A

Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
armv7 folder. This led to a misconception of creating separate folders
for armv7m and armv7r. There is no reason to create separate folder for
other armv7 based architectures when it can co-exist with few Kconfig
symbols.

As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
can co exist in the same folder.

Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Suggested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>

# 83d290c5 06-May-2018 Tom Rini <trini@konsulko.com>

SPDX: Convert all of our single license tags to Linux Kernel style

When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from. So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry. Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents. There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>

# fed9c766 20-Apr-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: enable PSCI sysreset for uniphier_v8_defconfig

This configuration is supposed to be used with ARM Trusted Firmware,
so the SYSTEM_RESET is implemented in BL31. Invoke PSCI instead of
U-Boot's own reset code because we need to coordinate with SCP
(System Control Processor) for the system-level power management.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 784548ef 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rework spl_boot_device() and related code

The current implementation has ugly switch statements here and there,
and duplicates similar code. Rework it using table lookups for SoC
data and reduce code duplication.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 81c847bf 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move spl_boot_mode() to a separate file

The spl_boot_mode() is unrelated to the other code in this file.
Besides, this function is only called from common/spl/spl_mmc.c,
so it is reasonable to guard with CONFIG_SPL_MMC_SUPPORT.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e5957e8d 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move MMC code to a separate file

Currently, arch/arm/mach-uniphier/boot-mode/boot-mode.c is messed up
with unrelated code; there is no reason why the "mmcsetn" command
must be placed in this file.

Split out the MMC code into arch/arm/mach-uniphier/mmc-first-dev.c.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9c572684 27-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile board data only for SPL

Now U-Boot proper need not get the uniphier_boards array. Compile
it only for SPL.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e27d6c7d 21-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: simplify SoC ID get function

Currently, uniphier_get_soc_type() converts the SoC ID (this is
read from the revision register) to an enum symbol to use it for SoC
identification. Come to think of it, there is no need for the
conversion in the first place. Using the SoC ID from the register
as-is a straightforward way.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 26b09c02 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move SBC and Support Card init code to U-Boot proper

Initialize SBC and Support Card in U-Boot proper instead of SPL.

We may run different firmware (ex. ARM Trusted Firmware) before
U-Boot, and basic SoC initialization may be done there. In that
case, SPL may not be used.

The motivation for preparing SBC and Support Card in SPL was to use
LED for early debugging, but this is not mandatory to boot SoCs.
With this commit, LED will be unavailable in SPL, but we can use a
debug serial instead. So, this change will not be a big deal.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# a8e6300d 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor spl_init_board()

Merge init-*.c into a single file using a table of callbacks because
the initialization flow is almost common among SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8d6c99c6 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor MEMCONF init code

Currently, memconf-sld3.c and memconf-pxs2.c duplicate the code.

There are 3 patterns in terms of MEMCONF init:
- DRAM 2 channels: LD4, sLD8, Pro4, Pro5, LD11
- DRAM 3 channels: sLD3
- DRAM 3 channels (Ch2 is disable by MEMCONF[21]): Pxs2, LD20

All of them can be moved into a single file by a little more
refactoring.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fcc238ba 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: collect clock/PLL init code into a single directory

Now PLLs for DRAM controller are initialized in SPL, and the others
in U-Boot proper. Setting up all of them in a single directory will
be helpful when we want to share code between SPL and U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b78ffc53 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move XIRQ pin-mux settings of LD11/LD20

This is the last code in the mach-uniphier/pinctrl/ directory.
Push the remaining code out to delete the directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 68557ec3 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate System Bus pin-mux settings for LD11/LD20

Use the pin-mux data in the pinctrl drivers by directly calling
pinctrl_generic_set_state().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 5ac9dfbe 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate NAND pin-mux settings

The NAND subsystem has not supported the Driver Model yet, but the
NAND pin-mux data are already in the pinctrl drivers. Use them by
calling pinctrl_generic_set_state() directly.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# b2916712 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge board init functions into board_init()

Currently, the UniPhier platform calls several init functions in the
following order:

[1] spl_board_init()
[2] board_early_init_f()
[3] board_init()
[4] board_early_init_r()
[5] board_late_init()

The serial console is not ready at the point of [2], so we want to
avoid using [2] from the view point of debuggability. Fortunately,
all of the initialization in [2] can be delayed until [3]. I see no
good reason to split into [3] and [4]. So, merge [2] through [4].

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 43a8cc90 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: use checkboard() instead of misc_init_f()

We can use checkboard() stub to show additional board information,
so misc_init_f() should not be used for this purpose.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9d0c2ceb 20-Apr-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: add PH1-LD20 SoC support

This is the first ARMv8 SoC from Socionext Inc.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d5cf3297 18-Mar-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: support Debug UART

For ARM32 architecture, CONFIG_DEBUG_LL is available for early
low-level debugging (and actually UniPhier 32bit SoCs use it), but
ARM64 architecture does not support it. Instead, CONFIG_DEBUG_UART
is available as an architecture-independent debug facility.

This commit supports it on all the UniPhier SoCs (including the new
ARMv8 SoCs), which is very useful for new SoC bringups.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# fe5ea57b 26-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: prepare directory structure for ARMv8 SoC support

Before adding ARMv8 support, this commit refactors the directory
structure. Move ARMv7 specific files to arch/arm/mach-uniphier/arm32
to avoid a mess by mixture of ARMv7 and ARMv8 code. Also move the
"select CPU_V7" to the lower-level menu because we will have to
select ARM64 instead of CPU_V7 for ARMv8 SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 126f9bad 04-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: fix makefiles to build cmd_ddr(m)phy.c

The U-Boot proper building needs to descend arch/arm/mach-uniphier/dram
to build these commands.

Fixes: 93d92d46cd01 ("ARM: uniphier: add dump command for DDR Multi PHY registers")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 4b50369f 02-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: create early page table at run-time

UniPhier SoCs are not equipped with dedicated on-chip SRAM. Instead,
locked outer cache is used as RAM area during the early boot stage
where DRAM is not ready yet. This effectively means MMU must be
always enabled while we are in SPL.

Currently, the SPL image for UniPhier SoCs contains the page table
statically defined at compile time. It has been a burden because the
16KB page table occupies a quarter memory footprint of the 64KB SPL
image.

Finally, there is no more room to implement new features in SPL.
Setting aside the NOR boot mode, this issue can be solved by creating
the page table onto RAM at run time.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 042b28f4 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_pinmon.c to boot-mode subdirectory

This command shows the boot mode pins, so it would be more at home
in the boot-mode subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9ca66164 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_ddrphy.c to dram subdirectory

This command shows the register dump of the DDR PHY, so it would be
more at home in the dram subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 33886693 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge umc/ and ddrphy/ into a single directory

The UMC (Universal Memory Controller) and the DDR PHY block are
highly related to each other. It is better to have both code in the
same directory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 69947007 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile uniphier_get_board_param() for U-Boot proper

Compile this file for U-Boot proper as well as SPL, so that the
U-Boot proper can call uniphier_get_board_param().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 323d1f9d 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: allow to enable multiple SoCs

Before this commit, the Kconfig menu in mach-uniphier only allowed us
to choose one SoC to be compiled. Each SoC has its own defconfig file
for the build-test coverage. Consequently, some defconfig files are
duplicated with only the difference in CONFIG_DEFAULT_DEVICE_TREE and
CONFIG_{SOC_NAME}=y.

Now, most of board-specific parameters have been moved to device trees,
so it makes sense to include init code of multiple SoCs into a single
image as long as the SoCs have similar architecture. In fact, some
SoCs of UniPhier family are very similar:
- PH1-LD4 and PH1-sLD8
- PH1-LD6b and ProXstream2 (will be added in the upcoming commit)

This commit will be helpful to merge some defconfig files for better
maintainability.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# e6eecca5 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: unify low-level debug init code

Move init code of low-level debug into a single file.
This is helpful to create an image that runs on multiple SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 8497ccc4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rename CONFIG_MACH_* to CONFIG_ARCH_UNIPHIER_*

I want these prefixed with CONFIG_ARCH_UNIPHIER_ to clarify
they belong to UniPhier SoC family.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# d7728aa4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move CONFIG_SUPPORT_CARD_* macros to local file

It is no longer necessary to define CONFIG_SUPPORT_CARD_* globally.
Move them to a C file as local macros. Also, rename the C file.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 9879842c 11-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: drop DCC micro support card support

Historically (for compatibility with very old platforms), two
different types of micro support cards have been used with the
UniPhier SoC development boards. It has been painful to maintain
both. Having one of them is enough.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>

# 3365b4eb 20-Jul-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add PH1-sLD3 SoC support

The init code for UMC (Unified Memory Controller) and PLL has not
been mainlined yet, but U-boot proper should work.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 62118b7b 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: optimize kicking secondary CPUs code

Currently, the secondary CPU(s) are kicked three times:
Boot ROM ---(kick)--> SPL ---(kick)--> U-boot ---(kick)--> Linux.
It makes the boot sequence very complicated.

This commit merges the first and the second kicks, so the secondary
CPU(s) can directly jump from SPL to Linux.
arch/arm/mach-uniphier/smp.S is no longer necessary.

Linux boot test passed.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# def3feb8 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add empty lowlevel_init to U-boot proper

To remove the ifdef conditional of CONFIG_SKIP_LOWLEVEL_INIT,
add late_lowlevel_init.S to U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>

# 6cc21206 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: consolidate MEMCONF setting code

This code is duplicated in ph1-ld4/sg_init.c and ph1-pro4/sg_init.c.
Merge the same code into a new file, memconf.c.

The helper functions no longer have to be placed in the header file.
Also, move them into memconf.c.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 4c425570 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: move SoC sources to mach-uniphier

Move
arch/arm/cpu/armv7/uniphier/* -> arch/arm/mach-uniphier/*

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>

# 65fce763 19-Jul-2018 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: split ft_board_setup() out to a separate file

Prepare to add more fdt fixup code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# acf15001 26-Apr-2018 Lokesh Vutla <lokeshvutla@ti.com>

arm: v7: Kconfig: Rename CPU_V7 as CPU_V7A

Currently CPU_V7 kconfig symbol supports only ARMv7A architectures under
armv7 folder. This led to a misconception of creating separate folders
for armv7m and armv7r. There is no reason to create separate folder for
other armv7 based architectures when it can co-exist with few Kconfig
symbols.

As a first step towards a common folder, rename CPU_V7 as CPUV7A. Later
separate Kconfig symbols can be added for CPU_V7R and CPU_V7M and
can co exist in the same folder.

Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@xilinx.com>
Suggested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>


# 83d290c5 06-May-2018 Tom Rini <trini@konsulko.com>

SPDX: Convert all of our single license tags to Linux Kernel style

When U-Boot started using SPDX tags we were among the early adopters and
there weren't a lot of other examples to borrow from. So we picked the
area of the file that usually had a full license text and replaced it
with an appropriate SPDX-License-Identifier: entry. Since then, the
Linux Kernel has adopted SPDX tags and they place it as the very first
line in a file (except where shebangs are used, then it's second line)
and with slightly different comment styles than us.

In part due to community overlap, in part due to better tag visibility
and in part for other minor reasons, switch over to that style.

This commit changes all instances where we have a single declared
license in the tag as both the before and after are identical in tag
contents. There's also a few places where I found we did not have a tag
and have introduced one.

Signed-off-by: Tom Rini <trini@konsulko.com>


# fed9c766 20-Apr-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: enable PSCI sysreset for uniphier_v8_defconfig

This configuration is supposed to be used with ARM Trusted Firmware,
so the SYSTEM_RESET is implemented in BL31. Invoke PSCI instead of
U-Boot's own reset code because we need to coordinate with SCP
(System Control Processor) for the system-level power management.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 784548ef 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rework spl_boot_device() and related code

The current implementation has ugly switch statements here and there,
and duplicates similar code. Rework it using table lookups for SoC
data and reduce code duplication.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 81c847bf 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move spl_boot_mode() to a separate file

The spl_boot_mode() is unrelated to the other code in this file.
Besides, this function is only called from common/spl/spl_mmc.c,
so it is reasonable to guard with CONFIG_SPL_MMC_SUPPORT.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# e5957e8d 13-Feb-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move MMC code to a separate file

Currently, arch/arm/mach-uniphier/boot-mode/boot-mode.c is messed up
with unrelated code; there is no reason why the "mmcsetn" command
must be placed in this file.

Split out the MMC code into arch/arm/mach-uniphier/mmc-first-dev.c.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 9c572684 27-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile board data only for SPL

Now U-Boot proper need not get the uniphier_boards array. Compile
it only for SPL.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# e27d6c7d 21-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: simplify SoC ID get function

Currently, uniphier_get_soc_type() converts the SoC ID (this is
read from the revision register) to an enum symbol to use it for SoC
identification. Come to think of it, there is no need for the
conversion in the first place. Using the SoC ID from the register
as-is a straightforward way.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 26b09c02 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move SBC and Support Card init code to U-Boot proper

Initialize SBC and Support Card in U-Boot proper instead of SPL.

We may run different firmware (ex. ARM Trusted Firmware) before
U-Boot, and basic SoC initialization may be done there. In that
case, SPL may not be used.

The motivation for preparing SBC and Support Card in SPL was to use
LED for early debugging, but this is not mandatory to boot SoCs.
With this commit, LED will be unavailable in SPL, but we can use a
debug serial instead. So, this change will not be a big deal.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# a8e6300d 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor spl_init_board()

Merge init-*.c into a single file using a table of callbacks because
the initialization flow is almost common among SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 8d6c99c6 14-Jan-2017 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: refactor MEMCONF init code

Currently, memconf-sld3.c and memconf-pxs2.c duplicate the code.

There are 3 patterns in terms of MEMCONF init:
- DRAM 2 channels: LD4, sLD8, Pro4, Pro5, LD11
- DRAM 3 channels: sLD3
- DRAM 3 channels (Ch2 is disable by MEMCONF[21]): Pxs2, LD20

All of them can be moved into a single file by a little more
refactoring.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# fcc238ba 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: collect clock/PLL init code into a single directory

Now PLLs for DRAM controller are initialized in SPL, and the others
in U-Boot proper. Setting up all of them in a single directory will
be helpful when we want to share code between SPL and U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# b78ffc53 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move XIRQ pin-mux settings of LD11/LD20

This is the last code in the mach-uniphier/pinctrl/ directory.
Push the remaining code out to delete the directory entirely.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 68557ec3 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate System Bus pin-mux settings for LD11/LD20

Use the pin-mux data in the pinctrl drivers by directly calling
pinctrl_generic_set_state().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 5ac9dfbe 16-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: consolidate NAND pin-mux settings

The NAND subsystem has not supported the Driver Model yet, but the
NAND pin-mux data are already in the pinctrl drivers. Use them by
calling pinctrl_generic_set_state() directly.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# b2916712 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge board init functions into board_init()

Currently, the UniPhier platform calls several init functions in the
following order:

[1] spl_board_init()
[2] board_early_init_f()
[3] board_init()
[4] board_early_init_r()
[5] board_late_init()

The serial console is not ready at the point of [2], so we want to
avoid using [2] from the view point of debuggability. Fortunately,
all of the initialization in [2] can be delayed until [3]. I see no
good reason to split into [3] and [4]. So, merge [2] through [4].

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 43a8cc90 13-Sep-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: use checkboard() instead of misc_init_f()

We can use checkboard() stub to show additional board information,
so misc_init_f() should not be used for this purpose.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 9d0c2ceb 20-Apr-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: add PH1-LD20 SoC support

This is the first ARMv8 SoC from Socionext Inc.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# d5cf3297 18-Mar-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: support Debug UART

For ARM32 architecture, CONFIG_DEBUG_LL is available for early
low-level debugging (and actually UniPhier 32bit SoCs use it), but
ARM64 architecture does not support it. Instead, CONFIG_DEBUG_UART
is available as an architecture-independent debug facility.

This commit supports it on all the UniPhier SoCs (including the new
ARMv8 SoCs), which is very useful for new SoC bringups.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# fe5ea57b 26-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: prepare directory structure for ARMv8 SoC support

Before adding ARMv8 support, this commit refactors the directory
structure. Move ARMv7 specific files to arch/arm/mach-uniphier/arm32
to avoid a mess by mixture of ARMv7 and ARMv8 code. Also move the
"select CPU_V7" to the lower-level menu because we will have to
select ARM64 instead of CPU_V7 for ARMv8 SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 126f9bad 04-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: fix makefiles to build cmd_ddr(m)phy.c

The U-Boot proper building needs to descend arch/arm/mach-uniphier/dram
to build these commands.

Fixes: 93d92d46cd01 ("ARM: uniphier: add dump command for DDR Multi PHY registers")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 4b50369f 02-Feb-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: create early page table at run-time

UniPhier SoCs are not equipped with dedicated on-chip SRAM. Instead,
locked outer cache is used as RAM area during the early boot stage
where DRAM is not ready yet. This effectively means MMU must be
always enabled while we are in SPL.

Currently, the SPL image for UniPhier SoCs contains the page table
statically defined at compile time. It has been a burden because the
16KB page table occupies a quarter memory footprint of the 64KB SPL
image.

Finally, there is no more room to implement new features in SPL.
Setting aside the NOR boot mode, this issue can be solved by creating
the page table onto RAM at run time.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 042b28f4 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_pinmon.c to boot-mode subdirectory

This command shows the boot mode pins, so it would be more at home
in the boot-mode subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 9ca66164 08-Jan-2016 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move cmd_ddrphy.c to dram subdirectory

This command shows the register dump of the DDR PHY, so it would be
more at home in the dram subdirectory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 33886693 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: merge umc/ and ddrphy/ into a single directory

The UMC (Universal Memory Controller) and the DDR PHY block are
highly related to each other. It is better to have both code in the
same directory.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 69947007 17-Dec-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: compile uniphier_get_board_param() for U-Boot proper

Compile this file for U-Boot proper as well as SPL, so that the
U-Boot proper can call uniphier_get_board_param().

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 323d1f9d 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: allow to enable multiple SoCs

Before this commit, the Kconfig menu in mach-uniphier only allowed us
to choose one SoC to be compiled. Each SoC has its own defconfig file
for the build-test coverage. Consequently, some defconfig files are
duplicated with only the difference in CONFIG_DEFAULT_DEVICE_TREE and
CONFIG_{SOC_NAME}=y.

Now, most of board-specific parameters have been moved to device trees,
so it makes sense to include init code of multiple SoCs into a single
image as long as the SoCs have similar architecture. In fact, some
SoCs of UniPhier family are very similar:
- PH1-LD4 and PH1-sLD8
- PH1-LD6b and ProXstream2 (will be added in the upcoming commit)

This commit will be helpful to merge some defconfig files for better
maintainability.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# e6eecca5 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: unify low-level debug init code

Move init code of low-level debug into a single file.
This is helpful to create an image that runs on multiple SoCs.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 8497ccc4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: rename CONFIG_MACH_* to CONFIG_ARCH_UNIPHIER_*

I want these prefixed with CONFIG_ARCH_UNIPHIER_ to clarify
they belong to UniPhier SoC family.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# d7728aa4 21-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: move CONFIG_SUPPORT_CARD_* macros to local file

It is no longer necessary to define CONFIG_SUPPORT_CARD_* globally.
Move them to a C file as local macros. Also, rename the C file.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 9879842c 11-Sep-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: uniphier: drop DCC micro support card support

Historically (for compatibility with very old platforms), two
different types of micro support cards have been used with the
UniPhier SoC development boards. It has been painful to maintain
both. Having one of them is enough.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>


# 3365b4eb 20-Jul-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add PH1-sLD3 SoC support

The init code for UMC (Unified Memory Controller) and PLL has not
been mainlined yet, but U-boot proper should work.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 62118b7b 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: optimize kicking secondary CPUs code

Currently, the secondary CPU(s) are kicked three times:
Boot ROM ---(kick)--> SPL ---(kick)--> U-boot ---(kick)--> Linux.
It makes the boot sequence very complicated.

This commit merges the first and the second kicks, so the secondary
CPU(s) can directly jump from SPL to Linux.
arch/arm/mach-uniphier/smp.S is no longer necessary.

Linux boot test passed.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# def3feb8 22-Mar-2015 Masahiro Yamada <yamada.masahiro@socionext.com>

ARM: UniPhier: add empty lowlevel_init to U-boot proper

To remove the ifdef conditional of CONFIG_SKIP_LOWLEVEL_INIT,
add late_lowlevel_init.S to U-Boot proper.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>


# 6cc21206 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: consolidate MEMCONF setting code

This code is duplicated in ph1-ld4/sg_init.c and ph1-pro4/sg_init.c.
Merge the same code into a new file, memconf.c.

The helper functions no longer have to be placed in the header file.
Also, move them into memconf.c.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>


# 4c425570 26-Feb-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>

ARM: UniPhier: move SoC sources to mach-uniphier

Move
arch/arm/cpu/armv7/uniphier/* -> arch/arm/mach-uniphier/*

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>