]> git.sur5r.net Git - u-boot/commitdiff
ARM: uniphier: drop PH1- prefix from CONFIG options and file names
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Fri, 18 Mar 2016 07:41:43 +0000 (16:41 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 23 Mar 2016 16:42:13 +0000 (01:42 +0900)
The current CONFIG names like "CONFIG_ARCH_UNIPHIER_PH1_PRO4" is too
long.  It would not hurt to drop "PH1_" because "UNIPHIER_" already
well specifies the SoC family.  Also, rename files for consistency.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
126 files changed:
arch/arm/mach-uniphier/Kconfig
arch/arm/mach-uniphier/arm32/debug_ll.S
arch/arm/mach-uniphier/bcu/Makefile
arch/arm/mach-uniphier/bcu/bcu-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/bcu/bcu-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/bcu/bcu-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/bcu/bcu-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/board_early_init_f.c
arch/arm/mach-uniphier/boards.c
arch/arm/mach-uniphier/boot-mode/Makefile
arch/arm/mach-uniphier/boot-mode/boot-mode-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-pro5.c [deleted file]
arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/boot-mode/boot-mode-pro5.c [new file with mode: 0644]
arch/arm/mach-uniphier/boot-mode/boot-mode-proxstream2.c [deleted file]
arch/arm/mach-uniphier/boot-mode/boot-mode-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/boot-mode/boot-mode-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/boot-mode/boot-mode.c
arch/arm/mach-uniphier/boot-mode/cmd_pinmon.c
arch/arm/mach-uniphier/clk/Makefile
arch/arm/mach-uniphier/clk/clk-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/clk/clk-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/clk/clk-ph1-pro4.c [deleted file]
arch/arm/mach-uniphier/clk/clk-ph1-pro5.c [deleted file]
arch/arm/mach-uniphier/clk/clk-pro4.c [new file with mode: 0644]
arch/arm/mach-uniphier/clk/clk-pro5.c [new file with mode: 0644]
arch/arm/mach-uniphier/clk/clk-proxstream2.c [deleted file]
arch/arm/mach-uniphier/clk/clk-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/dram/Makefile
arch/arm/mach-uniphier/dram/ddrphy-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/dram/ddrphy-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/dram/ddrphy-regs.h
arch/arm/mach-uniphier/dram/umc-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/dram/umc-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/dram/umc-ph1-pro4.c [deleted file]
arch/arm/mach-uniphier/dram/umc-ph1-sld8.c [deleted file]
arch/arm/mach-uniphier/dram/umc-pro4.c [new file with mode: 0644]
arch/arm/mach-uniphier/dram/umc-proxstream2.c [deleted file]
arch/arm/mach-uniphier/dram/umc-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/dram/umc-sld8.c [new file with mode: 0644]
arch/arm/mach-uniphier/early-clk/Makefile
arch/arm/mach-uniphier/early-clk/early-clk-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/early-clk/early-clk-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/early-clk/early-clk-ph1-pro5.c [deleted file]
arch/arm/mach-uniphier/early-clk/early-clk-pro5.c [new file with mode: 0644]
arch/arm/mach-uniphier/early-clk/early-clk-proxstream2.c [deleted file]
arch/arm/mach-uniphier/early-clk/early-clk-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/early-pinctrl/Makefile
arch/arm/mach-uniphier/early-pinctrl/early-pinctrl-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/early-pinctrl/early-pinctrl-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/init/Makefile
arch/arm/mach-uniphier/init/init-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/init/init-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/init/init-ph1-pro4.c [deleted file]
arch/arm/mach-uniphier/init/init-ph1-pro5.c [deleted file]
arch/arm/mach-uniphier/init/init-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/init/init-ph1-sld8.c [deleted file]
arch/arm/mach-uniphier/init/init-pro4.c [new file with mode: 0644]
arch/arm/mach-uniphier/init/init-pro5.c [new file with mode: 0644]
arch/arm/mach-uniphier/init/init-proxstream2.c [deleted file]
arch/arm/mach-uniphier/init/init-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/init/init-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/init/init-sld8.c [new file with mode: 0644]
arch/arm/mach-uniphier/init/init.c
arch/arm/mach-uniphier/memconf/Makefile
arch/arm/mach-uniphier/memconf/memconf-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/memconf/memconf-proxstream2.c [deleted file]
arch/arm/mach-uniphier/memconf/memconf-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/memconf/memconf-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/pinctrl/Makefile
arch/arm/mach-uniphier/pinctrl/pinctrl-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/pinctrl/pinctrl-ld6b.c [new file with mode: 0644]
arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-ld6b.c [deleted file]
arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-pro4.c [deleted file]
arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-pro5.c [deleted file]
arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-sld8.c [deleted file]
arch/arm/mach-uniphier/pinctrl/pinctrl-pro4.c [new file with mode: 0644]
arch/arm/mach-uniphier/pinctrl/pinctrl-pro5.c [new file with mode: 0644]
arch/arm/mach-uniphier/pinctrl/pinctrl-proxstream2.c [deleted file]
arch/arm/mach-uniphier/pinctrl/pinctrl-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/pinctrl/pinctrl-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/pinctrl/pinctrl-sld8.c [new file with mode: 0644]
arch/arm/mach-uniphier/pll/Makefile
arch/arm/mach-uniphier/pll/pll-init-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/pll/pll-init-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/pll/pll-init-ph1-pro4.c [deleted file]
arch/arm/mach-uniphier/pll/pll-init-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/pll/pll-init-ph1-sld8.c [deleted file]
arch/arm/mach-uniphier/pll/pll-init-pro4.c [new file with mode: 0644]
arch/arm/mach-uniphier/pll/pll-init-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/pll/pll-init-sld8.c [new file with mode: 0644]
arch/arm/mach-uniphier/pll/pll-spectrum-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/pll/pll-spectrum-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/pll/pll-spectrum-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/pll/pll-spectrum-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/sbc/Makefile
arch/arm/mach-uniphier/sbc/sbc-ld4.c [new file with mode: 0644]
arch/arm/mach-uniphier/sbc/sbc-ph1-ld4.c [deleted file]
arch/arm/mach-uniphier/sbc/sbc-ph1-pro4.c [deleted file]
arch/arm/mach-uniphier/sbc/sbc-ph1-sld3.c [deleted file]
arch/arm/mach-uniphier/sbc/sbc-pro4.c [new file with mode: 0644]
arch/arm/mach-uniphier/sbc/sbc-proxstream2.c [deleted file]
arch/arm/mach-uniphier/sbc/sbc-pxs2.c [new file with mode: 0644]
arch/arm/mach-uniphier/sbc/sbc-sld3.c [new file with mode: 0644]
arch/arm/mach-uniphier/sc-regs.h
arch/arm/mach-uniphier/soc-info.h
arch/arm/mach-uniphier/soc_info.c
configs/uniphier_sld3_defconfig
drivers/pinctrl/uniphier/Kconfig
drivers/pinctrl/uniphier/Makefile
drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c [deleted file]
drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c [deleted file]
drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c [deleted file]
drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c [deleted file]
drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c [deleted file]
drivers/pinctrl/uniphier/pinctrl-proxstream2.c [deleted file]
drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c [new file with mode: 0644]
drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c [new file with mode: 0644]
drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c [new file with mode: 0644]
drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c [new file with mode: 0644]
drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c [new file with mode: 0644]
drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c [new file with mode: 0644]
include/configs/uniphier.h

index 660f83c8557c7dfc1f35b19272c056658a8b1a2a..8dc6f98f2b0f75ac77efbf220cfeb95fc3fcbad1 100644 (file)
@@ -5,9 +5,9 @@ config SYS_CONFIG_NAME
 
 choice
         prompt "UniPhier SoC select"
-        default ARCH_UNIPHIER_PH1_PRO4
+        default ARCH_UNIPHIER_PRO4
 
-config ARCH_UNIPHIER_PH1_SLD3
+config ARCH_UNIPHIER_SLD3
        bool "UniPhier PH1-sLD3 SoC"
        select CPU_V7
 
@@ -15,7 +15,7 @@ config ARCH_UNIPHIER_LD4_SLD8
        bool "UniPhier PH1-LD4/PH1-sLD8 SoC"
        select CPU_V7
 
-config ARCH_UNIPHIER_PH1_PRO4
+config ARCH_UNIPHIER_PRO4
        bool "UniPhier PH1-Pro4 SoC"
        select CPU_V7
 
@@ -25,27 +25,27 @@ config ARCH_UNIPHIER_PRO5_PXS2_LD6B
 
 endchoice
 
-config ARCH_UNIPHIER_PH1_LD4
+config ARCH_UNIPHIER_LD4
        bool "Enable UniPhier PH1-LD4 SoC support"
        depends on ARCH_UNIPHIER_LD4_SLD8
        default y
 
-config ARCH_UNIPHIER_PH1_SLD8
+config ARCH_UNIPHIER_SLD8
        bool "Enable UniPhier PH1-sLD8 SoC support"
        depends on ARCH_UNIPHIER_LD4_SLD8
        default y
 
-config ARCH_UNIPHIER_PH1_PRO5
+config ARCH_UNIPHIER_PRO5
        bool "Enable UniPhier PH1-Pro5 SoC support"
        depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
        default y
 
-config ARCH_UNIPHIER_PROXSTREAM2
+config ARCH_UNIPHIER_PXS2
        bool "Enable UniPhier ProXstream2 SoC support"
        depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
        default y
 
-config ARCH_UNIPHIER_PH1_LD6B
+config ARCH_UNIPHIER_LD6B
        bool "Enable UniPhier PH1-LD6b SoC support"
        depends on ARCH_UNIPHIER_PRO5_PXS2_LD6B
        default y
@@ -68,15 +68,14 @@ config CMD_PINMON
 
 config CMD_DDRPHY_DUMP
        bool "Enable dump command of DDR PHY parameters"
-       depends on ARCH_UNIPHIER_PH1_LD4 || ARCH_UNIPHIER_PH1_PRO4 || \
-                  ARCH_UNIPHIER_PH1_SLD8
+       depends on ARCH_UNIPHIER_LD4 || ARCH_UNIPHIER_PRO4 || ARCH_UNIPHIER_SLD8
        help
          The command "ddrphy" shows the resulting parameters of DDR PHY
          training; it is useful for the evaluation of DDR PHY training.
 
 config CMD_DDRMPHY_DUMP
        bool "Enable dump command of DDR Multi PHY parameters"
-       depends on ARCH_UNIPHIER_PROXSTREAM2 || ARCH_UNIPHIER_PH1_LD6B
+       depends on ARCH_UNIPHIER_PXS2 || ARCH_UNIPHIER_LD6B
        help
          The command "ddrmphy" shows the resulting parameters of DDR Multi PHY
          training; it is useful for the evaluation of DDR Multi PHY training.
index 8e4943cff97fe809bee116a9834c4355993a44e1..5db7427dd67247cab52cbe6b31ba05ca5997d422 100644 (file)
@@ -26,8 +26,8 @@ ENTRY(debug_ll_init)
        and             r1, r1, #SG_REVISION_TYPE_MASK
        mov             r1, r1, lsr #SG_REVISION_TYPE_SHIFT
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
-#define PH1_SLD3_UART_CLK              36864000
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
+#define UNIPHIER_SLD3_UART_CLK         36864000
        cmp             r1, #0x25
        bne             ph1_sld3_end
 
@@ -42,13 +42,13 @@ ENTRY(debug_ll_init)
        orr             r1, r1, #SC_CLKCTRL_CEN_PERI
        str             r1, [r0]
 
-       ldr             r3, =DIV_ROUND(PH1_SLD3_UART_CLK, 16 * BAUDRATE)
+       ldr             r3, =DIV_ROUND(UNIPHIER_SLD3_UART_CLK, 16 * BAUDRATE)
 
        b               init_uart
 ph1_sld3_end:
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4)
-#define PH1_LD4_UART_CLK               36864000
+#if defined(CONFIG_ARCH_UNIPHIER_LD4)
+#define UNIPHIER_LD4_UART_CLK          36864000
        cmp             r1, #0x26
        bne             ph1_ld4_end
 
@@ -59,13 +59,13 @@ ph1_sld3_end:
 
        sg_set_pinsel   88, 1, 8, 4, r0, r1     @ HSDOUT6 -> TXD0
 
-       ldr             r3, =DIV_ROUND(PH1_LD4_UART_CLK, 16 * BAUDRATE)
+       ldr             r3, =DIV_ROUND(UNIPHIER_LD4_UART_CLK, 16 * BAUDRATE)
 
        b               init_uart
 ph1_ld4_end:
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4)
-#define PH1_PRO4_UART_CLK              73728000
+#if defined(CONFIG_ARCH_UNIPHIER_PRO4)
+#define UNIPHIER_PRO4_UART_CLK         73728000
        cmp             r1, #0x28
        bne             ph1_pro4_end
 
@@ -80,13 +80,13 @@ ph1_ld4_end:
        orr             r1, r1, #SC_CLKCTRL_CEN_PERI
        str             r1, [r0]
 
-       ldr             r3, =DIV_ROUND(PH1_PRO4_UART_CLK, 16 * BAUDRATE)
+       ldr             r3, =DIV_ROUND(UNIPHIER_PRO4_UART_CLK, 16 * BAUDRATE)
 
        b               init_uart
 ph1_pro4_end:
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
-#define PH1_SLD8_UART_CLK              80000000
+#if defined(CONFIG_ARCH_UNIPHIER_SLD8)
+#define UNIPHIER_SLD8_UART_CLK         80000000
        cmp             r1, #0x29
        bne             ph1_sld8_end
 
@@ -97,13 +97,13 @@ ph1_pro4_end:
 
        sg_set_pinsel   70, 3, 8, 4, r0, r1     @ HSDOUT0 -> TXD0
 
-       ldr             r3, =DIV_ROUND(PH1_SLD8_UART_CLK, 16 * BAUDRATE)
+       ldr             r3, =DIV_ROUND(UNIPHIER_SLD8_UART_CLK, 16 * BAUDRATE)
 
        b               init_uart
 ph1_sld8_end:
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
-#define PH1_PRO5_UART_CLK              73728000
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
+#define UNIPHIER_PRO5_UART_CLK         73728000
        cmp             r1, #0x2A
        bne             ph1_pro5_end
 
@@ -121,13 +121,13 @@ ph1_sld8_end:
        orr             r1, r1, #SC_CLKCTRL_CEN_PERI
        str             r1, [r0]
 
-       ldr             r3, =DIV_ROUND(PH1_PRO5_UART_CLK, 16 * BAUDRATE)
+       ldr             r3, =DIV_ROUND(UNIPHIER_PRO5_UART_CLK, 16 * BAUDRATE)
 
        b               init_uart
 ph1_pro5_end:
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)
-#define PROXSTREAM2_UART_CLK           88900000
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2)
+#define UNIPHIER_PXS2_UART_CLK         88900000
        cmp             r1, #0x2E
        bne             proxstream2_end
 
@@ -146,13 +146,13 @@ ph1_pro5_end:
        orr             r1, r1, #SC_CLKCTRL_CEN_PERI
        str             r1, [r0]
 
-       ldr             r3, =DIV_ROUND(PROXSTREAM2_UART_CLK, 16 * BAUDRATE)
+       ldr             r3, =DIV_ROUND(UNIPHIER_PXS2_UART_CLK, 16 * BAUDRATE)
 
        b               init_uart
 proxstream2_end:
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
-#define PH1_LD6B_UART_CLK              88900000
+#if defined(CONFIG_ARCH_UNIPHIER_LD6B)
+#define UNIPHIER_LD6B_UART_CLK         88900000
        cmp             r1, #0x2F
        bne             ph1_ld6b_end
 
@@ -170,7 +170,7 @@ proxstream2_end:
        orr             r1, r1, #SC_CLKCTRL_CEN_PERI
        str             r1, [r0]
 
-       ldr             r3, =DIV_ROUND(PH1_LD6B_UART_CLK, 16 * BAUDRATE)
+       ldr             r3, =DIV_ROUND(UNIPHIER_LD6B_UART_CLK, 16 * BAUDRATE)
 
        b               init_uart
 ph1_ld6b_end:
index b8b0323cd283d26a23dd76be6308091ea9e9b95d..02107b376ac81f17415d9f2ca3f8bb6840dee4ad 100644 (file)
@@ -2,6 +2,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += bcu-ph1-sld3.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += bcu-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += bcu-ph1-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += bcu-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += bcu-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += bcu-ld4.o
diff --git a/arch/arm/mach-uniphier/bcu/bcu-ld4.c b/arch/arm/mach-uniphier/bcu/bcu-ld4.c
new file mode 100644 (file)
index 0000000..bbe8a74
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "bcu-regs.h"
+
+#define ch(x) ((x) >= 32 ? 0 : (x) < 0 ? 0x11111111 : 0x11111111 << (x))
+
+int ph1_ld4_bcu_init(const struct uniphier_board_data *bd)
+{
+       int shift;
+
+       writel(0x44444444, BCSCR0); /* 0x20000000-0x3fffffff: ASM bus */
+       writel(0x11111111, BCSCR2); /* 0x80000000-0x9fffffff: IPPC/IPPD-bus */
+       writel(0x11111111, BCSCR3); /* 0xa0000000-0xbfffffff: IPPC/IPPD-bus */
+       writel(0x11111111, BCSCR4); /* 0xc0000000-0xdfffffff: IPPC/IPPD-bus */
+       writel(0x11111111, BCSCR5); /* 0xe0000000-0Xffffffff: IPPC/IPPD-bus */
+
+       /* Specify DDR channel */
+       shift = (bd->dram_ch[1].base - bd->dram_ch[0].base) / 0x04000000 * 4;
+       writel(ch(shift), BCIPPCCHR2); /* 0x80000000-0x9fffffff */
+
+       shift -= 32;
+       writel(ch(shift), BCIPPCCHR3); /* 0xa0000000-0xbfffffff */
+
+       shift -= 32;
+       writel(ch(shift), BCIPPCCHR4); /* 0xc0000000-0xdfffffff */
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/bcu/bcu-ph1-ld4.c b/arch/arm/mach-uniphier/bcu/bcu-ph1-ld4.c
deleted file mode 100644 (file)
index bbe8a74..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "bcu-regs.h"
-
-#define ch(x) ((x) >= 32 ? 0 : (x) < 0 ? 0x11111111 : 0x11111111 << (x))
-
-int ph1_ld4_bcu_init(const struct uniphier_board_data *bd)
-{
-       int shift;
-
-       writel(0x44444444, BCSCR0); /* 0x20000000-0x3fffffff: ASM bus */
-       writel(0x11111111, BCSCR2); /* 0x80000000-0x9fffffff: IPPC/IPPD-bus */
-       writel(0x11111111, BCSCR3); /* 0xa0000000-0xbfffffff: IPPC/IPPD-bus */
-       writel(0x11111111, BCSCR4); /* 0xc0000000-0xdfffffff: IPPC/IPPD-bus */
-       writel(0x11111111, BCSCR5); /* 0xe0000000-0Xffffffff: IPPC/IPPD-bus */
-
-       /* Specify DDR channel */
-       shift = (bd->dram_ch[1].base - bd->dram_ch[0].base) / 0x04000000 * 4;
-       writel(ch(shift), BCIPPCCHR2); /* 0x80000000-0x9fffffff */
-
-       shift -= 32;
-       writel(ch(shift), BCIPPCCHR3); /* 0xa0000000-0xbfffffff */
-
-       shift -= 32;
-       writel(ch(shift), BCIPPCCHR4); /* 0xc0000000-0xdfffffff */
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/bcu/bcu-ph1-sld3.c b/arch/arm/mach-uniphier/bcu/bcu-ph1-sld3.c
deleted file mode 100644 (file)
index b7497e9..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "bcu-regs.h"
-
-#define ch(x) ((x) >= 32 ? 0 : (x) < 0 ? 0x11111111 : 0x11111111 << (x))
-
-int ph1_sld3_bcu_init(const struct uniphier_board_data *bd)
-{
-       int shift;
-
-       writel(0x11111111, BCSCR2); /* 0x80000000-0x9fffffff: IPPC/IPPD-bus */
-       writel(0x11111111, BCSCR3); /* 0xa0000000-0xbfffffff: IPPC/IPPD-bus */
-       writel(0x11111111, BCSCR4); /* 0xc0000000-0xdfffffff: IPPC/IPPD-bus */
-       /*
-        * 0xe0000000-0xefffffff: Ex-bus
-        * 0xf0000000-0xfbffffff: ASM bus
-        * 0xfc000000-0xffffffff: OCM bus
-        */
-       writel(0x24440000, BCSCR5);
-
-       /* Specify DDR channel */
-       shift = (bd->dram_ch[1].base - bd->dram_ch[0].base) / 0x04000000 * 4;
-       writel(ch(shift), BCIPPCCHR2); /* 0x80000000-0x9fffffff */
-
-       shift -= 32;
-       writel(ch(shift), BCIPPCCHR3); /* 0xa0000000-0xbfffffff */
-
-       shift -= 32;
-       writel(ch(shift), BCIPPCCHR4); /* 0xc0000000-0xdfffffff */
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/bcu/bcu-sld3.c b/arch/arm/mach-uniphier/bcu/bcu-sld3.c
new file mode 100644 (file)
index 0000000..b7497e9
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "bcu-regs.h"
+
+#define ch(x) ((x) >= 32 ? 0 : (x) < 0 ? 0x11111111 : 0x11111111 << (x))
+
+int ph1_sld3_bcu_init(const struct uniphier_board_data *bd)
+{
+       int shift;
+
+       writel(0x11111111, BCSCR2); /* 0x80000000-0x9fffffff: IPPC/IPPD-bus */
+       writel(0x11111111, BCSCR3); /* 0xa0000000-0xbfffffff: IPPC/IPPD-bus */
+       writel(0x11111111, BCSCR4); /* 0xc0000000-0xdfffffff: IPPC/IPPD-bus */
+       /*
+        * 0xe0000000-0xefffffff: Ex-bus
+        * 0xf0000000-0xfbffffff: ASM bus
+        * 0xfc000000-0xffffffff: OCM bus
+        */
+       writel(0x24440000, BCSCR5);
+
+       /* Specify DDR channel */
+       shift = (bd->dram_ch[1].base - bd->dram_ch[0].base) / 0x04000000 * 4;
+       writel(ch(shift), BCIPPCCHR2); /* 0x80000000-0x9fffffff */
+
+       shift -= 32;
+       writel(ch(shift), BCIPPCCHR3); /* 0xa0000000-0xbfffffff */
+
+       shift -= 32;
+       writel(ch(shift), BCIPPCCHR4); /* 0xc0000000-0xdfffffff */
+
+       return 0;
+}
index 824da25ac77ebd05256697ac5f34a93f869eb583..8e568ee3cdd423bf0568368dd6bc55a79d2e4873 100644 (file)
@@ -13,50 +13,50 @@ int board_early_init_f(void)
        led_puts("U0");
 
        switch (uniphier_get_soc_type()) {
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
-       case SOC_UNIPHIER_PH1_SLD3:
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
+       case SOC_UNIPHIER_SLD3:
                ph1_sld3_pin_init();
                led_puts("U1");
                ph1_ld4_clk_init();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4)
-       case SOC_UNIPHIER_PH1_LD4:
+#if defined(CONFIG_ARCH_UNIPHIER_LD4)
+       case SOC_UNIPHIER_LD4:
                ph1_ld4_pin_init();
                led_puts("U1");
                ph1_ld4_clk_init();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4)
-       case SOC_UNIPHIER_PH1_PRO4:
+#if defined(CONFIG_ARCH_UNIPHIER_PRO4)
+       case SOC_UNIPHIER_PRO4:
                ph1_pro4_pin_init();
                led_puts("U1");
                ph1_pro4_clk_init();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
-       case SOC_UNIPHIER_PH1_SLD8:
+#if defined(CONFIG_ARCH_UNIPHIER_SLD8)
+       case SOC_UNIPHIER_SLD8:
                ph1_sld8_pin_init();
                led_puts("U1");
                ph1_ld4_clk_init();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
-       case SOC_UNIPHIER_PH1_PRO5:
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
+       case SOC_UNIPHIER_PRO5:
                ph1_pro5_pin_init();
                led_puts("U1");
                ph1_pro5_clk_init();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)
-       case SOC_UNIPHIER_PROXSTREAM2:
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2)
+       case SOC_UNIPHIER_PXS2:
                proxstream2_pin_init();
                led_puts("U1");
                proxstream2_clk_init();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
-       case SOC_UNIPHIER_PH1_LD6B:
+#if defined(CONFIG_ARCH_UNIPHIER_LD6B)
+       case SOC_UNIPHIER_LD6B:
                ph1_ld6b_pin_init();
                led_puts("U1");
                proxstream2_clk_init();
index 408aff0cd0bbb268877274b6c82a89509f90b3d1..5e98c3f33b770926c40766216c87e07629ae0888 100644 (file)
@@ -12,7 +12,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
 static const struct uniphier_board_data ph1_sld3_data = {
        .dram_freq = 1600,
        .dram_nr_ch = 3,
@@ -34,7 +34,7 @@ static const struct uniphier_board_data ph1_sld3_data = {
 };
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4)
+#if defined(CONFIG_ARCH_UNIPHIER_LD4)
 static const struct uniphier_board_data ph1_ld4_data = {
        .dram_freq = 1600,
        .dram_nr_ch = 2,
@@ -52,7 +52,7 @@ static const struct uniphier_board_data ph1_ld4_data = {
 };
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4)
+#if defined(CONFIG_ARCH_UNIPHIER_PRO4)
 /* 1GB RAM board */
 static const struct uniphier_board_data ph1_pro4_data = {
        .dram_freq = 1600,
@@ -86,7 +86,7 @@ static const struct uniphier_board_data ph1_pro4_2g_data = {
 };
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
+#if defined(CONFIG_ARCH_UNIPHIER_SLD8)
 static const struct uniphier_board_data ph1_sld8_data = {
        .dram_freq = 1333,
        .dram_nr_ch = 2,
@@ -104,7 +104,7 @@ static const struct uniphier_board_data ph1_sld8_data = {
 };
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
 static const struct uniphier_board_data ph1_pro5_data = {
        .dram_freq = 1866,
        .dram_nr_ch = 2,
@@ -121,7 +121,7 @@ static const struct uniphier_board_data ph1_pro5_data = {
 };
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2)
 static const struct uniphier_board_data proxstream2_data = {
        .dram_freq = 2133,
        .dram_nr_ch = 3,
@@ -143,7 +143,7 @@ static const struct uniphier_board_data proxstream2_data = {
 };
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
+#if defined(CONFIG_ARCH_UNIPHIER_LD6B)
 static const struct uniphier_board_data ph1_ld6b_data = {
        .dram_freq = 1866,
        .dram_nr_ch = 3,
@@ -171,27 +171,27 @@ struct uniphier_board_id {
 };
 
 static const struct uniphier_board_id uniphier_boards[] = {
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
        { "socionext,ph1-sld3", &ph1_sld3_data, },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4)
+#if defined(CONFIG_ARCH_UNIPHIER_LD4)
        { "socionext,ph1-ld4", &ph1_ld4_data, },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4)
+#if defined(CONFIG_ARCH_UNIPHIER_PRO4)
        { "socionext,ph1-pro4-ace", &ph1_pro4_2g_data, },
        { "socionext,ph1-pro4-sanji", &ph1_pro4_2g_data, },
        { "socionext,ph1-pro4", &ph1_pro4_data, },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
+#if defined(CONFIG_ARCH_UNIPHIER_SLD8)
        { "socionext,ph1-sld8", &ph1_sld8_data, },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
        { "socionext,ph1-pro5", &ph1_pro5_data, },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2)
        { "socionext,proxstream2", &proxstream2_data, },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
+#if defined(CONFIG_ARCH_UNIPHIER_LD6B)
        { "socionext,ph1-ld6b", &ph1_ld6b_data, },
 #endif
 };
index be0de8f9a98943cac460cad776bbe67c9ab33b2d..278df64ad5b00278d9b62e3ab7d9aa1db6f2ec4e 100644 (file)
@@ -4,12 +4,12 @@
 
 obj-y                                  += boot-mode.o
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += boot-mode-ph1-sld3.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += boot-mode-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += boot-mode-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += boot-mode-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO5)   += boot-mode-ph1-pro5.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += boot-mode-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += boot-mode-proxstream2.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += boot-mode-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += boot-mode-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += boot-mode-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += boot-mode-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += boot-mode-pro5.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += boot-mode-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += boot-mode-pxs2.o
 
 obj-$(CONFIG_CMD_PINMON) += cmd_pinmon.o
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-ld4.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-ld4.c
new file mode 100644 (file)
index 0000000..8334373
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <linux/io.h>
+
+#include "../sg-regs.h"
+#include "boot-device.h"
+
+struct boot_device_info boot_device_table[] = {
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, EraseSize   1MB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, EraseSize   1MB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 24, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 24, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_MMC1, "eMMC Boot (3.3V)"},
+       {BOOT_DEVICE_MMC1, "eMMC Boot (1.8V)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+};
+
+static int get_boot_mode_sel(void)
+{
+       return (readl(SG_PINMON0) >> 1) & 0x1f;
+}
+
+u32 ph1_ld4_boot_device(void)
+{
+       int boot_mode;
+
+       boot_mode = get_boot_mode_sel();
+
+       return boot_device_table[boot_mode].type;
+}
+
+void ph1_ld4_boot_mode_show(void)
+{
+       int mode_sel, i;
+
+       mode_sel = get_boot_mode_sel();
+
+       puts("Boot Mode Pin:\n");
+
+       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
+               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
+                      boot_device_table[i].info);
+}
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-ld4.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-ld4.c
deleted file mode 100644 (file)
index 8334373..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-#include <linux/io.h>
-
-#include "../sg-regs.h"
-#include "boot-device.h"
-
-struct boot_device_info boot_device_table[] = {
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, EraseSize   1MB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, EraseSize   1MB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 24, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 24, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_MMC1, "eMMC Boot (3.3V)"},
-       {BOOT_DEVICE_MMC1, "eMMC Boot (1.8V)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-};
-
-static int get_boot_mode_sel(void)
-{
-       return (readl(SG_PINMON0) >> 1) & 0x1f;
-}
-
-u32 ph1_ld4_boot_device(void)
-{
-       int boot_mode;
-
-       boot_mode = get_boot_mode_sel();
-
-       return boot_device_table[boot_mode].type;
-}
-
-void ph1_ld4_boot_mode_show(void)
-{
-       int mode_sel, i;
-
-       mode_sel = get_boot_mode_sel();
-
-       puts("Boot Mode Pin:\n");
-
-       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
-               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
-                      boot_device_table[i].info);
-}
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-pro5.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-pro5.c
deleted file mode 100644 (file)
index 0ec6a08..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-#include <linux/io.h>
-
-#include "../sg-regs.h"
-#include "boot-device.h"
-
-static struct boot_device_info boot_device_table[] = {
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128MB, Addr 4)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512MB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_MMC1, "eMMC Boot (1.8V)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128MB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
-       { /* sentinel */ }
-};
-
-static int get_boot_mode_sel(void)
-{
-       return (readl(SG_PINMON0) >> 1) & 0x1f;
-}
-
-u32 ph1_pro5_boot_device(void)
-{
-       int boot_mode;
-
-       boot_mode = get_boot_mode_sel();
-
-       return boot_device_table[boot_mode].type;
-}
-
-void ph1_pro5_boot_mode_show(void)
-{
-       int mode_sel, i;
-
-       mode_sel = get_boot_mode_sel();
-
-       puts("Boot Mode Pin:\n");
-
-       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
-               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
-                      boot_device_table[i].info);
-}
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-sld3.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-ph1-sld3.c
deleted file mode 100644 (file)
index b0f3f9a..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-#include <linux/io.h>
-
-#include "../sg-regs.h"
-#include "boot-device.h"
-
-static struct boot_device_info boot_device_table[] = {
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "External Master"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_MMC1, "eMMC (3.3V, Boot Oparation)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_MMC1, "eMMC (1.8V, Boot Oparation)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_MMC1, "eMMC (3.3V, Normal)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_MMC1, "eMMC (1.8V, Normal)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, EraseSize   1MB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, EraseSize   1MB, Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-};
-
-static int get_boot_mode_sel(void)
-{
-       return readl(SG_PINMON0) & 0x3f;
-}
-
-u32 ph1_sld3_boot_device(void)
-{
-       int boot_mode;
-
-       boot_mode = get_boot_mode_sel();
-
-       return boot_device_table[boot_mode].type;
-}
-
-void ph1_sld3_boot_mode_show(void)
-{
-       int mode_sel, i;
-
-       mode_sel = get_boot_mode_sel();
-
-       puts("Boot Mode Pin:\n");
-
-       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
-               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
-                      boot_device_table[i].info);
-}
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-pro5.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-pro5.c
new file mode 100644 (file)
index 0000000..0ec6a08
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <linux/io.h>
+
+#include "../sg-regs.h"
+#include "boot-device.h"
+
+static struct boot_device_info boot_device_table[] = {
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128MB, Addr 4)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512MB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_MMC1, "eMMC Boot (1.8V)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128MB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
+       { /* sentinel */ }
+};
+
+static int get_boot_mode_sel(void)
+{
+       return (readl(SG_PINMON0) >> 1) & 0x1f;
+}
+
+u32 ph1_pro5_boot_device(void)
+{
+       int boot_mode;
+
+       boot_mode = get_boot_mode_sel();
+
+       return boot_device_table[boot_mode].type;
+}
+
+void ph1_pro5_boot_mode_show(void)
+{
+       int mode_sel, i;
+
+       mode_sel = get_boot_mode_sel();
+
+       puts("Boot Mode Pin:\n");
+
+       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
+               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
+                      boot_device_table[i].info);
+}
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-proxstream2.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-proxstream2.c
deleted file mode 100644 (file)
index 1b0c183..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-#include <linux/io.h>
-
-#include "../sg-regs.h"
-#include "boot-device.h"
-
-static struct boot_device_info boot_device_table[] = {
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_MMC1, "eMMC Boot (1.8V)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 4)"},
-       {BOOT_DEVICE_SPI,  "SPI 3Byte CS0"},
-       {BOOT_DEVICE_SPI,  "SPI 4Byte CS0"},
-       {BOOT_DEVICE_SPI,  "SPI 3Byte CS1"},
-       {BOOT_DEVICE_SPI,  "SPI 4Byte CS1"},
-       {BOOT_DEVICE_SPI,  "SPI 4Byte CS0"},
-       {BOOT_DEVICE_SPI,  "SPI 3Byte CS0"},
-       {BOOT_DEVICE_NONE, "Reserved"},
-};
-
-static int get_boot_mode_sel(void)
-{
-       return (readl(SG_PINMON0) >> 1) & 0x1f;
-}
-
-u32 proxstream2_boot_device(void)
-{
-       int boot_mode;
-
-       if (readl(SG_PINMON0) & BIT(6))
-               return BOOT_DEVICE_USB;
-
-       boot_mode = get_boot_mode_sel();
-
-       return boot_device_table[boot_mode].type;
-}
-
-void proxstream2_boot_mode_show(void)
-{
-       int mode_sel, i;
-
-       mode_sel = get_boot_mode_sel();
-
-       puts("Boot Mode Pin:\n");
-
-       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
-               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
-                      boot_device_table[i].info);
-}
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-pxs2.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-pxs2.c
new file mode 100644 (file)
index 0000000..1b0c183
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <linux/io.h>
+
+#include "../sg-regs.h"
+#include "boot-device.h"
+
+static struct boot_device_info boot_device_table[] = {
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_MMC1, "eMMC Boot (1.8V)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 4)"},
+       {BOOT_DEVICE_SPI,  "SPI 3Byte CS0"},
+       {BOOT_DEVICE_SPI,  "SPI 4Byte CS0"},
+       {BOOT_DEVICE_SPI,  "SPI 3Byte CS1"},
+       {BOOT_DEVICE_SPI,  "SPI 4Byte CS1"},
+       {BOOT_DEVICE_SPI,  "SPI 4Byte CS0"},
+       {BOOT_DEVICE_SPI,  "SPI 3Byte CS0"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+};
+
+static int get_boot_mode_sel(void)
+{
+       return (readl(SG_PINMON0) >> 1) & 0x1f;
+}
+
+u32 proxstream2_boot_device(void)
+{
+       int boot_mode;
+
+       if (readl(SG_PINMON0) & BIT(6))
+               return BOOT_DEVICE_USB;
+
+       boot_mode = get_boot_mode_sel();
+
+       return boot_device_table[boot_mode].type;
+}
+
+void proxstream2_boot_mode_show(void)
+{
+       int mode_sel, i;
+
+       mode_sel = get_boot_mode_sel();
+
+       puts("Boot Mode Pin:\n");
+
+       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
+               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
+                      boot_device_table[i].info);
+}
diff --git a/arch/arm/mach-uniphier/boot-mode/boot-mode-sld3.c b/arch/arm/mach-uniphier/boot-mode/boot-mode-sld3.c
new file mode 100644 (file)
index 0000000..b0f3f9a
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <linux/io.h>
+
+#include "../sg-regs.h"
+#include "boot-device.h"
+
+static struct boot_device_info boot_device_table[] = {
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "External Master"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_MMC1, "eMMC (3.3V, Boot Oparation)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_MMC1, "eMMC (1.8V, Boot Oparation)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_MMC1, "eMMC (3.3V, Normal)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_MMC1, "eMMC (1.8V, Normal)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, EraseSize   1MB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, EraseSize   1MB, Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 4, ECC 24, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC  8, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 24, ONFI,            Addr 5)"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+       {BOOT_DEVICE_NONE, "Reserved"},
+};
+
+static int get_boot_mode_sel(void)
+{
+       return readl(SG_PINMON0) & 0x3f;
+}
+
+u32 ph1_sld3_boot_device(void)
+{
+       int boot_mode;
+
+       boot_mode = get_boot_mode_sel();
+
+       return boot_device_table[boot_mode].type;
+}
+
+void ph1_sld3_boot_mode_show(void)
+{
+       int mode_sel, i;
+
+       mode_sel = get_boot_mode_sel();
+
+       puts("Boot Mode Pin:\n");
+
+       for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
+               printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
+                      boot_device_table[i].info);
+}
index cf39bf57e9201b01af56dc5ff2f97bc0e7e4b148..317a4f126c61df468d1a7535702abd737e3dcb25 100644 (file)
@@ -19,26 +19,24 @@ u32 spl_boot_device_raw(void)
                return BOOT_DEVICE_NOR;
 
        switch (uniphier_get_soc_type()) {
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
-       case SOC_UNIPHIER_PH1_SLD3:
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
+       case SOC_UNIPHIER_SLD3:
                return ph1_sld3_boot_device();
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
-       case SOC_UNIPHIER_PH1_LD4:
-       case SOC_UNIPHIER_PH1_PRO4:
-       case SOC_UNIPHIER_PH1_SLD8:
+#if defined(CONFIG_ARCH_UNIPHIER_LD4) || defined(CONFIG_ARCH_UNIPHIER_PRO4) || \
+       defined(CONFIG_ARCH_UNIPHIER_SLD8)
+       case SOC_UNIPHIER_LD4:
+       case SOC_UNIPHIER_PRO4:
+       case SOC_UNIPHIER_SLD8:
                return ph1_ld4_boot_device();
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
-       case SOC_UNIPHIER_PH1_PRO5:
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
+       case SOC_UNIPHIER_PRO5:
                return ph1_pro5_boot_device();
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
-       case SOC_UNIPHIER_PROXSTREAM2:
-       case SOC_UNIPHIER_PH1_LD6B:
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2) || defined(CONFIG_ARCH_UNIPHIER_LD6B)
+       case SOC_UNIPHIER_PXS2:
+       case SOC_UNIPHIER_LD6B:
                return proxstream2_boot_device();
 #endif
        default:
index 3ff756b7ddab2f03f0e81c4b508ba5be316cb46e..3a66e2b40180645ec392fad9e70f1883743c39c3 100644 (file)
@@ -15,29 +15,27 @@ static int do_pinmon(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        printf("Boot Swap: %s\n\n", boot_is_swapped() ? "ON" : "OFF");
 
        switch (uniphier_get_soc_type()) {
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
-       case SOC_UNIPHIER_PH1_SLD3:
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
+       case SOC_UNIPHIER_SLD3:
                ph1_sld3_boot_mode_show();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
-       case SOC_UNIPHIER_PH1_LD4:
-       case SOC_UNIPHIER_PH1_PRO4:
-       case SOC_UNIPHIER_PH1_SLD8:
+#if defined(CONFIG_ARCH_UNIPHIER_LD4) || defined(CONFIG_ARCH_UNIPHIER_PRO4) || \
+       defined(CONFIG_ARCH_UNIPHIER_SLD8)
+       case SOC_UNIPHIER_LD4:
+       case SOC_UNIPHIER_PRO4:
+       case SOC_UNIPHIER_SLD8:
                ph1_ld4_boot_mode_show();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
-       case SOC_UNIPHIER_PH1_PRO5:
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
+       case SOC_UNIPHIER_PRO5:
                ph1_pro5_boot_mode_show();
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
-       case SOC_UNIPHIER_PROXSTREAM2:
-       case SOC_UNIPHIER_PH1_LD6B:
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2) || defined(CONFIG_ARCH_UNIPHIER_LD6B)
+       case SOC_UNIPHIER_PXS2:
+       case SOC_UNIPHIER_LD6B:
                proxstream2_boot_mode_show();
                break;
 #endif
index bc0f27c3983a2a71fe1a0884cbb8629df4e6dadf..1d736a5c0fa28229fff8fd6fafd8fe053d889f88 100644 (file)
@@ -2,10 +2,10 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += clk-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += clk-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += clk-ph1-pro4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += clk-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO5)   += clk-ph1-pro5.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += clk-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += clk-proxstream2.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += clk-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += clk-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += clk-pro4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += clk-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += clk-pro5.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += clk-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += clk-pxs2.o
diff --git a/arch/arm/mach-uniphier/clk/clk-ld4.c b/arch/arm/mach-uniphier/clk/clk-ld4.c
new file mode 100644 (file)
index 0000000..7a34bee
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+void ph1_ld4_clk_init(void)
+{
+       u32 tmp;
+
+       /* deassert reset */
+       tmp = readl(SC_RSTCTRL);
+#ifdef CONFIG_UNIPHIER_ETH
+       tmp |= SC_RSTCTRL_NRST_ETHER;
+#endif
+#ifdef CONFIG_USB_EHCI
+       tmp |= SC_RSTCTRL_NRST_STDMAC;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_RSTCTRL_NRST_NAND;
+#endif
+       writel(tmp, SC_RSTCTRL);
+       readl(SC_RSTCTRL); /* dummy read */
+
+       /* privide clocks */
+       tmp = readl(SC_CLKCTRL);
+#ifdef CONFIG_UNIPHIER_ETH
+       tmp |= SC_CLKCTRL_CEN_ETHER;
+#endif
+#ifdef CONFIG_USB_EHCI
+       tmp |= SC_CLKCTRL_CEN_MIO | SC_CLKCTRL_CEN_STDMAC;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_CLKCTRL_CEN_NAND;
+#endif
+       writel(tmp, SC_CLKCTRL);
+       readl(SC_CLKCTRL); /* dummy read */
+}
diff --git a/arch/arm/mach-uniphier/clk/clk-ph1-ld4.c b/arch/arm/mach-uniphier/clk/clk-ph1-ld4.c
deleted file mode 100644 (file)
index 7a34bee..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-void ph1_ld4_clk_init(void)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       tmp = readl(SC_RSTCTRL);
-#ifdef CONFIG_UNIPHIER_ETH
-       tmp |= SC_RSTCTRL_NRST_ETHER;
-#endif
-#ifdef CONFIG_USB_EHCI
-       tmp |= SC_RSTCTRL_NRST_STDMAC;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_RSTCTRL_NRST_NAND;
-#endif
-       writel(tmp, SC_RSTCTRL);
-       readl(SC_RSTCTRL); /* dummy read */
-
-       /* privide clocks */
-       tmp = readl(SC_CLKCTRL);
-#ifdef CONFIG_UNIPHIER_ETH
-       tmp |= SC_CLKCTRL_CEN_ETHER;
-#endif
-#ifdef CONFIG_USB_EHCI
-       tmp |= SC_CLKCTRL_CEN_MIO | SC_CLKCTRL_CEN_STDMAC;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_CLKCTRL_CEN_NAND;
-#endif
-       writel(tmp, SC_CLKCTRL);
-       readl(SC_CLKCTRL); /* dummy read */
-}
diff --git a/arch/arm/mach-uniphier/clk/clk-ph1-pro4.c b/arch/arm/mach-uniphier/clk/clk-ph1-pro4.c
deleted file mode 100644 (file)
index c784c31..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-void ph1_pro4_clk_init(void)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       tmp = readl(SC_RSTCTRL);
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_USB3C0 |
-               SC_RSTCTRL_NRST_GIO;
-#endif
-#ifdef CONFIG_UNIPHIER_ETH
-       tmp |= SC_RSTCTRL_NRST_ETHER;
-#endif
-#ifdef CONFIG_USB_EHCI
-       tmp |= SC_RSTCTRL_NRST_STDMAC;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_RSTCTRL_NRST_NAND;
-#endif
-       writel(tmp, SC_RSTCTRL);
-       readl(SC_RSTCTRL); /* dummy read */
-
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp = readl(SC_RSTCTRL2);
-       tmp |= SC_RSTCTRL2_NRST_USB3B1 | SC_RSTCTRL2_NRST_USB3C1;
-       writel(tmp, SC_RSTCTRL2);
-       readl(SC_RSTCTRL2); /* dummy read */
-#endif
-
-       /* privide clocks */
-       tmp = readl(SC_CLKCTRL);
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
-               SC_CLKCTRL_CEN_GIO;
-#endif
-#ifdef CONFIG_UNIPHIER_ETH
-       tmp |= SC_CLKCTRL_CEN_ETHER;
-#endif
-#ifdef CONFIG_USB_EHCI
-       tmp |= SC_CLKCTRL_CEN_MIO | SC_CLKCTRL_CEN_STDMAC;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_CLKCTRL_CEN_NAND;
-#endif
-       writel(tmp, SC_CLKCTRL);
-       readl(SC_CLKCTRL); /* dummy read */
-}
diff --git a/arch/arm/mach-uniphier/clk/clk-ph1-pro5.c b/arch/arm/mach-uniphier/clk/clk-ph1-pro5.c
deleted file mode 100644 (file)
index 039da73..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-void ph1_pro5_clk_init(void)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       tmp = readl(SC_RSTCTRL);
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_GIO;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_RSTCTRL_NRST_NAND;
-#endif
-       writel(tmp, SC_RSTCTRL);
-       readl(SC_RSTCTRL); /* dummy read */
-
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp = readl(SC_RSTCTRL2);
-       tmp |= SC_RSTCTRL2_NRST_USB3B1;
-       writel(tmp, SC_RSTCTRL2);
-       readl(SC_RSTCTRL2); /* dummy read */
-#endif
-
-       /* privide clocks */
-       tmp = readl(SC_CLKCTRL);
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
-               SC_CLKCTRL_CEN_GIO;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_CLKCTRL_CEN_NAND;
-#endif
-       writel(tmp, SC_CLKCTRL);
-       readl(SC_CLKCTRL); /* dummy read */
-}
diff --git a/arch/arm/mach-uniphier/clk/clk-pro4.c b/arch/arm/mach-uniphier/clk/clk-pro4.c
new file mode 100644 (file)
index 0000000..c784c31
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+void ph1_pro4_clk_init(void)
+{
+       u32 tmp;
+
+       /* deassert reset */
+       tmp = readl(SC_RSTCTRL);
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_USB3C0 |
+               SC_RSTCTRL_NRST_GIO;
+#endif
+#ifdef CONFIG_UNIPHIER_ETH
+       tmp |= SC_RSTCTRL_NRST_ETHER;
+#endif
+#ifdef CONFIG_USB_EHCI
+       tmp |= SC_RSTCTRL_NRST_STDMAC;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_RSTCTRL_NRST_NAND;
+#endif
+       writel(tmp, SC_RSTCTRL);
+       readl(SC_RSTCTRL); /* dummy read */
+
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp = readl(SC_RSTCTRL2);
+       tmp |= SC_RSTCTRL2_NRST_USB3B1 | SC_RSTCTRL2_NRST_USB3C1;
+       writel(tmp, SC_RSTCTRL2);
+       readl(SC_RSTCTRL2); /* dummy read */
+#endif
+
+       /* privide clocks */
+       tmp = readl(SC_CLKCTRL);
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
+               SC_CLKCTRL_CEN_GIO;
+#endif
+#ifdef CONFIG_UNIPHIER_ETH
+       tmp |= SC_CLKCTRL_CEN_ETHER;
+#endif
+#ifdef CONFIG_USB_EHCI
+       tmp |= SC_CLKCTRL_CEN_MIO | SC_CLKCTRL_CEN_STDMAC;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_CLKCTRL_CEN_NAND;
+#endif
+       writel(tmp, SC_CLKCTRL);
+       readl(SC_CLKCTRL); /* dummy read */
+}
diff --git a/arch/arm/mach-uniphier/clk/clk-pro5.c b/arch/arm/mach-uniphier/clk/clk-pro5.c
new file mode 100644 (file)
index 0000000..039da73
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+void ph1_pro5_clk_init(void)
+{
+       u32 tmp;
+
+       /* deassert reset */
+       tmp = readl(SC_RSTCTRL);
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_GIO;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_RSTCTRL_NRST_NAND;
+#endif
+       writel(tmp, SC_RSTCTRL);
+       readl(SC_RSTCTRL); /* dummy read */
+
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp = readl(SC_RSTCTRL2);
+       tmp |= SC_RSTCTRL2_NRST_USB3B1;
+       writel(tmp, SC_RSTCTRL2);
+       readl(SC_RSTCTRL2); /* dummy read */
+#endif
+
+       /* privide clocks */
+       tmp = readl(SC_CLKCTRL);
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
+               SC_CLKCTRL_CEN_GIO;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_CLKCTRL_CEN_NAND;
+#endif
+       writel(tmp, SC_CLKCTRL);
+       readl(SC_CLKCTRL); /* dummy read */
+}
diff --git a/arch/arm/mach-uniphier/clk/clk-proxstream2.c b/arch/arm/mach-uniphier/clk/clk-proxstream2.c
deleted file mode 100644 (file)
index a528f04..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-void proxstream2_clk_init(void)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       tmp = readl(SC_RSTCTRL);
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_GIO;
-#endif
-#ifdef CONFIG_UNIPHIER_ETH
-       tmp |= SC_RSTCTRL_NRST_ETHER;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_RSTCTRL_NRST_NAND;
-#endif
-       writel(tmp, SC_RSTCTRL);
-       readl(SC_RSTCTRL); /* dummy read */
-
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp = readl(SC_RSTCTRL2);
-       tmp |= SC_RSTCTRL2_NRST_USB3B1;
-       writel(tmp, SC_RSTCTRL2);
-       readl(SC_RSTCTRL2); /* dummy read */
-#endif
-
-       /* privide clocks */
-       tmp = readl(SC_CLKCTRL);
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
-               SC_CLKCTRL_CEN_GIO;
-#endif
-#ifdef CONFIG_UNIPHIER_ETH
-       tmp |= SC_CLKCTRL_CEN_ETHER;
-#endif
-#ifdef CONFIG_NAND_DENALI
-       tmp |= SC_CLKCTRL_CEN_NAND;
-#endif
-       writel(tmp, SC_CLKCTRL);
-       readl(SC_CLKCTRL); /* dummy read */
-}
diff --git a/arch/arm/mach-uniphier/clk/clk-pxs2.c b/arch/arm/mach-uniphier/clk/clk-pxs2.c
new file mode 100644 (file)
index 0000000..a528f04
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+void proxstream2_clk_init(void)
+{
+       u32 tmp;
+
+       /* deassert reset */
+       tmp = readl(SC_RSTCTRL);
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp |= SC_RSTCTRL_NRST_USB3B0 | SC_RSTCTRL_NRST_GIO;
+#endif
+#ifdef CONFIG_UNIPHIER_ETH
+       tmp |= SC_RSTCTRL_NRST_ETHER;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_RSTCTRL_NRST_NAND;
+#endif
+       writel(tmp, SC_RSTCTRL);
+       readl(SC_RSTCTRL); /* dummy read */
+
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp = readl(SC_RSTCTRL2);
+       tmp |= SC_RSTCTRL2_NRST_USB3B1;
+       writel(tmp, SC_RSTCTRL2);
+       readl(SC_RSTCTRL2); /* dummy read */
+#endif
+
+       /* privide clocks */
+       tmp = readl(SC_CLKCTRL);
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       tmp |= SC_CLKCTRL_CEN_USB31 | SC_CLKCTRL_CEN_USB30 |
+               SC_CLKCTRL_CEN_GIO;
+#endif
+#ifdef CONFIG_UNIPHIER_ETH
+       tmp |= SC_CLKCTRL_CEN_ETHER;
+#endif
+#ifdef CONFIG_NAND_DENALI
+       tmp |= SC_CLKCTRL_CEN_NAND;
+#endif
+       writel(tmp, SC_CLKCTRL);
+       readl(SC_CLKCTRL); /* dummy read */
+}
index 3d1553cbe14f5d2bd13ca6df5f1ea79b27195eae..615ba2cce9e17a454c61b6fadfc02de8df29bb35 100644 (file)
@@ -4,14 +4,14 @@
 
 ifdef CONFIG_SPL_BUILD
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += umc-ph1-ld4.o \
-                                          ddrphy-training.o ddrphy-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += umc-ph1-pro4.o \
-                                          ddrphy-training.o ddrphy-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += umc-ph1-sld8.o \
-                                          ddrphy-training.o ddrphy-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += umc-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += umc-proxstream2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += umc-ld4.o \
+                                          ddrphy-training.o ddrphy-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += umc-pro4.o \
+                                          ddrphy-training.o ddrphy-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += umc-sld8.o \
+                                          ddrphy-training.o ddrphy-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += umc-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += umc-pxs2.o
 
 else
 
diff --git a/arch/arm/mach-uniphier/dram/ddrphy-ld4.c b/arch/arm/mach-uniphier/dram/ddrphy-ld4.c
new file mode 100644 (file)
index 0000000..eb9bf24
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/types.h>
+#include <linux/io.h>
+
+#include "ddrphy-regs.h"
+
+enum dram_freq {
+       DRAM_FREQ_1333M,
+       DRAM_FREQ_1600M,
+       DRAM_FREQ_NR,
+};
+
+static u32 ddrphy_ptr0[DRAM_FREQ_NR] = {0x0a806844, 0x0c807d04};
+static u32 ddrphy_ptr1[DRAM_FREQ_NR] = {0x208e0124, 0x2710015E};
+static u32 ddrphy_ptr3[DRAM_FREQ_NR] = {0x0f051616, 0x12061A80};
+static u32 ddrphy_ptr4[DRAM_FREQ_NR] = {0x06ae08d6, 0x08027100};
+static u32 ddrphy_dtpr0[DRAM_FREQ_NR] = {0x85589955, 0x999cbb66};
+static u32 ddrphy_dtpr1[DRAM_FREQ_NR] = {0x1a8363c0, 0x1a878400};
+static u32 ddrphy_dtpr2[DRAM_FREQ_NR] = {0x5002c200, 0xa00214f8};
+static u32 ddrphy_mr0[DRAM_FREQ_NR] = {0x00000b51, 0x00000d71};
+static u32 ddrphy_mr2[DRAM_FREQ_NR] = {0x00000290, 0x00000298};
+
+int ph1_ld4_ddrphy_init(struct ddrphy __iomem *phy, int freq, bool ddr3plus)
+{
+       enum dram_freq freq_e;
+       u32 tmp;
+
+       switch (freq) {
+       case 1333:
+               freq_e = DRAM_FREQ_1333M;
+               break;
+       case 1600:
+               freq_e = DRAM_FREQ_1600M;
+               break;
+       default:
+               printf("unsupported DRAM frequency %d MHz\n", freq);
+               return -EINVAL;
+       }
+
+       writel(0x0300c473, &phy->pgcr[1]);
+       writel(ddrphy_ptr0[freq_e], &phy->ptr[0]);
+       writel(ddrphy_ptr1[freq_e], &phy->ptr[1]);
+       writel(0x00083DEF, &phy->ptr[2]);
+       writel(ddrphy_ptr3[freq_e], &phy->ptr[3]);
+       writel(ddrphy_ptr4[freq_e], &phy->ptr[4]);
+       writel(0xF004001A, &phy->dsgcr);
+
+       /* change the value of the on-die pull-up/pull-down registors */
+       tmp = readl(&phy->dxccr);
+       tmp &= ~0x0ee0;
+       tmp |= DXCCR_DQSNRES_688_OHM | DXCCR_DQSRES_688_OHM;
+       writel(tmp, &phy->dxccr);
+
+       writel(0x0000040B, &phy->dcr);
+       writel(ddrphy_dtpr0[freq_e], &phy->dtpr[0]);
+       writel(ddrphy_dtpr1[freq_e], &phy->dtpr[1]);
+       writel(ddrphy_dtpr2[freq_e], &phy->dtpr[2]);
+       writel(ddrphy_mr0[freq_e], &phy->mr0);
+       writel(0x00000006, &phy->mr1);
+       writel(ddrphy_mr2[freq_e], &phy->mr2);
+       writel(ddr3plus ? 0x00000800 : 0x00000000, &phy->mr3);
+
+       while (!(readl(&phy->pgsr[0]) & PGSR0_IDONE))
+               ;
+
+       writel(0x0300C473, &phy->pgcr[1]);
+       writel(0x0000005D, &phy->zq[0].cr[1]);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/dram/ddrphy-ph1-ld4.c b/arch/arm/mach-uniphier/dram/ddrphy-ph1-ld4.c
deleted file mode 100644 (file)
index eb9bf24..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/types.h>
-#include <linux/io.h>
-
-#include "ddrphy-regs.h"
-
-enum dram_freq {
-       DRAM_FREQ_1333M,
-       DRAM_FREQ_1600M,
-       DRAM_FREQ_NR,
-};
-
-static u32 ddrphy_ptr0[DRAM_FREQ_NR] = {0x0a806844, 0x0c807d04};
-static u32 ddrphy_ptr1[DRAM_FREQ_NR] = {0x208e0124, 0x2710015E};
-static u32 ddrphy_ptr3[DRAM_FREQ_NR] = {0x0f051616, 0x12061A80};
-static u32 ddrphy_ptr4[DRAM_FREQ_NR] = {0x06ae08d6, 0x08027100};
-static u32 ddrphy_dtpr0[DRAM_FREQ_NR] = {0x85589955, 0x999cbb66};
-static u32 ddrphy_dtpr1[DRAM_FREQ_NR] = {0x1a8363c0, 0x1a878400};
-static u32 ddrphy_dtpr2[DRAM_FREQ_NR] = {0x5002c200, 0xa00214f8};
-static u32 ddrphy_mr0[DRAM_FREQ_NR] = {0x00000b51, 0x00000d71};
-static u32 ddrphy_mr2[DRAM_FREQ_NR] = {0x00000290, 0x00000298};
-
-int ph1_ld4_ddrphy_init(struct ddrphy __iomem *phy, int freq, bool ddr3plus)
-{
-       enum dram_freq freq_e;
-       u32 tmp;
-
-       switch (freq) {
-       case 1333:
-               freq_e = DRAM_FREQ_1333M;
-               break;
-       case 1600:
-               freq_e = DRAM_FREQ_1600M;
-               break;
-       default:
-               printf("unsupported DRAM frequency %d MHz\n", freq);
-               return -EINVAL;
-       }
-
-       writel(0x0300c473, &phy->pgcr[1]);
-       writel(ddrphy_ptr0[freq_e], &phy->ptr[0]);
-       writel(ddrphy_ptr1[freq_e], &phy->ptr[1]);
-       writel(0x00083DEF, &phy->ptr[2]);
-       writel(ddrphy_ptr3[freq_e], &phy->ptr[3]);
-       writel(ddrphy_ptr4[freq_e], &phy->ptr[4]);
-       writel(0xF004001A, &phy->dsgcr);
-
-       /* change the value of the on-die pull-up/pull-down registors */
-       tmp = readl(&phy->dxccr);
-       tmp &= ~0x0ee0;
-       tmp |= DXCCR_DQSNRES_688_OHM | DXCCR_DQSRES_688_OHM;
-       writel(tmp, &phy->dxccr);
-
-       writel(0x0000040B, &phy->dcr);
-       writel(ddrphy_dtpr0[freq_e], &phy->dtpr[0]);
-       writel(ddrphy_dtpr1[freq_e], &phy->dtpr[1]);
-       writel(ddrphy_dtpr2[freq_e], &phy->dtpr[2]);
-       writel(ddrphy_mr0[freq_e], &phy->mr0);
-       writel(0x00000006, &phy->mr1);
-       writel(ddrphy_mr2[freq_e], &phy->mr2);
-       writel(ddr3plus ? 0x00000800 : 0x00000000, &phy->mr3);
-
-       while (!(readl(&phy->pgsr[0]) & PGSR0_IDONE))
-               ;
-
-       writel(0x0300C473, &phy->pgcr[1]);
-       writel(0x0000005D, &phy->zq[0].cr[1]);
-
-       return 0;
-}
index 87f6d0d3a25fb5a4a6c64c4a44777b8ef47b7ac2..2bcfc1e5fb28b6cb661d8eb39fa16eb8d2cf0c98 100644 (file)
@@ -158,8 +158,7 @@ struct ddrphy {
 /* SoC-specific parameters */
 #define NR_DATX8_PER_DDRPHY    2
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
+#if defined(CONFIG_ARCH_UNIPHIER_LD4) || defined(CONFIG_ARCH_UNIPHIER_SLD8)
 #define NR_DDRPHY_PER_CH               1
 #else
 #define NR_DDRPHY_PER_CH               2
diff --git a/arch/arm/mach-uniphier/dram/umc-ld4.c b/arch/arm/mach-uniphier/dram/umc-ld4.c
new file mode 100644 (file)
index 0000000..72447cc
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+#include <asm/processor.h>
+
+#include "../init.h"
+#include "ddrphy-regs.h"
+#include "umc-regs.h"
+
+#define DRAM_CH_NR     2
+
+enum dram_freq {
+       DRAM_FREQ_1333M,
+       DRAM_FREQ_1600M,
+       DRAM_FREQ_NR,
+};
+
+enum dram_size {
+       DRAM_SZ_128M,
+       DRAM_SZ_256M,
+       DRAM_SZ_NR,
+};
+
+static u32 umc_cmdctla_plus[DRAM_FREQ_NR] = {0x45990b11, 0x36bb0f17};
+static u32 umc_cmdctlb_plus[DRAM_FREQ_NR] = {0x16958924, 0x18c6aa24};
+static u32 umc_spcctla[DRAM_FREQ_NR][DRAM_SZ_NR] = {
+       {0x00240512, 0x00350512},
+       {0x002b0617, 0x003f0617},
+};
+static u32 umc_spcctlb[DRAM_FREQ_NR] = {0x00ff0006, 0x00ff0008};
+static u32 umc_rdatactl[DRAM_FREQ_NR] = {0x000a00ac, 0x000c00ae};
+
+static int umc_get_rank(int ch)
+{
+       return ch;      /* ch0: rank0, ch1: rank1 for this SoC */
+}
+
+static void umc_start_ssif(void __iomem *ssif_base)
+{
+       writel(0x00000000, ssif_base + 0x0000b004);
+       writel(0xffffffff, ssif_base + 0x0000c004);
+       writel(0x000fffcf, ssif_base + 0x0000c008);
+       writel(0x00000001, ssif_base + 0x0000b000);
+       writel(0x00000001, ssif_base + 0x0000c000);
+       writel(0x03010101, ssif_base + UMC_MDMCHSEL);
+       writel(0x03010100, ssif_base + UMC_DMDCHSEL);
+
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_FETCH);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_WC);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_RC);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_DST);
+
+       writel(0x00000001, ssif_base + UMC_CPURST);
+       writel(0x00000001, ssif_base + UMC_IDSRST);
+       writel(0x00000001, ssif_base + UMC_IXMRST);
+       writel(0x00000001, ssif_base + UMC_MDMRST);
+       writel(0x00000001, ssif_base + UMC_MDDRST);
+       writel(0x00000001, ssif_base + UMC_SIORST);
+       writel(0x00000001, ssif_base + UMC_VIORST);
+       writel(0x00000001, ssif_base + UMC_FRCRST);
+       writel(0x00000001, ssif_base + UMC_RGLRST);
+       writel(0x00000001, ssif_base + UMC_AIORST);
+       writel(0x00000001, ssif_base + UMC_DMDRST);
+}
+
+static int umc_dramcont_init(void __iomem *dc_base, void __iomem *ca_base,
+                            int freq, unsigned long size, bool ddr3plus)
+{
+       enum dram_freq freq_e;
+       enum dram_size size_e;
+
+       if (!ddr3plus) {
+               pr_err("DDR3 standard is not supported\n");
+               return -EINVAL;
+       }
+
+       switch (freq) {
+       case 1333:
+               freq_e = DRAM_FREQ_1333M;
+               break;
+       case 1600:
+               freq_e = DRAM_FREQ_1600M;
+               break;
+       default:
+               pr_err("unsupported DRAM frequency %d MHz\n", freq);
+               return -EINVAL;
+       }
+
+       switch (size) {
+       case 0:
+               return 0;
+       case SZ_128M:
+               size_e = DRAM_SZ_128M;
+               break;
+       case SZ_256M:
+               size_e = DRAM_SZ_256M;
+               break;
+       default:
+               pr_err("unsupported DRAM size 0x%08lx\n", size);
+               return -EINVAL;
+       }
+
+       writel(umc_cmdctla_plus[freq_e], dc_base + UMC_CMDCTLA);
+       writel(umc_cmdctlb_plus[freq_e], dc_base + UMC_CMDCTLB);
+       writel(umc_spcctla[freq_e][size_e], dc_base + UMC_SPCCTLA);
+       writel(umc_spcctlb[freq_e], dc_base + UMC_SPCCTLB);
+       writel(umc_rdatactl[freq_e], dc_base + UMC_RDATACTL_D0);
+       writel(0x04060806, dc_base + UMC_WDATACTL_D0);
+       writel(0x04a02000, dc_base + UMC_DATASET);
+       writel(0x00000000, ca_base + 0x2300);
+       writel(0x00400020, dc_base + UMC_DCCGCTL);
+       writel(0x00000003, dc_base + 0x7000);
+       writel(0x0000000f, dc_base + 0x8000);
+       writel(0x000000c3, dc_base + 0x8004);
+       writel(0x00000071, dc_base + 0x8008);
+       writel(0x0000003b, dc_base + UMC_DICGCTLA);
+       writel(0x020a0808, dc_base + UMC_DICGCTLB);
+       writel(0x00000004, dc_base + UMC_FLOWCTLG);
+       writel(0x80000201, ca_base + 0xc20);
+       writel(0x0801e01e, dc_base + UMC_FLOWCTLA);
+       writel(0x00200000, dc_base + UMC_FLOWCTLB);
+       writel(0x00004444, dc_base + UMC_FLOWCTLC);
+       writel(0x200a0a00, dc_base + UMC_SPCSETB);
+       writel(0x00000000, dc_base + UMC_SPCSETD);
+       writel(0x00000520, dc_base + UMC_DFICUPDCTLA);
+
+       return 0;
+}
+
+static int umc_ch_init(void __iomem *dc_base, void __iomem *ca_base,
+                      int freq, unsigned long size, bool ddr3plus, int ch)
+{
+       void __iomem *phy_base = dc_base + 0x00001000;
+       int ret;
+
+       writel(UMC_INITSET_INIT1EN, dc_base + UMC_INITSET);
+       while (readl(dc_base + UMC_INITSET) & UMC_INITSTAT_INIT1ST)
+               cpu_relax();
+
+       writel(0x00000101, dc_base + UMC_DIOCTLA);
+
+       ret = ph1_ld4_ddrphy_init(phy_base, freq, ddr3plus);
+       if (ret)
+               return ret;
+
+       ddrphy_prepare_training(phy_base, umc_get_rank(ch));
+       ret = ddrphy_training(phy_base);
+       if (ret)
+               return ret;
+
+       return umc_dramcont_init(dc_base, ca_base, freq, size, ddr3plus);
+}
+
+int ph1_ld4_umc_init(const struct uniphier_board_data *bd)
+{
+       void __iomem *umc_base = (void __iomem *)0x5b800000;
+       void __iomem *ca_base = umc_base + 0x00001000;
+       void __iomem *dc_base = umc_base + 0x00400000;
+       void __iomem *ssif_base = umc_base;
+       int ch, ret;
+
+       for (ch = 0; ch < DRAM_CH_NR; ch++) {
+               ret = umc_ch_init(dc_base, ca_base, bd->dram_freq,
+                                 bd->dram_ch[ch].size,
+                                 bd->dram_ddr3plus, ch);
+               if (ret) {
+                       pr_err("failed to initialize UMC ch%d\n", ch);
+                       return ret;
+               }
+
+               ca_base += 0x00001000;
+               dc_base += 0x00200000;
+       }
+
+       umc_start_ssif(ssif_base);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/dram/umc-ph1-ld4.c b/arch/arm/mach-uniphier/dram/umc-ph1-ld4.c
deleted file mode 100644 (file)
index 72447cc..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-#include <asm/processor.h>
-
-#include "../init.h"
-#include "ddrphy-regs.h"
-#include "umc-regs.h"
-
-#define DRAM_CH_NR     2
-
-enum dram_freq {
-       DRAM_FREQ_1333M,
-       DRAM_FREQ_1600M,
-       DRAM_FREQ_NR,
-};
-
-enum dram_size {
-       DRAM_SZ_128M,
-       DRAM_SZ_256M,
-       DRAM_SZ_NR,
-};
-
-static u32 umc_cmdctla_plus[DRAM_FREQ_NR] = {0x45990b11, 0x36bb0f17};
-static u32 umc_cmdctlb_plus[DRAM_FREQ_NR] = {0x16958924, 0x18c6aa24};
-static u32 umc_spcctla[DRAM_FREQ_NR][DRAM_SZ_NR] = {
-       {0x00240512, 0x00350512},
-       {0x002b0617, 0x003f0617},
-};
-static u32 umc_spcctlb[DRAM_FREQ_NR] = {0x00ff0006, 0x00ff0008};
-static u32 umc_rdatactl[DRAM_FREQ_NR] = {0x000a00ac, 0x000c00ae};
-
-static int umc_get_rank(int ch)
-{
-       return ch;      /* ch0: rank0, ch1: rank1 for this SoC */
-}
-
-static void umc_start_ssif(void __iomem *ssif_base)
-{
-       writel(0x00000000, ssif_base + 0x0000b004);
-       writel(0xffffffff, ssif_base + 0x0000c004);
-       writel(0x000fffcf, ssif_base + 0x0000c008);
-       writel(0x00000001, ssif_base + 0x0000b000);
-       writel(0x00000001, ssif_base + 0x0000c000);
-       writel(0x03010101, ssif_base + UMC_MDMCHSEL);
-       writel(0x03010100, ssif_base + UMC_DMDCHSEL);
-
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_FETCH);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_WC);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_RC);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_DST);
-
-       writel(0x00000001, ssif_base + UMC_CPURST);
-       writel(0x00000001, ssif_base + UMC_IDSRST);
-       writel(0x00000001, ssif_base + UMC_IXMRST);
-       writel(0x00000001, ssif_base + UMC_MDMRST);
-       writel(0x00000001, ssif_base + UMC_MDDRST);
-       writel(0x00000001, ssif_base + UMC_SIORST);
-       writel(0x00000001, ssif_base + UMC_VIORST);
-       writel(0x00000001, ssif_base + UMC_FRCRST);
-       writel(0x00000001, ssif_base + UMC_RGLRST);
-       writel(0x00000001, ssif_base + UMC_AIORST);
-       writel(0x00000001, ssif_base + UMC_DMDRST);
-}
-
-static int umc_dramcont_init(void __iomem *dc_base, void __iomem *ca_base,
-                            int freq, unsigned long size, bool ddr3plus)
-{
-       enum dram_freq freq_e;
-       enum dram_size size_e;
-
-       if (!ddr3plus) {
-               pr_err("DDR3 standard is not supported\n");
-               return -EINVAL;
-       }
-
-       switch (freq) {
-       case 1333:
-               freq_e = DRAM_FREQ_1333M;
-               break;
-       case 1600:
-               freq_e = DRAM_FREQ_1600M;
-               break;
-       default:
-               pr_err("unsupported DRAM frequency %d MHz\n", freq);
-               return -EINVAL;
-       }
-
-       switch (size) {
-       case 0:
-               return 0;
-       case SZ_128M:
-               size_e = DRAM_SZ_128M;
-               break;
-       case SZ_256M:
-               size_e = DRAM_SZ_256M;
-               break;
-       default:
-               pr_err("unsupported DRAM size 0x%08lx\n", size);
-               return -EINVAL;
-       }
-
-       writel(umc_cmdctla_plus[freq_e], dc_base + UMC_CMDCTLA);
-       writel(umc_cmdctlb_plus[freq_e], dc_base + UMC_CMDCTLB);
-       writel(umc_spcctla[freq_e][size_e], dc_base + UMC_SPCCTLA);
-       writel(umc_spcctlb[freq_e], dc_base + UMC_SPCCTLB);
-       writel(umc_rdatactl[freq_e], dc_base + UMC_RDATACTL_D0);
-       writel(0x04060806, dc_base + UMC_WDATACTL_D0);
-       writel(0x04a02000, dc_base + UMC_DATASET);
-       writel(0x00000000, ca_base + 0x2300);
-       writel(0x00400020, dc_base + UMC_DCCGCTL);
-       writel(0x00000003, dc_base + 0x7000);
-       writel(0x0000000f, dc_base + 0x8000);
-       writel(0x000000c3, dc_base + 0x8004);
-       writel(0x00000071, dc_base + 0x8008);
-       writel(0x0000003b, dc_base + UMC_DICGCTLA);
-       writel(0x020a0808, dc_base + UMC_DICGCTLB);
-       writel(0x00000004, dc_base + UMC_FLOWCTLG);
-       writel(0x80000201, ca_base + 0xc20);
-       writel(0x0801e01e, dc_base + UMC_FLOWCTLA);
-       writel(0x00200000, dc_base + UMC_FLOWCTLB);
-       writel(0x00004444, dc_base + UMC_FLOWCTLC);
-       writel(0x200a0a00, dc_base + UMC_SPCSETB);
-       writel(0x00000000, dc_base + UMC_SPCSETD);
-       writel(0x00000520, dc_base + UMC_DFICUPDCTLA);
-
-       return 0;
-}
-
-static int umc_ch_init(void __iomem *dc_base, void __iomem *ca_base,
-                      int freq, unsigned long size, bool ddr3plus, int ch)
-{
-       void __iomem *phy_base = dc_base + 0x00001000;
-       int ret;
-
-       writel(UMC_INITSET_INIT1EN, dc_base + UMC_INITSET);
-       while (readl(dc_base + UMC_INITSET) & UMC_INITSTAT_INIT1ST)
-               cpu_relax();
-
-       writel(0x00000101, dc_base + UMC_DIOCTLA);
-
-       ret = ph1_ld4_ddrphy_init(phy_base, freq, ddr3plus);
-       if (ret)
-               return ret;
-
-       ddrphy_prepare_training(phy_base, umc_get_rank(ch));
-       ret = ddrphy_training(phy_base);
-       if (ret)
-               return ret;
-
-       return umc_dramcont_init(dc_base, ca_base, freq, size, ddr3plus);
-}
-
-int ph1_ld4_umc_init(const struct uniphier_board_data *bd)
-{
-       void __iomem *umc_base = (void __iomem *)0x5b800000;
-       void __iomem *ca_base = umc_base + 0x00001000;
-       void __iomem *dc_base = umc_base + 0x00400000;
-       void __iomem *ssif_base = umc_base;
-       int ch, ret;
-
-       for (ch = 0; ch < DRAM_CH_NR; ch++) {
-               ret = umc_ch_init(dc_base, ca_base, bd->dram_freq,
-                                 bd->dram_ch[ch].size,
-                                 bd->dram_ddr3plus, ch);
-               if (ret) {
-                       pr_err("failed to initialize UMC ch%d\n", ch);
-                       return ret;
-               }
-
-               ca_base += 0x00001000;
-               dc_base += 0x00200000;
-       }
-
-       umc_start_ssif(ssif_base);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/dram/umc-ph1-pro4.c b/arch/arm/mach-uniphier/dram/umc-ph1-pro4.c
deleted file mode 100644 (file)
index 23fb7b9..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-#include <asm/processor.h>
-
-#include "../init.h"
-#include "ddrphy-regs.h"
-#include "umc-regs.h"
-
-#define DRAM_CH_NR     2
-
-enum dram_size {
-       DRAM_SZ_128M,
-       DRAM_SZ_256M,
-       DRAM_SZ_512M,
-       DRAM_SZ_NR,
-};
-
-static u32 umc_spcctla[DRAM_SZ_NR] = {0x002b0617, 0x003f0617, 0x00770617};
-
-static void umc_start_ssif(void __iomem *ssif_base)
-{
-       writel(0x00000000, ssif_base + 0x0000b004);
-       writel(0xffffffff, ssif_base + 0x0000c004);
-       writel(0x000fffcf, ssif_base + 0x0000c008);
-       writel(0x00000001, ssif_base + 0x0000b000);
-       writel(0x00000001, ssif_base + 0x0000c000);
-
-       writel(0x03010100, ssif_base + UMC_HDMCHSEL);
-       writel(0x03010101, ssif_base + UMC_MDMCHSEL);
-       writel(0x03010100, ssif_base + UMC_DVCCHSEL);
-       writel(0x03010100, ssif_base + UMC_DMDCHSEL);
-
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_FETCH);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_WC);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_RC);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_DST);
-       writel(0x00000000, ssif_base + 0x0000c044);             /* DCGIV_SSIF_REG */
-
-       writel(0x00000001, ssif_base + UMC_CPURST);
-       writel(0x00000001, ssif_base + UMC_IDSRST);
-       writel(0x00000001, ssif_base + UMC_IXMRST);
-       writel(0x00000001, ssif_base + UMC_HDMRST);
-       writel(0x00000001, ssif_base + UMC_MDMRST);
-       writel(0x00000001, ssif_base + UMC_HDDRST);
-       writel(0x00000001, ssif_base + UMC_MDDRST);
-       writel(0x00000001, ssif_base + UMC_SIORST);
-       writel(0x00000001, ssif_base + UMC_GIORST);
-       writel(0x00000001, ssif_base + UMC_HD2RST);
-       writel(0x00000001, ssif_base + UMC_VIORST);
-       writel(0x00000001, ssif_base + UMC_DVCRST);
-       writel(0x00000001, ssif_base + UMC_RGLRST);
-       writel(0x00000001, ssif_base + UMC_VPERST);
-       writel(0x00000001, ssif_base + UMC_AIORST);
-       writel(0x00000001, ssif_base + UMC_DMDRST);
-}
-
-static int umc_dramcont_init(void __iomem *dc_base, void __iomem *ca_base,
-                            int freq, unsigned long size, bool ddr3plus)
-{
-       enum dram_size size_e;
-
-       if (freq != 1600) {
-               pr_err("Unsupported DDR frequency %d MHz\n", freq);
-               return -EINVAL;
-       }
-
-       if (ddr3plus) {
-               pr_err("DDR3+ is not supported\n");
-               return -EINVAL;
-       }
-
-       switch (size) {
-       case SZ_128M:
-               size_e = DRAM_SZ_128M;
-               break;
-       case SZ_256M:
-               size_e = DRAM_SZ_256M;
-               break;
-       case SZ_512M:
-               size_e = DRAM_SZ_512M;
-               break;
-       default:
-               pr_err("unsupported DRAM size 0x%08lx (per 16bit)\n", size);
-               return -EINVAL;
-       }
-
-       writel(0x66bb0f17, dc_base + UMC_CMDCTLA);
-       writel(0x18c6aa44, dc_base + UMC_CMDCTLB);
-       writel(umc_spcctla[size_e], dc_base + UMC_SPCCTLA);
-       writel(0x00ff0008, dc_base + UMC_SPCCTLB);
-       writel(0x000c00ae, dc_base + UMC_RDATACTL_D0);
-       writel(0x000c00ae, dc_base + UMC_RDATACTL_D1);
-       writel(0x04060802, dc_base + UMC_WDATACTL_D0);
-       writel(0x04060802, dc_base + UMC_WDATACTL_D1);
-       writel(0x04a02000, dc_base + UMC_DATASET);
-       writel(0x00000000, ca_base + 0x2300);
-       writel(0x00400020, dc_base + UMC_DCCGCTL);
-       writel(0x0000000f, dc_base + 0x7000);
-       writel(0x0000000f, dc_base + 0x8000);
-       writel(0x000000c3, dc_base + 0x8004);
-       writel(0x00000071, dc_base + 0x8008);
-       writel(0x00000004, dc_base + UMC_FLOWCTLG);
-       writel(0x00000000, dc_base + 0x0060);
-       writel(0x80000201, ca_base + 0xc20);
-       writel(0x0801e01e, dc_base + UMC_FLOWCTLA);
-       writel(0x00200000, dc_base + UMC_FLOWCTLB);
-       writel(0x00004444, dc_base + UMC_FLOWCTLC);
-       writel(0x200a0a00, dc_base + UMC_SPCSETB);
-       writel(0x00010000, dc_base + UMC_SPCSETD);
-       writel(0x80000020, dc_base + UMC_DFICUPDCTLA);
-
-       return 0;
-}
-
-static int umc_ch_init(void __iomem *dc_base, void __iomem *ca_base,
-                      int freq, unsigned long size, unsigned int width,
-                      bool ddr3plus)
-{
-       void __iomem *phy_base = dc_base + 0x00001000;
-       int nr_phy = width / 16;
-       int phy, ret;
-
-       writel(UMC_INITSET_INIT1EN, dc_base + UMC_INITSET);
-       while (readl(dc_base + UMC_INITSET) & UMC_INITSTAT_INIT1ST)
-               cpu_relax();
-
-       for (phy = 0; phy < nr_phy; phy++) {
-               writel(0x00000100 | ((1 << (phy + 1)) - 1),
-                      dc_base + UMC_DIOCTLA);
-
-               ret = ph1_ld4_ddrphy_init(phy_base, freq, ddr3plus);
-               if (ret)
-                       return ret;
-
-               ddrphy_prepare_training(phy_base, phy);
-               ret = ddrphy_training(phy_base);
-               if (ret)
-                       return ret;
-
-               phy_base += 0x00001000;
-       }
-
-       return umc_dramcont_init(dc_base, ca_base, freq, size / (width / 16),
-                                ddr3plus);
-}
-
-int ph1_pro4_umc_init(const struct uniphier_board_data *bd)
-{
-       void __iomem *umc_base = (void __iomem *)0x5b800000;
-       void __iomem *ca_base = umc_base + 0x00001000;
-       void __iomem *dc_base = umc_base + 0x00400000;
-       void __iomem *ssif_base = umc_base;
-       int ch, ret;
-
-       for (ch = 0; ch < DRAM_CH_NR; ch++) {
-               ret = umc_ch_init(dc_base, ca_base, bd->dram_freq,
-                                 bd->dram_ch[ch].size,
-                                 bd->dram_ch[ch].width,
-                                 bd->dram_ddr3plus);
-               if (ret) {
-                       pr_err("failed to initialize UMC ch%d\n", ch);
-                       return ret;
-               }
-
-               ca_base += 0x00001000;
-               dc_base += 0x00200000;
-       }
-
-       umc_start_ssif(ssif_base);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/dram/umc-ph1-sld8.c b/arch/arm/mach-uniphier/dram/umc-ph1-sld8.c
deleted file mode 100644 (file)
index 6cacd25..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-#include <asm/processor.h>
-
-#include "../init.h"
-#include "ddrphy-regs.h"
-#include "umc-regs.h"
-
-#define DRAM_CH_NR     2
-
-enum dram_freq {
-       DRAM_FREQ_1333M,
-       DRAM_FREQ_1600M,
-       DRAM_FREQ_NR,
-};
-
-enum dram_size {
-       DRAM_SZ_128M,
-       DRAM_SZ_256M,
-       DRAM_SZ_512M,
-       DRAM_SZ_NR,
-};
-
-static u32 umc_cmdctla[DRAM_FREQ_NR] = {0x55990b11, 0x66bb0f17};
-static u32 umc_cmdctla_plus[DRAM_FREQ_NR] = {0x45990b11, 0x46bb0f17};
-static u32 umc_cmdctlb[DRAM_FREQ_NR] = {0x16958944, 0x18c6ab44};
-static u32 umc_cmdctlb_plus[DRAM_FREQ_NR] = {0x16958924, 0x18c6ab24};
-static u32 umc_spcctla[DRAM_FREQ_NR][DRAM_SZ_NR] = {
-       {0x00240512, 0x00350512, 0x00000000}, /* no data for 1333MHz,128MB */
-       {0x002b0617, 0x003f0617, 0x00670617},
-};
-static u32 umc_spcctlb[DRAM_FREQ_NR] = {0x00ff0006, 0x00ff0008};
-static u32 umc_rdatactl[DRAM_FREQ_NR] = {0x000a00ac, 0x000c00ac};
-
-static int umc_get_rank(int ch)
-{
-       return ch;      /* ch0: rank0, ch1: rank1 for this SoC */
-}
-
-static void umc_start_ssif(void __iomem *ssif_base)
-{
-       writel(0x00000000, ssif_base + 0x0000b004);
-       writel(0xffffffff, ssif_base + 0x0000c004);
-       writel(0x000fffcf, ssif_base + 0x0000c008);
-       writel(0x00000001, ssif_base + 0x0000b000);
-       writel(0x00000001, ssif_base + 0x0000c000);
-       writel(0x03010101, ssif_base + UMC_MDMCHSEL);
-       writel(0x03010100, ssif_base + UMC_DMDCHSEL);
-
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_FETCH);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC0);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC1);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_WC);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_RC);
-       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_DST);
-
-       writel(0x00000001, ssif_base + UMC_CPURST);
-       writel(0x00000001, ssif_base + UMC_IDSRST);
-       writel(0x00000001, ssif_base + UMC_IXMRST);
-       writel(0x00000001, ssif_base + UMC_MDMRST);
-       writel(0x00000001, ssif_base + UMC_MDDRST);
-       writel(0x00000001, ssif_base + UMC_SIORST);
-       writel(0x00000001, ssif_base + UMC_VIORST);
-       writel(0x00000001, ssif_base + UMC_FRCRST);
-       writel(0x00000001, ssif_base + UMC_RGLRST);
-       writel(0x00000001, ssif_base + UMC_AIORST);
-       writel(0x00000001, ssif_base + UMC_DMDRST);
-}
-
-static int umc_dramcont_init(void __iomem *dc_base, void __iomem *ca_base,
-                            int freq, unsigned long size, bool ddr3plus)
-{
-       enum dram_freq freq_e;
-       enum dram_size size_e;
-
-       switch (freq) {
-       case 1333:
-               freq_e = DRAM_FREQ_1333M;
-               break;
-       case 1600:
-               freq_e = DRAM_FREQ_1600M;
-               break;
-       default:
-               pr_err("unsupported DRAM frequency %d MHz\n", freq);
-               return -EINVAL;
-       }
-
-       switch (size) {
-       case 0:
-               return 0;
-       case SZ_128M:
-               size_e = DRAM_SZ_128M;
-               break;
-       case SZ_256M:
-               size_e = DRAM_SZ_256M;
-               break;
-       case SZ_512M:
-               size_e = DRAM_SZ_512M;
-               break;
-       default:
-               pr_err("unsupported DRAM size 0x%08lx\n", size);
-               return -EINVAL;
-       }
-
-       writel((ddr3plus ? umc_cmdctla_plus : umc_cmdctla)[freq_e],
-              dc_base + UMC_CMDCTLA);
-       writel((ddr3plus ? umc_cmdctlb_plus : umc_cmdctlb)[freq_e],
-              dc_base + UMC_CMDCTLB);
-       writel(umc_spcctla[freq_e][size_e], dc_base + UMC_SPCCTLA);
-       writel(umc_spcctlb[freq_e], dc_base + UMC_SPCCTLB);
-       writel(umc_rdatactl[freq_e], dc_base + UMC_RDATACTL_D0);
-       writel(0x04060806, dc_base + UMC_WDATACTL_D0);
-       writel(0x04a02000, dc_base + UMC_DATASET);
-       writel(0x00000000, ca_base + 0x2300);
-       writel(0x00400020, dc_base + UMC_DCCGCTL);
-       writel(0x00000003, dc_base + 0x7000);
-       writel(0x0000004f, dc_base + 0x8000);
-       writel(0x000000c3, dc_base + 0x8004);
-       writel(0x00000077, dc_base + 0x8008);
-       writel(0x0000003b, dc_base + UMC_DICGCTLA);
-       writel(0x020a0808, dc_base + UMC_DICGCTLB);
-       writel(0x00000004, dc_base + UMC_FLOWCTLG);
-       writel(0x80000201, ca_base + 0xc20);
-       writel(0x0801e01e, dc_base + UMC_FLOWCTLA);
-       writel(0x00200000, dc_base + UMC_FLOWCTLB);
-       writel(0x00004444, dc_base + UMC_FLOWCTLC);
-       writel(0x200a0a00, dc_base + UMC_SPCSETB);
-       writel(0x00000000, dc_base + UMC_SPCSETD);
-       writel(0x00000520, dc_base + UMC_DFICUPDCTLA);
-
-       return 0;
-}
-
-static int umc_ch_init(void __iomem *dc_base, void __iomem *ca_base,
-                      int freq, unsigned long size, bool ddr3plus, int ch)
-{
-       void __iomem *phy_base = dc_base + 0x00001000;
-       int ret;
-
-       writel(UMC_INITSET_INIT1EN, dc_base + UMC_INITSET);
-       while (readl(dc_base + UMC_INITSET) & UMC_INITSTAT_INIT1ST)
-               cpu_relax();
-
-       writel(0x00000101, dc_base + UMC_DIOCTLA);
-
-       ret = ph1_ld4_ddrphy_init(phy_base, freq, ddr3plus);
-       if (ret)
-               return ret;
-
-       ddrphy_prepare_training(phy_base, umc_get_rank(ch));
-       ret = ddrphy_training(phy_base);
-       if (ret)
-               return ret;
-
-       return umc_dramcont_init(dc_base, ca_base, freq, size, ddr3plus);
-}
-
-int ph1_sld8_umc_init(const struct uniphier_board_data *bd)
-{
-       void __iomem *umc_base = (void __iomem *)0x5b800000;
-       void __iomem *ca_base = umc_base + 0x00001000;
-       void __iomem *dc_base = umc_base + 0x00400000;
-       void __iomem *ssif_base = umc_base;
-       int ch, ret;
-
-       for (ch = 0; ch < DRAM_CH_NR; ch++) {
-               ret = umc_ch_init(dc_base, ca_base, bd->dram_freq,
-                                 bd->dram_ch[ch].size,
-                                 bd->dram_ddr3plus, ch);
-               if (ret) {
-                       pr_err("failed to initialize UMC ch%d\n", ch);
-                       return ret;
-               }
-
-               ca_base += 0x00001000;
-               dc_base += 0x00200000;
-       }
-
-       umc_start_ssif(ssif_base);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/dram/umc-pro4.c b/arch/arm/mach-uniphier/dram/umc-pro4.c
new file mode 100644 (file)
index 0000000..23fb7b9
--- /dev/null
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+#include <asm/processor.h>
+
+#include "../init.h"
+#include "ddrphy-regs.h"
+#include "umc-regs.h"
+
+#define DRAM_CH_NR     2
+
+enum dram_size {
+       DRAM_SZ_128M,
+       DRAM_SZ_256M,
+       DRAM_SZ_512M,
+       DRAM_SZ_NR,
+};
+
+static u32 umc_spcctla[DRAM_SZ_NR] = {0x002b0617, 0x003f0617, 0x00770617};
+
+static void umc_start_ssif(void __iomem *ssif_base)
+{
+       writel(0x00000000, ssif_base + 0x0000b004);
+       writel(0xffffffff, ssif_base + 0x0000c004);
+       writel(0x000fffcf, ssif_base + 0x0000c008);
+       writel(0x00000001, ssif_base + 0x0000b000);
+       writel(0x00000001, ssif_base + 0x0000c000);
+
+       writel(0x03010100, ssif_base + UMC_HDMCHSEL);
+       writel(0x03010101, ssif_base + UMC_MDMCHSEL);
+       writel(0x03010100, ssif_base + UMC_DVCCHSEL);
+       writel(0x03010100, ssif_base + UMC_DMDCHSEL);
+
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_FETCH);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_WC);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_RC);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_DST);
+       writel(0x00000000, ssif_base + 0x0000c044);             /* DCGIV_SSIF_REG */
+
+       writel(0x00000001, ssif_base + UMC_CPURST);
+       writel(0x00000001, ssif_base + UMC_IDSRST);
+       writel(0x00000001, ssif_base + UMC_IXMRST);
+       writel(0x00000001, ssif_base + UMC_HDMRST);
+       writel(0x00000001, ssif_base + UMC_MDMRST);
+       writel(0x00000001, ssif_base + UMC_HDDRST);
+       writel(0x00000001, ssif_base + UMC_MDDRST);
+       writel(0x00000001, ssif_base + UMC_SIORST);
+       writel(0x00000001, ssif_base + UMC_GIORST);
+       writel(0x00000001, ssif_base + UMC_HD2RST);
+       writel(0x00000001, ssif_base + UMC_VIORST);
+       writel(0x00000001, ssif_base + UMC_DVCRST);
+       writel(0x00000001, ssif_base + UMC_RGLRST);
+       writel(0x00000001, ssif_base + UMC_VPERST);
+       writel(0x00000001, ssif_base + UMC_AIORST);
+       writel(0x00000001, ssif_base + UMC_DMDRST);
+}
+
+static int umc_dramcont_init(void __iomem *dc_base, void __iomem *ca_base,
+                            int freq, unsigned long size, bool ddr3plus)
+{
+       enum dram_size size_e;
+
+       if (freq != 1600) {
+               pr_err("Unsupported DDR frequency %d MHz\n", freq);
+               return -EINVAL;
+       }
+
+       if (ddr3plus) {
+               pr_err("DDR3+ is not supported\n");
+               return -EINVAL;
+       }
+
+       switch (size) {
+       case SZ_128M:
+               size_e = DRAM_SZ_128M;
+               break;
+       case SZ_256M:
+               size_e = DRAM_SZ_256M;
+               break;
+       case SZ_512M:
+               size_e = DRAM_SZ_512M;
+               break;
+       default:
+               pr_err("unsupported DRAM size 0x%08lx (per 16bit)\n", size);
+               return -EINVAL;
+       }
+
+       writel(0x66bb0f17, dc_base + UMC_CMDCTLA);
+       writel(0x18c6aa44, dc_base + UMC_CMDCTLB);
+       writel(umc_spcctla[size_e], dc_base + UMC_SPCCTLA);
+       writel(0x00ff0008, dc_base + UMC_SPCCTLB);
+       writel(0x000c00ae, dc_base + UMC_RDATACTL_D0);
+       writel(0x000c00ae, dc_base + UMC_RDATACTL_D1);
+       writel(0x04060802, dc_base + UMC_WDATACTL_D0);
+       writel(0x04060802, dc_base + UMC_WDATACTL_D1);
+       writel(0x04a02000, dc_base + UMC_DATASET);
+       writel(0x00000000, ca_base + 0x2300);
+       writel(0x00400020, dc_base + UMC_DCCGCTL);
+       writel(0x0000000f, dc_base + 0x7000);
+       writel(0x0000000f, dc_base + 0x8000);
+       writel(0x000000c3, dc_base + 0x8004);
+       writel(0x00000071, dc_base + 0x8008);
+       writel(0x00000004, dc_base + UMC_FLOWCTLG);
+       writel(0x00000000, dc_base + 0x0060);
+       writel(0x80000201, ca_base + 0xc20);
+       writel(0x0801e01e, dc_base + UMC_FLOWCTLA);
+       writel(0x00200000, dc_base + UMC_FLOWCTLB);
+       writel(0x00004444, dc_base + UMC_FLOWCTLC);
+       writel(0x200a0a00, dc_base + UMC_SPCSETB);
+       writel(0x00010000, dc_base + UMC_SPCSETD);
+       writel(0x80000020, dc_base + UMC_DFICUPDCTLA);
+
+       return 0;
+}
+
+static int umc_ch_init(void __iomem *dc_base, void __iomem *ca_base,
+                      int freq, unsigned long size, unsigned int width,
+                      bool ddr3plus)
+{
+       void __iomem *phy_base = dc_base + 0x00001000;
+       int nr_phy = width / 16;
+       int phy, ret;
+
+       writel(UMC_INITSET_INIT1EN, dc_base + UMC_INITSET);
+       while (readl(dc_base + UMC_INITSET) & UMC_INITSTAT_INIT1ST)
+               cpu_relax();
+
+       for (phy = 0; phy < nr_phy; phy++) {
+               writel(0x00000100 | ((1 << (phy + 1)) - 1),
+                      dc_base + UMC_DIOCTLA);
+
+               ret = ph1_ld4_ddrphy_init(phy_base, freq, ddr3plus);
+               if (ret)
+                       return ret;
+
+               ddrphy_prepare_training(phy_base, phy);
+               ret = ddrphy_training(phy_base);
+               if (ret)
+                       return ret;
+
+               phy_base += 0x00001000;
+       }
+
+       return umc_dramcont_init(dc_base, ca_base, freq, size / (width / 16),
+                                ddr3plus);
+}
+
+int ph1_pro4_umc_init(const struct uniphier_board_data *bd)
+{
+       void __iomem *umc_base = (void __iomem *)0x5b800000;
+       void __iomem *ca_base = umc_base + 0x00001000;
+       void __iomem *dc_base = umc_base + 0x00400000;
+       void __iomem *ssif_base = umc_base;
+       int ch, ret;
+
+       for (ch = 0; ch < DRAM_CH_NR; ch++) {
+               ret = umc_ch_init(dc_base, ca_base, bd->dram_freq,
+                                 bd->dram_ch[ch].size,
+                                 bd->dram_ch[ch].width,
+                                 bd->dram_ddr3plus);
+               if (ret) {
+                       pr_err("failed to initialize UMC ch%d\n", ch);
+                       return ret;
+               }
+
+               ca_base += 0x00001000;
+               dc_base += 0x00200000;
+       }
+
+       umc_start_ssif(ssif_base);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/dram/umc-proxstream2.c b/arch/arm/mach-uniphier/dram/umc-proxstream2.c
deleted file mode 100644 (file)
index 50c0238..0000000
+++ /dev/null
@@ -1,637 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * based on commit 21b6e480f92ccc38fe0502e3116411d6509d3bf2 of Diag by:
- * Copyright (C) 2015 Socionext Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-#include <asm/processor.h>
-
-#include "../init.h"
-#include "../soc-info.h"
-#include "ddrmphy-regs.h"
-#include "umc-regs.h"
-
-#define DRAM_CH_NR     3
-
-enum dram_freq {
-       DRAM_FREQ_1866M,
-       DRAM_FREQ_2133M,
-       DRAM_FREQ_NR,
-};
-
-enum dram_size {
-       DRAM_SZ_256M,
-       DRAM_SZ_512M,
-       DRAM_SZ_NR,
-};
-
-static u32 ddrphy_pgcr2[DRAM_FREQ_NR] = {0x00FC7E5D, 0x00FC90AB};
-static u32 ddrphy_ptr0[DRAM_FREQ_NR] = {0x0EA09205, 0x10C0A6C6};
-static u32 ddrphy_ptr1[DRAM_FREQ_NR] = {0x0DAC041B, 0x0FA104B1};
-static u32 ddrphy_ptr3[DRAM_FREQ_NR] = {0x15171e45, 0x18182357};
-static u32 ddrphy_ptr4[DRAM_FREQ_NR] = {0x0e9ad8e9, 0x10b34157};
-static u32 ddrphy_dtpr0[DRAM_FREQ_NR] = {0x35a00d88, 0x39e40e88};
-static u32 ddrphy_dtpr1[DRAM_FREQ_NR] = {0x2288cc2c, 0x228a04d0};
-static u32 ddrphy_dtpr2[DRAM_FREQ_NR] = {0x50005e00, 0x50006a00};
-static u32 ddrphy_dtpr3[DRAM_FREQ_NR] = {0x0010cb49, 0x0010ec89};
-static u32 ddrphy_mr0[DRAM_FREQ_NR] = {0x00000115, 0x00000125};
-static u32 ddrphy_mr2[DRAM_FREQ_NR] = {0x000002a0, 0x000002a8};
-
-/* dependent on package and board design */
-static u32 ddrphy_acbdlr0[DRAM_CH_NR] = {0x0000000c, 0x0000000c, 0x00000009};
-
-static u32 umc_cmdctla[DRAM_FREQ_NR] = {0x66DD131D, 0x77EE1722};
-/*
- * The ch2 is a different generation UMC core.
- * The register spec is different, unfortunately.
- */
-static u32 umc_cmdctlb_ch01[DRAM_FREQ_NR] = {0x13E87C44, 0x18F88C44};
-static u32 umc_cmdctlb_ch2[DRAM_FREQ_NR] = {0x19E8DC44, 0x1EF8EC44};
-static u32 umc_spcctla[DRAM_FREQ_NR][DRAM_SZ_NR] = {
-       {0x004A071D, 0x0078071D},
-       {0x0055081E, 0x0089081E},
-};
-
-static u32 umc_spcctlb[] = {0x00FF000A, 0x00FF000B};
-/* The ch2 is different for some reason only hardware guys know... */
-static u32 umc_flowctla_ch01[] = {0x0800001E, 0x08000022};
-static u32 umc_flowctla_ch2[] = {0x0800001E, 0x0800001E};
-
-/* DDR multiPHY */
-static inline int ddrphy_get_rank(int dx)
-{
-       return dx / 2;
-}
-
-static void ddrphy_fifo_reset(void __iomem *phy_base)
-{
-       u32 tmp;
-
-       tmp = readl(phy_base + DMPHY_PGCR0);
-       tmp &= ~DMPHY_PGCR0_PHYFRST;
-       writel(tmp, phy_base + DMPHY_PGCR0);
-
-       udelay(1);
-
-       tmp |= DMPHY_PGCR0_PHYFRST;
-       writel(tmp, phy_base + DMPHY_PGCR0);
-
-       udelay(1);
-}
-
-static void ddrphy_vt_ctrl(void __iomem *phy_base, int enable)
-{
-       u32 tmp;
-
-       tmp = readl(phy_base + DMPHY_PGCR1);
-
-       if (enable)
-               tmp &= ~DMPHY_PGCR1_INHVT;
-       else
-               tmp |= DMPHY_PGCR1_INHVT;
-
-       writel(tmp, phy_base + DMPHY_PGCR1);
-
-       if (!enable) {
-               while (!(readl(phy_base + DMPHY_PGSR1) & DMPHY_PGSR1_VTSTOP))
-                       cpu_relax();
-       }
-}
-
-static void ddrphy_dqs_delay_fixup(void __iomem *phy_base, int nr_dx, int step)
-{
-       int dx;
-       u32 lcdlr1, rdqsd;
-       void __iomem *dx_base = phy_base + DMPHY_DX_BASE;
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       for (dx = 0; dx < nr_dx; dx++) {
-               lcdlr1 = readl(dx_base + DMPHY_DX_LCDLR1);
-               rdqsd = (lcdlr1 >> 8) & 0xff;
-               rdqsd = clamp(rdqsd + step, 0U, 0xffU);
-               lcdlr1 = (lcdlr1 & ~(0xff << 8)) | (rdqsd << 8);
-               writel(lcdlr1, dx_base + DMPHY_DX_LCDLR1);
-               readl(dx_base + DMPHY_DX_LCDLR1); /* relax */
-               dx_base += DMPHY_DX_STRIDE;
-       }
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static int ddrphy_get_system_latency(void __iomem *phy_base, int width)
-{
-       void __iomem *dx_base = phy_base + DMPHY_DX_BASE;
-       const int nr_dx = width / 8;
-       int dx, rank;
-       u32 gtr;
-       int dgsl, dgsl_min = INT_MAX, dgsl_max = 0;
-
-       for (dx = 0; dx < nr_dx; dx++) {
-               gtr = readl(dx_base + DMPHY_DX_GTR);
-               for (rank = 0; rank < 4; rank++) {
-                       dgsl = gtr & 0x7;
-                       /* if dgsl is zero, this rank was not trained. skip. */
-                       if (dgsl) {
-                               dgsl_min = min(dgsl_min, dgsl);
-                               dgsl_max = max(dgsl_max, dgsl);
-                       }
-                       gtr >>= 3;
-               }
-               dx_base += DMPHY_DX_STRIDE;
-       }
-
-       if (dgsl_min != dgsl_max)
-               printf("DQS Gateing System Latencies are not all leveled.\n");
-
-       return dgsl_max;
-}
-
-static void ddrphy_init(void __iomem *phy_base, enum dram_freq freq, int width,
-                       int ch)
-{
-       u32 tmp;
-       void __iomem *zq_base, *dx_base;
-       int zq, dx;
-       int nr_dx;
-
-       nr_dx = width / 8;
-
-       writel(DMPHY_PIR_ZCALBYP,        phy_base + DMPHY_PIR);
-       /*
-        * Disable RGLVT bit (Read DQS Gating LCDL Delay VT Compensation)
-        * to avoid read error issue.
-        */
-       writel(0x07d81e37,         phy_base + DMPHY_PGCR0);
-       writel(0x0200c4e0,         phy_base + DMPHY_PGCR1);
-
-       tmp = ddrphy_pgcr2[freq];
-       if (width >= 32)
-               tmp |= DMPHY_PGCR2_DUALCHN | DMPHY_PGCR2_ACPDDC;
-       writel(tmp, phy_base + DMPHY_PGCR2);
-
-       writel(ddrphy_ptr0[freq],  phy_base + DMPHY_PTR0);
-       writel(ddrphy_ptr1[freq],  phy_base + DMPHY_PTR1);
-       writel(0x00083def,         phy_base + DMPHY_PTR2);
-       writel(ddrphy_ptr3[freq],  phy_base + DMPHY_PTR3);
-       writel(ddrphy_ptr4[freq],  phy_base + DMPHY_PTR4);
-
-       writel(ddrphy_acbdlr0[ch], phy_base + DMPHY_ACBDLR0);
-
-       writel(0x55555555, phy_base + DMPHY_ACIOCR1);
-       writel(0x00000000, phy_base + DMPHY_ACIOCR2);
-       writel(0x55555555, phy_base + DMPHY_ACIOCR3);
-       writel(0x00000000, phy_base + DMPHY_ACIOCR4);
-       writel(0x00000055, phy_base + DMPHY_ACIOCR5);
-       writel(0x00181aa4, phy_base + DMPHY_DXCCR);
-
-       writel(0x0024641e, phy_base + DMPHY_DSGCR);
-       writel(0x0000040b, phy_base + DMPHY_DCR);
-       writel(ddrphy_dtpr0[freq], phy_base + DMPHY_DTPR0);
-       writel(ddrphy_dtpr1[freq], phy_base + DMPHY_DTPR1);
-       writel(ddrphy_dtpr2[freq], phy_base + DMPHY_DTPR2);
-       writel(ddrphy_dtpr3[freq], phy_base + DMPHY_DTPR3);
-       writel(ddrphy_mr0[freq], phy_base + DMPHY_MR0);
-       writel(0x00000006,       phy_base + DMPHY_MR1);
-       writel(ddrphy_mr2[freq], phy_base + DMPHY_MR2);
-       writel(0x00000000,       phy_base + DMPHY_MR3);
-
-       tmp = 0;
-       for (dx = 0; dx < nr_dx; dx++)
-               tmp |= BIT(DMPHY_DTCR_RANKEN_SHIFT + ddrphy_get_rank(dx));
-       writel(0x90003087 | tmp, phy_base + DMPHY_DTCR);
-
-       writel(0x00000000, phy_base + DMPHY_DTAR0);
-       writel(0x00000008, phy_base + DMPHY_DTAR1);
-       writel(0x00000010, phy_base + DMPHY_DTAR2);
-       writel(0x00000018, phy_base + DMPHY_DTAR3);
-       writel(0xdd22ee11, phy_base + DMPHY_DTDR0);
-       writel(0x7788bb44, phy_base + DMPHY_DTDR1);
-
-       /* impedance control settings */
-       writel(0x04048900, phy_base + DMPHY_ZQCR);
-
-       zq_base = phy_base + DMPHY_ZQ_BASE;
-       for (zq = 0; zq < 4; zq++) {
-               /*
-                * board-dependent
-                * PXS2: CH0ZQ0=0x5B, CH1ZQ0=0x5B, CH2ZQ0=0x59, others=0x5D
-                */
-               writel(0x0007BB5D, zq_base + DMPHY_ZQ_PR);
-               zq_base += DMPHY_ZQ_STRIDE;
-       }
-
-       /* DATX8 settings */
-       dx_base = phy_base + DMPHY_DX_BASE;
-       for (dx = 0; dx < 4; dx++) {
-               tmp = readl(dx_base + DMPHY_DX_GCR0);
-               tmp &= ~DMPHY_DX_GCR0_WLRKEN_MASK;
-               tmp |= BIT(DMPHY_DX_GCR0_WLRKEN_SHIFT + ddrphy_get_rank(dx)) &
-                                               DMPHY_DX_GCR0_WLRKEN_MASK;
-               writel(tmp, dx_base + DMPHY_DX_GCR0);
-
-               writel(0x00000000, dx_base + DMPHY_DX_GCR1);
-               writel(0x00000000, dx_base + DMPHY_DX_GCR2);
-               writel(0x00000000, dx_base + DMPHY_DX_GCR3);
-               dx_base += DMPHY_DX_STRIDE;
-       }
-
-       while (!(readl(phy_base + DMPHY_PGSR0) & DMPHY_PGSR0_IDONE))
-               cpu_relax();
-
-       ddrphy_dqs_delay_fixup(phy_base, nr_dx, -4);
-}
-
-struct ddrphy_init_sequence {
-       char *description;
-       u32 init_flag;
-       u32 done_flag;
-       u32 err_flag;
-};
-
-static const struct ddrphy_init_sequence impedance_calibration_sequence[] = {
-       {
-               "Impedance Calibration",
-               DMPHY_PIR_ZCAL,
-               DMPHY_PGSR0_ZCDONE,
-               DMPHY_PGSR0_ZCERR,
-       },
-       { /* sentinel */ }
-};
-
-static const struct ddrphy_init_sequence dram_init_sequence[] = {
-       {
-               "DRAM Initialization",
-               DMPHY_PIR_DRAMRST | DMPHY_PIR_DRAMINIT,
-               DMPHY_PGSR0_DIDONE,
-               0,
-       },
-       { /* sentinel */ }
-};
-
-static const struct ddrphy_init_sequence training_sequence[] = {
-       {
-               "Write Leveling",
-               DMPHY_PIR_WL,
-               DMPHY_PGSR0_WLDONE,
-               DMPHY_PGSR0_WLERR,
-       },
-       {
-               "Read DQS Gate Training",
-               DMPHY_PIR_QSGATE,
-               DMPHY_PGSR0_QSGDONE,
-               DMPHY_PGSR0_QSGERR,
-       },
-       {
-               "Write Leveling Adjustment",
-               DMPHY_PIR_WLADJ,
-               DMPHY_PGSR0_WLADONE,
-               DMPHY_PGSR0_WLAERR,
-       },
-       {
-               "Read Bit Deskew",
-               DMPHY_PIR_RDDSKW,
-               DMPHY_PGSR0_RDDONE,
-               DMPHY_PGSR0_RDERR,
-       },
-       {
-               "Write Bit Deskew",
-               DMPHY_PIR_WRDSKW,
-               DMPHY_PGSR0_WDDONE,
-               DMPHY_PGSR0_WDERR,
-       },
-       {
-               "Read Eye Training",
-               DMPHY_PIR_RDEYE,
-               DMPHY_PGSR0_REDONE,
-               DMPHY_PGSR0_REERR,
-       },
-       {
-               "Write Eye Training",
-               DMPHY_PIR_WREYE,
-               DMPHY_PGSR0_WEDONE,
-               DMPHY_PGSR0_WEERR,
-       },
-       { /* sentinel */ }
-};
-
-static int __ddrphy_training(void __iomem *phy_base,
-                            const struct ddrphy_init_sequence *seq)
-{
-       const struct ddrphy_init_sequence *s;
-       u32 pgsr0;
-       u32 init_flag = DMPHY_PIR_INIT;
-       u32 done_flag = DMPHY_PGSR0_IDONE;
-       int timeout = 50000; /* 50 msec is long enough */
-#ifdef DISPLAY_ELAPSED_TIME
-       ulong start = get_timer(0);
-#endif
-
-       for (s = seq; s->description; s++) {
-               init_flag |= s->init_flag;
-               done_flag |= s->done_flag;
-       }
-
-       writel(init_flag, phy_base + DMPHY_PIR);
-
-       do {
-               if (--timeout < 0) {
-                       pr_err("%s: error: timeout during DDR training\n",
-                              __func__);
-                       return -ETIMEDOUT;
-               }
-               udelay(1);
-               pgsr0 = readl(phy_base + DMPHY_PGSR0);
-       } while ((pgsr0 & done_flag) != done_flag);
-
-       for (s = seq; s->description; s++) {
-               if (pgsr0 & s->err_flag) {
-                       pr_err("%s: error: %s failed\n", __func__,
-                              s->description);
-                       return -EIO;
-               }
-       }
-
-#ifdef DISPLAY_ELAPSED_TIME
-       printf("%s: info: elapsed time %ld msec\n", get_timer(start));
-#endif
-
-       return 0;
-}
-
-static int ddrphy_impedance_calibration(void __iomem *phy_base)
-{
-       int ret;
-       u32 tmp;
-
-       ret = __ddrphy_training(phy_base, impedance_calibration_sequence);
-       if (ret)
-               return ret;
-
-       /*
-        * Because of a hardware bug, IDONE flag is set when the first ZQ block
-        * is calibrated.  The flag does not guarantee the completion for all
-        * the ZQ blocks.  Wait a little more just in case.
-        */
-       udelay(1);
-
-       /* reflect ZQ settings and enable average algorithm*/
-       tmp = readl(phy_base + DMPHY_ZQCR);
-       tmp |= DMPHY_ZQCR_FORCE_ZCAL_VT_UPDATE;
-       writel(tmp, phy_base + DMPHY_ZQCR);
-       tmp &= ~DMPHY_ZQCR_FORCE_ZCAL_VT_UPDATE;
-       tmp |= DMPHY_ZQCR_AVGEN;
-       writel(tmp, phy_base + DMPHY_ZQCR);
-
-       return 0;
-}
-
-static int ddrphy_dram_init(void __iomem *phy_base)
-{
-       return __ddrphy_training(phy_base, dram_init_sequence);
-}
-
-static int ddrphy_training(void __iomem *phy_base)
-{
-       return __ddrphy_training(phy_base, training_sequence);
-}
-
-/* UMC */
-static void umc_set_system_latency(void __iomem *dc_base, int phy_latency)
-{
-       u32 val;
-       int latency;
-
-       val = readl(dc_base + UMC_RDATACTL_D0);
-       latency = (val & UMC_RDATACTL_RADLTY_MASK) >> UMC_RDATACTL_RADLTY_SHIFT;
-       latency += (val & UMC_RDATACTL_RAD2LTY_MASK) >>
-                                               UMC_RDATACTL_RAD2LTY_SHIFT;
-       /*
-        * UMC works at the half clock rate of the PHY.
-        * The LSB of latency is ignored
-        */
-       latency += phy_latency & ~1;
-
-       val &= ~(UMC_RDATACTL_RADLTY_MASK | UMC_RDATACTL_RAD2LTY_MASK);
-       if (latency > 0xf) {
-               val |= 0xf << UMC_RDATACTL_RADLTY_SHIFT;
-               val |= (latency - 0xf) << UMC_RDATACTL_RAD2LTY_SHIFT;
-       } else {
-               val |= latency << UMC_RDATACTL_RADLTY_SHIFT;
-       }
-
-       writel(val, dc_base + UMC_RDATACTL_D0);
-       writel(val, dc_base + UMC_RDATACTL_D1);
-
-       readl(dc_base + UMC_RDATACTL_D1); /* relax */
-}
-
-/* enable/disable auto refresh */
-void umc_refresh_ctrl(void __iomem *dc_base, int enable)
-{
-       u32 tmp;
-
-       tmp = readl(dc_base + UMC_SPCSETB);
-       tmp &= ~UMC_SPCSETB_AREFMD_MASK;
-
-       if (enable)
-               tmp |= UMC_SPCSETB_AREFMD_ARB;
-       else
-               tmp |= UMC_SPCSETB_AREFMD_REG;
-
-       writel(tmp, dc_base + UMC_SPCSETB);
-       udelay(1);
-}
-
-static void umc_ud_init(void __iomem *umc_base, int ch)
-{
-       writel(0x00000003, umc_base + UMC_BITPERPIXELMODE_D0);
-
-       if (ch == 2)
-               writel(0x00000033, umc_base + UMC_PAIR1DOFF_D0);
-}
-
-static int umc_dc_init(void __iomem *dc_base, enum dram_freq freq,
-                      unsigned long size, int width, int ch)
-{
-       enum dram_size size_e;
-       int latency;
-       u32 val;
-
-       switch (size) {
-       case 0:
-               return 0;
-       case SZ_256M:
-               size_e = DRAM_SZ_256M;
-               break;
-       case SZ_512M:
-               size_e = DRAM_SZ_512M;
-               break;
-       default:
-               pr_err("unsupported DRAM size 0x%08lx (per 16bit) for ch%d\n",
-                      size, ch);
-               return -EINVAL;
-       }
-
-       writel(umc_cmdctla[freq], dc_base + UMC_CMDCTLA);
-
-       writel(ch == 2 ? umc_cmdctlb_ch2[freq] : umc_cmdctlb_ch01[freq],
-              dc_base + UMC_CMDCTLB);
-
-       writel(umc_spcctla[freq][size_e], dc_base + UMC_SPCCTLA);
-       writel(umc_spcctlb[freq], dc_base + UMC_SPCCTLB);
-
-       val = 0x000e000e;
-       latency = 12;
-       /* ES2 inserted one more FF to the logic. */
-       if (uniphier_get_soc_model() >= 2)
-               latency += 2;
-
-       if (latency > 0xf) {
-               val |= 0xf << UMC_RDATACTL_RADLTY_SHIFT;
-               val |= (latency - 0xf) << UMC_RDATACTL_RAD2LTY_SHIFT;
-       } else {
-               val |= latency << UMC_RDATACTL_RADLTY_SHIFT;
-       }
-
-       writel(val, dc_base + UMC_RDATACTL_D0);
-       if (width >= 32)
-               writel(val, dc_base + UMC_RDATACTL_D1);
-
-       writel(0x04060A02, dc_base + UMC_WDATACTL_D0);
-       if (width >= 32)
-               writel(0x04060A02, dc_base + UMC_WDATACTL_D1);
-       writel(0x04000000, dc_base + UMC_DATASET);
-       writel(0x00400020, dc_base + UMC_DCCGCTL);
-       writel(0x00000084, dc_base + UMC_FLOWCTLG);
-       writel(0x00000000, dc_base + UMC_ACSSETA);
-
-       writel(ch == 2 ? umc_flowctla_ch2[freq] : umc_flowctla_ch01[freq],
-              dc_base + UMC_FLOWCTLA);
-
-       writel(0x00004400, dc_base + UMC_FLOWCTLC);
-       writel(0x200A0A00, dc_base + UMC_SPCSETB);
-       writel(0x00000520, dc_base + UMC_DFICUPDCTLA);
-       writel(0x0000000D, dc_base + UMC_RESPCTL);
-
-       if (ch != 2) {
-               writel(0x00202000, dc_base + UMC_FLOWCTLB);
-               writel(0xFDBFFFFF, dc_base + UMC_FLOWCTLOB0);
-               writel(0xFFFFFFFF, dc_base + UMC_FLOWCTLOB1);
-               writel(0x00080700, dc_base + UMC_BSICMAPSET);
-       } else {
-               writel(0x00200000, dc_base + UMC_FLOWCTLB);
-               writel(0x00000000, dc_base + UMC_BSICMAPSET);
-       }
-
-       writel(0x00000000, dc_base + UMC_ERRMASKA);
-       writel(0x00000000, dc_base + UMC_ERRMASKB);
-
-       return 0;
-}
-
-static int umc_ch_init(void __iomem *umc_ch_base, enum dram_freq freq,
-                      unsigned long size, unsigned int width, int ch)
-{
-       void __iomem *dc_base = umc_ch_base + 0x00011000;
-       void __iomem *phy_base = umc_ch_base + 0x00030000;
-       int ret;
-
-       writel(0x00000002, dc_base + UMC_INITSET);
-       while (readl(dc_base + UMC_INITSTAT) & BIT(2))
-               cpu_relax();
-
-       /* deassert PHY reset signals */
-       writel(UMC_DIOCTLA_CTL_NRST | UMC_DIOCTLA_CFG_NRST,
-              dc_base + UMC_DIOCTLA);
-
-       ddrphy_init(phy_base, freq, width, ch);
-
-       ret = ddrphy_impedance_calibration(phy_base);
-       if (ret)
-               return ret;
-
-       ddrphy_dram_init(phy_base);
-       if (ret)
-               return ret;
-
-       ret = umc_dc_init(dc_base, freq, size, width, ch);
-       if (ret)
-               return ret;
-
-       umc_ud_init(umc_ch_base, ch);
-
-       ret = ddrphy_training(phy_base);
-       if (ret)
-               return ret;
-
-       udelay(1);
-
-       /* match the system latency between UMC and PHY */
-       umc_set_system_latency(dc_base,
-                              ddrphy_get_system_latency(phy_base, width));
-
-       udelay(1);
-
-       /* stop auto refresh before clearing FIFO in PHY */
-       umc_refresh_ctrl(dc_base, 0);
-       ddrphy_fifo_reset(phy_base);
-       umc_refresh_ctrl(dc_base, 1);
-
-       udelay(10);
-
-       return 0;
-}
-
-static void um_init(void __iomem *um_base)
-{
-       writel(0x000000ff, um_base + UMC_MBUS0);
-       writel(0x000000ff, um_base + UMC_MBUS1);
-       writel(0x000000ff, um_base + UMC_MBUS2);
-       writel(0x000000ff, um_base + UMC_MBUS3);
-}
-
-int proxstream2_umc_init(const struct uniphier_board_data *bd)
-{
-       void __iomem *um_base = (void __iomem *)0x5b600000;
-       void __iomem *umc_ch_base = (void __iomem *)0x5b800000;
-       enum dram_freq freq;
-       int ch, ret;
-
-       switch (bd->dram_freq) {
-       case 1866:
-               freq = DRAM_FREQ_1866M;
-               break;
-       case 2133:
-               freq = DRAM_FREQ_2133M;
-               break;
-       default:
-               pr_err("unsupported DRAM frequency %d MHz\n", bd->dram_freq);
-               return -EINVAL;
-       }
-
-       for (ch = 0; ch < bd->dram_nr_ch; ch++) {
-               unsigned long size = bd->dram_ch[ch].size;
-               unsigned int width = bd->dram_ch[ch].width;
-
-               ret = umc_ch_init(umc_ch_base, freq, size / (width / 16),
-                                 width, ch);
-               if (ret) {
-                       pr_err("failed to initialize UMC ch%d\n", ch);
-                       return ret;
-               }
-
-               umc_ch_base += 0x00200000;
-       }
-
-       um_init(um_base);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/dram/umc-pxs2.c b/arch/arm/mach-uniphier/dram/umc-pxs2.c
new file mode 100644 (file)
index 0000000..50c0238
--- /dev/null
@@ -0,0 +1,637 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * based on commit 21b6e480f92ccc38fe0502e3116411d6509d3bf2 of Diag by:
+ * Copyright (C) 2015 Socionext Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+#include <asm/processor.h>
+
+#include "../init.h"
+#include "../soc-info.h"
+#include "ddrmphy-regs.h"
+#include "umc-regs.h"
+
+#define DRAM_CH_NR     3
+
+enum dram_freq {
+       DRAM_FREQ_1866M,
+       DRAM_FREQ_2133M,
+       DRAM_FREQ_NR,
+};
+
+enum dram_size {
+       DRAM_SZ_256M,
+       DRAM_SZ_512M,
+       DRAM_SZ_NR,
+};
+
+static u32 ddrphy_pgcr2[DRAM_FREQ_NR] = {0x00FC7E5D, 0x00FC90AB};
+static u32 ddrphy_ptr0[DRAM_FREQ_NR] = {0x0EA09205, 0x10C0A6C6};
+static u32 ddrphy_ptr1[DRAM_FREQ_NR] = {0x0DAC041B, 0x0FA104B1};
+static u32 ddrphy_ptr3[DRAM_FREQ_NR] = {0x15171e45, 0x18182357};
+static u32 ddrphy_ptr4[DRAM_FREQ_NR] = {0x0e9ad8e9, 0x10b34157};
+static u32 ddrphy_dtpr0[DRAM_FREQ_NR] = {0x35a00d88, 0x39e40e88};
+static u32 ddrphy_dtpr1[DRAM_FREQ_NR] = {0x2288cc2c, 0x228a04d0};
+static u32 ddrphy_dtpr2[DRAM_FREQ_NR] = {0x50005e00, 0x50006a00};
+static u32 ddrphy_dtpr3[DRAM_FREQ_NR] = {0x0010cb49, 0x0010ec89};
+static u32 ddrphy_mr0[DRAM_FREQ_NR] = {0x00000115, 0x00000125};
+static u32 ddrphy_mr2[DRAM_FREQ_NR] = {0x000002a0, 0x000002a8};
+
+/* dependent on package and board design */
+static u32 ddrphy_acbdlr0[DRAM_CH_NR] = {0x0000000c, 0x0000000c, 0x00000009};
+
+static u32 umc_cmdctla[DRAM_FREQ_NR] = {0x66DD131D, 0x77EE1722};
+/*
+ * The ch2 is a different generation UMC core.
+ * The register spec is different, unfortunately.
+ */
+static u32 umc_cmdctlb_ch01[DRAM_FREQ_NR] = {0x13E87C44, 0x18F88C44};
+static u32 umc_cmdctlb_ch2[DRAM_FREQ_NR] = {0x19E8DC44, 0x1EF8EC44};
+static u32 umc_spcctla[DRAM_FREQ_NR][DRAM_SZ_NR] = {
+       {0x004A071D, 0x0078071D},
+       {0x0055081E, 0x0089081E},
+};
+
+static u32 umc_spcctlb[] = {0x00FF000A, 0x00FF000B};
+/* The ch2 is different for some reason only hardware guys know... */
+static u32 umc_flowctla_ch01[] = {0x0800001E, 0x08000022};
+static u32 umc_flowctla_ch2[] = {0x0800001E, 0x0800001E};
+
+/* DDR multiPHY */
+static inline int ddrphy_get_rank(int dx)
+{
+       return dx / 2;
+}
+
+static void ddrphy_fifo_reset(void __iomem *phy_base)
+{
+       u32 tmp;
+
+       tmp = readl(phy_base + DMPHY_PGCR0);
+       tmp &= ~DMPHY_PGCR0_PHYFRST;
+       writel(tmp, phy_base + DMPHY_PGCR0);
+
+       udelay(1);
+
+       tmp |= DMPHY_PGCR0_PHYFRST;
+       writel(tmp, phy_base + DMPHY_PGCR0);
+
+       udelay(1);
+}
+
+static void ddrphy_vt_ctrl(void __iomem *phy_base, int enable)
+{
+       u32 tmp;
+
+       tmp = readl(phy_base + DMPHY_PGCR1);
+
+       if (enable)
+               tmp &= ~DMPHY_PGCR1_INHVT;
+       else
+               tmp |= DMPHY_PGCR1_INHVT;
+
+       writel(tmp, phy_base + DMPHY_PGCR1);
+
+       if (!enable) {
+               while (!(readl(phy_base + DMPHY_PGSR1) & DMPHY_PGSR1_VTSTOP))
+                       cpu_relax();
+       }
+}
+
+static void ddrphy_dqs_delay_fixup(void __iomem *phy_base, int nr_dx, int step)
+{
+       int dx;
+       u32 lcdlr1, rdqsd;
+       void __iomem *dx_base = phy_base + DMPHY_DX_BASE;
+
+       ddrphy_vt_ctrl(phy_base, 0);
+
+       for (dx = 0; dx < nr_dx; dx++) {
+               lcdlr1 = readl(dx_base + DMPHY_DX_LCDLR1);
+               rdqsd = (lcdlr1 >> 8) & 0xff;
+               rdqsd = clamp(rdqsd + step, 0U, 0xffU);
+               lcdlr1 = (lcdlr1 & ~(0xff << 8)) | (rdqsd << 8);
+               writel(lcdlr1, dx_base + DMPHY_DX_LCDLR1);
+               readl(dx_base + DMPHY_DX_LCDLR1); /* relax */
+               dx_base += DMPHY_DX_STRIDE;
+       }
+
+       ddrphy_vt_ctrl(phy_base, 1);
+}
+
+static int ddrphy_get_system_latency(void __iomem *phy_base, int width)
+{
+       void __iomem *dx_base = phy_base + DMPHY_DX_BASE;
+       const int nr_dx = width / 8;
+       int dx, rank;
+       u32 gtr;
+       int dgsl, dgsl_min = INT_MAX, dgsl_max = 0;
+
+       for (dx = 0; dx < nr_dx; dx++) {
+               gtr = readl(dx_base + DMPHY_DX_GTR);
+               for (rank = 0; rank < 4; rank++) {
+                       dgsl = gtr & 0x7;
+                       /* if dgsl is zero, this rank was not trained. skip. */
+                       if (dgsl) {
+                               dgsl_min = min(dgsl_min, dgsl);
+                               dgsl_max = max(dgsl_max, dgsl);
+                       }
+                       gtr >>= 3;
+               }
+               dx_base += DMPHY_DX_STRIDE;
+       }
+
+       if (dgsl_min != dgsl_max)
+               printf("DQS Gateing System Latencies are not all leveled.\n");
+
+       return dgsl_max;
+}
+
+static void ddrphy_init(void __iomem *phy_base, enum dram_freq freq, int width,
+                       int ch)
+{
+       u32 tmp;
+       void __iomem *zq_base, *dx_base;
+       int zq, dx;
+       int nr_dx;
+
+       nr_dx = width / 8;
+
+       writel(DMPHY_PIR_ZCALBYP,        phy_base + DMPHY_PIR);
+       /*
+        * Disable RGLVT bit (Read DQS Gating LCDL Delay VT Compensation)
+        * to avoid read error issue.
+        */
+       writel(0x07d81e37,         phy_base + DMPHY_PGCR0);
+       writel(0x0200c4e0,         phy_base + DMPHY_PGCR1);
+
+       tmp = ddrphy_pgcr2[freq];
+       if (width >= 32)
+               tmp |= DMPHY_PGCR2_DUALCHN | DMPHY_PGCR2_ACPDDC;
+       writel(tmp, phy_base + DMPHY_PGCR2);
+
+       writel(ddrphy_ptr0[freq],  phy_base + DMPHY_PTR0);
+       writel(ddrphy_ptr1[freq],  phy_base + DMPHY_PTR1);
+       writel(0x00083def,         phy_base + DMPHY_PTR2);
+       writel(ddrphy_ptr3[freq],  phy_base + DMPHY_PTR3);
+       writel(ddrphy_ptr4[freq],  phy_base + DMPHY_PTR4);
+
+       writel(ddrphy_acbdlr0[ch], phy_base + DMPHY_ACBDLR0);
+
+       writel(0x55555555, phy_base + DMPHY_ACIOCR1);
+       writel(0x00000000, phy_base + DMPHY_ACIOCR2);
+       writel(0x55555555, phy_base + DMPHY_ACIOCR3);
+       writel(0x00000000, phy_base + DMPHY_ACIOCR4);
+       writel(0x00000055, phy_base + DMPHY_ACIOCR5);
+       writel(0x00181aa4, phy_base + DMPHY_DXCCR);
+
+       writel(0x0024641e, phy_base + DMPHY_DSGCR);
+       writel(0x0000040b, phy_base + DMPHY_DCR);
+       writel(ddrphy_dtpr0[freq], phy_base + DMPHY_DTPR0);
+       writel(ddrphy_dtpr1[freq], phy_base + DMPHY_DTPR1);
+       writel(ddrphy_dtpr2[freq], phy_base + DMPHY_DTPR2);
+       writel(ddrphy_dtpr3[freq], phy_base + DMPHY_DTPR3);
+       writel(ddrphy_mr0[freq], phy_base + DMPHY_MR0);
+       writel(0x00000006,       phy_base + DMPHY_MR1);
+       writel(ddrphy_mr2[freq], phy_base + DMPHY_MR2);
+       writel(0x00000000,       phy_base + DMPHY_MR3);
+
+       tmp = 0;
+       for (dx = 0; dx < nr_dx; dx++)
+               tmp |= BIT(DMPHY_DTCR_RANKEN_SHIFT + ddrphy_get_rank(dx));
+       writel(0x90003087 | tmp, phy_base + DMPHY_DTCR);
+
+       writel(0x00000000, phy_base + DMPHY_DTAR0);
+       writel(0x00000008, phy_base + DMPHY_DTAR1);
+       writel(0x00000010, phy_base + DMPHY_DTAR2);
+       writel(0x00000018, phy_base + DMPHY_DTAR3);
+       writel(0xdd22ee11, phy_base + DMPHY_DTDR0);
+       writel(0x7788bb44, phy_base + DMPHY_DTDR1);
+
+       /* impedance control settings */
+       writel(0x04048900, phy_base + DMPHY_ZQCR);
+
+       zq_base = phy_base + DMPHY_ZQ_BASE;
+       for (zq = 0; zq < 4; zq++) {
+               /*
+                * board-dependent
+                * PXS2: CH0ZQ0=0x5B, CH1ZQ0=0x5B, CH2ZQ0=0x59, others=0x5D
+                */
+               writel(0x0007BB5D, zq_base + DMPHY_ZQ_PR);
+               zq_base += DMPHY_ZQ_STRIDE;
+       }
+
+       /* DATX8 settings */
+       dx_base = phy_base + DMPHY_DX_BASE;
+       for (dx = 0; dx < 4; dx++) {
+               tmp = readl(dx_base + DMPHY_DX_GCR0);
+               tmp &= ~DMPHY_DX_GCR0_WLRKEN_MASK;
+               tmp |= BIT(DMPHY_DX_GCR0_WLRKEN_SHIFT + ddrphy_get_rank(dx)) &
+                                               DMPHY_DX_GCR0_WLRKEN_MASK;
+               writel(tmp, dx_base + DMPHY_DX_GCR0);
+
+               writel(0x00000000, dx_base + DMPHY_DX_GCR1);
+               writel(0x00000000, dx_base + DMPHY_DX_GCR2);
+               writel(0x00000000, dx_base + DMPHY_DX_GCR3);
+               dx_base += DMPHY_DX_STRIDE;
+       }
+
+       while (!(readl(phy_base + DMPHY_PGSR0) & DMPHY_PGSR0_IDONE))
+               cpu_relax();
+
+       ddrphy_dqs_delay_fixup(phy_base, nr_dx, -4);
+}
+
+struct ddrphy_init_sequence {
+       char *description;
+       u32 init_flag;
+       u32 done_flag;
+       u32 err_flag;
+};
+
+static const struct ddrphy_init_sequence impedance_calibration_sequence[] = {
+       {
+               "Impedance Calibration",
+               DMPHY_PIR_ZCAL,
+               DMPHY_PGSR0_ZCDONE,
+               DMPHY_PGSR0_ZCERR,
+       },
+       { /* sentinel */ }
+};
+
+static const struct ddrphy_init_sequence dram_init_sequence[] = {
+       {
+               "DRAM Initialization",
+               DMPHY_PIR_DRAMRST | DMPHY_PIR_DRAMINIT,
+               DMPHY_PGSR0_DIDONE,
+               0,
+       },
+       { /* sentinel */ }
+};
+
+static const struct ddrphy_init_sequence training_sequence[] = {
+       {
+               "Write Leveling",
+               DMPHY_PIR_WL,
+               DMPHY_PGSR0_WLDONE,
+               DMPHY_PGSR0_WLERR,
+       },
+       {
+               "Read DQS Gate Training",
+               DMPHY_PIR_QSGATE,
+               DMPHY_PGSR0_QSGDONE,
+               DMPHY_PGSR0_QSGERR,
+       },
+       {
+               "Write Leveling Adjustment",
+               DMPHY_PIR_WLADJ,
+               DMPHY_PGSR0_WLADONE,
+               DMPHY_PGSR0_WLAERR,
+       },
+       {
+               "Read Bit Deskew",
+               DMPHY_PIR_RDDSKW,
+               DMPHY_PGSR0_RDDONE,
+               DMPHY_PGSR0_RDERR,
+       },
+       {
+               "Write Bit Deskew",
+               DMPHY_PIR_WRDSKW,
+               DMPHY_PGSR0_WDDONE,
+               DMPHY_PGSR0_WDERR,
+       },
+       {
+               "Read Eye Training",
+               DMPHY_PIR_RDEYE,
+               DMPHY_PGSR0_REDONE,
+               DMPHY_PGSR0_REERR,
+       },
+       {
+               "Write Eye Training",
+               DMPHY_PIR_WREYE,
+               DMPHY_PGSR0_WEDONE,
+               DMPHY_PGSR0_WEERR,
+       },
+       { /* sentinel */ }
+};
+
+static int __ddrphy_training(void __iomem *phy_base,
+                            const struct ddrphy_init_sequence *seq)
+{
+       const struct ddrphy_init_sequence *s;
+       u32 pgsr0;
+       u32 init_flag = DMPHY_PIR_INIT;
+       u32 done_flag = DMPHY_PGSR0_IDONE;
+       int timeout = 50000; /* 50 msec is long enough */
+#ifdef DISPLAY_ELAPSED_TIME
+       ulong start = get_timer(0);
+#endif
+
+       for (s = seq; s->description; s++) {
+               init_flag |= s->init_flag;
+               done_flag |= s->done_flag;
+       }
+
+       writel(init_flag, phy_base + DMPHY_PIR);
+
+       do {
+               if (--timeout < 0) {
+                       pr_err("%s: error: timeout during DDR training\n",
+                              __func__);
+                       return -ETIMEDOUT;
+               }
+               udelay(1);
+               pgsr0 = readl(phy_base + DMPHY_PGSR0);
+       } while ((pgsr0 & done_flag) != done_flag);
+
+       for (s = seq; s->description; s++) {
+               if (pgsr0 & s->err_flag) {
+                       pr_err("%s: error: %s failed\n", __func__,
+                              s->description);
+                       return -EIO;
+               }
+       }
+
+#ifdef DISPLAY_ELAPSED_TIME
+       printf("%s: info: elapsed time %ld msec\n", get_timer(start));
+#endif
+
+       return 0;
+}
+
+static int ddrphy_impedance_calibration(void __iomem *phy_base)
+{
+       int ret;
+       u32 tmp;
+
+       ret = __ddrphy_training(phy_base, impedance_calibration_sequence);
+       if (ret)
+               return ret;
+
+       /*
+        * Because of a hardware bug, IDONE flag is set when the first ZQ block
+        * is calibrated.  The flag does not guarantee the completion for all
+        * the ZQ blocks.  Wait a little more just in case.
+        */
+       udelay(1);
+
+       /* reflect ZQ settings and enable average algorithm*/
+       tmp = readl(phy_base + DMPHY_ZQCR);
+       tmp |= DMPHY_ZQCR_FORCE_ZCAL_VT_UPDATE;
+       writel(tmp, phy_base + DMPHY_ZQCR);
+       tmp &= ~DMPHY_ZQCR_FORCE_ZCAL_VT_UPDATE;
+       tmp |= DMPHY_ZQCR_AVGEN;
+       writel(tmp, phy_base + DMPHY_ZQCR);
+
+       return 0;
+}
+
+static int ddrphy_dram_init(void __iomem *phy_base)
+{
+       return __ddrphy_training(phy_base, dram_init_sequence);
+}
+
+static int ddrphy_training(void __iomem *phy_base)
+{
+       return __ddrphy_training(phy_base, training_sequence);
+}
+
+/* UMC */
+static void umc_set_system_latency(void __iomem *dc_base, int phy_latency)
+{
+       u32 val;
+       int latency;
+
+       val = readl(dc_base + UMC_RDATACTL_D0);
+       latency = (val & UMC_RDATACTL_RADLTY_MASK) >> UMC_RDATACTL_RADLTY_SHIFT;
+       latency += (val & UMC_RDATACTL_RAD2LTY_MASK) >>
+                                               UMC_RDATACTL_RAD2LTY_SHIFT;
+       /*
+        * UMC works at the half clock rate of the PHY.
+        * The LSB of latency is ignored
+        */
+       latency += phy_latency & ~1;
+
+       val &= ~(UMC_RDATACTL_RADLTY_MASK | UMC_RDATACTL_RAD2LTY_MASK);
+       if (latency > 0xf) {
+               val |= 0xf << UMC_RDATACTL_RADLTY_SHIFT;
+               val |= (latency - 0xf) << UMC_RDATACTL_RAD2LTY_SHIFT;
+       } else {
+               val |= latency << UMC_RDATACTL_RADLTY_SHIFT;
+       }
+
+       writel(val, dc_base + UMC_RDATACTL_D0);
+       writel(val, dc_base + UMC_RDATACTL_D1);
+
+       readl(dc_base + UMC_RDATACTL_D1); /* relax */
+}
+
+/* enable/disable auto refresh */
+void umc_refresh_ctrl(void __iomem *dc_base, int enable)
+{
+       u32 tmp;
+
+       tmp = readl(dc_base + UMC_SPCSETB);
+       tmp &= ~UMC_SPCSETB_AREFMD_MASK;
+
+       if (enable)
+               tmp |= UMC_SPCSETB_AREFMD_ARB;
+       else
+               tmp |= UMC_SPCSETB_AREFMD_REG;
+
+       writel(tmp, dc_base + UMC_SPCSETB);
+       udelay(1);
+}
+
+static void umc_ud_init(void __iomem *umc_base, int ch)
+{
+       writel(0x00000003, umc_base + UMC_BITPERPIXELMODE_D0);
+
+       if (ch == 2)
+               writel(0x00000033, umc_base + UMC_PAIR1DOFF_D0);
+}
+
+static int umc_dc_init(void __iomem *dc_base, enum dram_freq freq,
+                      unsigned long size, int width, int ch)
+{
+       enum dram_size size_e;
+       int latency;
+       u32 val;
+
+       switch (size) {
+       case 0:
+               return 0;
+       case SZ_256M:
+               size_e = DRAM_SZ_256M;
+               break;
+       case SZ_512M:
+               size_e = DRAM_SZ_512M;
+               break;
+       default:
+               pr_err("unsupported DRAM size 0x%08lx (per 16bit) for ch%d\n",
+                      size, ch);
+               return -EINVAL;
+       }
+
+       writel(umc_cmdctla[freq], dc_base + UMC_CMDCTLA);
+
+       writel(ch == 2 ? umc_cmdctlb_ch2[freq] : umc_cmdctlb_ch01[freq],
+              dc_base + UMC_CMDCTLB);
+
+       writel(umc_spcctla[freq][size_e], dc_base + UMC_SPCCTLA);
+       writel(umc_spcctlb[freq], dc_base + UMC_SPCCTLB);
+
+       val = 0x000e000e;
+       latency = 12;
+       /* ES2 inserted one more FF to the logic. */
+       if (uniphier_get_soc_model() >= 2)
+               latency += 2;
+
+       if (latency > 0xf) {
+               val |= 0xf << UMC_RDATACTL_RADLTY_SHIFT;
+               val |= (latency - 0xf) << UMC_RDATACTL_RAD2LTY_SHIFT;
+       } else {
+               val |= latency << UMC_RDATACTL_RADLTY_SHIFT;
+       }
+
+       writel(val, dc_base + UMC_RDATACTL_D0);
+       if (width >= 32)
+               writel(val, dc_base + UMC_RDATACTL_D1);
+
+       writel(0x04060A02, dc_base + UMC_WDATACTL_D0);
+       if (width >= 32)
+               writel(0x04060A02, dc_base + UMC_WDATACTL_D1);
+       writel(0x04000000, dc_base + UMC_DATASET);
+       writel(0x00400020, dc_base + UMC_DCCGCTL);
+       writel(0x00000084, dc_base + UMC_FLOWCTLG);
+       writel(0x00000000, dc_base + UMC_ACSSETA);
+
+       writel(ch == 2 ? umc_flowctla_ch2[freq] : umc_flowctla_ch01[freq],
+              dc_base + UMC_FLOWCTLA);
+
+       writel(0x00004400, dc_base + UMC_FLOWCTLC);
+       writel(0x200A0A00, dc_base + UMC_SPCSETB);
+       writel(0x00000520, dc_base + UMC_DFICUPDCTLA);
+       writel(0x0000000D, dc_base + UMC_RESPCTL);
+
+       if (ch != 2) {
+               writel(0x00202000, dc_base + UMC_FLOWCTLB);
+               writel(0xFDBFFFFF, dc_base + UMC_FLOWCTLOB0);
+               writel(0xFFFFFFFF, dc_base + UMC_FLOWCTLOB1);
+               writel(0x00080700, dc_base + UMC_BSICMAPSET);
+       } else {
+               writel(0x00200000, dc_base + UMC_FLOWCTLB);
+               writel(0x00000000, dc_base + UMC_BSICMAPSET);
+       }
+
+       writel(0x00000000, dc_base + UMC_ERRMASKA);
+       writel(0x00000000, dc_base + UMC_ERRMASKB);
+
+       return 0;
+}
+
+static int umc_ch_init(void __iomem *umc_ch_base, enum dram_freq freq,
+                      unsigned long size, unsigned int width, int ch)
+{
+       void __iomem *dc_base = umc_ch_base + 0x00011000;
+       void __iomem *phy_base = umc_ch_base + 0x00030000;
+       int ret;
+
+       writel(0x00000002, dc_base + UMC_INITSET);
+       while (readl(dc_base + UMC_INITSTAT) & BIT(2))
+               cpu_relax();
+
+       /* deassert PHY reset signals */
+       writel(UMC_DIOCTLA_CTL_NRST | UMC_DIOCTLA_CFG_NRST,
+              dc_base + UMC_DIOCTLA);
+
+       ddrphy_init(phy_base, freq, width, ch);
+
+       ret = ddrphy_impedance_calibration(phy_base);
+       if (ret)
+               return ret;
+
+       ddrphy_dram_init(phy_base);
+       if (ret)
+               return ret;
+
+       ret = umc_dc_init(dc_base, freq, size, width, ch);
+       if (ret)
+               return ret;
+
+       umc_ud_init(umc_ch_base, ch);
+
+       ret = ddrphy_training(phy_base);
+       if (ret)
+               return ret;
+
+       udelay(1);
+
+       /* match the system latency between UMC and PHY */
+       umc_set_system_latency(dc_base,
+                              ddrphy_get_system_latency(phy_base, width));
+
+       udelay(1);
+
+       /* stop auto refresh before clearing FIFO in PHY */
+       umc_refresh_ctrl(dc_base, 0);
+       ddrphy_fifo_reset(phy_base);
+       umc_refresh_ctrl(dc_base, 1);
+
+       udelay(10);
+
+       return 0;
+}
+
+static void um_init(void __iomem *um_base)
+{
+       writel(0x000000ff, um_base + UMC_MBUS0);
+       writel(0x000000ff, um_base + UMC_MBUS1);
+       writel(0x000000ff, um_base + UMC_MBUS2);
+       writel(0x000000ff, um_base + UMC_MBUS3);
+}
+
+int proxstream2_umc_init(const struct uniphier_board_data *bd)
+{
+       void __iomem *um_base = (void __iomem *)0x5b600000;
+       void __iomem *umc_ch_base = (void __iomem *)0x5b800000;
+       enum dram_freq freq;
+       int ch, ret;
+
+       switch (bd->dram_freq) {
+       case 1866:
+               freq = DRAM_FREQ_1866M;
+               break;
+       case 2133:
+               freq = DRAM_FREQ_2133M;
+               break;
+       default:
+               pr_err("unsupported DRAM frequency %d MHz\n", bd->dram_freq);
+               return -EINVAL;
+       }
+
+       for (ch = 0; ch < bd->dram_nr_ch; ch++) {
+               unsigned long size = bd->dram_ch[ch].size;
+               unsigned int width = bd->dram_ch[ch].width;
+
+               ret = umc_ch_init(umc_ch_base, freq, size / (width / 16),
+                                 width, ch);
+               if (ret) {
+                       pr_err("failed to initialize UMC ch%d\n", ch);
+                       return ret;
+               }
+
+               umc_ch_base += 0x00200000;
+       }
+
+       um_init(um_base);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/dram/umc-sld8.c b/arch/arm/mach-uniphier/dram/umc-sld8.c
new file mode 100644 (file)
index 0000000..6cacd25
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+#include <asm/processor.h>
+
+#include "../init.h"
+#include "ddrphy-regs.h"
+#include "umc-regs.h"
+
+#define DRAM_CH_NR     2
+
+enum dram_freq {
+       DRAM_FREQ_1333M,
+       DRAM_FREQ_1600M,
+       DRAM_FREQ_NR,
+};
+
+enum dram_size {
+       DRAM_SZ_128M,
+       DRAM_SZ_256M,
+       DRAM_SZ_512M,
+       DRAM_SZ_NR,
+};
+
+static u32 umc_cmdctla[DRAM_FREQ_NR] = {0x55990b11, 0x66bb0f17};
+static u32 umc_cmdctla_plus[DRAM_FREQ_NR] = {0x45990b11, 0x46bb0f17};
+static u32 umc_cmdctlb[DRAM_FREQ_NR] = {0x16958944, 0x18c6ab44};
+static u32 umc_cmdctlb_plus[DRAM_FREQ_NR] = {0x16958924, 0x18c6ab24};
+static u32 umc_spcctla[DRAM_FREQ_NR][DRAM_SZ_NR] = {
+       {0x00240512, 0x00350512, 0x00000000}, /* no data for 1333MHz,128MB */
+       {0x002b0617, 0x003f0617, 0x00670617},
+};
+static u32 umc_spcctlb[DRAM_FREQ_NR] = {0x00ff0006, 0x00ff0008};
+static u32 umc_rdatactl[DRAM_FREQ_NR] = {0x000a00ac, 0x000c00ac};
+
+static int umc_get_rank(int ch)
+{
+       return ch;      /* ch0: rank0, ch1: rank1 for this SoC */
+}
+
+static void umc_start_ssif(void __iomem *ssif_base)
+{
+       writel(0x00000000, ssif_base + 0x0000b004);
+       writel(0xffffffff, ssif_base + 0x0000c004);
+       writel(0x000fffcf, ssif_base + 0x0000c008);
+       writel(0x00000001, ssif_base + 0x0000b000);
+       writel(0x00000001, ssif_base + 0x0000c000);
+       writel(0x03010101, ssif_base + UMC_MDMCHSEL);
+       writel(0x03010100, ssif_base + UMC_DMDCHSEL);
+
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_FETCH);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC0);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMQUE1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMWC1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_COMRC1);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_WC);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_RC);
+       writel(0x00000000, ssif_base + UMC_CLKEN_SSIF_DST);
+
+       writel(0x00000001, ssif_base + UMC_CPURST);
+       writel(0x00000001, ssif_base + UMC_IDSRST);
+       writel(0x00000001, ssif_base + UMC_IXMRST);
+       writel(0x00000001, ssif_base + UMC_MDMRST);
+       writel(0x00000001, ssif_base + UMC_MDDRST);
+       writel(0x00000001, ssif_base + UMC_SIORST);
+       writel(0x00000001, ssif_base + UMC_VIORST);
+       writel(0x00000001, ssif_base + UMC_FRCRST);
+       writel(0x00000001, ssif_base + UMC_RGLRST);
+       writel(0x00000001, ssif_base + UMC_AIORST);
+       writel(0x00000001, ssif_base + UMC_DMDRST);
+}
+
+static int umc_dramcont_init(void __iomem *dc_base, void __iomem *ca_base,
+                            int freq, unsigned long size, bool ddr3plus)
+{
+       enum dram_freq freq_e;
+       enum dram_size size_e;
+
+       switch (freq) {
+       case 1333:
+               freq_e = DRAM_FREQ_1333M;
+               break;
+       case 1600:
+               freq_e = DRAM_FREQ_1600M;
+               break;
+       default:
+               pr_err("unsupported DRAM frequency %d MHz\n", freq);
+               return -EINVAL;
+       }
+
+       switch (size) {
+       case 0:
+               return 0;
+       case SZ_128M:
+               size_e = DRAM_SZ_128M;
+               break;
+       case SZ_256M:
+               size_e = DRAM_SZ_256M;
+               break;
+       case SZ_512M:
+               size_e = DRAM_SZ_512M;
+               break;
+       default:
+               pr_err("unsupported DRAM size 0x%08lx\n", size);
+               return -EINVAL;
+       }
+
+       writel((ddr3plus ? umc_cmdctla_plus : umc_cmdctla)[freq_e],
+              dc_base + UMC_CMDCTLA);
+       writel((ddr3plus ? umc_cmdctlb_plus : umc_cmdctlb)[freq_e],
+              dc_base + UMC_CMDCTLB);
+       writel(umc_spcctla[freq_e][size_e], dc_base + UMC_SPCCTLA);
+       writel(umc_spcctlb[freq_e], dc_base + UMC_SPCCTLB);
+       writel(umc_rdatactl[freq_e], dc_base + UMC_RDATACTL_D0);
+       writel(0x04060806, dc_base + UMC_WDATACTL_D0);
+       writel(0x04a02000, dc_base + UMC_DATASET);
+       writel(0x00000000, ca_base + 0x2300);
+       writel(0x00400020, dc_base + UMC_DCCGCTL);
+       writel(0x00000003, dc_base + 0x7000);
+       writel(0x0000004f, dc_base + 0x8000);
+       writel(0x000000c3, dc_base + 0x8004);
+       writel(0x00000077, dc_base + 0x8008);
+       writel(0x0000003b, dc_base + UMC_DICGCTLA);
+       writel(0x020a0808, dc_base + UMC_DICGCTLB);
+       writel(0x00000004, dc_base + UMC_FLOWCTLG);
+       writel(0x80000201, ca_base + 0xc20);
+       writel(0x0801e01e, dc_base + UMC_FLOWCTLA);
+       writel(0x00200000, dc_base + UMC_FLOWCTLB);
+       writel(0x00004444, dc_base + UMC_FLOWCTLC);
+       writel(0x200a0a00, dc_base + UMC_SPCSETB);
+       writel(0x00000000, dc_base + UMC_SPCSETD);
+       writel(0x00000520, dc_base + UMC_DFICUPDCTLA);
+
+       return 0;
+}
+
+static int umc_ch_init(void __iomem *dc_base, void __iomem *ca_base,
+                      int freq, unsigned long size, bool ddr3plus, int ch)
+{
+       void __iomem *phy_base = dc_base + 0x00001000;
+       int ret;
+
+       writel(UMC_INITSET_INIT1EN, dc_base + UMC_INITSET);
+       while (readl(dc_base + UMC_INITSET) & UMC_INITSTAT_INIT1ST)
+               cpu_relax();
+
+       writel(0x00000101, dc_base + UMC_DIOCTLA);
+
+       ret = ph1_ld4_ddrphy_init(phy_base, freq, ddr3plus);
+       if (ret)
+               return ret;
+
+       ddrphy_prepare_training(phy_base, umc_get_rank(ch));
+       ret = ddrphy_training(phy_base);
+       if (ret)
+               return ret;
+
+       return umc_dramcont_init(dc_base, ca_base, freq, size, ddr3plus);
+}
+
+int ph1_sld8_umc_init(const struct uniphier_board_data *bd)
+{
+       void __iomem *umc_base = (void __iomem *)0x5b800000;
+       void __iomem *ca_base = umc_base + 0x00001000;
+       void __iomem *dc_base = umc_base + 0x00400000;
+       void __iomem *ssif_base = umc_base;
+       int ch, ret;
+
+       for (ch = 0; ch < DRAM_CH_NR; ch++) {
+               ret = umc_ch_init(dc_base, ca_base, bd->dram_freq,
+                                 bd->dram_ch[ch].size,
+                                 bd->dram_ddr3plus, ch);
+               if (ret) {
+                       pr_err("failed to initialize UMC ch%d\n", ch);
+                       return ret;
+               }
+
+               ca_base += 0x00001000;
+               dc_base += 0x00200000;
+       }
+
+       umc_start_ssif(ssif_base);
+
+       return 0;
+}
index 3e1e1b2bc8eb55f1aeebee2f99badc3159be1383..59058cdb1ffb7f3848bfc6b962a9b7ed2d58ab3d 100644 (file)
@@ -2,10 +2,10 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += early-clk-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += early-clk-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += early-clk-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += early-clk-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO5)   += early-clk-ph1-pro5.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += early-clk-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += early-clk-proxstream2.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += early-clk-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += early-clk-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += early-clk-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += early-clk-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += early-clk-pro5.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += early-clk-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += early-clk-pxs2.o
diff --git a/arch/arm/mach-uniphier/early-clk/early-clk-ld4.c b/arch/arm/mach-uniphier/early-clk/early-clk-ld4.c
new file mode 100644 (file)
index 0000000..6574767
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+int ph1_ld4_early_clk_init(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+
+       /* deassert reset */
+       tmp = readl(SC_RSTCTRL);
+
+       tmp |= SC_RSTCTRL_NRST_UMC1 | SC_RSTCTRL_NRST_UMC0;
+       if (spl_boot_device() != BOOT_DEVICE_NAND)
+               tmp &= ~SC_RSTCTRL_NRST_NAND;
+       writel(tmp, SC_RSTCTRL);
+       readl(SC_RSTCTRL); /* dummy read */
+
+       /* privide clocks */
+       tmp = readl(SC_CLKCTRL);
+       tmp |= SC_CLKCTRL_CEN_UMC | SC_CLKCTRL_CEN_SBC | SC_CLKCTRL_CEN_PERI;
+       writel(tmp, SC_CLKCTRL);
+       readl(SC_CLKCTRL); /* dummy read */
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/early-clk/early-clk-ph1-ld4.c b/arch/arm/mach-uniphier/early-clk/early-clk-ph1-ld4.c
deleted file mode 100644 (file)
index 6574767..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.m@jp.panasonic.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-int ph1_ld4_early_clk_init(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       tmp = readl(SC_RSTCTRL);
-
-       tmp |= SC_RSTCTRL_NRST_UMC1 | SC_RSTCTRL_NRST_UMC0;
-       if (spl_boot_device() != BOOT_DEVICE_NAND)
-               tmp &= ~SC_RSTCTRL_NRST_NAND;
-       writel(tmp, SC_RSTCTRL);
-       readl(SC_RSTCTRL); /* dummy read */
-
-       /* privide clocks */
-       tmp = readl(SC_CLKCTRL);
-       tmp |= SC_CLKCTRL_CEN_UMC | SC_CLKCTRL_CEN_SBC | SC_CLKCTRL_CEN_PERI;
-       writel(tmp, SC_CLKCTRL);
-       readl(SC_CLKCTRL); /* dummy read */
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/early-clk/early-clk-ph1-pro5.c b/arch/arm/mach-uniphier/early-clk/early-clk-ph1-pro5.c
deleted file mode 100644 (file)
index d986358..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.m@jp.panasonic.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-int ph1_pro5_early_clk_init(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-
-       /*
-        * deassert reset
-        * UMCA2: Ch1 (DDR3)
-        * UMCA1, UMC31: Ch0 (WIO1)
-        * UMCA0, UMC30: Ch0 (WIO0)
-        */
-       tmp = readl(SC_RSTCTRL4);
-       tmp |= SC_RSTCTRL4_NRST_UMCSB | SC_RSTCTRL4_NRST_UMCA2 |
-              SC_RSTCTRL4_NRST_UMCA1 | SC_RSTCTRL4_NRST_UMCA0 |
-              SC_RSTCTRL4_NRST_UMC31 | SC_RSTCTRL4_NRST_UMC30;
-       writel(tmp, SC_RSTCTRL4);
-       readl(SC_RSTCTRL); /* dummy read */
-
-       /* privide clocks */
-       tmp = readl(SC_CLKCTRL);
-       tmp |= SC_CLKCTRL_CEN_SBC | SC_CLKCTRL_CEN_PERI;
-       writel(tmp, SC_CLKCTRL);
-       tmp = readl(SC_CLKCTRL4);
-       tmp |= SC_CLKCTRL4_CEN_UMCSB | SC_CLKCTRL4_CEN_UMC1 |
-              SC_CLKCTRL4_CEN_UMC0;
-       writel(tmp, SC_CLKCTRL4);
-       readl(SC_CLKCTRL4); /* dummy read */
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/early-clk/early-clk-pro5.c b/arch/arm/mach-uniphier/early-clk/early-clk-pro5.c
new file mode 100644 (file)
index 0000000..d986358
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.m@jp.panasonic.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+int ph1_pro5_early_clk_init(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+
+       /*
+        * deassert reset
+        * UMCA2: Ch1 (DDR3)
+        * UMCA1, UMC31: Ch0 (WIO1)
+        * UMCA0, UMC30: Ch0 (WIO0)
+        */
+       tmp = readl(SC_RSTCTRL4);
+       tmp |= SC_RSTCTRL4_NRST_UMCSB | SC_RSTCTRL4_NRST_UMCA2 |
+              SC_RSTCTRL4_NRST_UMCA1 | SC_RSTCTRL4_NRST_UMCA0 |
+              SC_RSTCTRL4_NRST_UMC31 | SC_RSTCTRL4_NRST_UMC30;
+       writel(tmp, SC_RSTCTRL4);
+       readl(SC_RSTCTRL); /* dummy read */
+
+       /* privide clocks */
+       tmp = readl(SC_CLKCTRL);
+       tmp |= SC_CLKCTRL_CEN_SBC | SC_CLKCTRL_CEN_PERI;
+       writel(tmp, SC_CLKCTRL);
+       tmp = readl(SC_CLKCTRL4);
+       tmp |= SC_CLKCTRL4_CEN_UMCSB | SC_CLKCTRL4_CEN_UMC1 |
+              SC_CLKCTRL4_CEN_UMC0;
+       writel(tmp, SC_CLKCTRL4);
+       readl(SC_CLKCTRL4); /* dummy read */
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/early-clk/early-clk-proxstream2.c b/arch/arm/mach-uniphier/early-clk/early-clk-proxstream2.c
deleted file mode 100644 (file)
index a573a96..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-int proxstream2_early_clk_init(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       if (spl_boot_device() != BOOT_DEVICE_NAND) {
-               tmp = readl(SC_RSTCTRL);
-               tmp &= ~SC_RSTCTRL_NRST_NAND;
-               writel(tmp, SC_RSTCTRL);
-       };
-
-       tmp = readl(SC_RSTCTRL4);
-       tmp |= SC_RSTCTRL4_NRST_UMCSB | SC_RSTCTRL4_NRST_UMCA2 |
-              SC_RSTCTRL4_NRST_UMCA1 | SC_RSTCTRL4_NRST_UMCA0 |
-              SC_RSTCTRL4_NRST_UMC32 | SC_RSTCTRL4_NRST_UMC31 |
-              SC_RSTCTRL4_NRST_UMC30;
-       writel(tmp, SC_RSTCTRL4);
-       readl(SC_RSTCTRL4); /* dummy read */
-
-       /* privide clocks */
-       tmp = readl(SC_CLKCTRL);
-       tmp |= SC_CLKCTRL_CEN_SBC | SC_CLKCTRL_CEN_PERI;
-       writel(tmp, SC_CLKCTRL);
-
-       tmp = readl(SC_CLKCTRL4);
-       tmp |= SC_CLKCTRL4_CEN_UMCSB | SC_CLKCTRL4_CEN_UMC2 |
-              SC_CLKCTRL4_CEN_UMC1 | SC_CLKCTRL4_CEN_UMC0;
-       writel(tmp, SC_CLKCTRL4);
-       readl(SC_CLKCTRL4); /* dummy read */
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/early-clk/early-clk-pxs2.c b/arch/arm/mach-uniphier/early-clk/early-clk-pxs2.c
new file mode 100644 (file)
index 0000000..a573a96
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+int proxstream2_early_clk_init(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+
+       /* deassert reset */
+       if (spl_boot_device() != BOOT_DEVICE_NAND) {
+               tmp = readl(SC_RSTCTRL);
+               tmp &= ~SC_RSTCTRL_NRST_NAND;
+               writel(tmp, SC_RSTCTRL);
+       };
+
+       tmp = readl(SC_RSTCTRL4);
+       tmp |= SC_RSTCTRL4_NRST_UMCSB | SC_RSTCTRL4_NRST_UMCA2 |
+              SC_RSTCTRL4_NRST_UMCA1 | SC_RSTCTRL4_NRST_UMCA0 |
+              SC_RSTCTRL4_NRST_UMC32 | SC_RSTCTRL4_NRST_UMC31 |
+              SC_RSTCTRL4_NRST_UMC30;
+       writel(tmp, SC_RSTCTRL4);
+       readl(SC_RSTCTRL4); /* dummy read */
+
+       /* privide clocks */
+       tmp = readl(SC_CLKCTRL);
+       tmp |= SC_CLKCTRL_CEN_SBC | SC_CLKCTRL_CEN_PERI;
+       writel(tmp, SC_CLKCTRL);
+
+       tmp = readl(SC_CLKCTRL4);
+       tmp |= SC_CLKCTRL4_CEN_UMCSB | SC_CLKCTRL4_CEN_UMC2 |
+              SC_CLKCTRL4_CEN_UMC1 | SC_CLKCTRL4_CEN_UMC0;
+       writel(tmp, SC_CLKCTRL4);
+       readl(SC_CLKCTRL4); /* dummy read */
+
+       return 0;
+}
index 3be71fbf07c4391a700c09ead754d6b5abeebab0..dc4064c05bcb07e4f6538c8e669d97f8add3ef6d 100644 (file)
@@ -2,4 +2,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += early-pinctrl-ph1-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += early-pinctrl-sld3.o
diff --git a/arch/arm/mach-uniphier/early-pinctrl/early-pinctrl-ph1-sld3.c b/arch/arm/mach-uniphier/early-pinctrl/early-pinctrl-ph1-sld3.c
deleted file mode 100644 (file)
index 7923644..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-int ph1_sld3_early_pin_init(const struct uniphier_board_data *bd)
-{
-       /* Comment format:    PAD Name -> Function Name */
-
-#ifdef CONFIG_UNIPHIER_SERIAL
-       sg_set_pinsel(63, 0, 4, 4);     /* RXD0 */
-       sg_set_pinsel(64, 1, 4, 4);     /* TXD0 */
-
-       sg_set_pinsel(65, 0, 4, 4);     /* RXD1 */
-       sg_set_pinsel(66, 1, 4, 4);     /* TXD1 */
-
-       sg_set_pinsel(96, 2, 4, 4);     /* RXD2 */
-       sg_set_pinsel(102, 2, 4, 4);    /* TXD2 */
-#endif
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/early-pinctrl/early-pinctrl-sld3.c b/arch/arm/mach-uniphier/early-pinctrl/early-pinctrl-sld3.c
new file mode 100644 (file)
index 0000000..7923644
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+int ph1_sld3_early_pin_init(const struct uniphier_board_data *bd)
+{
+       /* Comment format:    PAD Name -> Function Name */
+
+#ifdef CONFIG_UNIPHIER_SERIAL
+       sg_set_pinsel(63, 0, 4, 4);     /* RXD0 */
+       sg_set_pinsel(64, 1, 4, 4);     /* TXD0 */
+
+       sg_set_pinsel(65, 0, 4, 4);     /* RXD1 */
+       sg_set_pinsel(66, 1, 4, 4);     /* TXD1 */
+
+       sg_set_pinsel(96, 2, 4, 4);     /* RXD2 */
+       sg_set_pinsel(102, 2, 4, 4);    /* TXD2 */
+#endif
+
+       return 0;
+}
index ef8095362366244a075b563803977fb4dca545c7..34b15e342722794fbc4e8d823838f9b507ed575e 100644 (file)
@@ -4,10 +4,10 @@
 
 obj-y                                  += init.o
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += init-ph1-sld3.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += init-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += init-ph1-pro4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += init-ph1-sld8.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO5)   += init-ph1-pro5.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += init-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += init-proxstream2.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += init-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += init-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += init-pro4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += init-sld8.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += init-pro5.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += init-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += init-pxs2.o
diff --git a/arch/arm/mach-uniphier/init/init-ld4.c b/arch/arm/mach-uniphier/init/init-ld4.c
new file mode 100644 (file)
index 0000000..a9c6d72
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+#include "../init.h"
+#include "../micro-support-card.h"
+
+int ph1_ld4_init(const struct uniphier_board_data *bd)
+{
+       ph1_ld4_bcu_init(bd);
+
+       ph1_ld4_sbc_init(bd);
+
+       support_card_reset();
+
+       ph1_ld4_pll_init(bd);
+
+       support_card_init();
+
+       led_puts("L0");
+
+       memconf_init(bd);
+
+       led_puts("L1");
+
+       ph1_ld4_early_clk_init(bd);
+
+       led_puts("L2");
+
+       led_puts("L3");
+
+#ifdef CONFIG_SPL_SERIAL_SUPPORT
+       preloader_console_init();
+#endif
+
+       led_puts("L4");
+
+       {
+               int res;
+
+               res = ph1_ld4_umc_init(bd);
+               if (res < 0) {
+                       while (1)
+                               ;
+               }
+       }
+
+       led_puts("L5");
+
+       ph1_ld4_enable_dpll_ssc(bd);
+
+       led_puts("L6");
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/init/init-ph1-ld4.c b/arch/arm/mach-uniphier/init/init-ph1-ld4.c
deleted file mode 100644 (file)
index a9c6d72..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-
-#include "../init.h"
-#include "../micro-support-card.h"
-
-int ph1_ld4_init(const struct uniphier_board_data *bd)
-{
-       ph1_ld4_bcu_init(bd);
-
-       ph1_ld4_sbc_init(bd);
-
-       support_card_reset();
-
-       ph1_ld4_pll_init(bd);
-
-       support_card_init();
-
-       led_puts("L0");
-
-       memconf_init(bd);
-
-       led_puts("L1");
-
-       ph1_ld4_early_clk_init(bd);
-
-       led_puts("L2");
-
-       led_puts("L3");
-
-#ifdef CONFIG_SPL_SERIAL_SUPPORT
-       preloader_console_init();
-#endif
-
-       led_puts("L4");
-
-       {
-               int res;
-
-               res = ph1_ld4_umc_init(bd);
-               if (res < 0) {
-                       while (1)
-                               ;
-               }
-       }
-
-       led_puts("L5");
-
-       ph1_ld4_enable_dpll_ssc(bd);
-
-       led_puts("L6");
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/init/init-ph1-pro4.c b/arch/arm/mach-uniphier/init/init-ph1-pro4.c
deleted file mode 100644 (file)
index 6fcd8b6..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-
-#include "../init.h"
-#include "../micro-support-card.h"
-
-int ph1_pro4_init(const struct uniphier_board_data *bd)
-{
-       ph1_pro4_sbc_init(bd);
-
-       support_card_reset();
-
-       ph1_pro4_pll_init(bd);
-
-       support_card_init();
-
-       led_puts("L0");
-
-       memconf_init(bd);
-
-       led_puts("L1");
-
-       ph1_ld4_early_clk_init(bd);
-
-       led_puts("L2");
-
-       led_puts("L3");
-
-#ifdef CONFIG_SPL_SERIAL_SUPPORT
-       preloader_console_init();
-#endif
-
-       led_puts("L4");
-
-       {
-               int res;
-
-               res = ph1_pro4_umc_init(bd);
-               if (res < 0) {
-                       while (1)
-                               ;
-               }
-       }
-
-       led_puts("L5");
-
-       ph1_ld4_enable_dpll_ssc(bd);
-
-       led_puts("L6");
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/init/init-ph1-pro5.c b/arch/arm/mach-uniphier/init/init-ph1-pro5.c
deleted file mode 100644 (file)
index 45c65cf..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-
-#include "../init.h"
-#include "../micro-support-card.h"
-
-int ph1_pro5_init(const struct uniphier_board_data *bd)
-{
-       ph1_pro4_sbc_init(bd);
-
-       support_card_reset();
-
-       support_card_init();
-
-       led_puts("L0");
-
-       memconf_init(bd);
-
-       led_puts("L1");
-
-       ph1_pro5_early_clk_init(bd);
-
-       led_puts("L2");
-
-       led_puts("L3");
-
-#ifdef CONFIG_SPL_SERIAL_SUPPORT
-       preloader_console_init();
-#endif
-
-       led_puts("L4");
-
-       led_puts("L5");
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/init/init-ph1-sld3.c b/arch/arm/mach-uniphier/init/init-ph1-sld3.c
deleted file mode 100644 (file)
index 7827ec0..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-
-#include "../init.h"
-#include "../micro-support-card.h"
-
-int ph1_sld3_init(const struct uniphier_board_data *bd)
-{
-       ph1_sld3_bcu_init(bd);
-
-       ph1_sld3_sbc_init(bd);
-
-       support_card_reset();
-
-       ph1_sld3_pll_init(bd);
-
-       support_card_init();
-
-       led_puts("L0");
-
-       memconf_init(bd);
-       ph1_sld3_memconf_init(bd);
-
-       led_puts("L1");
-
-       ph1_ld4_early_clk_init(bd);
-
-       led_puts("L2");
-
-       ph1_sld3_early_pin_init(bd);
-
-       led_puts("L3");
-
-#ifdef CONFIG_SPL_SERIAL_SUPPORT
-       preloader_console_init();
-#endif
-
-       led_puts("L4");
-
-       led_puts("L5");
-
-       ph1_sld3_enable_dpll_ssc(bd);
-
-       led_puts("L6");
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/init/init-ph1-sld8.c b/arch/arm/mach-uniphier/init/init-ph1-sld8.c
deleted file mode 100644 (file)
index 6c96aed..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-
-#include "../init.h"
-#include "../micro-support-card.h"
-
-int ph1_sld8_init(const struct uniphier_board_data *bd)
-{
-       ph1_ld4_bcu_init(bd);
-
-       ph1_ld4_sbc_init(bd);
-
-       support_card_reset();
-
-       ph1_sld8_pll_init(bd);
-
-       support_card_init();
-
-       led_puts("L0");
-
-       memconf_init(bd);
-
-       led_puts("L1");
-
-       ph1_ld4_early_clk_init(bd);
-
-       led_puts("L2");
-
-       led_puts("L3");
-
-#ifdef CONFIG_SPL_SERIAL_SUPPORT
-       preloader_console_init();
-#endif
-
-       led_puts("L4");
-
-       {
-               int res;
-
-               res = ph1_sld8_umc_init(bd);
-               if (res < 0) {
-                       while (1)
-                               ;
-               }
-       }
-
-       led_puts("L5");
-
-       ph1_ld4_enable_dpll_ssc(bd);
-
-       led_puts("L6");
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/init/init-pro4.c b/arch/arm/mach-uniphier/init/init-pro4.c
new file mode 100644 (file)
index 0000000..6fcd8b6
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+#include "../init.h"
+#include "../micro-support-card.h"
+
+int ph1_pro4_init(const struct uniphier_board_data *bd)
+{
+       ph1_pro4_sbc_init(bd);
+
+       support_card_reset();
+
+       ph1_pro4_pll_init(bd);
+
+       support_card_init();
+
+       led_puts("L0");
+
+       memconf_init(bd);
+
+       led_puts("L1");
+
+       ph1_ld4_early_clk_init(bd);
+
+       led_puts("L2");
+
+       led_puts("L3");
+
+#ifdef CONFIG_SPL_SERIAL_SUPPORT
+       preloader_console_init();
+#endif
+
+       led_puts("L4");
+
+       {
+               int res;
+
+               res = ph1_pro4_umc_init(bd);
+               if (res < 0) {
+                       while (1)
+                               ;
+               }
+       }
+
+       led_puts("L5");
+
+       ph1_ld4_enable_dpll_ssc(bd);
+
+       led_puts("L6");
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/init/init-pro5.c b/arch/arm/mach-uniphier/init/init-pro5.c
new file mode 100644 (file)
index 0000000..45c65cf
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+#include "../init.h"
+#include "../micro-support-card.h"
+
+int ph1_pro5_init(const struct uniphier_board_data *bd)
+{
+       ph1_pro4_sbc_init(bd);
+
+       support_card_reset();
+
+       support_card_init();
+
+       led_puts("L0");
+
+       memconf_init(bd);
+
+       led_puts("L1");
+
+       ph1_pro5_early_clk_init(bd);
+
+       led_puts("L2");
+
+       led_puts("L3");
+
+#ifdef CONFIG_SPL_SERIAL_SUPPORT
+       preloader_console_init();
+#endif
+
+       led_puts("L4");
+
+       led_puts("L5");
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/init/init-proxstream2.c b/arch/arm/mach-uniphier/init/init-proxstream2.c
deleted file mode 100644 (file)
index 029c544..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-
-#include "../init.h"
-#include "../micro-support-card.h"
-
-int proxstream2_init(const struct uniphier_board_data *bd)
-{
-       int ret;
-
-       proxstream2_sbc_init(bd);
-
-       support_card_reset();
-
-       support_card_init();
-
-       led_puts("L0");
-
-       memconf_init(bd);
-       proxstream2_memconf_init(bd);
-
-       led_puts("L1");
-
-       proxstream2_early_clk_init(bd);
-
-       led_puts("L2");
-
-       led_puts("L3");
-
-#ifdef CONFIG_SPL_SERIAL_SUPPORT
-       preloader_console_init();
-#endif
-
-       led_puts("L4");
-
-       ret = proxstream2_umc_init(bd);
-       if (ret)
-               return ret;
-
-       led_puts("L5");
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/init/init-pxs2.c b/arch/arm/mach-uniphier/init/init-pxs2.c
new file mode 100644 (file)
index 0000000..029c544
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+#include "../init.h"
+#include "../micro-support-card.h"
+
+int proxstream2_init(const struct uniphier_board_data *bd)
+{
+       int ret;
+
+       proxstream2_sbc_init(bd);
+
+       support_card_reset();
+
+       support_card_init();
+
+       led_puts("L0");
+
+       memconf_init(bd);
+       proxstream2_memconf_init(bd);
+
+       led_puts("L1");
+
+       proxstream2_early_clk_init(bd);
+
+       led_puts("L2");
+
+       led_puts("L3");
+
+#ifdef CONFIG_SPL_SERIAL_SUPPORT
+       preloader_console_init();
+#endif
+
+       led_puts("L4");
+
+       ret = proxstream2_umc_init(bd);
+       if (ret)
+               return ret;
+
+       led_puts("L5");
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/init/init-sld3.c b/arch/arm/mach-uniphier/init/init-sld3.c
new file mode 100644 (file)
index 0000000..7827ec0
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+#include "../init.h"
+#include "../micro-support-card.h"
+
+int ph1_sld3_init(const struct uniphier_board_data *bd)
+{
+       ph1_sld3_bcu_init(bd);
+
+       ph1_sld3_sbc_init(bd);
+
+       support_card_reset();
+
+       ph1_sld3_pll_init(bd);
+
+       support_card_init();
+
+       led_puts("L0");
+
+       memconf_init(bd);
+       ph1_sld3_memconf_init(bd);
+
+       led_puts("L1");
+
+       ph1_ld4_early_clk_init(bd);
+
+       led_puts("L2");
+
+       ph1_sld3_early_pin_init(bd);
+
+       led_puts("L3");
+
+#ifdef CONFIG_SPL_SERIAL_SUPPORT
+       preloader_console_init();
+#endif
+
+       led_puts("L4");
+
+       led_puts("L5");
+
+       ph1_sld3_enable_dpll_ssc(bd);
+
+       led_puts("L6");
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/init/init-sld8.c b/arch/arm/mach-uniphier/init/init-sld8.c
new file mode 100644 (file)
index 0000000..6c96aed
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <spl.h>
+
+#include "../init.h"
+#include "../micro-support-card.h"
+
+int ph1_sld8_init(const struct uniphier_board_data *bd)
+{
+       ph1_ld4_bcu_init(bd);
+
+       ph1_ld4_sbc_init(bd);
+
+       support_card_reset();
+
+       ph1_sld8_pll_init(bd);
+
+       support_card_init();
+
+       led_puts("L0");
+
+       memconf_init(bd);
+
+       led_puts("L1");
+
+       ph1_ld4_early_clk_init(bd);
+
+       led_puts("L2");
+
+       led_puts("L3");
+
+#ifdef CONFIG_SPL_SERIAL_SUPPORT
+       preloader_console_init();
+#endif
+
+       led_puts("L4");
+
+       {
+               int res;
+
+               res = ph1_sld8_umc_init(bd);
+               if (res < 0) {
+                       while (1)
+                               ;
+               }
+       }
+
+       led_puts("L5");
+
+       ph1_ld4_enable_dpll_ssc(bd);
+
+       led_puts("L6");
+
+       return 0;
+}
index b30f3bd9d62619d4aef10b4900161cda70fd40af..d5d1018dd7da7dc78a649af778063d1036710ecb 100644 (file)
@@ -19,35 +19,34 @@ void spl_board_init(void)
                hang();
 
        switch (uniphier_get_soc_type()) {
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
-       case SOC_UNIPHIER_PH1_SLD3:
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
+       case SOC_UNIPHIER_SLD3:
                ph1_sld3_init(param);
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4)
-       case SOC_UNIPHIER_PH1_LD4:
+#if defined(CONFIG_ARCH_UNIPHIER_LD4)
+       case SOC_UNIPHIER_LD4:
                ph1_ld4_init(param);
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4)
-       case SOC_UNIPHIER_PH1_PRO4:
+#if defined(CONFIG_ARCH_UNIPHIER_PRO4)
+       case SOC_UNIPHIER_PRO4:
                ph1_pro4_init(param);
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
-       case SOC_UNIPHIER_PH1_SLD8:
+#if defined(CONFIG_ARCH_UNIPHIER_SLD8)
+       case SOC_UNIPHIER_SLD8:
                ph1_sld8_init(param);
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
-       case SOC_UNIPHIER_PH1_PRO5:
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
+       case SOC_UNIPHIER_PRO5:
                ph1_pro5_init(param);
                break;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
-       case SOC_UNIPHIER_PROXSTREAM2:
-       case SOC_UNIPHIER_PH1_LD6B:
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2) || defined(CONFIG_ARCH_UNIPHIER_LD6B)
+       case SOC_UNIPHIER_PXS2:
+       case SOC_UNIPHIER_LD6B:
                proxstream2_init(param);
                break;
 #endif
index a152f612660e1ebcdc6d5af026a0c96159eecd42..78bb677dd48840ad17f0386aafb860a92f10e22e 100644 (file)
@@ -3,6 +3,6 @@
 #
 
 obj-y                                  += memconf.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += memconf-ph1-sld3.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += memconf-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += memconf-proxstream2.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += memconf-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += memconf-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += memconf-pxs2.o
diff --git a/arch/arm/mach-uniphier/memconf/memconf-ph1-sld3.c b/arch/arm/mach-uniphier/memconf/memconf-ph1-sld3.c
deleted file mode 100644 (file)
index 6fdf910..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-int ph1_sld3_memconf_init(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-       unsigned long size_per_word;
-
-       tmp = readl(SG_MEMCONF);
-
-       tmp &= ~(SG_MEMCONF_CH2_SZ_MASK | SG_MEMCONF_CH2_NUM_MASK);
-
-       switch (bd->dram_ch[2].width) {
-       case 16:
-               tmp |= SG_MEMCONF_CH2_NUM_1;
-               size_per_word = bd->dram_ch[2].size;
-               break;
-       case 32:
-               tmp |= SG_MEMCONF_CH2_NUM_2;
-               size_per_word = bd->dram_ch[2].size >> 1;
-               break;
-       default:
-               pr_err("error: unsupported DRAM Ch2 width\n");
-               return -EINVAL;
-       }
-
-       /* Set DDR size */
-       switch (size_per_word) {
-       case SZ_64M:
-               tmp |= SG_MEMCONF_CH2_SZ_64M;
-               break;
-       case SZ_128M:
-               tmp |= SG_MEMCONF_CH2_SZ_128M;
-               break;
-       case SZ_256M:
-               tmp |= SG_MEMCONF_CH2_SZ_256M;
-               break;
-       case SZ_512M:
-               tmp |= SG_MEMCONF_CH2_SZ_512M;
-               break;
-       default:
-               pr_err("error: unsupported DRAM Ch2 size\n");
-               return -EINVAL;
-       }
-
-       writel(tmp, SG_MEMCONF);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/memconf/memconf-proxstream2.c b/arch/arm/mach-uniphier/memconf/memconf-proxstream2.c
deleted file mode 100644 (file)
index c47fe0a..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-int proxstream2_memconf_init(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-       unsigned long size_per_word;
-
-       tmp = readl(SG_MEMCONF);
-
-       tmp &= ~(SG_MEMCONF_CH2_SZ_MASK | SG_MEMCONF_CH2_NUM_MASK);
-
-       switch (bd->dram_ch[2].width) {
-       case 16:
-               tmp |= SG_MEMCONF_CH2_NUM_1;
-               size_per_word = bd->dram_ch[2].size;
-               break;
-       case 32:
-               tmp |= SG_MEMCONF_CH2_NUM_2;
-               size_per_word = bd->dram_ch[2].size >> 1;
-               break;
-       default:
-               pr_err("error: unsupported DRAM Ch2 width\n");
-               return -EINVAL;
-       }
-
-       /* Set DDR size */
-       switch (size_per_word) {
-       case SZ_64M:
-               tmp |= SG_MEMCONF_CH2_SZ_64M;
-               break;
-       case SZ_128M:
-               tmp |= SG_MEMCONF_CH2_SZ_128M;
-               break;
-       case SZ_256M:
-               tmp |= SG_MEMCONF_CH2_SZ_256M;
-               break;
-       case SZ_512M:
-               tmp |= SG_MEMCONF_CH2_SZ_512M;
-               break;
-       default:
-               pr_err("error: unsupported DRAM Ch2 size\n");
-               return -EINVAL;
-       }
-
-       if (size_per_word)
-               tmp &= ~SG_MEMCONF_CH2_DISABLE;
-       else
-               tmp |= SG_MEMCONF_CH2_DISABLE;
-
-       writel(tmp, SG_MEMCONF);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/memconf/memconf-pxs2.c b/arch/arm/mach-uniphier/memconf/memconf-pxs2.c
new file mode 100644 (file)
index 0000000..c47fe0a
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+int proxstream2_memconf_init(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+       unsigned long size_per_word;
+
+       tmp = readl(SG_MEMCONF);
+
+       tmp &= ~(SG_MEMCONF_CH2_SZ_MASK | SG_MEMCONF_CH2_NUM_MASK);
+
+       switch (bd->dram_ch[2].width) {
+       case 16:
+               tmp |= SG_MEMCONF_CH2_NUM_1;
+               size_per_word = bd->dram_ch[2].size;
+               break;
+       case 32:
+               tmp |= SG_MEMCONF_CH2_NUM_2;
+               size_per_word = bd->dram_ch[2].size >> 1;
+               break;
+       default:
+               pr_err("error: unsupported DRAM Ch2 width\n");
+               return -EINVAL;
+       }
+
+       /* Set DDR size */
+       switch (size_per_word) {
+       case SZ_64M:
+               tmp |= SG_MEMCONF_CH2_SZ_64M;
+               break;
+       case SZ_128M:
+               tmp |= SG_MEMCONF_CH2_SZ_128M;
+               break;
+       case SZ_256M:
+               tmp |= SG_MEMCONF_CH2_SZ_256M;
+               break;
+       case SZ_512M:
+               tmp |= SG_MEMCONF_CH2_SZ_512M;
+               break;
+       default:
+               pr_err("error: unsupported DRAM Ch2 size\n");
+               return -EINVAL;
+       }
+
+       if (size_per_word)
+               tmp &= ~SG_MEMCONF_CH2_DISABLE;
+       else
+               tmp |= SG_MEMCONF_CH2_DISABLE;
+
+       writel(tmp, SG_MEMCONF);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/memconf/memconf-sld3.c b/arch/arm/mach-uniphier/memconf/memconf-sld3.c
new file mode 100644 (file)
index 0000000..6fdf910
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/sizes.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+int ph1_sld3_memconf_init(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+       unsigned long size_per_word;
+
+       tmp = readl(SG_MEMCONF);
+
+       tmp &= ~(SG_MEMCONF_CH2_SZ_MASK | SG_MEMCONF_CH2_NUM_MASK);
+
+       switch (bd->dram_ch[2].width) {
+       case 16:
+               tmp |= SG_MEMCONF_CH2_NUM_1;
+               size_per_word = bd->dram_ch[2].size;
+               break;
+       case 32:
+               tmp |= SG_MEMCONF_CH2_NUM_2;
+               size_per_word = bd->dram_ch[2].size >> 1;
+               break;
+       default:
+               pr_err("error: unsupported DRAM Ch2 width\n");
+               return -EINVAL;
+       }
+
+       /* Set DDR size */
+       switch (size_per_word) {
+       case SZ_64M:
+               tmp |= SG_MEMCONF_CH2_SZ_64M;
+               break;
+       case SZ_128M:
+               tmp |= SG_MEMCONF_CH2_SZ_128M;
+               break;
+       case SZ_256M:
+               tmp |= SG_MEMCONF_CH2_SZ_256M;
+               break;
+       case SZ_512M:
+               tmp |= SG_MEMCONF_CH2_SZ_512M;
+               break;
+       default:
+               pr_err("error: unsupported DRAM Ch2 size\n");
+               return -EINVAL;
+       }
+
+       writel(tmp, SG_MEMCONF);
+
+       return 0;
+}
index 80a9cdaa80242921498afbc37899b24b5b00f1a0..5504c24c3d4996327212456f99a068f32c7f44fb 100644 (file)
@@ -2,10 +2,10 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += pinctrl-ph1-sld3.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += pinctrl-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += pinctrl-ph1-pro4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += pinctrl-ph1-sld8.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO5)   += pinctrl-ph1-pro5.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += pinctrl-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += pinctrl-ph1-ld6b.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += pinctrl-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += pinctrl-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += pinctrl-pro4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += pinctrl-sld8.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += pinctrl-pro5.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += pinctrl-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += pinctrl-ld6b.o
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ld4.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ld4.c
new file mode 100644 (file)
index 0000000..2fe2c7f
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+void ph1_ld4_pin_init(void)
+{
+       u32 tmp;
+
+       /* Comment format:    PAD Name -> Function Name */
+
+#ifdef CONFIG_NAND_DENALI
+       sg_set_pinsel(158, 0, 8, 4);    /* XNFRE -> XNFRE_GB */
+       sg_set_pinsel(159, 0, 8, 4);    /* XNFWE -> XNFWE_GB */
+       sg_set_pinsel(160, 0, 8, 4);    /* XFALE -> NFALE_GB */
+       sg_set_pinsel(161, 0, 8, 4);    /* XFCLE -> NFCLE_GB */
+       sg_set_pinsel(162, 0, 8, 4);    /* XNFWP -> XFNWP_GB */
+       sg_set_pinsel(163, 0, 8, 4);    /* XNFCE0 -> XNFCE0_GB */
+       sg_set_pinsel(164, 0, 8, 4);    /* NANDRYBY0 -> NANDRYBY0_GB */
+       sg_set_pinsel(22, 0, 8, 4);     /* MMCCLK  -> XFNCE1_GB */
+       sg_set_pinsel(23, 0, 8, 4);     /* MMCCMD  -> NANDRYBY1_GB */
+       sg_set_pinsel(24, 0, 8, 4);     /* MMCDAT0 -> NFD0_GB */
+       sg_set_pinsel(25, 0, 8, 4);     /* MMCDAT1 -> NFD1_GB */
+       sg_set_pinsel(26, 0, 8, 4);     /* MMCDAT2 -> NFD2_GB */
+       sg_set_pinsel(27, 0, 8, 4);     /* MMCDAT3 -> NFD3_GB */
+       sg_set_pinsel(28, 0, 8, 4);     /* MMCDAT4 -> NFD4_GB */
+       sg_set_pinsel(29, 0, 8, 4);     /* MMCDAT5 -> NFD5_GB */
+       sg_set_pinsel(30, 0, 8, 4);     /* MMCDAT6 -> NFD6_GB */
+       sg_set_pinsel(31, 0, 8, 4);     /* MMCDAT7 -> NFD7_GB */
+#endif
+
+       tmp = readl(SG_IECTRL);
+       tmp |= 0x41;
+       writel(tmp, SG_IECTRL);
+}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ld6b.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ld6b.c
new file mode 100644 (file)
index 0000000..4faeaf5
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+void ph1_ld6b_pin_init(void)
+{
+       /* Comment format:    PAD Name -> Function Name */
+
+#ifdef CONFIG_NAND_DENALI
+       sg_set_pinsel(30, 0, 8, 4);     /* XNFRE  -> XNFRE */
+       sg_set_pinsel(31, 0, 8, 4);     /* XNFWE  -> XNFWE */
+       sg_set_pinsel(32, 0, 8, 4);     /* NFALE  -> NFALE */
+       sg_set_pinsel(33, 0, 8, 4);     /* NFCLE  -> NFCLE */
+       sg_set_pinsel(34, 0, 8, 4);     /* XNFWP  -> XNFWP */
+       sg_set_pinsel(35, 0, 8, 4);     /* XNFCE0 -> XNFCE0 */
+       sg_set_pinsel(36, 0, 8, 4);     /* NRYBY0 -> NRYBY0 */
+       sg_set_pinsel(37, 0, 8, 4);     /* XNFCE1 -> NRYBY1 */
+       sg_set_pinsel(38, 0, 8, 4);     /* NRYBY1 -> XNFCE1 */
+       sg_set_pinsel(39, 0, 8, 4);     /* NFD0   -> NFD0 */
+       sg_set_pinsel(40, 0, 8, 4);     /* NFD1   -> NFD1 */
+       sg_set_pinsel(41, 0, 8, 4);     /* NFD2   -> NFD2 */
+       sg_set_pinsel(42, 0, 8, 4);     /* NFD3   -> NFD3 */
+       sg_set_pinsel(43, 0, 8, 4);     /* NFD4   -> NFD4 */
+       sg_set_pinsel(44, 0, 8, 4);     /* NFD5   -> NFD5 */
+       sg_set_pinsel(45, 0, 8, 4);     /* NFD6   -> NFD6 */
+       sg_set_pinsel(46, 0, 8, 4);     /* NFD7   -> NFD7 */
+#endif
+
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       sg_set_pinsel(56, 0, 8, 4);     /* USB0VBUS -> USB0VBUS */
+       sg_set_pinsel(57, 0, 8, 4);     /* USB0OD   -> USB0OD */
+       sg_set_pinsel(58, 0, 8, 4);     /* USB1VBUS -> USB1VBUS */
+       sg_set_pinsel(59, 0, 8, 4);     /* USB1OD   -> USB1OD */
+       sg_set_pinsel(60, 0, 8, 4);     /* USB2VBUS -> USB2VBUS */
+       sg_set_pinsel(61, 0, 8, 4);     /* USB2OD   -> USB2OD */
+       sg_set_pinsel(62, 0, 8, 4);     /* USB3VBUS -> USB3VBUS */
+       sg_set_pinsel(63, 0, 8, 4);     /* USB3OD   -> USB3OD */
+#endif
+}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-ld4.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-ld4.c
deleted file mode 100644 (file)
index 2fe2c7f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-void ph1_ld4_pin_init(void)
-{
-       u32 tmp;
-
-       /* Comment format:    PAD Name -> Function Name */
-
-#ifdef CONFIG_NAND_DENALI
-       sg_set_pinsel(158, 0, 8, 4);    /* XNFRE -> XNFRE_GB */
-       sg_set_pinsel(159, 0, 8, 4);    /* XNFWE -> XNFWE_GB */
-       sg_set_pinsel(160, 0, 8, 4);    /* XFALE -> NFALE_GB */
-       sg_set_pinsel(161, 0, 8, 4);    /* XFCLE -> NFCLE_GB */
-       sg_set_pinsel(162, 0, 8, 4);    /* XNFWP -> XFNWP_GB */
-       sg_set_pinsel(163, 0, 8, 4);    /* XNFCE0 -> XNFCE0_GB */
-       sg_set_pinsel(164, 0, 8, 4);    /* NANDRYBY0 -> NANDRYBY0_GB */
-       sg_set_pinsel(22, 0, 8, 4);     /* MMCCLK  -> XFNCE1_GB */
-       sg_set_pinsel(23, 0, 8, 4);     /* MMCCMD  -> NANDRYBY1_GB */
-       sg_set_pinsel(24, 0, 8, 4);     /* MMCDAT0 -> NFD0_GB */
-       sg_set_pinsel(25, 0, 8, 4);     /* MMCDAT1 -> NFD1_GB */
-       sg_set_pinsel(26, 0, 8, 4);     /* MMCDAT2 -> NFD2_GB */
-       sg_set_pinsel(27, 0, 8, 4);     /* MMCDAT3 -> NFD3_GB */
-       sg_set_pinsel(28, 0, 8, 4);     /* MMCDAT4 -> NFD4_GB */
-       sg_set_pinsel(29, 0, 8, 4);     /* MMCDAT5 -> NFD5_GB */
-       sg_set_pinsel(30, 0, 8, 4);     /* MMCDAT6 -> NFD6_GB */
-       sg_set_pinsel(31, 0, 8, 4);     /* MMCDAT7 -> NFD7_GB */
-#endif
-
-       tmp = readl(SG_IECTRL);
-       tmp |= 0x41;
-       writel(tmp, SG_IECTRL);
-}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-ld6b.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-ld6b.c
deleted file mode 100644 (file)
index 4faeaf5..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-void ph1_ld6b_pin_init(void)
-{
-       /* Comment format:    PAD Name -> Function Name */
-
-#ifdef CONFIG_NAND_DENALI
-       sg_set_pinsel(30, 0, 8, 4);     /* XNFRE  -> XNFRE */
-       sg_set_pinsel(31, 0, 8, 4);     /* XNFWE  -> XNFWE */
-       sg_set_pinsel(32, 0, 8, 4);     /* NFALE  -> NFALE */
-       sg_set_pinsel(33, 0, 8, 4);     /* NFCLE  -> NFCLE */
-       sg_set_pinsel(34, 0, 8, 4);     /* XNFWP  -> XNFWP */
-       sg_set_pinsel(35, 0, 8, 4);     /* XNFCE0 -> XNFCE0 */
-       sg_set_pinsel(36, 0, 8, 4);     /* NRYBY0 -> NRYBY0 */
-       sg_set_pinsel(37, 0, 8, 4);     /* XNFCE1 -> NRYBY1 */
-       sg_set_pinsel(38, 0, 8, 4);     /* NRYBY1 -> XNFCE1 */
-       sg_set_pinsel(39, 0, 8, 4);     /* NFD0   -> NFD0 */
-       sg_set_pinsel(40, 0, 8, 4);     /* NFD1   -> NFD1 */
-       sg_set_pinsel(41, 0, 8, 4);     /* NFD2   -> NFD2 */
-       sg_set_pinsel(42, 0, 8, 4);     /* NFD3   -> NFD3 */
-       sg_set_pinsel(43, 0, 8, 4);     /* NFD4   -> NFD4 */
-       sg_set_pinsel(44, 0, 8, 4);     /* NFD5   -> NFD5 */
-       sg_set_pinsel(45, 0, 8, 4);     /* NFD6   -> NFD6 */
-       sg_set_pinsel(46, 0, 8, 4);     /* NFD7   -> NFD7 */
-#endif
-
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       sg_set_pinsel(56, 0, 8, 4);     /* USB0VBUS -> USB0VBUS */
-       sg_set_pinsel(57, 0, 8, 4);     /* USB0OD   -> USB0OD */
-       sg_set_pinsel(58, 0, 8, 4);     /* USB1VBUS -> USB1VBUS */
-       sg_set_pinsel(59, 0, 8, 4);     /* USB1OD   -> USB1OD */
-       sg_set_pinsel(60, 0, 8, 4);     /* USB2VBUS -> USB2VBUS */
-       sg_set_pinsel(61, 0, 8, 4);     /* USB2OD   -> USB2OD */
-       sg_set_pinsel(62, 0, 8, 4);     /* USB3VBUS -> USB3VBUS */
-       sg_set_pinsel(63, 0, 8, 4);     /* USB3OD   -> USB3OD */
-#endif
-}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-pro4.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-pro4.c
deleted file mode 100644 (file)
index b08ca1e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-void ph1_pro4_pin_init(void)
-{
-       /* Comment format:    PAD Name -> Function Name */
-
-#ifdef CONFIG_NAND_DENALI
-       sg_set_pinsel(40, 0, 4, 8);     /* NFD0   -> NFD0 */
-       sg_set_pinsel(41, 0, 4, 8);     /* NFD1   -> NFD1 */
-       sg_set_pinsel(42, 0, 4, 8);     /* NFD2   -> NFD2 */
-       sg_set_pinsel(43, 0, 4, 8);     /* NFD3   -> NFD3 */
-       sg_set_pinsel(44, 0, 4, 8);     /* NFD4   -> NFD4 */
-       sg_set_pinsel(45, 0, 4, 8);     /* NFD5   -> NFD5 */
-       sg_set_pinsel(46, 0, 4, 8);     /* NFD6   -> NFD6 */
-       sg_set_pinsel(47, 0, 4, 8);     /* NFD7   -> NFD7 */
-       sg_set_pinsel(48, 0, 4, 8);     /* NFALE  -> NFALE */
-       sg_set_pinsel(49, 0, 4, 8);     /* NFCLE  -> NFCLE */
-       sg_set_pinsel(50, 0, 4, 8);     /* XNFRE  -> XNFRE */
-       sg_set_pinsel(51, 0, 4, 8);     /* XNFWE  -> XNFWE */
-       sg_set_pinsel(52, 0, 4, 8);     /* XNFWP  -> XNFWP */
-       sg_set_pinsel(53, 0, 4, 8);     /* XNFCE0 -> XNFCE0 */
-       sg_set_pinsel(54, 0, 4, 8);     /* NRYBY0 -> NRYBY0 */
-       /* sg_set_pinsel(131, 1, 4, 8); */      /* RXD2   -> NRYBY1 */
-       /* sg_set_pinsel(132, 1, 4, 8); */      /* TXD2   -> XNFCE1 */
-#endif
-
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       sg_set_pinsel(180, 0, 4, 8);    /* USB0VBUS -> USB0VBUS */
-       sg_set_pinsel(181, 0, 4, 8);    /* USB0OD   -> USB0OD */
-       sg_set_pinsel(182, 0, 4, 8);    /* USB1VBUS -> USB1VBUS */
-       sg_set_pinsel(183, 0, 4, 8);    /* USB1OD   -> USB1OD */
-#endif
-
-       writel(1, SG_LOADPINCTRL);
-}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-pro5.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-pro5.c
deleted file mode 100644 (file)
index 79160d6..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-void ph1_pro5_pin_init(void)
-{
-       /* Comment format:    PAD Name -> Function Name */
-
-#ifdef CONFIG_NAND_DENALI
-       sg_set_pinsel(19, 0, 4, 8);     /* XNFRE  -> XNFRE */
-       sg_set_pinsel(20, 0, 4, 8);     /* XNFWE  -> XNFWE */
-       sg_set_pinsel(21, 0, 4, 8);     /* NFALE  -> NFALE */
-       sg_set_pinsel(22, 0, 4, 8);     /* NFCLE  -> NFCLE */
-       sg_set_pinsel(23, 0, 4, 8);     /* XNFWP  -> XNFWP */
-       sg_set_pinsel(24, 0, 4, 8);     /* XNFCE0 -> XNFCE0 */
-       sg_set_pinsel(25, 0, 4, 8);     /* NRYBY0 -> NRYBY0 */
-       sg_set_pinsel(26, 0, 4, 8);     /* XNFCE1 -> XNFCE1 */
-       sg_set_pinsel(27, 0, 4, 8);     /* NRYBY1 -> NRYBY1 */
-       sg_set_pinsel(28, 0, 4, 8);     /* NFD0   -> NFD0 */
-       sg_set_pinsel(29, 0, 4, 8);     /* NFD1   -> NFD1 */
-       sg_set_pinsel(30, 0, 4, 8);     /* NFD2   -> NFD2 */
-       sg_set_pinsel(31, 0, 4, 8);     /* NFD3   -> NFD3 */
-       sg_set_pinsel(32, 0, 4, 8);     /* NFD4   -> NFD4 */
-       sg_set_pinsel(33, 0, 4, 8);     /* NFD5   -> NFD5 */
-       sg_set_pinsel(34, 0, 4, 8);     /* NFD6   -> NFD6 */
-       sg_set_pinsel(35, 0, 4, 8);     /* NFD7   -> NFD7 */
-#endif
-
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       sg_set_pinsel(124, 0, 4, 8);    /* USB0VBUS -> USB0VBUS */
-       sg_set_pinsel(125, 0, 4, 8);    /* USB0OD   -> USB0OD */
-       sg_set_pinsel(126, 0, 4, 8);    /* USB1VBUS -> USB1VBUS */
-       sg_set_pinsel(127, 0, 4, 8);    /* USB1OD   -> USB1OD */
-#endif
-
-       writel(1, SG_LOADPINCTRL);
-}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-sld3.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-sld3.c
deleted file mode 100644 (file)
index 367d9f3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-void ph1_sld3_pin_init(void)
-{
-#ifdef CONFIG_USB_EHCI
-       sg_set_pinsel(13, 0, 4, 4);     /* USB0OC */
-       sg_set_pinsel(14, 1, 4, 4);     /* USB0VBUS */
-
-       sg_set_pinsel(15, 0, 4, 4);     /* USB1OC */
-       sg_set_pinsel(16, 1, 4, 4);     /* USB1VBUS */
-
-       sg_set_pinsel(17, 0, 4, 4);     /* USB2OC */
-       sg_set_pinsel(18, 1, 4, 4);     /* USB2VBUS */
-
-       sg_set_pinsel(19, 0, 4, 4);     /* USB3OC */
-       sg_set_pinsel(20, 1, 4, 4);     /* USB3VBUS */
-#endif
-}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-sld8.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-ph1-sld8.c
deleted file mode 100644 (file)
index f3fae1d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-void ph1_sld8_pin_init(void)
-{
-       /* Comment format:    PAD Name -> Function Name */
-
-#ifdef CONFIG_NAND_DENALI
-       sg_set_pinsel(15, 0, 8, 4);     /* XNFRE_GB -> XNFRE_GB */
-       sg_set_pinsel(16, 0, 8, 4);     /* XNFWE_GB -> XNFWE_GB */
-       sg_set_pinsel(17, 0, 8, 4);     /* XFALE_GB -> NFALE_GB */
-       sg_set_pinsel(18, 0, 8, 4);     /* XFCLE_GB -> NFCLE_GB */
-       sg_set_pinsel(19, 0, 8, 4);     /* XNFWP_GB -> XFNWP_GB */
-       sg_set_pinsel(20, 0, 8, 4);     /* XNFCE0_GB -> XNFCE0_GB */
-       sg_set_pinsel(21, 0, 8, 4);     /* NANDRYBY0_GB -> NANDRYBY0_GB */
-       sg_set_pinsel(22, 0, 8, 4);     /* XFNCE1_GB  -> XFNCE1_GB */
-       sg_set_pinsel(23, 0, 8, 4);     /* NANDRYBY1_GB  -> NANDRYBY1_GB */
-       sg_set_pinsel(24, 0, 8, 4);     /* NFD0_GB -> NFD0_GB */
-       sg_set_pinsel(25, 0, 8, 4);     /* NFD1_GB -> NFD1_GB */
-       sg_set_pinsel(26, 0, 8, 4);     /* NFD2_GB -> NFD2_GB */
-       sg_set_pinsel(27, 0, 8, 4);     /* NFD3_GB -> NFD3_GB */
-       sg_set_pinsel(28, 0, 8, 4);     /* NFD4_GB -> NFD4_GB */
-       sg_set_pinsel(29, 0, 8, 4);     /* NFD5_GB -> NFD5_GB */
-       sg_set_pinsel(30, 0, 8, 4);     /* NFD6_GB -> NFD6_GB */
-       sg_set_pinsel(31, 0, 8, 4);     /* NFD7_GB -> NFD7_GB */
-#endif
-}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-pro4.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-pro4.c
new file mode 100644 (file)
index 0000000..b08ca1e
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+void ph1_pro4_pin_init(void)
+{
+       /* Comment format:    PAD Name -> Function Name */
+
+#ifdef CONFIG_NAND_DENALI
+       sg_set_pinsel(40, 0, 4, 8);     /* NFD0   -> NFD0 */
+       sg_set_pinsel(41, 0, 4, 8);     /* NFD1   -> NFD1 */
+       sg_set_pinsel(42, 0, 4, 8);     /* NFD2   -> NFD2 */
+       sg_set_pinsel(43, 0, 4, 8);     /* NFD3   -> NFD3 */
+       sg_set_pinsel(44, 0, 4, 8);     /* NFD4   -> NFD4 */
+       sg_set_pinsel(45, 0, 4, 8);     /* NFD5   -> NFD5 */
+       sg_set_pinsel(46, 0, 4, 8);     /* NFD6   -> NFD6 */
+       sg_set_pinsel(47, 0, 4, 8);     /* NFD7   -> NFD7 */
+       sg_set_pinsel(48, 0, 4, 8);     /* NFALE  -> NFALE */
+       sg_set_pinsel(49, 0, 4, 8);     /* NFCLE  -> NFCLE */
+       sg_set_pinsel(50, 0, 4, 8);     /* XNFRE  -> XNFRE */
+       sg_set_pinsel(51, 0, 4, 8);     /* XNFWE  -> XNFWE */
+       sg_set_pinsel(52, 0, 4, 8);     /* XNFWP  -> XNFWP */
+       sg_set_pinsel(53, 0, 4, 8);     /* XNFCE0 -> XNFCE0 */
+       sg_set_pinsel(54, 0, 4, 8);     /* NRYBY0 -> NRYBY0 */
+       /* sg_set_pinsel(131, 1, 4, 8); */      /* RXD2   -> NRYBY1 */
+       /* sg_set_pinsel(132, 1, 4, 8); */      /* TXD2   -> XNFCE1 */
+#endif
+
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       sg_set_pinsel(180, 0, 4, 8);    /* USB0VBUS -> USB0VBUS */
+       sg_set_pinsel(181, 0, 4, 8);    /* USB0OD   -> USB0OD */
+       sg_set_pinsel(182, 0, 4, 8);    /* USB1VBUS -> USB1VBUS */
+       sg_set_pinsel(183, 0, 4, 8);    /* USB1OD   -> USB1OD */
+#endif
+
+       writel(1, SG_LOADPINCTRL);
+}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-pro5.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-pro5.c
new file mode 100644 (file)
index 0000000..79160d6
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+void ph1_pro5_pin_init(void)
+{
+       /* Comment format:    PAD Name -> Function Name */
+
+#ifdef CONFIG_NAND_DENALI
+       sg_set_pinsel(19, 0, 4, 8);     /* XNFRE  -> XNFRE */
+       sg_set_pinsel(20, 0, 4, 8);     /* XNFWE  -> XNFWE */
+       sg_set_pinsel(21, 0, 4, 8);     /* NFALE  -> NFALE */
+       sg_set_pinsel(22, 0, 4, 8);     /* NFCLE  -> NFCLE */
+       sg_set_pinsel(23, 0, 4, 8);     /* XNFWP  -> XNFWP */
+       sg_set_pinsel(24, 0, 4, 8);     /* XNFCE0 -> XNFCE0 */
+       sg_set_pinsel(25, 0, 4, 8);     /* NRYBY0 -> NRYBY0 */
+       sg_set_pinsel(26, 0, 4, 8);     /* XNFCE1 -> XNFCE1 */
+       sg_set_pinsel(27, 0, 4, 8);     /* NRYBY1 -> NRYBY1 */
+       sg_set_pinsel(28, 0, 4, 8);     /* NFD0   -> NFD0 */
+       sg_set_pinsel(29, 0, 4, 8);     /* NFD1   -> NFD1 */
+       sg_set_pinsel(30, 0, 4, 8);     /* NFD2   -> NFD2 */
+       sg_set_pinsel(31, 0, 4, 8);     /* NFD3   -> NFD3 */
+       sg_set_pinsel(32, 0, 4, 8);     /* NFD4   -> NFD4 */
+       sg_set_pinsel(33, 0, 4, 8);     /* NFD5   -> NFD5 */
+       sg_set_pinsel(34, 0, 4, 8);     /* NFD6   -> NFD6 */
+       sg_set_pinsel(35, 0, 4, 8);     /* NFD7   -> NFD7 */
+#endif
+
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       sg_set_pinsel(124, 0, 4, 8);    /* USB0VBUS -> USB0VBUS */
+       sg_set_pinsel(125, 0, 4, 8);    /* USB0OD   -> USB0OD */
+       sg_set_pinsel(126, 0, 4, 8);    /* USB1VBUS -> USB1VBUS */
+       sg_set_pinsel(127, 0, 4, 8);    /* USB1OD   -> USB1OD */
+#endif
+
+       writel(1, SG_LOADPINCTRL);
+}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-proxstream2.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-proxstream2.c
deleted file mode 100644 (file)
index a662db8..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-
-void proxstream2_pin_init(void)
-{
-       /* Comment format:    PAD Name -> Function Name */
-
-#ifdef CONFIG_NAND_DENALI
-       sg_set_pinsel(30, 8, 8, 4);     /* XNFRE  -> XNFRE */
-       sg_set_pinsel(31, 8, 8, 4);     /* XNFWE  -> XNFWE */
-       sg_set_pinsel(32, 8, 8, 4);     /* NFALE  -> NFALE */
-       sg_set_pinsel(33, 8, 8, 4);     /* NFCLE  -> NFCLE */
-       sg_set_pinsel(34, 8, 8, 4);     /* XNFWP  -> XNFWP */
-       sg_set_pinsel(35, 8, 8, 4);     /* XNFCE0 -> XNFCE0 */
-       sg_set_pinsel(36, 8, 8, 4);     /* NRYBY0 -> NRYBY0 */
-       sg_set_pinsel(37, 8, 8, 4);     /* XNFCE1 -> NRYBY1 */
-       sg_set_pinsel(38, 8, 8, 4);     /* NRYBY1 -> XNFCE1 */
-       sg_set_pinsel(39, 8, 8, 4);     /* NFD0   -> NFD0 */
-       sg_set_pinsel(40, 8, 8, 4);     /* NFD1   -> NFD1 */
-       sg_set_pinsel(41, 8, 8, 4);     /* NFD2   -> NFD2 */
-       sg_set_pinsel(42, 8, 8, 4);     /* NFD3   -> NFD3 */
-       sg_set_pinsel(43, 8, 8, 4);     /* NFD4   -> NFD4 */
-       sg_set_pinsel(44, 8, 8, 4);     /* NFD5   -> NFD5 */
-       sg_set_pinsel(45, 8, 8, 4);     /* NFD6   -> NFD6 */
-       sg_set_pinsel(46, 8, 8, 4);     /* NFD7   -> NFD7 */
-#endif
-
-#ifdef CONFIG_USB_XHCI_UNIPHIER
-       sg_set_pinsel(56, 8, 8, 4);     /* USB0VBUS -> USB0VBUS */
-       sg_set_pinsel(57, 8, 8, 4);     /* USB0OD   -> USB0OD */
-       sg_set_pinsel(58, 8, 8, 4);     /* USB1VBUS -> USB1VBUS */
-       sg_set_pinsel(59, 8, 8, 4);     /* USB1OD   -> USB1OD */
-       sg_set_pinsel(60, 8, 8, 4);     /* USB2VBUS -> USB2VBUS */
-       sg_set_pinsel(61, 8, 8, 4);     /* USB2OD   -> USB2OD */
-       sg_set_pinsel(62, 8, 8, 4);     /* USB3VBUS -> USB3VBUS */
-       sg_set_pinsel(63, 8, 8, 4);     /* USB3OD   -> USB3OD */
-#endif
-}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-pxs2.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-pxs2.c
new file mode 100644 (file)
index 0000000..a662db8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+void proxstream2_pin_init(void)
+{
+       /* Comment format:    PAD Name -> Function Name */
+
+#ifdef CONFIG_NAND_DENALI
+       sg_set_pinsel(30, 8, 8, 4);     /* XNFRE  -> XNFRE */
+       sg_set_pinsel(31, 8, 8, 4);     /* XNFWE  -> XNFWE */
+       sg_set_pinsel(32, 8, 8, 4);     /* NFALE  -> NFALE */
+       sg_set_pinsel(33, 8, 8, 4);     /* NFCLE  -> NFCLE */
+       sg_set_pinsel(34, 8, 8, 4);     /* XNFWP  -> XNFWP */
+       sg_set_pinsel(35, 8, 8, 4);     /* XNFCE0 -> XNFCE0 */
+       sg_set_pinsel(36, 8, 8, 4);     /* NRYBY0 -> NRYBY0 */
+       sg_set_pinsel(37, 8, 8, 4);     /* XNFCE1 -> NRYBY1 */
+       sg_set_pinsel(38, 8, 8, 4);     /* NRYBY1 -> XNFCE1 */
+       sg_set_pinsel(39, 8, 8, 4);     /* NFD0   -> NFD0 */
+       sg_set_pinsel(40, 8, 8, 4);     /* NFD1   -> NFD1 */
+       sg_set_pinsel(41, 8, 8, 4);     /* NFD2   -> NFD2 */
+       sg_set_pinsel(42, 8, 8, 4);     /* NFD3   -> NFD3 */
+       sg_set_pinsel(43, 8, 8, 4);     /* NFD4   -> NFD4 */
+       sg_set_pinsel(44, 8, 8, 4);     /* NFD5   -> NFD5 */
+       sg_set_pinsel(45, 8, 8, 4);     /* NFD6   -> NFD6 */
+       sg_set_pinsel(46, 8, 8, 4);     /* NFD7   -> NFD7 */
+#endif
+
+#ifdef CONFIG_USB_XHCI_UNIPHIER
+       sg_set_pinsel(56, 8, 8, 4);     /* USB0VBUS -> USB0VBUS */
+       sg_set_pinsel(57, 8, 8, 4);     /* USB0OD   -> USB0OD */
+       sg_set_pinsel(58, 8, 8, 4);     /* USB1VBUS -> USB1VBUS */
+       sg_set_pinsel(59, 8, 8, 4);     /* USB1OD   -> USB1OD */
+       sg_set_pinsel(60, 8, 8, 4);     /* USB2VBUS -> USB2VBUS */
+       sg_set_pinsel(61, 8, 8, 4);     /* USB2OD   -> USB2OD */
+       sg_set_pinsel(62, 8, 8, 4);     /* USB3VBUS -> USB3VBUS */
+       sg_set_pinsel(63, 8, 8, 4);     /* USB3OD   -> USB3OD */
+#endif
+}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-sld3.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-sld3.c
new file mode 100644 (file)
index 0000000..367d9f3
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+void ph1_sld3_pin_init(void)
+{
+#ifdef CONFIG_USB_EHCI
+       sg_set_pinsel(13, 0, 4, 4);     /* USB0OC */
+       sg_set_pinsel(14, 1, 4, 4);     /* USB0VBUS */
+
+       sg_set_pinsel(15, 0, 4, 4);     /* USB1OC */
+       sg_set_pinsel(16, 1, 4, 4);     /* USB1VBUS */
+
+       sg_set_pinsel(17, 0, 4, 4);     /* USB2OC */
+       sg_set_pinsel(18, 1, 4, 4);     /* USB2VBUS */
+
+       sg_set_pinsel(19, 0, 4, 4);     /* USB3OC */
+       sg_set_pinsel(20, 1, 4, 4);     /* USB3VBUS */
+#endif
+}
diff --git a/arch/arm/mach-uniphier/pinctrl/pinctrl-sld8.c b/arch/arm/mach-uniphier/pinctrl/pinctrl-sld8.c
new file mode 100644 (file)
index 0000000..f3fae1d
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+
+void ph1_sld8_pin_init(void)
+{
+       /* Comment format:    PAD Name -> Function Name */
+
+#ifdef CONFIG_NAND_DENALI
+       sg_set_pinsel(15, 0, 8, 4);     /* XNFRE_GB -> XNFRE_GB */
+       sg_set_pinsel(16, 0, 8, 4);     /* XNFWE_GB -> XNFWE_GB */
+       sg_set_pinsel(17, 0, 8, 4);     /* XFALE_GB -> NFALE_GB */
+       sg_set_pinsel(18, 0, 8, 4);     /* XFCLE_GB -> NFCLE_GB */
+       sg_set_pinsel(19, 0, 8, 4);     /* XNFWP_GB -> XFNWP_GB */
+       sg_set_pinsel(20, 0, 8, 4);     /* XNFCE0_GB -> XNFCE0_GB */
+       sg_set_pinsel(21, 0, 8, 4);     /* NANDRYBY0_GB -> NANDRYBY0_GB */
+       sg_set_pinsel(22, 0, 8, 4);     /* XFNCE1_GB  -> XFNCE1_GB */
+       sg_set_pinsel(23, 0, 8, 4);     /* NANDRYBY1_GB  -> NANDRYBY1_GB */
+       sg_set_pinsel(24, 0, 8, 4);     /* NFD0_GB -> NFD0_GB */
+       sg_set_pinsel(25, 0, 8, 4);     /* NFD1_GB -> NFD1_GB */
+       sg_set_pinsel(26, 0, 8, 4);     /* NFD2_GB -> NFD2_GB */
+       sg_set_pinsel(27, 0, 8, 4);     /* NFD3_GB -> NFD3_GB */
+       sg_set_pinsel(28, 0, 8, 4);     /* NFD4_GB -> NFD4_GB */
+       sg_set_pinsel(29, 0, 8, 4);     /* NFD5_GB -> NFD5_GB */
+       sg_set_pinsel(30, 0, 8, 4);     /* NFD6_GB -> NFD6_GB */
+       sg_set_pinsel(31, 0, 8, 4);     /* NFD7_GB -> NFD7_GB */
+#endif
+}
index ca88521a1d22a973b980cc3606306a28b35b9f70..63f169ccc342ebbe1842f397f7c70200f3dcd7b9 100644 (file)
@@ -2,11 +2,7 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += pll-init-ph1-sld3.o \
-                                          pll-spectrum-ph1-sld3.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += pll-init-ph1-ld4.o \
-                                          pll-spectrum-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += pll-init-ph1-pro4.o \
-                                          pll-spectrum-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += pll-init-ph1-sld8.o \
-                                          pll-spectrum-ph1-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += pll-init-sld3.o pll-spectrum-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += pll-init-ld4.o pll-spectrum-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += pll-init-pro4.o pll-spectrum-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += pll-init-sld8.o pll-spectrum-ld4.o
diff --git a/arch/arm/mach-uniphier/pll/pll-init-ld4.c b/arch/arm/mach-uniphier/pll/pll-init-ld4.c
new file mode 100644 (file)
index 0000000..b2de9e8
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+#include "../sg-regs.h"
+
+#undef DPLL_SSC_RATE_1PER
+
+static int dpll_init(unsigned int dram_freq)
+{
+       u32 tmp;
+
+       /*
+        * Set Frequency
+        * Set 0xc(1600MHz)/0xd(1333MHz)/0xe(1066MHz)
+        * to FOUT (DPLLCTRL.bit[29:20])
+        */
+       tmp = readl(SC_DPLLCTRL);
+       tmp &= ~0x000f0000;
+       switch (dram_freq) {
+       case 1333:
+               tmp |= 0x000d0000;
+               break;
+       case 1600:
+               tmp |= 0x000c0000;
+               break;
+       default:
+               pr_err("Unsupported frequency");
+               return -EINVAL;
+       }
+
+#if defined(DPLL_SSC_RATE_1PER)
+       tmp &= ~SC_DPLLCTRL_SSC_RATE;
+#else
+       tmp |= SC_DPLLCTRL_SSC_RATE;
+#endif
+       writel(tmp, SC_DPLLCTRL);
+
+       tmp = readl(SC_DPLLCTRL2);
+       tmp |= SC_DPLLCTRL2_NRSTDS;
+       writel(tmp, SC_DPLLCTRL2);
+
+       return 0;
+}
+
+static void upll_init(void)
+{
+       u32 tmp, clk_mode_upll, clk_mode_axosel;
+
+       tmp = readl(SG_PINMON0);
+       clk_mode_upll   = tmp & SG_PINMON0_CLK_MODE_UPLLSRC_MASK;
+       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
+
+       /* set 0 to SNRT(UPLLCTRL.bit28) and K_LD(UPLLCTRL.bit[27]) */
+       tmp = readl(SC_UPLLCTRL);
+       tmp &= ~0x18000000;
+       writel(tmp, SC_UPLLCTRL);
+
+       if (clk_mode_upll == SG_PINMON0_CLK_MODE_UPLLSRC_DEFAULT) {
+               if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
+                   clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
+                       /* AXO: 25MHz */
+                       tmp &= ~0x07ffffff;
+                       tmp |= 0x0228f5c0;
+               } else {
+                       /* AXO: default 24.576MHz */
+                       tmp &= ~0x07ffffff;
+                       tmp |= 0x02328000;
+               }
+       }
+
+       writel(tmp, SC_UPLLCTRL);
+
+       /* set 1 to K_LD(UPLLCTRL.bit[27]) */
+       tmp |= 0x08000000;
+       writel(tmp, SC_UPLLCTRL);
+
+       /* wait 10 usec */
+       udelay(10);
+
+       /* set 1 to SNRT(UPLLCTRL.bit[28]) */
+       tmp |= 0x10000000;
+       writel(tmp, SC_UPLLCTRL);
+}
+
+static void vpll_init(void)
+{
+       u32 tmp, clk_mode_axosel;
+
+       tmp = readl(SG_PINMON0);
+       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
+
+       /* set 1 to VPLA27WP and VPLA27WP */
+       tmp = readl(SC_VPLL27ACTRL);
+       tmp |= 0x00000001;
+       writel(tmp, SC_VPLL27ACTRL);
+       tmp = readl(SC_VPLL27BCTRL);
+       tmp |= 0x00000001;
+       writel(tmp, SC_VPLL27BCTRL);
+
+       /* Set 0 to VPLA_K_LD and VPLB_K_LD */
+       tmp = readl(SC_VPLL27ACTRL3);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27ACTRL3);
+       tmp = readl(SC_VPLL27BCTRL3);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27BCTRL3);
+
+       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       /* Set 0x20 to VPLA_SNRST and VPLB_SNRST */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp &= ~0x0000007f;
+       tmp |= 0x00000020;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp &= ~0x0000007f;
+       tmp |= 0x00000020;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
+           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
+               /* AXO: 25MHz */
+               tmp = readl(SC_VPLL27ACTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x00066664;
+               writel(tmp, SC_VPLL27ACTRL3);
+               tmp = readl(SC_VPLL27BCTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x00066664;
+               writel(tmp, SC_VPLL27BCTRL3);
+       } else {
+               /* AXO: default 24.576MHz */
+               tmp = readl(SC_VPLL27ACTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x000f5800;
+               writel(tmp, SC_VPLL27ACTRL3);
+               tmp = readl(SC_VPLL27BCTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x000f5800;
+               writel(tmp, SC_VPLL27BCTRL3);
+       }
+
+       /* Set 1 to VPLA_K_LD and VPLB_K_LD */
+       tmp = readl(SC_VPLL27ACTRL3);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27ACTRL3);
+       tmp = readl(SC_VPLL27BCTRL3);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27BCTRL3);
+
+       /* wait 10 usec */
+       udelay(10);
+
+       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       /* set 0 to VPLA27WP and VPLA27WP */
+       tmp = readl(SC_VPLL27ACTRL);
+       tmp &= ~0x00000001;
+       writel(tmp, SC_VPLL27ACTRL);
+       tmp = readl(SC_VPLL27BCTRL);
+       tmp |= ~0x00000001;
+       writel(tmp, SC_VPLL27BCTRL);
+}
+
+int ph1_ld4_pll_init(const struct uniphier_board_data *bd)
+{
+       int ret;
+
+       ret = dpll_init(bd->dram_freq);
+       if (ret)
+               return ret;
+       upll_init();
+       vpll_init();
+
+       /*
+        * Wait 500 usec until dpll get stable
+        * We wait 10 usec in upll_init() and vpll_init()
+        * so 20 usec can be saved here.
+        */
+       udelay(480);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/pll/pll-init-ph1-ld4.c b/arch/arm/mach-uniphier/pll/pll-init-ph1-ld4.c
deleted file mode 100644 (file)
index b2de9e8..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-#include "../sg-regs.h"
-
-#undef DPLL_SSC_RATE_1PER
-
-static int dpll_init(unsigned int dram_freq)
-{
-       u32 tmp;
-
-       /*
-        * Set Frequency
-        * Set 0xc(1600MHz)/0xd(1333MHz)/0xe(1066MHz)
-        * to FOUT (DPLLCTRL.bit[29:20])
-        */
-       tmp = readl(SC_DPLLCTRL);
-       tmp &= ~0x000f0000;
-       switch (dram_freq) {
-       case 1333:
-               tmp |= 0x000d0000;
-               break;
-       case 1600:
-               tmp |= 0x000c0000;
-               break;
-       default:
-               pr_err("Unsupported frequency");
-               return -EINVAL;
-       }
-
-#if defined(DPLL_SSC_RATE_1PER)
-       tmp &= ~SC_DPLLCTRL_SSC_RATE;
-#else
-       tmp |= SC_DPLLCTRL_SSC_RATE;
-#endif
-       writel(tmp, SC_DPLLCTRL);
-
-       tmp = readl(SC_DPLLCTRL2);
-       tmp |= SC_DPLLCTRL2_NRSTDS;
-       writel(tmp, SC_DPLLCTRL2);
-
-       return 0;
-}
-
-static void upll_init(void)
-{
-       u32 tmp, clk_mode_upll, clk_mode_axosel;
-
-       tmp = readl(SG_PINMON0);
-       clk_mode_upll   = tmp & SG_PINMON0_CLK_MODE_UPLLSRC_MASK;
-       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
-
-       /* set 0 to SNRT(UPLLCTRL.bit28) and K_LD(UPLLCTRL.bit[27]) */
-       tmp = readl(SC_UPLLCTRL);
-       tmp &= ~0x18000000;
-       writel(tmp, SC_UPLLCTRL);
-
-       if (clk_mode_upll == SG_PINMON0_CLK_MODE_UPLLSRC_DEFAULT) {
-               if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
-                   clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
-                       /* AXO: 25MHz */
-                       tmp &= ~0x07ffffff;
-                       tmp |= 0x0228f5c0;
-               } else {
-                       /* AXO: default 24.576MHz */
-                       tmp &= ~0x07ffffff;
-                       tmp |= 0x02328000;
-               }
-       }
-
-       writel(tmp, SC_UPLLCTRL);
-
-       /* set 1 to K_LD(UPLLCTRL.bit[27]) */
-       tmp |= 0x08000000;
-       writel(tmp, SC_UPLLCTRL);
-
-       /* wait 10 usec */
-       udelay(10);
-
-       /* set 1 to SNRT(UPLLCTRL.bit[28]) */
-       tmp |= 0x10000000;
-       writel(tmp, SC_UPLLCTRL);
-}
-
-static void vpll_init(void)
-{
-       u32 tmp, clk_mode_axosel;
-
-       tmp = readl(SG_PINMON0);
-       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
-
-       /* set 1 to VPLA27WP and VPLA27WP */
-       tmp = readl(SC_VPLL27ACTRL);
-       tmp |= 0x00000001;
-       writel(tmp, SC_VPLL27ACTRL);
-       tmp = readl(SC_VPLL27BCTRL);
-       tmp |= 0x00000001;
-       writel(tmp, SC_VPLL27BCTRL);
-
-       /* Set 0 to VPLA_K_LD and VPLB_K_LD */
-       tmp = readl(SC_VPLL27ACTRL3);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27ACTRL3);
-       tmp = readl(SC_VPLL27BCTRL3);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27BCTRL3);
-
-       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       /* Set 0x20 to VPLA_SNRST and VPLB_SNRST */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp &= ~0x0000007f;
-       tmp |= 0x00000020;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp &= ~0x0000007f;
-       tmp |= 0x00000020;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
-           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
-               /* AXO: 25MHz */
-               tmp = readl(SC_VPLL27ACTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x00066664;
-               writel(tmp, SC_VPLL27ACTRL3);
-               tmp = readl(SC_VPLL27BCTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x00066664;
-               writel(tmp, SC_VPLL27BCTRL3);
-       } else {
-               /* AXO: default 24.576MHz */
-               tmp = readl(SC_VPLL27ACTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x000f5800;
-               writel(tmp, SC_VPLL27ACTRL3);
-               tmp = readl(SC_VPLL27BCTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x000f5800;
-               writel(tmp, SC_VPLL27BCTRL3);
-       }
-
-       /* Set 1 to VPLA_K_LD and VPLB_K_LD */
-       tmp = readl(SC_VPLL27ACTRL3);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27ACTRL3);
-       tmp = readl(SC_VPLL27BCTRL3);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27BCTRL3);
-
-       /* wait 10 usec */
-       udelay(10);
-
-       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       /* set 0 to VPLA27WP and VPLA27WP */
-       tmp = readl(SC_VPLL27ACTRL);
-       tmp &= ~0x00000001;
-       writel(tmp, SC_VPLL27ACTRL);
-       tmp = readl(SC_VPLL27BCTRL);
-       tmp |= ~0x00000001;
-       writel(tmp, SC_VPLL27BCTRL);
-}
-
-int ph1_ld4_pll_init(const struct uniphier_board_data *bd)
-{
-       int ret;
-
-       ret = dpll_init(bd->dram_freq);
-       if (ret)
-               return ret;
-       upll_init();
-       vpll_init();
-
-       /*
-        * Wait 500 usec until dpll get stable
-        * We wait 10 usec in upll_init() and vpll_init()
-        * so 20 usec can be saved here.
-        */
-       udelay(480);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/pll/pll-init-ph1-pro4.c b/arch/arm/mach-uniphier/pll/pll-init-ph1-pro4.c
deleted file mode 100644 (file)
index 69d518d..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/err.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-#include "../sg-regs.h"
-
-#undef DPLL_SSC_RATE_1PER
-
-static int dpll_init(unsigned int dram_freq)
-{
-       u32 tmp;
-
-       /*
-        * Set Frequency
-        * Set 0xc(1600MHz)/0xd(1333MHz)/0xe(1066MHz)
-        * to FOUT ( DPLLCTRL.bit[29:20] )
-        */
-       tmp = readl(SC_DPLLCTRL);
-       tmp &= ~(0x000f0000);
-       switch (dram_freq) {
-       case 1333:
-               tmp |= 0x000d0000;
-               break;
-       case 1600:
-               tmp |= 0x000c0000;
-               break;
-       default:
-               pr_err("Unsupported frequency");
-               return -EINVAL;
-       }
-
-       /*
-        * Set Moduration rate
-        * Set 0x0(1%)/0x1(2%) to SSC_RATE(DPLLCTRL.bit[15])
-        */
-#if defined(DPLL_SSC_RATE_1PER)
-       tmp &= ~0x00008000;
-#else
-       tmp |= 0x00008000;
-#endif
-       writel(tmp, SC_DPLLCTRL);
-
-       tmp = readl(SC_DPLLCTRL2);
-       tmp |= SC_DPLLCTRL2_NRSTDS;
-       writel(tmp, SC_DPLLCTRL2);
-
-       return 0;
-}
-
-static void vpll_init(void)
-{
-       u32 tmp, clk_mode_axosel;
-
-       /* Set VPLL27A &  VPLL27B */
-       tmp = readl(SG_PINMON0);
-       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
-
-       /* 25MHz or 6.25MHz is default for Pro4R, no need to set VPLLA/B */
-       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ ||
-           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_6250KHZ)
-               return;
-
-       /* Disable write protect of VPLL27ACTRL[2-7]*, VPLL27BCTRL[2-8] */
-       tmp = readl(SC_VPLL27ACTRL);
-       tmp |= 0x00000001;
-       writel(tmp, SC_VPLL27ACTRL);
-       tmp = readl(SC_VPLL27BCTRL);
-       tmp |= 0x00000001;
-       writel(tmp, SC_VPLL27BCTRL);
-
-       /* Unset VPLA_K_LD and VPLB_K_LD bit */
-       tmp = readl(SC_VPLL27ACTRL3);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27ACTRL3);
-       tmp = readl(SC_VPLL27BCTRL3);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27BCTRL3);
-
-       /* Set VPLA_M and VPLB_M to 0x20 */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp &= ~0x0000007f;
-       tmp |= 0x00000020;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp &= ~0x0000007f;
-       tmp |= 0x00000020;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ ||
-           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_6250KHZ) {
-               /* Set VPLA_K and VPLB_K for AXO: 25MHz */
-               tmp = readl(SC_VPLL27ACTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x00066666;
-               writel(tmp, SC_VPLL27ACTRL3);
-               tmp = readl(SC_VPLL27BCTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x00066666;
-               writel(tmp, SC_VPLL27BCTRL3);
-       } else {
-               /* Set VPLA_K and VPLB_K for AXO: 24.576 MHz */
-               tmp = readl(SC_VPLL27ACTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x000f5800;
-               writel(tmp, SC_VPLL27ACTRL3);
-               tmp = readl(SC_VPLL27BCTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x000f5800;
-               writel(tmp, SC_VPLL27BCTRL3);
-       }
-
-       /* wait 1 usec */
-       udelay(1);
-
-       /* Set VPLA_K_LD and VPLB_K_LD to load K parameters */
-       tmp = readl(SC_VPLL27ACTRL3);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27ACTRL3);
-       tmp = readl(SC_VPLL27BCTRL3);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27BCTRL3);
-
-       /* Unset VPLA_SNRST and VPLB_SNRST bit */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       /* Enable write protect of VPLL27ACTRL[2-7]*, VPLL27BCTRL[2-8] */
-       tmp = readl(SC_VPLL27ACTRL);
-       tmp &= ~0x00000001;
-       writel(tmp, SC_VPLL27ACTRL);
-       tmp = readl(SC_VPLL27BCTRL);
-       tmp &= ~0x00000001;
-       writel(tmp, SC_VPLL27BCTRL);
-}
-
-int ph1_pro4_pll_init(const struct uniphier_board_data *bd)
-{
-       int ret;
-
-       ret = dpll_init(bd->dram_freq);
-       if (ret)
-               return ret;
-       vpll_init();
-
-       /*
-        * Wait 500 usec until dpll get stable
-        * We wait 1 usec in vpll_init() so 1 usec can be saved here.
-        */
-       udelay(499);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/pll/pll-init-ph1-sld3.c b/arch/arm/mach-uniphier/pll/pll-init-ph1-sld3.c
deleted file mode 100644 (file)
index b93806c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include "../init.h"
-
-int ph1_sld3_pll_init(const struct uniphier_board_data *bd)
-{
-       /* add pll init code here */
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/pll/pll-init-ph1-sld8.c b/arch/arm/mach-uniphier/pll/pll-init-ph1-sld8.c
deleted file mode 100644 (file)
index 3c75504..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-#include "../sg-regs.h"
-
-static void dpll_init(void)
-{
-       u32 tmp;
-       /*
-        * Set DPLL SSC parameters for DPLLCTRL3
-        * [23]    DIVN_TEST    0x1
-        * [22:16] DIVN         0x50
-        * [10]    FREFSEL_TEST 0x1
-        * [9:8]   FREFSEL      0x2
-        * [4]     ICPD_TEST    0x1
-        * [3:0]   ICPD         0xb
-        */
-       tmp = readl(SC_DPLLCTRL3);
-       tmp &= ~0x00ff0717;
-       tmp |= 0x00d0061b;
-       writel(tmp, SC_DPLLCTRL3);
-
-       /*
-        * Set DPLL SSC parameters for DPLLCTRL
-        *                    <-1%>          <-2%>
-        * [29:20] SSC_UPCNT 132 (0x084)    132  (0x084)
-        * [14:0]  SSC_dK    6335(0x18bf)   12710(0x31a6)
-        */
-       tmp = readl(SC_DPLLCTRL);
-       tmp &= ~0x3ff07fff;
-#ifdef CONFIG_DPLL_SSC_RATE_1PER
-       tmp |= 0x084018bf;
-#else
-       tmp |= 0x084031a6;
-#endif
-       writel(tmp, SC_DPLLCTRL);
-
-       /*
-        * Set DPLL SSC parameters for DPLLCTRL2
-        * [31:29]  SSC_STEP     0
-        * [27]     SSC_REG_REF  1
-        * [26:20]  SSC_M        79     (0x4f)
-        * [19:0]   SSC_K        964689 (0xeb851)
-        */
-       tmp = readl(SC_DPLLCTRL2);
-       tmp &= ~0xefffffff;
-       tmp |= 0x0cfeb851;
-       writel(tmp, SC_DPLLCTRL2);
-}
-
-static void upll_init(void)
-{
-       u32 tmp, clk_mode_upll, clk_mode_axosel;
-
-       tmp = readl(SG_PINMON0);
-       clk_mode_upll   = tmp & SG_PINMON0_CLK_MODE_UPLLSRC_MASK;
-       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
-
-       /* set 0 to SNRT(UPLLCTRL.bit28) and K_LD(UPLLCTRL.bit[27]) */
-       tmp = readl(SC_UPLLCTRL);
-       tmp &= ~0x18000000;
-       writel(tmp, SC_UPLLCTRL);
-
-       if (clk_mode_upll == SG_PINMON0_CLK_MODE_UPLLSRC_DEFAULT) {
-               if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
-                   clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
-                       /* AXO: 25MHz */
-                       tmp &= ~0x07ffffff;
-                       tmp |= 0x0228f5c0;
-               } else {
-                       /* AXO: default 24.576MHz */
-                       tmp &= ~0x07ffffff;
-                       tmp |= 0x02328000;
-               }
-       }
-
-       writel(tmp, SC_UPLLCTRL);
-
-       /* set 1 to K_LD(UPLLCTRL.bit[27]) */
-       tmp |= 0x08000000;
-       writel(tmp, SC_UPLLCTRL);
-
-       /* wait 10 usec */
-       udelay(10);
-
-       /* set 1 to SNRT(UPLLCTRL.bit[28]) */
-       tmp |= 0x10000000;
-       writel(tmp, SC_UPLLCTRL);
-}
-
-static void vpll_init(void)
-{
-       u32 tmp, clk_mode_axosel;
-
-       tmp = readl(SG_PINMON0);
-       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
-
-       /* set 1 to VPLA27WP and VPLA27WP */
-       tmp = readl(SC_VPLL27ACTRL);
-       tmp |= 0x00000001;
-       writel(tmp, SC_VPLL27ACTRL);
-       tmp = readl(SC_VPLL27BCTRL);
-       tmp |= 0x00000001;
-       writel(tmp, SC_VPLL27BCTRL);
-
-       /* Set 0 to VPLA_K_LD and VPLB_K_LD */
-       tmp = readl(SC_VPLL27ACTRL3);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27ACTRL3);
-       tmp = readl(SC_VPLL27BCTRL3);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27BCTRL3);
-
-       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp &= ~0x10000000;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       /* Set 0x20 to VPLA_SNRST and VPLB_SNRST */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp &= ~0x0000007f;
-       tmp |= 0x00000020;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp &= ~0x0000007f;
-       tmp |= 0x00000020;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
-           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
-               /* AXO: 25MHz */
-               tmp = readl(SC_VPLL27ACTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x00066664;
-               writel(tmp, SC_VPLL27ACTRL3);
-               tmp = readl(SC_VPLL27BCTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x00066664;
-               writel(tmp, SC_VPLL27BCTRL3);
-       } else {
-               /* AXO: default 24.576MHz */
-               tmp = readl(SC_VPLL27ACTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x000f5800;
-               writel(tmp, SC_VPLL27ACTRL3);
-               tmp = readl(SC_VPLL27BCTRL3);
-               tmp &= ~0x000fffff;
-               tmp |= 0x000f5800;
-               writel(tmp, SC_VPLL27BCTRL3);
-       }
-
-       /* Set 1 to VPLA_K_LD and VPLB_K_LD */
-       tmp = readl(SC_VPLL27ACTRL3);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27ACTRL3);
-       tmp = readl(SC_VPLL27BCTRL3);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27BCTRL3);
-
-       /* wait 10 usec */
-       udelay(10);
-
-       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
-       tmp = readl(SC_VPLL27ACTRL2);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27ACTRL2);
-       tmp = readl(SC_VPLL27BCTRL2);
-       tmp |= 0x10000000;
-       writel(tmp, SC_VPLL27BCTRL2);
-
-       /* set 0 to VPLA27WP and VPLA27WP */
-       tmp = readl(SC_VPLL27ACTRL);
-       tmp &= ~0x00000001;
-       writel(tmp, SC_VPLL27ACTRL);
-       tmp = readl(SC_VPLL27BCTRL);
-       tmp |= ~0x00000001;
-       writel(tmp, SC_VPLL27BCTRL);
-}
-
-int ph1_sld8_pll_init(const struct uniphier_board_data *bd)
-{
-       dpll_init();
-       upll_init();
-       vpll_init();
-
-       /*
-        * Wait 500 usec until dpll get stable
-        * We wait 10 usec in upll_init() and vpll_init()
-        * so 20 usec can be saved here.
-        */
-       udelay(480);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/pll/pll-init-pro4.c b/arch/arm/mach-uniphier/pll/pll-init-pro4.c
new file mode 100644 (file)
index 0000000..69d518d
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/err.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+#include "../sg-regs.h"
+
+#undef DPLL_SSC_RATE_1PER
+
+static int dpll_init(unsigned int dram_freq)
+{
+       u32 tmp;
+
+       /*
+        * Set Frequency
+        * Set 0xc(1600MHz)/0xd(1333MHz)/0xe(1066MHz)
+        * to FOUT ( DPLLCTRL.bit[29:20] )
+        */
+       tmp = readl(SC_DPLLCTRL);
+       tmp &= ~(0x000f0000);
+       switch (dram_freq) {
+       case 1333:
+               tmp |= 0x000d0000;
+               break;
+       case 1600:
+               tmp |= 0x000c0000;
+               break;
+       default:
+               pr_err("Unsupported frequency");
+               return -EINVAL;
+       }
+
+       /*
+        * Set Moduration rate
+        * Set 0x0(1%)/0x1(2%) to SSC_RATE(DPLLCTRL.bit[15])
+        */
+#if defined(DPLL_SSC_RATE_1PER)
+       tmp &= ~0x00008000;
+#else
+       tmp |= 0x00008000;
+#endif
+       writel(tmp, SC_DPLLCTRL);
+
+       tmp = readl(SC_DPLLCTRL2);
+       tmp |= SC_DPLLCTRL2_NRSTDS;
+       writel(tmp, SC_DPLLCTRL2);
+
+       return 0;
+}
+
+static void vpll_init(void)
+{
+       u32 tmp, clk_mode_axosel;
+
+       /* Set VPLL27A &  VPLL27B */
+       tmp = readl(SG_PINMON0);
+       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
+
+       /* 25MHz or 6.25MHz is default for Pro4R, no need to set VPLLA/B */
+       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ ||
+           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_6250KHZ)
+               return;
+
+       /* Disable write protect of VPLL27ACTRL[2-7]*, VPLL27BCTRL[2-8] */
+       tmp = readl(SC_VPLL27ACTRL);
+       tmp |= 0x00000001;
+       writel(tmp, SC_VPLL27ACTRL);
+       tmp = readl(SC_VPLL27BCTRL);
+       tmp |= 0x00000001;
+       writel(tmp, SC_VPLL27BCTRL);
+
+       /* Unset VPLA_K_LD and VPLB_K_LD bit */
+       tmp = readl(SC_VPLL27ACTRL3);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27ACTRL3);
+       tmp = readl(SC_VPLL27BCTRL3);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27BCTRL3);
+
+       /* Set VPLA_M and VPLB_M to 0x20 */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp &= ~0x0000007f;
+       tmp |= 0x00000020;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp &= ~0x0000007f;
+       tmp |= 0x00000020;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ ||
+           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_6250KHZ) {
+               /* Set VPLA_K and VPLB_K for AXO: 25MHz */
+               tmp = readl(SC_VPLL27ACTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x00066666;
+               writel(tmp, SC_VPLL27ACTRL3);
+               tmp = readl(SC_VPLL27BCTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x00066666;
+               writel(tmp, SC_VPLL27BCTRL3);
+       } else {
+               /* Set VPLA_K and VPLB_K for AXO: 24.576 MHz */
+               tmp = readl(SC_VPLL27ACTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x000f5800;
+               writel(tmp, SC_VPLL27ACTRL3);
+               tmp = readl(SC_VPLL27BCTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x000f5800;
+               writel(tmp, SC_VPLL27BCTRL3);
+       }
+
+       /* wait 1 usec */
+       udelay(1);
+
+       /* Set VPLA_K_LD and VPLB_K_LD to load K parameters */
+       tmp = readl(SC_VPLL27ACTRL3);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27ACTRL3);
+       tmp = readl(SC_VPLL27BCTRL3);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27BCTRL3);
+
+       /* Unset VPLA_SNRST and VPLB_SNRST bit */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       /* Enable write protect of VPLL27ACTRL[2-7]*, VPLL27BCTRL[2-8] */
+       tmp = readl(SC_VPLL27ACTRL);
+       tmp &= ~0x00000001;
+       writel(tmp, SC_VPLL27ACTRL);
+       tmp = readl(SC_VPLL27BCTRL);
+       tmp &= ~0x00000001;
+       writel(tmp, SC_VPLL27BCTRL);
+}
+
+int ph1_pro4_pll_init(const struct uniphier_board_data *bd)
+{
+       int ret;
+
+       ret = dpll_init(bd->dram_freq);
+       if (ret)
+               return ret;
+       vpll_init();
+
+       /*
+        * Wait 500 usec until dpll get stable
+        * We wait 1 usec in vpll_init() so 1 usec can be saved here.
+        */
+       udelay(499);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/pll/pll-init-sld3.c b/arch/arm/mach-uniphier/pll/pll-init-sld3.c
new file mode 100644 (file)
index 0000000..b93806c
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "../init.h"
+
+int ph1_sld3_pll_init(const struct uniphier_board_data *bd)
+{
+       /* add pll init code here */
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/pll/pll-init-sld8.c b/arch/arm/mach-uniphier/pll/pll-init-sld8.c
new file mode 100644 (file)
index 0000000..3c75504
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+#include "../sg-regs.h"
+
+static void dpll_init(void)
+{
+       u32 tmp;
+       /*
+        * Set DPLL SSC parameters for DPLLCTRL3
+        * [23]    DIVN_TEST    0x1
+        * [22:16] DIVN         0x50
+        * [10]    FREFSEL_TEST 0x1
+        * [9:8]   FREFSEL      0x2
+        * [4]     ICPD_TEST    0x1
+        * [3:0]   ICPD         0xb
+        */
+       tmp = readl(SC_DPLLCTRL3);
+       tmp &= ~0x00ff0717;
+       tmp |= 0x00d0061b;
+       writel(tmp, SC_DPLLCTRL3);
+
+       /*
+        * Set DPLL SSC parameters for DPLLCTRL
+        *                    <-1%>          <-2%>
+        * [29:20] SSC_UPCNT 132 (0x084)    132  (0x084)
+        * [14:0]  SSC_dK    6335(0x18bf)   12710(0x31a6)
+        */
+       tmp = readl(SC_DPLLCTRL);
+       tmp &= ~0x3ff07fff;
+#ifdef CONFIG_DPLL_SSC_RATE_1PER
+       tmp |= 0x084018bf;
+#else
+       tmp |= 0x084031a6;
+#endif
+       writel(tmp, SC_DPLLCTRL);
+
+       /*
+        * Set DPLL SSC parameters for DPLLCTRL2
+        * [31:29]  SSC_STEP     0
+        * [27]     SSC_REG_REF  1
+        * [26:20]  SSC_M        79     (0x4f)
+        * [19:0]   SSC_K        964689 (0xeb851)
+        */
+       tmp = readl(SC_DPLLCTRL2);
+       tmp &= ~0xefffffff;
+       tmp |= 0x0cfeb851;
+       writel(tmp, SC_DPLLCTRL2);
+}
+
+static void upll_init(void)
+{
+       u32 tmp, clk_mode_upll, clk_mode_axosel;
+
+       tmp = readl(SG_PINMON0);
+       clk_mode_upll   = tmp & SG_PINMON0_CLK_MODE_UPLLSRC_MASK;
+       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
+
+       /* set 0 to SNRT(UPLLCTRL.bit28) and K_LD(UPLLCTRL.bit[27]) */
+       tmp = readl(SC_UPLLCTRL);
+       tmp &= ~0x18000000;
+       writel(tmp, SC_UPLLCTRL);
+
+       if (clk_mode_upll == SG_PINMON0_CLK_MODE_UPLLSRC_DEFAULT) {
+               if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
+                   clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
+                       /* AXO: 25MHz */
+                       tmp &= ~0x07ffffff;
+                       tmp |= 0x0228f5c0;
+               } else {
+                       /* AXO: default 24.576MHz */
+                       tmp &= ~0x07ffffff;
+                       tmp |= 0x02328000;
+               }
+       }
+
+       writel(tmp, SC_UPLLCTRL);
+
+       /* set 1 to K_LD(UPLLCTRL.bit[27]) */
+       tmp |= 0x08000000;
+       writel(tmp, SC_UPLLCTRL);
+
+       /* wait 10 usec */
+       udelay(10);
+
+       /* set 1 to SNRT(UPLLCTRL.bit[28]) */
+       tmp |= 0x10000000;
+       writel(tmp, SC_UPLLCTRL);
+}
+
+static void vpll_init(void)
+{
+       u32 tmp, clk_mode_axosel;
+
+       tmp = readl(SG_PINMON0);
+       clk_mode_axosel = tmp & SG_PINMON0_CLK_MODE_AXOSEL_MASK;
+
+       /* set 1 to VPLA27WP and VPLA27WP */
+       tmp = readl(SC_VPLL27ACTRL);
+       tmp |= 0x00000001;
+       writel(tmp, SC_VPLL27ACTRL);
+       tmp = readl(SC_VPLL27BCTRL);
+       tmp |= 0x00000001;
+       writel(tmp, SC_VPLL27BCTRL);
+
+       /* Set 0 to VPLA_K_LD and VPLB_K_LD */
+       tmp = readl(SC_VPLL27ACTRL3);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27ACTRL3);
+       tmp = readl(SC_VPLL27BCTRL3);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27BCTRL3);
+
+       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp &= ~0x10000000;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       /* Set 0x20 to VPLA_SNRST and VPLB_SNRST */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp &= ~0x0000007f;
+       tmp |= 0x00000020;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp &= ~0x0000007f;
+       tmp |= 0x00000020;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       if (clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_U ||
+           clk_mode_axosel == SG_PINMON0_CLK_MODE_AXOSEL_25000KHZ_A) {
+               /* AXO: 25MHz */
+               tmp = readl(SC_VPLL27ACTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x00066664;
+               writel(tmp, SC_VPLL27ACTRL3);
+               tmp = readl(SC_VPLL27BCTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x00066664;
+               writel(tmp, SC_VPLL27BCTRL3);
+       } else {
+               /* AXO: default 24.576MHz */
+               tmp = readl(SC_VPLL27ACTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x000f5800;
+               writel(tmp, SC_VPLL27ACTRL3);
+               tmp = readl(SC_VPLL27BCTRL3);
+               tmp &= ~0x000fffff;
+               tmp |= 0x000f5800;
+               writel(tmp, SC_VPLL27BCTRL3);
+       }
+
+       /* Set 1 to VPLA_K_LD and VPLB_K_LD */
+       tmp = readl(SC_VPLL27ACTRL3);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27ACTRL3);
+       tmp = readl(SC_VPLL27BCTRL3);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27BCTRL3);
+
+       /* wait 10 usec */
+       udelay(10);
+
+       /* Set 0 to VPLA_SNRST and VPLB_SNRST */
+       tmp = readl(SC_VPLL27ACTRL2);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27ACTRL2);
+       tmp = readl(SC_VPLL27BCTRL2);
+       tmp |= 0x10000000;
+       writel(tmp, SC_VPLL27BCTRL2);
+
+       /* set 0 to VPLA27WP and VPLA27WP */
+       tmp = readl(SC_VPLL27ACTRL);
+       tmp &= ~0x00000001;
+       writel(tmp, SC_VPLL27ACTRL);
+       tmp = readl(SC_VPLL27BCTRL);
+       tmp |= ~0x00000001;
+       writel(tmp, SC_VPLL27BCTRL);
+}
+
+int ph1_sld8_pll_init(const struct uniphier_board_data *bd)
+{
+       dpll_init();
+       upll_init();
+       vpll_init();
+
+       /*
+        * Wait 500 usec until dpll get stable
+        * We wait 10 usec in upll_init() and vpll_init()
+        * so 20 usec can be saved here.
+        */
+       udelay(480);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/pll/pll-spectrum-ld4.c b/arch/arm/mach-uniphier/pll/pll-spectrum-ld4.c
new file mode 100644 (file)
index 0000000..a1c8089
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+int ph1_ld4_enable_dpll_ssc(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+
+       tmp = readl(SC_DPLLCTRL);
+       tmp |= SC_DPLLCTRL_SSC_EN;
+       writel(tmp, SC_DPLLCTRL);
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/pll/pll-spectrum-ph1-ld4.c b/arch/arm/mach-uniphier/pll/pll-spectrum-ph1-ld4.c
deleted file mode 100644 (file)
index a1c8089..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-int ph1_ld4_enable_dpll_ssc(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-
-       tmp = readl(SC_DPLLCTRL);
-       tmp |= SC_DPLLCTRL_SSC_EN;
-       writel(tmp, SC_DPLLCTRL);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/pll/pll-spectrum-ph1-sld3.c b/arch/arm/mach-uniphier/pll/pll-spectrum-ph1-sld3.c
deleted file mode 100644 (file)
index 94654ee..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc-regs.h"
-
-int ph1_sld3_enable_dpll_ssc(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-
-       tmp = readl(SC_DPLLCTRL);
-       tmp |= SC_DPLLCTRL_SSC_EN;
-       writel(tmp, SC_DPLLCTRL);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/pll/pll-spectrum-sld3.c b/arch/arm/mach-uniphier/pll/pll-spectrum-sld3.c
new file mode 100644 (file)
index 0000000..94654ee
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sc-regs.h"
+
+int ph1_sld3_enable_dpll_ssc(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+
+       tmp = readl(SC_DPLLCTRL);
+       tmp |= SC_DPLLCTRL_SSC_EN;
+       writel(tmp, SC_DPLLCTRL);
+
+       return 0;
+}
index 57eb44b646e7e9465f312f6776f3fb34d2501a97..87220a6432858d787b822bbbf33a6fe2741e058f 100644 (file)
@@ -2,10 +2,10 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD3)   += sbc-ph1-sld3.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD4)    += sbc-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO4)   += sbc-ph1-pro4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_SLD8)   += sbc-ph1-ld4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_PRO5)   += sbc-ph1-pro4.o
-obj-$(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)        += sbc-proxstream2.o
-obj-$(CONFIG_ARCH_UNIPHIER_PH1_LD6B)   += sbc-proxstream2.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD3)       += sbc-sld3.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD4)                += sbc-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO4)       += sbc-pro4.o
+obj-$(CONFIG_ARCH_UNIPHIER_SLD8)       += sbc-ld4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += sbc-pro4.o
+obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += sbc-pxs2.o
+obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += sbc-pxs2.o
diff --git a/arch/arm/mach-uniphier/sbc/sbc-ld4.c b/arch/arm/mach-uniphier/sbc/sbc-ld4.c
new file mode 100644 (file)
index 0000000..fcce43c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+#include "sbc-regs.h"
+
+int ph1_ld4_sbc_init(const struct uniphier_board_data *bd)
+{
+       u32 tmp;
+
+       /* system bus output enable */
+       tmp = readl(PC0CTRL);
+       tmp &= 0xfffffcff;
+       writel(tmp, PC0CTRL);
+
+       /*
+        * Only CS1 is connected to support card.
+        * BKSZ[1:0] should be set to "01".
+        */
+       writel(SBCTRL0_SAVEPIN_PERI_VALUE, SBCTRL10);
+       writel(SBCTRL1_SAVEPIN_PERI_VALUE, SBCTRL11);
+       writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL12);
+       writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL14);
+
+       if (boot_is_swapped()) {
+               /*
+                * Boot Swap On: boot from external NOR/SRAM
+                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
+                *
+                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
+                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
+                */
+               writel(0x0000bc01, SBBASE0);
+       } else {
+               /*
+                * Boot Swap Off: boot from mask ROM
+                * 0x40000000-0x41ffffff: mask ROM
+                * 0x42000000-0x43efffff: memory bank (31MB)
+                * 0x43f00000-0x43ffffff: peripherals (1MB)
+                */
+               writel(0x0000be01, SBBASE0); /* dummy */
+               writel(0x0200be01, SBBASE1);
+       }
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/sbc/sbc-ph1-ld4.c b/arch/arm/mach-uniphier/sbc/sbc-ph1-ld4.c
deleted file mode 100644 (file)
index fcce43c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-#include "sbc-regs.h"
-
-int ph1_ld4_sbc_init(const struct uniphier_board_data *bd)
-{
-       u32 tmp;
-
-       /* system bus output enable */
-       tmp = readl(PC0CTRL);
-       tmp &= 0xfffffcff;
-       writel(tmp, PC0CTRL);
-
-       /*
-        * Only CS1 is connected to support card.
-        * BKSZ[1:0] should be set to "01".
-        */
-       writel(SBCTRL0_SAVEPIN_PERI_VALUE, SBCTRL10);
-       writel(SBCTRL1_SAVEPIN_PERI_VALUE, SBCTRL11);
-       writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL12);
-       writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL14);
-
-       if (boot_is_swapped()) {
-               /*
-                * Boot Swap On: boot from external NOR/SRAM
-                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
-                *
-                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
-                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
-                */
-               writel(0x0000bc01, SBBASE0);
-       } else {
-               /*
-                * Boot Swap Off: boot from mask ROM
-                * 0x40000000-0x41ffffff: mask ROM
-                * 0x42000000-0x43efffff: memory bank (31MB)
-                * 0x43f00000-0x43ffffff: peripherals (1MB)
-                */
-               writel(0x0000be01, SBBASE0); /* dummy */
-               writel(0x0200be01, SBBASE1);
-       }
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/sbc/sbc-ph1-pro4.c b/arch/arm/mach-uniphier/sbc/sbc-ph1-pro4.c
deleted file mode 100644 (file)
index 8313c5a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-#include "sbc-regs.h"
-
-int ph1_pro4_sbc_init(const struct uniphier_board_data *bd)
-{
-       /*
-        * Only CS1 is connected to support card.
-        * BKSZ[1:0] should be set to "01".
-        */
-       writel(SBCTRL0_SAVEPIN_PERI_VALUE, SBCTRL10);
-       writel(SBCTRL1_SAVEPIN_PERI_VALUE, SBCTRL11);
-       writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL12);
-       writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL14);
-
-       if (boot_is_swapped()) {
-               /*
-                * Boot Swap On: boot from external NOR/SRAM
-                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
-                *
-                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
-                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
-                */
-               writel(0x0000bc01, SBBASE0);
-       } else {
-               /*
-                * Boot Swap Off: boot from mask ROM
-                * 0x40000000-0x41ffffff: mask ROM
-                * 0x42000000-0x43efffff: memory bank (31MB)
-                * 0x43f00000-0x43ffffff: peripherals (1MB)
-                */
-               writel(0x0000be01, SBBASE0); /* dummy */
-               writel(0x0200be01, SBBASE1);
-       }
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/sbc/sbc-ph1-sld3.c b/arch/arm/mach-uniphier/sbc/sbc-ph1-sld3.c
deleted file mode 100644 (file)
index c03c284..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-#include "sbc-regs.h"
-
-int ph1_sld3_sbc_init(const struct uniphier_board_data *bd)
-{
-       /* only address/data multiplex mode is supported */
-
-       /*
-        * Only CS1 is connected to support card.
-        * BKSZ[1:0] should be set to "01".
-        */
-       writel(SBCTRL0_ADMULTIPLX_MEM_VALUE, SBCTRL10);
-       writel(SBCTRL1_ADMULTIPLX_MEM_VALUE, SBCTRL11);
-       writel(SBCTRL2_ADMULTIPLX_MEM_VALUE, SBCTRL12);
-
-       if (boot_is_swapped()) {
-               /*
-                * Boot Swap On: boot from external NOR/SRAM
-                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
-                *
-                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
-                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
-                */
-               writel(0x0000bc01, SBBASE0);
-       } else {
-               /*
-                * Boot Swap Off: boot from mask ROM
-                * 0x40000000-0x41ffffff: mask ROM
-                * 0x42000000-0x43efffff: memory bank (31MB)
-                * 0x43f00000-0x43ffffff: peripherals (1MB)
-                */
-               writel(0x0000be01, SBBASE0); /* dummy */
-               writel(0x0200be01, SBBASE1);
-       }
-
-       sg_set_pinsel(99, 1, 4, 4);     /* GPIO26 -> EA24 */
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/sbc/sbc-pro4.c b/arch/arm/mach-uniphier/sbc/sbc-pro4.c
new file mode 100644 (file)
index 0000000..8313c5a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+#include "sbc-regs.h"
+
+int ph1_pro4_sbc_init(const struct uniphier_board_data *bd)
+{
+       /*
+        * Only CS1 is connected to support card.
+        * BKSZ[1:0] should be set to "01".
+        */
+       writel(SBCTRL0_SAVEPIN_PERI_VALUE, SBCTRL10);
+       writel(SBCTRL1_SAVEPIN_PERI_VALUE, SBCTRL11);
+       writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL12);
+       writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL14);
+
+       if (boot_is_swapped()) {
+               /*
+                * Boot Swap On: boot from external NOR/SRAM
+                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
+                *
+                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
+                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
+                */
+               writel(0x0000bc01, SBBASE0);
+       } else {
+               /*
+                * Boot Swap Off: boot from mask ROM
+                * 0x40000000-0x41ffffff: mask ROM
+                * 0x42000000-0x43efffff: memory bank (31MB)
+                * 0x43f00000-0x43ffffff: peripherals (1MB)
+                */
+               writel(0x0000be01, SBBASE0); /* dummy */
+               writel(0x0200be01, SBBASE1);
+       }
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/sbc/sbc-proxstream2.c b/arch/arm/mach-uniphier/sbc/sbc-proxstream2.c
deleted file mode 100644 (file)
index 0d9ffe1..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sg-regs.h"
-#include "sbc-regs.h"
-
-int proxstream2_sbc_init(const struct uniphier_board_data *bd)
-{
-       /* necessary for ROM boot ?? */
-       /* system bus output enable */
-       writel(0x17, PC0CTRL);
-
-       /*
-        * Only CS1 is connected to support card.
-        * BKSZ[1:0] should be set to "01".
-        */
-       writel(SBCTRL0_SAVEPIN_PERI_VALUE, SBCTRL10);
-       writel(SBCTRL1_SAVEPIN_PERI_VALUE, SBCTRL11);
-       writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL12);
-       writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL14);
-
-       if (boot_is_swapped()) {
-               /*
-                * Boot Swap On: boot from external NOR/SRAM
-                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
-                *
-                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
-                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
-                */
-               writel(0x0000bc01, SBBASE0);
-       } else {
-               /*
-                * Boot Swap Off: boot from mask ROM
-                * 0x40000000-0x41ffffff: mask ROM
-                * 0x42000000-0x43efffff: memory bank (31MB)
-                * 0x43f00000-0x43ffffff: peripherals (1MB)
-                */
-               writel(0x0000be01, SBBASE0); /* dummy */
-               writel(0x0200be01, SBBASE1);
-       }
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/sbc/sbc-pxs2.c b/arch/arm/mach-uniphier/sbc/sbc-pxs2.c
new file mode 100644 (file)
index 0000000..0d9ffe1
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+#include "sbc-regs.h"
+
+int proxstream2_sbc_init(const struct uniphier_board_data *bd)
+{
+       /* necessary for ROM boot ?? */
+       /* system bus output enable */
+       writel(0x17, PC0CTRL);
+
+       /*
+        * Only CS1 is connected to support card.
+        * BKSZ[1:0] should be set to "01".
+        */
+       writel(SBCTRL0_SAVEPIN_PERI_VALUE, SBCTRL10);
+       writel(SBCTRL1_SAVEPIN_PERI_VALUE, SBCTRL11);
+       writel(SBCTRL2_SAVEPIN_PERI_VALUE, SBCTRL12);
+       writel(SBCTRL4_SAVEPIN_PERI_VALUE, SBCTRL14);
+
+       if (boot_is_swapped()) {
+               /*
+                * Boot Swap On: boot from external NOR/SRAM
+                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
+                *
+                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
+                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
+                */
+               writel(0x0000bc01, SBBASE0);
+       } else {
+               /*
+                * Boot Swap Off: boot from mask ROM
+                * 0x40000000-0x41ffffff: mask ROM
+                * 0x42000000-0x43efffff: memory bank (31MB)
+                * 0x43f00000-0x43ffffff: peripherals (1MB)
+                */
+               writel(0x0000be01, SBBASE0); /* dummy */
+               writel(0x0200be01, SBBASE1);
+       }
+
+       return 0;
+}
diff --git a/arch/arm/mach-uniphier/sbc/sbc-sld3.c b/arch/arm/mach-uniphier/sbc/sbc-sld3.c
new file mode 100644 (file)
index 0000000..c03c284
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/io.h>
+
+#include "../init.h"
+#include "../sg-regs.h"
+#include "sbc-regs.h"
+
+int ph1_sld3_sbc_init(const struct uniphier_board_data *bd)
+{
+       /* only address/data multiplex mode is supported */
+
+       /*
+        * Only CS1 is connected to support card.
+        * BKSZ[1:0] should be set to "01".
+        */
+       writel(SBCTRL0_ADMULTIPLX_MEM_VALUE, SBCTRL10);
+       writel(SBCTRL1_ADMULTIPLX_MEM_VALUE, SBCTRL11);
+       writel(SBCTRL2_ADMULTIPLX_MEM_VALUE, SBCTRL12);
+
+       if (boot_is_swapped()) {
+               /*
+                * Boot Swap On: boot from external NOR/SRAM
+                * 0x42000000-0x43ffffff is a mirror of 0x40000000-0x41ffffff.
+                *
+                * 0x40000000-0x41efffff, 0x42000000-0x43efffff: memory bank
+                * 0x41f00000-0x41ffffff, 0x43f00000-0x43ffffff: peripherals
+                */
+               writel(0x0000bc01, SBBASE0);
+       } else {
+               /*
+                * Boot Swap Off: boot from mask ROM
+                * 0x40000000-0x41ffffff: mask ROM
+                * 0x42000000-0x43efffff: memory bank (31MB)
+                * 0x43f00000-0x43ffffff: peripherals (1MB)
+                */
+               writel(0x0000be01, SBBASE0); /* dummy */
+               writel(0x0200be01, SBBASE1);
+       }
+
+       sg_set_pinsel(99, 1, 4, 4);     /* GPIO26 -> EA24 */
+
+       return 0;
+}
index 474b82d24309143fe41c83cdcd4e782b9fb914dd..a0955893ef774cc215eff2c92b45862776091f7f 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef ARCH_SC_REGS_H
 #define ARCH_SC_REGS_H
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
 #define SC_BASE_ADDR                   0xf1840000
 #else
 #define SC_BASE_ADDR                   0x61840000
index 606094c80f463e224ad4aaec16aad0ed5e1d43a9..d9b38b3d2dc138324fd05c1510b56dd5d145534b 100644 (file)
@@ -8,28 +8,28 @@
 #define __MACH_SOC_INFO_H__
 
 enum uniphier_soc_id {
-       SOC_UNIPHIER_PH1_SLD3,
-       SOC_UNIPHIER_PH1_LD4,
-       SOC_UNIPHIER_PH1_PRO4,
-       SOC_UNIPHIER_PH1_SLD8,
-       SOC_UNIPHIER_PH1_PRO5,
-       SOC_UNIPHIER_PROXSTREAM2,
-       SOC_UNIPHIER_PH1_LD6B,
-       SOC_UNIPHIER_PH1_LD11,
-       SOC_UNIPHIER_PH1_LD20,
+       SOC_UNIPHIER_SLD3,
+       SOC_UNIPHIER_LD4,
+       SOC_UNIPHIER_PRO4,
+       SOC_UNIPHIER_SLD8,
+       SOC_UNIPHIER_PRO5,
+       SOC_UNIPHIER_PXS2,
+       SOC_UNIPHIER_LD6B,
+       SOC_UNIPHIER_LD11,
+       SOC_UNIPHIER_LD20,
        SOC_UNIPHIER_UNKNOWN,
 };
 
 #define UNIPHIER_NR_ENABLED_SOCS               \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_SLD3) +     \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_LD4) +      \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_PRO4) +     \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_SLD8) +     \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_PRO5) +     \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PROXSTREAM2) +  \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_LD6B) + \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_LD11) + \
-       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PH1_LD20)
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_SLD3) + \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_LD4) +  \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PRO4) + \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_SLD8) + \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PRO5) + \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_PXS2) + \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_LD6B) + \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_LD11) + \
+       IS_ENABLED(CONFIG_ARCH_UNIPHIER_LD20)
 
 #define UNIPHIER_MULTI_SOC     ((UNIPHIER_NR_ENABLED_SOCS) > 1)
 
@@ -38,32 +38,32 @@ enum uniphier_soc_id uniphier_get_soc_type(void);
 #else
 static inline enum uniphier_soc_id uniphier_get_soc_type(void)
 {
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3)
-       return SOC_UNIPHIER_PH1_SLD3;
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
+       return SOC_UNIPHIER_SLD3;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD4)
-       return SOC_UNIPHIER_PH1_LD4;
+#if defined(CONFIG_ARCH_UNIPHIER_LD4)
+       return SOC_UNIPHIER_LD4;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO4)
-       return SOC_UNIPHIER_PH1_PRO4;
+#if defined(CONFIG_ARCH_UNIPHIER_PRO4)
+       return SOC_UNIPHIER_PRO4;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
-       return SOC_UNIPHIER_PH1_SLD8;
+#if defined(CONFIG_ARCH_UNIPHIER_SLD8)
+       return SOC_UNIPHIER_SLD8;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_PRO5)
-       return SOC_UNIPHIER_PH1_PRO5;
+#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
+       return SOC_UNIPHIER_PRO5;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PROXSTREAM2)
-       return SOC_UNIPHIER_PROXSTREAM2;
+#if defined(CONFIG_ARCH_UNIPHIER_PXS2)
+       return SOC_UNIPHIER_PXS2;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD6B)
-       return SOC_UNIPHIER_PH1_LD6B;
+#if defined(CONFIG_ARCH_UNIPHIER_LD6B)
+       return SOC_UNIPHIER_LD6B;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD11)
-       return SOC_UNIPHIER_PH1_LD11;
+#if defined(CONFIG_ARCH_UNIPHIER_LD11)
+       return SOC_UNIPHIER_LD11;
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_LD20)
-       return SOC_UNIPHIER_PH1_LD20;
+#if defined(CONFIG_ARCH_UNIPHIER_LD20)
+       return SOC_UNIPHIER_LD20;
 #endif
 
        return SOC_UNIPHIER_UNKNOWN;
index 3cfc183723b041e9ec9fb55267ca7468492833b8..046104bd78d66a6426cdb279984dbe15b6c0fd32 100644 (file)
@@ -17,49 +17,49 @@ enum uniphier_soc_id uniphier_get_soc_type(void)
        enum uniphier_soc_id ret;
 
        switch ((revision & SG_REVISION_TYPE_MASK) >> SG_REVISION_TYPE_SHIFT) {
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_SLD3
+#ifdef CONFIG_ARCH_UNIPHIER_SLD3
        case 0x25:
-               ret = SOC_UNIPHIER_PH1_SLD3;
+               ret = SOC_UNIPHIER_SLD3;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_LD4
+#ifdef CONFIG_ARCH_UNIPHIER_LD4
        case 0x26:
-               ret = SOC_UNIPHIER_PH1_LD4;
+               ret = SOC_UNIPHIER_LD4;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_PRO4
+#ifdef CONFIG_ARCH_UNIPHIER_PRO4
        case 0x28:
-               ret = SOC_UNIPHIER_PH1_PRO4;
+               ret = SOC_UNIPHIER_PRO4;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_SLD8
+#ifdef CONFIG_ARCH_UNIPHIER_SLD8
        case 0x29:
-               ret = SOC_UNIPHIER_PH1_SLD8;
+               ret = SOC_UNIPHIER_SLD8;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_PRO5
+#ifdef CONFIG_ARCH_UNIPHIER_PRO5
        case 0x2A:
-               ret = SOC_UNIPHIER_PH1_PRO5;
+               ret = SOC_UNIPHIER_PRO5;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PROXSTREAM2
+#ifdef CONFIG_ARCH_UNIPHIER_PXS2
        case 0x2E:
-               ret = SOC_UNIPHIER_PROXSTREAM2;
+               ret = SOC_UNIPHIER_PXS2;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_LD6B
+#ifdef CONFIG_ARCH_UNIPHIER_LD6B
        case 0x2F:
-               ret = SOC_UNIPHIER_PH1_LD6B;
+               ret = SOC_UNIPHIER_LD6B;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_LD11
+#ifdef CONFIG_ARCH_UNIPHIER_LD11
        case 0x31:
-               ret = SOC_UNIPHIER_PH1_LD11;
+               ret = SOC_UNIPHIER_LD11;
                break;
 #endif
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_LD20
+#ifdef CONFIG_ARCH_UNIPHIER_LD20
        case 0x32:
-               ret = SOC_UNIPHIER_PH1_LD20;
+               ret = SOC_UNIPHIER_LD20;
                break;
 #endif
        default:
index 5f0d678c666101d9961643fad759769884645787..f779ded7d6761a54eef8ecf35fd0cd411d2020c7 100644 (file)
@@ -1,6 +1,6 @@
 CONFIG_ARM=y
 CONFIG_ARCH_UNIPHIER=y
-CONFIG_ARCH_UNIPHIER_PH1_SLD3=y
+CONFIG_ARCH_UNIPHIER_SLD3=y
 CONFIG_MICRO_SUPPORT_CARD=y
 CONFIG_SYS_TEXT_BASE=0x84000000
 CONFIG_DEFAULT_DEVICE_TREE="uniphier-ph1-sld3-ref"
index 33d676390db7f81ea887c01472aa4a8b96db052e..d22d485a3c16595c084540425718d22587a8f8d5 100644 (file)
@@ -3,39 +3,39 @@ if ARCH_UNIPHIER
 config PINCTRL_UNIPHIER
        bool
 
-config PINCTRL_UNIPHIER_PH1_LD4
+config PINCTRL_UNIPHIER_LD4
        bool "UniPhier PH1-LD4 SoC pinctrl driver"
-       depends on ARCH_UNIPHIER_PH1_LD4
+       depends on ARCH_UNIPHIER_LD4
        default y
        select PINCTRL_UNIPHIER
 
-config PINCTRL_UNIPHIER_PH1_PRO4
+config PINCTRL_UNIPHIER_PRO4
        bool "UniPhier PH1-Pro4 SoC pinctrl driver"
-       depends on ARCH_UNIPHIER_PH1_PRO4
+       depends on ARCH_UNIPHIER_PRO4
        default y
        select PINCTRL_UNIPHIER
 
-config PINCTRL_UNIPHIER_PH1_SLD8
+config PINCTRL_UNIPHIER_SLD8
        bool "UniPhier PH1-sLD8 SoC pinctrl driver"
-       depends on ARCH_UNIPHIER_PH1_SLD8
+       depends on ARCH_UNIPHIER_SLD8
        default y
        select PINCTRL_UNIPHIER
 
-config PINCTRL_UNIPHIER_PH1_PRO5
+config PINCTRL_UNIPHIER_PRO5
        bool "UniPhier PH1-Pro5 SoC pinctrl driver"
-       depends on ARCH_UNIPHIER_PH1_PRO5
+       depends on ARCH_UNIPHIER_PRO5
        default y
        select PINCTRL_UNIPHIER
 
-config PINCTRL_UNIPHIER_PROXSTREAM2
+config PINCTRL_UNIPHIER_PXS2
        bool "UniPhier ProXstream2 SoC pinctrl driver"
-       depends on ARCH_UNIPHIER_PROXSTREAM2
+       depends on ARCH_UNIPHIER_PXS2
        default y
        select PINCTRL_UNIPHIER
 
-config PINCTRL_UNIPHIER_PH1_LD6B
+config PINCTRL_UNIPHIER_LD6B
        bool "UniPhier PH1-LD6b SoC pinctrl driver"
-       depends on ARCH_UNIPHIER_PH1_LD6B
+       depends on ARCH_UNIPHIER_LD6B
        default y
        select PINCTRL_UNIPHIER
 
index 3667bd35f0c9a77c868d53bb1aa699a40b1df10d..c6cc13da579a04ca1d659ed3702743b43a03cfc7 100644 (file)
@@ -2,11 +2,11 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y                                          += pinctrl-uniphier-core.o
+obj-y                                  += pinctrl-uniphier-core.o
 
-obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_LD4)         += pinctrl-ph1-ld4.o
-obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_PRO4)                += pinctrl-ph1-pro4.o
-obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_SLD8)                += pinctrl-ph1-sld8.o
-obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_PRO5)                += pinctrl-ph1-pro5.o
-obj-$(CONFIG_PINCTRL_UNIPHIER_PROXSTREAM2)     += pinctrl-proxstream2.o
-obj-$(CONFIG_PINCTRL_UNIPHIER_PH1_LD6B)                += pinctrl-ph1-ld6b.o
+obj-$(CONFIG_PINCTRL_UNIPHIER_LD4)     += pinctrl-uniphier-ld4.o
+obj-$(CONFIG_PINCTRL_UNIPHIER_PRO4)    += pinctrl-uniphier-pro4.o
+obj-$(CONFIG_PINCTRL_UNIPHIER_SLD8)    += pinctrl-uniphier-sld8.o
+obj-$(CONFIG_PINCTRL_UNIPHIER_PRO5)    += pinctrl-uniphier-pro5.o
+obj-$(CONFIG_PINCTRL_UNIPHIER_PXS2)    += pinctrl-uniphier-pxs2.o
+obj-$(CONFIG_PINCTRL_UNIPHIER_LD6B)    += pinctrl-uniphier-ld6b.o
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c b/drivers/pinctrl/uniphier/pinctrl-ph1-ld4.c
deleted file mode 100644 (file)
index b3d47f0..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <dm/device.h>
-#include <dm/pinctrl.h>
-
-#include "pinctrl-uniphier.h"
-
-static const struct uniphier_pinctrl_pin ph1_ld4_pins[] = {
-       UNIPHIER_PINCTRL_PIN(53, 0),
-       UNIPHIER_PINCTRL_PIN(54, 0),
-       UNIPHIER_PINCTRL_PIN(55, 0),
-       UNIPHIER_PINCTRL_PIN(56, 0),
-       UNIPHIER_PINCTRL_PIN(67, 0),
-       UNIPHIER_PINCTRL_PIN(68, 0),
-       UNIPHIER_PINCTRL_PIN(69, 0),
-       UNIPHIER_PINCTRL_PIN(70, 0),
-       UNIPHIER_PINCTRL_PIN(85, 0),
-       UNIPHIER_PINCTRL_PIN(88, 0),
-       UNIPHIER_PINCTRL_PIN(156, 0),
-};
-
-static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
-static const unsigned emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1};
-static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
-static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
-static const unsigned i2c0_pins[] = {102, 103};
-static const unsigned i2c0_muxvals[] = {0, 0};
-static const unsigned i2c1_pins[] = {104, 105};
-static const unsigned i2c1_muxvals[] = {0, 0};
-static const unsigned i2c2_pins[] = {108, 109};
-static const unsigned i2c2_muxvals[] = {2, 2};
-static const unsigned i2c3_pins[] = {108, 109};
-static const unsigned i2c3_muxvals[] = {3, 3};
-static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159,
-                                    160, 161, 162, 163, 164};
-static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-                                       0, 0};
-static const unsigned nand_cs1_pins[] = {22, 23};
-static const unsigned nand_cs1_muxvals[] = {0, 0};
-static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52};
-static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-static const unsigned uart0_pins[] = {85, 88};
-static const unsigned uart0_muxvals[] = {1, 1};
-static const unsigned uart1_pins[] = {155, 156};
-static const unsigned uart1_muxvals[] = {13, 13};
-static const unsigned uart1b_pins[] = {69, 70};
-static const unsigned uart1b_muxvals[] = {23, 23};
-static const unsigned uart2_pins[] = {128, 129};
-static const unsigned uart2_muxvals[] = {13, 13};
-static const unsigned uart3_pins[] = {110, 111};
-static const unsigned uart3_muxvals[] = {1, 1};
-static const unsigned usb0_pins[] = {53, 54};
-static const unsigned usb0_muxvals[] = {0, 0};
-static const unsigned usb1_pins[] = {55, 56};
-static const unsigned usb1_muxvals[] = {0, 0};
-static const unsigned usb2_pins[] = {155, 156};
-static const unsigned usb2_muxvals[] = {4, 4};
-static const unsigned usb2b_pins[] = {67, 68};
-static const unsigned usb2b_muxvals[] = {23, 23};
-
-static const struct uniphier_pinctrl_group ph1_ld4_groups[] = {
-       UNIPHIER_PINCTRL_GROUP(emmc),
-       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
-       UNIPHIER_PINCTRL_GROUP(i2c0),
-       UNIPHIER_PINCTRL_GROUP(i2c1),
-       UNIPHIER_PINCTRL_GROUP(i2c2),
-       UNIPHIER_PINCTRL_GROUP(i2c3),
-       UNIPHIER_PINCTRL_GROUP(nand),
-       UNIPHIER_PINCTRL_GROUP(nand_cs1),
-       UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP(uart0),
-       UNIPHIER_PINCTRL_GROUP(uart1),
-       UNIPHIER_PINCTRL_GROUP(uart1b),
-       UNIPHIER_PINCTRL_GROUP(uart2),
-       UNIPHIER_PINCTRL_GROUP(uart3),
-       UNIPHIER_PINCTRL_GROUP(usb0),
-       UNIPHIER_PINCTRL_GROUP(usb1),
-       UNIPHIER_PINCTRL_GROUP(usb2),
-       UNIPHIER_PINCTRL_GROUP(usb2b),
-};
-
-static const char * const ph1_ld4_functions[] = {
-       "emmc",
-       "i2c0",
-       "i2c1",
-       "i2c2",
-       "i2c3",
-       "nand",
-       "sd",
-       "uart0",
-       "uart1",
-       "uart2",
-       "uart3",
-       "usb0",
-       "usb1",
-       "usb2",
-};
-
-static struct uniphier_pinctrl_socdata ph1_ld4_pinctrl_socdata = {
-       .pins = ph1_ld4_pins,
-       .pins_count = ARRAY_SIZE(ph1_ld4_pins),
-       .groups = ph1_ld4_groups,
-       .groups_count = ARRAY_SIZE(ph1_ld4_groups),
-       .functions = ph1_ld4_functions,
-       .functions_count = ARRAY_SIZE(ph1_ld4_functions),
-       .mux_bits = 8,
-       .reg_stride = 4,
-       .load_pinctrl = false,
-};
-
-static int ph1_ld4_pinctrl_probe(struct udevice *dev)
-{
-       return uniphier_pinctrl_probe(dev, &ph1_ld4_pinctrl_socdata);
-}
-
-static const struct udevice_id ph1_ld4_pinctrl_match[] = {
-       { .compatible = "socionext,ph1-ld4-pinctrl" },
-       { /* sentinel */ }
-};
-
-U_BOOT_DRIVER(ph1_ld4_pinctrl) = {
-       .name = "ph1-ld4-pinctrl",
-       .id = UCLASS_PINCTRL,
-       .of_match = of_match_ptr(ph1_ld4_pinctrl_match),
-       .probe = ph1_ld4_pinctrl_probe,
-       .remove = uniphier_pinctrl_remove,
-       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
-       .ops = &uniphier_pinctrl_ops,
-};
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c b/drivers/pinctrl/uniphier/pinctrl-ph1-ld6b.c
deleted file mode 100644 (file)
index 8703a21..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <dm/device.h>
-#include <dm/pinctrl.h>
-
-#include "pinctrl-uniphier.h"
-
-static const struct uniphier_pinctrl_pin ph1_ld6b_pins[] = {
-       UNIPHIER_PINCTRL_PIN(113, 0),
-       UNIPHIER_PINCTRL_PIN(114, 0),
-       UNIPHIER_PINCTRL_PIN(115, 0),
-       UNIPHIER_PINCTRL_PIN(116, 0),
-       UNIPHIER_PINCTRL_PIN(217, 0),
-       UNIPHIER_PINCTRL_PIN(218, 0),
-       UNIPHIER_PINCTRL_PIN(219, 0),
-       UNIPHIER_PINCTRL_PIN(220, 0),
-};
-
-static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
-static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
-static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
-static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
-static const unsigned i2c0_pins[] = {109, 110};
-static const unsigned i2c0_muxvals[] = {0, 0};
-static const unsigned i2c1_pins[] = {111, 112};
-static const unsigned i2c1_muxvals[] = {0, 0};
-static const unsigned i2c2_pins[] = {115, 116};
-static const unsigned i2c2_muxvals[] = {1, 1};
-static const unsigned i2c3_pins[] = {118, 119};
-static const unsigned i2c3_muxvals[] = {1, 1};
-static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41,
-                                    42, 43, 44, 45, 46};
-static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-                                       0, 0};
-static const unsigned nand_cs1_pins[] = {37, 38};
-static const unsigned nand_cs1_muxvals[] = {0, 0};
-static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
-static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-static const unsigned uart0_pins[] = {135, 136};
-static const unsigned uart0_muxvals[] = {3, 3};
-static const unsigned uart0b_pins[] = {11, 12};
-static const unsigned uart0b_muxvals[] = {2, 2};
-static const unsigned uart1_pins[] = {115, 116};
-static const unsigned uart1_muxvals[] = {0, 0};
-static const unsigned uart1b_pins[] = {113, 114};
-static const unsigned uart1b_muxvals[] = {1, 1};
-static const unsigned uart2_pins[] = {113, 114};
-static const unsigned uart2_muxvals[] = {2, 2};
-static const unsigned uart2b_pins[] = {86, 87};
-static const unsigned uart2b_muxvals[] = {1, 1};
-static const unsigned usb0_pins[] = {56, 57};
-static const unsigned usb0_muxvals[] = {0, 0};
-static const unsigned usb1_pins[] = {58, 59};
-static const unsigned usb1_muxvals[] = {0, 0};
-static const unsigned usb2_pins[] = {60, 61};
-static const unsigned usb2_muxvals[] = {0, 0};
-static const unsigned usb3_pins[] = {62, 63};
-static const unsigned usb3_muxvals[] = {0, 0};
-
-static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = {
-       UNIPHIER_PINCTRL_GROUP(emmc),
-       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
-       UNIPHIER_PINCTRL_GROUP(i2c0),
-       UNIPHIER_PINCTRL_GROUP(i2c1),
-       UNIPHIER_PINCTRL_GROUP(i2c2),
-       UNIPHIER_PINCTRL_GROUP(i2c3),
-       UNIPHIER_PINCTRL_GROUP(nand),
-       UNIPHIER_PINCTRL_GROUP(nand_cs1),
-       UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP(uart0),
-       UNIPHIER_PINCTRL_GROUP(uart0b),
-       UNIPHIER_PINCTRL_GROUP(uart1),
-       UNIPHIER_PINCTRL_GROUP(uart1b),
-       UNIPHIER_PINCTRL_GROUP(uart2),
-       UNIPHIER_PINCTRL_GROUP(uart2b),
-       UNIPHIER_PINCTRL_GROUP(usb0),
-       UNIPHIER_PINCTRL_GROUP(usb1),
-       UNIPHIER_PINCTRL_GROUP(usb2),
-       UNIPHIER_PINCTRL_GROUP(usb3),
-};
-
-static const char * const ph1_ld6b_functions[] = {
-       "emmc",
-       "i2c0",
-       "i2c1",
-       "i2c2",
-       "i2c3",
-       "nand",
-       "sd",
-       "uart0",
-       "uart1",
-       "uart2",
-       "usb0",
-       "usb1",
-       "usb2",
-       "usb3",
-};
-
-static struct uniphier_pinctrl_socdata ph1_ld6b_pinctrl_socdata = {
-       .pins = ph1_ld6b_pins,
-       .pins_count = ARRAY_SIZE(ph1_ld6b_pins),
-       .groups = ph1_ld6b_groups,
-       .groups_count = ARRAY_SIZE(ph1_ld6b_groups),
-       .functions = ph1_ld6b_functions,
-       .functions_count = ARRAY_SIZE(ph1_ld6b_functions),
-       .mux_bits = 8,
-       .reg_stride = 4,
-       .load_pinctrl = false,
-};
-
-static int ph1_ld6b_pinctrl_probe(struct udevice *dev)
-{
-       return uniphier_pinctrl_probe(dev, &ph1_ld6b_pinctrl_socdata);
-}
-
-static const struct udevice_id ph1_ld6b_pinctrl_match[] = {
-       { .compatible = "socionext,ph1-ld6b-pinctrl" },
-       { /* sentinel */ }
-};
-
-U_BOOT_DRIVER(ph1_ld6b_pinctrl) = {
-       .name = "ph1-ld6b-pinctrl",
-       .id = UCLASS_PINCTRL,
-       .of_match = of_match_ptr(ph1_ld6b_pinctrl_match),
-       .probe = ph1_ld6b_pinctrl_probe,
-       .remove = uniphier_pinctrl_remove,
-       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
-       .ops = &uniphier_pinctrl_ops,
-};
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c b/drivers/pinctrl/uniphier/pinctrl-ph1-pro4.c
deleted file mode 100644 (file)
index b3eaf13..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <dm/device.h>
-#include <dm/pinctrl.h>
-
-#include "pinctrl-uniphier.h"
-
-static const struct uniphier_pinctrl_pin ph1_pro4_pins[] = {
-};
-
-static const unsigned emmc_pins[] = {40, 41, 42, 43, 51, 52, 53};
-static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
-static const unsigned emmc_dat8_pins[] = {44, 45, 46, 47};
-static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
-static const unsigned i2c0_pins[] = {142, 143};
-static const unsigned i2c0_muxvals[] = {0, 0};
-static const unsigned i2c1_pins[] = {144, 145};
-static const unsigned i2c1_muxvals[] = {0, 0};
-static const unsigned i2c2_pins[] = {146, 147};
-static const unsigned i2c2_muxvals[] = {0, 0};
-static const unsigned i2c3_pins[] = {148, 149};
-static const unsigned i2c3_muxvals[] = {0, 0};
-static const unsigned i2c6_pins[] = {308, 309};
-static const unsigned i2c6_muxvals[] = {6, 6};
-static const unsigned nand_pins[] = {40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
-                                    50, 51, 52, 53, 54};
-static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-                                       0, 0};
-static const unsigned nand_cs1_pins[] = {131, 132};
-static const unsigned nand_cs1_muxvals[] = {1, 1};
-static const unsigned sd_pins[] = {150, 151, 152, 153, 154, 155, 156, 157, 158};
-static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326,
-                                   327};
-static const unsigned sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-static const unsigned uart0_pins[] = {127, 128};
-static const unsigned uart0_muxvals[] = {0, 0};
-static const unsigned uart1_pins[] = {129, 130};
-static const unsigned uart1_muxvals[] = {0, 0};
-static const unsigned uart2_pins[] = {131, 132};
-static const unsigned uart2_muxvals[] = {0, 0};
-static const unsigned uart3_pins[] = {88, 89};
-static const unsigned uart3_muxvals[] = {2, 2};
-static const unsigned usb0_pins[] = {180, 181};
-static const unsigned usb0_muxvals[] = {0, 0};
-static const unsigned usb1_pins[] = {182, 183};
-static const unsigned usb1_muxvals[] = {0, 0};
-static const unsigned usb2_pins[] = {184, 185};
-static const unsigned usb2_muxvals[] = {0, 0};
-static const unsigned usb3_pins[] = {186, 187};
-static const unsigned usb3_muxvals[] = {0, 0};
-
-static const struct uniphier_pinctrl_group ph1_pro4_groups[] = {
-       UNIPHIER_PINCTRL_GROUP(emmc),
-       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
-       UNIPHIER_PINCTRL_GROUP(i2c0),
-       UNIPHIER_PINCTRL_GROUP(i2c1),
-       UNIPHIER_PINCTRL_GROUP(i2c2),
-       UNIPHIER_PINCTRL_GROUP(i2c3),
-       UNIPHIER_PINCTRL_GROUP(i2c6),
-       UNIPHIER_PINCTRL_GROUP(nand),
-       UNIPHIER_PINCTRL_GROUP(nand_cs1),
-       UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP(sd1),
-       UNIPHIER_PINCTRL_GROUP(uart0),
-       UNIPHIER_PINCTRL_GROUP(uart1),
-       UNIPHIER_PINCTRL_GROUP(uart2),
-       UNIPHIER_PINCTRL_GROUP(uart3),
-       UNIPHIER_PINCTRL_GROUP(usb0),
-       UNIPHIER_PINCTRL_GROUP(usb1),
-       UNIPHIER_PINCTRL_GROUP(usb2),
-       UNIPHIER_PINCTRL_GROUP(usb3),
-};
-
-static const char * const ph1_pro4_functions[] = {
-       "emmc",
-       "i2c0",
-       "i2c1",
-       "i2c2",
-       "i2c3",
-       "i2c6",
-       "nand",
-       "sd",
-       "sd1",
-       "uart0",
-       "uart1",
-       "uart2",
-       "uart3",
-       "usb0",
-       "usb1",
-       "usb2",
-       "usb3",
-};
-
-static struct uniphier_pinctrl_socdata ph1_pro4_pinctrl_socdata = {
-       .pins = ph1_pro4_pins,
-       .pins_count = ARRAY_SIZE(ph1_pro4_pins),
-       .groups = ph1_pro4_groups,
-       .groups_count = ARRAY_SIZE(ph1_pro4_groups),
-       .functions = ph1_pro4_functions,
-       .functions_count = ARRAY_SIZE(ph1_pro4_functions),
-       .mux_bits = 4,
-       .reg_stride = 8,
-       .load_pinctrl = true,
-};
-
-static int ph1_pro4_pinctrl_probe(struct udevice *dev)
-{
-       return uniphier_pinctrl_probe(dev, &ph1_pro4_pinctrl_socdata);
-}
-
-static const struct udevice_id ph1_pro4_pinctrl_match[] = {
-       { .compatible = "socionext,ph1-pro4-pinctrl" },
-       { /* sentinel */ }
-};
-
-U_BOOT_DRIVER(ph1_pro4_pinctrl) = {
-       .name = "ph1-pro4-pinctrl",
-       .id = UCLASS_PINCTRL,
-       .of_match = of_match_ptr(ph1_pro4_pinctrl_match),
-       .probe = ph1_pro4_pinctrl_probe,
-       .remove = uniphier_pinctrl_remove,
-       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
-       .ops = &uniphier_pinctrl_ops,
-       .flags = DM_FLAG_PRE_RELOC,
-};
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c b/drivers/pinctrl/uniphier/pinctrl-ph1-pro5.c
deleted file mode 100644 (file)
index 3749250..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <dm/device.h>
-#include <dm/pinctrl.h>
-
-#include "pinctrl-uniphier.h"
-
-static const struct uniphier_pinctrl_pin ph1_pro5_pins[] = {
-       UNIPHIER_PINCTRL_PIN(47, 0),
-       UNIPHIER_PINCTRL_PIN(48, 0),
-       UNIPHIER_PINCTRL_PIN(49, 0),
-       UNIPHIER_PINCTRL_PIN(50, 0),
-       UNIPHIER_PINCTRL_PIN(53, 0),
-       UNIPHIER_PINCTRL_PIN(54, 0),
-       UNIPHIER_PINCTRL_PIN(87, 0),
-       UNIPHIER_PINCTRL_PIN(88, 0),
-       UNIPHIER_PINCTRL_PIN(101, 0),
-       UNIPHIER_PINCTRL_PIN(102, 0),
-};
-
-static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
-static const unsigned emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0};
-static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
-static const unsigned emmc_dat8_muxvals[] = {0, 0, 0, 0};
-static const unsigned i2c0_pins[] = {112, 113};
-static const unsigned i2c0_muxvals[] = {0, 0};
-static const unsigned i2c1_pins[] = {114, 115};
-static const unsigned i2c1_muxvals[] = {0, 0};
-static const unsigned i2c2_pins[] = {116, 117};
-static const unsigned i2c2_muxvals[] = {0, 0};
-static const unsigned i2c3_pins[] = {118, 119};
-static const unsigned i2c3_muxvals[] = {0, 0};
-static const unsigned i2c5_pins[] = {87, 88};
-static const unsigned i2c5_muxvals[] = {2, 2};
-static const unsigned i2c5b_pins[] = {196, 197};
-static const unsigned i2c5b_muxvals[] = {2, 2};
-static const unsigned i2c5c_pins[] = {215, 216};
-static const unsigned i2c5c_muxvals[] = {2, 2};
-static const unsigned i2c6_pins[] = {101, 102};
-static const unsigned i2c6_muxvals[] = {2, 2};
-static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30,
-                                    31, 32, 33, 34, 35};
-static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-                                       0, 0};
-static const unsigned nand_cs1_pins[] = {26, 27};
-static const unsigned nand_cs1_muxvals[] = {0, 0};
-static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258};
-static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-static const unsigned uart0_pins[] = {47, 48};
-static const unsigned uart0_muxvals[] = {0, 0};
-static const unsigned uart0b_pins[] = {227, 228};
-static const unsigned uart0b_muxvals[] = {3, 3};
-static const unsigned uart1_pins[] = {49, 50};
-static const unsigned uart1_muxvals[] = {0, 0};
-static const unsigned uart2_pins[] = {51, 52};
-static const unsigned uart2_muxvals[] = {0, 0};
-static const unsigned uart3_pins[] = {53, 54};
-static const unsigned uart3_muxvals[] = {0, 0};
-static const unsigned usb0_pins[] = {124, 125};
-static const unsigned usb0_muxvals[] = {0, 0};
-static const unsigned usb1_pins[] = {126, 127};
-static const unsigned usb1_muxvals[] = {0, 0};
-static const unsigned usb2_pins[] = {128, 129};
-static const unsigned usb2_muxvals[] = {0, 0};
-
-static const struct uniphier_pinctrl_group ph1_pro5_groups[] = {
-       UNIPHIER_PINCTRL_GROUP(emmc),
-       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
-       UNIPHIER_PINCTRL_GROUP(i2c0),
-       UNIPHIER_PINCTRL_GROUP(i2c1),
-       UNIPHIER_PINCTRL_GROUP(i2c2),
-       UNIPHIER_PINCTRL_GROUP(i2c3),
-       UNIPHIER_PINCTRL_GROUP(i2c5),
-       UNIPHIER_PINCTRL_GROUP(i2c5b),
-       UNIPHIER_PINCTRL_GROUP(i2c5c),
-       UNIPHIER_PINCTRL_GROUP(i2c6),
-       UNIPHIER_PINCTRL_GROUP(nand),
-       UNIPHIER_PINCTRL_GROUP(nand_cs1),
-       UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP(uart0),
-       UNIPHIER_PINCTRL_GROUP(uart0b),
-       UNIPHIER_PINCTRL_GROUP(uart1),
-       UNIPHIER_PINCTRL_GROUP(uart2),
-       UNIPHIER_PINCTRL_GROUP(uart3),
-       UNIPHIER_PINCTRL_GROUP(usb0),
-       UNIPHIER_PINCTRL_GROUP(usb1),
-       UNIPHIER_PINCTRL_GROUP(usb2),
-};
-
-static const char * const ph1_pro5_functions[] = {
-       "emmc",
-       "i2c0",
-       "i2c1",
-       "i2c2",
-       "i2c3",
-       "i2c5",
-       "i2c6",
-       "nand",
-       "sd",
-       "uart0",
-       "uart1",
-       "uart2",
-       "uart3",
-       "usb0",
-       "usb1",
-       "usb2",
-};
-
-static struct uniphier_pinctrl_socdata ph1_pro5_pinctrl_socdata = {
-       .pins = ph1_pro5_pins,
-       .pins_count = ARRAY_SIZE(ph1_pro5_pins),
-       .groups = ph1_pro5_groups,
-       .groups_count = ARRAY_SIZE(ph1_pro5_groups),
-       .functions = ph1_pro5_functions,
-       .functions_count = ARRAY_SIZE(ph1_pro5_functions),
-       .mux_bits = 4,
-       .reg_stride = 8,
-       .load_pinctrl = true,
-};
-
-static int ph1_pro5_pinctrl_probe(struct udevice *dev)
-{
-       return uniphier_pinctrl_probe(dev, &ph1_pro5_pinctrl_socdata);
-}
-
-static const struct udevice_id ph1_pro5_pinctrl_match[] = {
-       { .compatible = "socionext,ph1-pro5-pinctrl" },
-       { /* sentinel */ }
-};
-
-U_BOOT_DRIVER(ph1_pro5_pinctrl) = {
-       .name = "ph1-pro5-pinctrl",
-       .id = UCLASS_PINCTRL,
-       .of_match = of_match_ptr(ph1_pro5_pinctrl_match),
-       .probe = ph1_pro5_pinctrl_probe,
-       .remove = uniphier_pinctrl_remove,
-       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
-       .ops = &uniphier_pinctrl_ops,
-       .flags = DM_FLAG_PRE_RELOC,
-};
diff --git a/drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c b/drivers/pinctrl/uniphier/pinctrl-ph1-sld8.c
deleted file mode 100644 (file)
index 5fafdb6..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <dm/device.h>
-#include <dm/pinctrl.h>
-
-#include "pinctrl-uniphier.h"
-
-static const struct uniphier_pinctrl_pin ph1_sld8_pins[] = {
-       UNIPHIER_PINCTRL_PIN(32, 8),
-       UNIPHIER_PINCTRL_PIN(33, 8),
-       UNIPHIER_PINCTRL_PIN(34, 8),
-       UNIPHIER_PINCTRL_PIN(35, 8),
-       UNIPHIER_PINCTRL_PIN(36, 8),
-       UNIPHIER_PINCTRL_PIN(37, 8),
-       UNIPHIER_PINCTRL_PIN(38, 8),
-       UNIPHIER_PINCTRL_PIN(39, 8),
-       UNIPHIER_PINCTRL_PIN(40, 9),
-       UNIPHIER_PINCTRL_PIN(41, 0),
-       UNIPHIER_PINCTRL_PIN(42, 0),
-       UNIPHIER_PINCTRL_PIN(43, 0),
-       UNIPHIER_PINCTRL_PIN(44, 0),
-       UNIPHIER_PINCTRL_PIN(70, 0),
-       UNIPHIER_PINCTRL_PIN(71, 0),
-       UNIPHIER_PINCTRL_PIN(102, 10),
-       UNIPHIER_PINCTRL_PIN(103, 10),
-       UNIPHIER_PINCTRL_PIN(104, 11),
-       UNIPHIER_PINCTRL_PIN(105, 11),
-       UNIPHIER_PINCTRL_PIN(108, 13),
-       UNIPHIER_PINCTRL_PIN(109, 13),
-       UNIPHIER_PINCTRL_PIN(112, 0),
-       UNIPHIER_PINCTRL_PIN(113, 0),
-       UNIPHIER_PINCTRL_PIN(114, 0),
-       UNIPHIER_PINCTRL_PIN(115, 0),
-};
-
-static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
-static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
-static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
-static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
-static const unsigned i2c0_pins[] = {102, 103};
-static const unsigned i2c0_muxvals[] = {0, 0};
-static const unsigned i2c1_pins[] = {104, 105};
-static const unsigned i2c1_muxvals[] = {0, 0};
-static const unsigned i2c2_pins[] = {108, 109};
-static const unsigned i2c2_muxvals[] = {2, 2};
-static const unsigned i2c3_pins[] = {108, 109};
-static const unsigned i2c3_muxvals[] = {3, 3};
-static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
-                                    27, 28, 29, 30, 31};
-static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-                                       0, 0};
-static const unsigned nand_cs1_pins[] = {22, 23};
-static const unsigned nand_cs1_muxvals[] = {0, 0};
-static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
-static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
-static const unsigned uart0_pins[] = {70, 71};
-static const unsigned uart0_muxvals[] = {3, 3};
-static const unsigned uart1_pins[] = {114, 115};
-static const unsigned uart1_muxvals[] = {0, 0};
-static const unsigned uart2_pins[] = {112, 113};
-static const unsigned uart2_muxvals[] = {1, 1};
-static const unsigned uart3_pins[] = {110, 111};
-static const unsigned uart3_muxvals[] = {1, 1};
-static const unsigned usb0_pins[] = {41, 42};
-static const unsigned usb0_muxvals[] = {0, 0};
-static const unsigned usb1_pins[] = {43, 44};
-static const unsigned usb1_muxvals[] = {0, 0};
-static const unsigned usb2_pins[] = {114, 115};
-static const unsigned usb2_muxvals[] = {1, 1};
-
-static const struct uniphier_pinctrl_group ph1_sld8_groups[] = {
-       UNIPHIER_PINCTRL_GROUP(emmc),
-       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
-       UNIPHIER_PINCTRL_GROUP(i2c0),
-       UNIPHIER_PINCTRL_GROUP(i2c1),
-       UNIPHIER_PINCTRL_GROUP(i2c2),
-       UNIPHIER_PINCTRL_GROUP(i2c3),
-       UNIPHIER_PINCTRL_GROUP(nand),
-       UNIPHIER_PINCTRL_GROUP(nand_cs1),
-       UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP(uart0),
-       UNIPHIER_PINCTRL_GROUP(uart1),
-       UNIPHIER_PINCTRL_GROUP(uart2),
-       UNIPHIER_PINCTRL_GROUP(uart3),
-       UNIPHIER_PINCTRL_GROUP(usb0),
-       UNIPHIER_PINCTRL_GROUP(usb1),
-       UNIPHIER_PINCTRL_GROUP(usb2),
-};
-
-static const char * const ph1_sld8_functions[] = {
-       "emmc",
-       "i2c0",
-       "i2c1",
-       "i2c2",
-       "i2c3",
-       "nand",
-       "sd",
-       "uart0",
-       "uart1",
-       "uart2",
-       "uart3",
-       "usb0",
-       "usb1",
-       "usb2",
-};
-
-static struct uniphier_pinctrl_socdata ph1_sld8_pinctrl_socdata = {
-       .pins = ph1_sld8_pins,
-       .pins_count = ARRAY_SIZE(ph1_sld8_pins),
-       .groups = ph1_sld8_groups,
-       .groups_count = ARRAY_SIZE(ph1_sld8_groups),
-       .functions = ph1_sld8_functions,
-       .functions_count = ARRAY_SIZE(ph1_sld8_functions),
-       .mux_bits = 8,
-       .reg_stride = 4,
-       .load_pinctrl = false,
-};
-
-static int ph1_sld8_pinctrl_probe(struct udevice *dev)
-{
-       return uniphier_pinctrl_probe(dev, &ph1_sld8_pinctrl_socdata);
-}
-
-static const struct udevice_id ph1_sld8_pinctrl_match[] = {
-       { .compatible = "socionext,ph1-sld8-pinctrl" },
-       { /* sentinel */ }
-};
-
-U_BOOT_DRIVER(ph1_sld8_pinctrl) = {
-       .name = "ph1-sld8-pinctrl",
-       .id = UCLASS_PINCTRL,
-       .of_match = of_match_ptr(ph1_sld8_pinctrl_match),
-       .probe = ph1_sld8_pinctrl_probe,
-       .remove = uniphier_pinctrl_remove,
-       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
-       .ops = &uniphier_pinctrl_ops,
-};
diff --git a/drivers/pinctrl/uniphier/pinctrl-proxstream2.c b/drivers/pinctrl/uniphier/pinctrl-proxstream2.c
deleted file mode 100644 (file)
index 2cca69d..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <dm/device.h>
-#include <dm/pinctrl.h>
-
-#include "pinctrl-uniphier.h"
-
-static const struct uniphier_pinctrl_pin proxstream2_pins[] = {
-       UNIPHIER_PINCTRL_PIN(113, 0),
-       UNIPHIER_PINCTRL_PIN(114, 0),
-       UNIPHIER_PINCTRL_PIN(115, 0),
-       UNIPHIER_PINCTRL_PIN(116, 0),
-};
-
-static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
-static const unsigned emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9};
-static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
-static const unsigned emmc_dat8_muxvals[] = {9, 9, 9, 9};
-static const unsigned i2c0_pins[] = {109, 110};
-static const unsigned i2c0_muxvals[] = {8, 8};
-static const unsigned i2c1_pins[] = {111, 112};
-static const unsigned i2c1_muxvals[] = {8, 8};
-static const unsigned i2c2_pins[] = {171, 172};
-static const unsigned i2c2_muxvals[] = {8, 8};
-static const unsigned i2c3_pins[] = {159, 160};
-static const unsigned i2c3_muxvals[] = {8, 8};
-static const unsigned i2c5_pins[] = {183, 184};
-static const unsigned i2c5_muxvals[] = {11, 11};
-static const unsigned i2c6_pins[] = {185, 186};
-static const unsigned i2c6_muxvals[] = {11, 11};
-static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41,
-                                    42, 43, 44, 45, 46};
-static const unsigned nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
-                                       8, 8};
-static const unsigned nand_cs1_pins[] = {37, 38};
-static const unsigned nand_cs1_muxvals[] = {8, 8};
-static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
-static const unsigned sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8};
-static const unsigned uart0_pins[] = {217, 218};
-static const unsigned uart0_muxvals[] = {8, 8};
-static const unsigned uart0b_pins[] = {179, 180};
-static const unsigned uart0b_muxvals[] = {10, 10};
-static const unsigned uart1_pins[] = {115, 116};
-static const unsigned uart1_muxvals[] = {8, 8};
-static const unsigned uart2_pins[] = {113, 114};
-static const unsigned uart2_muxvals[] = {8, 8};
-static const unsigned uart3_pins[] = {219, 220};
-static const unsigned uart3_muxvals[] = {8, 8};
-static const unsigned uart3b_pins[] = {181, 182};
-static const unsigned uart3b_muxvals[] = {10, 10};
-static const unsigned usb0_pins[] = {56, 57};
-static const unsigned usb0_muxvals[] = {8, 8};
-static const unsigned usb1_pins[] = {58, 59};
-static const unsigned usb1_muxvals[] = {8, 8};
-static const unsigned usb2_pins[] = {60, 61};
-static const unsigned usb2_muxvals[] = {8, 8};
-static const unsigned usb3_pins[] = {62, 63};
-static const unsigned usb3_muxvals[] = {8, 8};
-
-static const struct uniphier_pinctrl_group proxstream2_groups[] = {
-       UNIPHIER_PINCTRL_GROUP(emmc),
-       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
-       UNIPHIER_PINCTRL_GROUP(i2c0),
-       UNIPHIER_PINCTRL_GROUP(i2c1),
-       UNIPHIER_PINCTRL_GROUP(i2c2),
-       UNIPHIER_PINCTRL_GROUP(i2c3),
-       UNIPHIER_PINCTRL_GROUP(i2c5),
-       UNIPHIER_PINCTRL_GROUP(i2c6),
-       UNIPHIER_PINCTRL_GROUP(nand),
-       UNIPHIER_PINCTRL_GROUP(nand_cs1),
-       UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP(uart0),
-       UNIPHIER_PINCTRL_GROUP(uart0b),
-       UNIPHIER_PINCTRL_GROUP(uart1),
-       UNIPHIER_PINCTRL_GROUP(uart2),
-       UNIPHIER_PINCTRL_GROUP(uart3),
-       UNIPHIER_PINCTRL_GROUP(uart3b),
-       UNIPHIER_PINCTRL_GROUP(usb0),
-       UNIPHIER_PINCTRL_GROUP(usb1),
-       UNIPHIER_PINCTRL_GROUP(usb2),
-       UNIPHIER_PINCTRL_GROUP(usb3),
-};
-
-static const char * const proxstream2_functions[] = {
-       "emmc",
-       "i2c0",
-       "i2c1",
-       "i2c2",
-       "i2c3",
-       "i2c5",
-       "i2c6",
-       "nand",
-       "sd",
-       "uart0",
-       "uart0b",
-       "uart1",
-       "uart2",
-       "uart3",
-       "uart3b",
-       "usb0",
-       "usb1",
-       "usb2",
-       "usb3",
-};
-
-static struct uniphier_pinctrl_socdata proxstream2_pinctrl_socdata = {
-       .pins = proxstream2_pins,
-       .pins_count = ARRAY_SIZE(proxstream2_pins),
-       .groups = proxstream2_groups,
-       .groups_count = ARRAY_SIZE(proxstream2_groups),
-       .functions = proxstream2_functions,
-       .functions_count = ARRAY_SIZE(proxstream2_functions),
-       .mux_bits = 8,
-       .reg_stride = 4,
-       .load_pinctrl = false,
-};
-
-static int proxstream2_pinctrl_probe(struct udevice *dev)
-{
-       return uniphier_pinctrl_probe(dev, &proxstream2_pinctrl_socdata);
-}
-
-static const struct udevice_id proxstream2_pinctrl_match[] = {
-       { .compatible = "socionext,proxstream2-pinctrl" },
-       { /* sentinel */ }
-};
-
-U_BOOT_DRIVER(proxstream2_pinctrl) = {
-       .name = "proxstream2-pinctrl",
-       .id = UCLASS_PINCTRL,
-       .of_match = of_match_ptr(proxstream2_pinctrl_match),
-       .probe = proxstream2_pinctrl_probe,
-       .remove = uniphier_pinctrl_remove,
-       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
-       .ops = &uniphier_pinctrl_ops,
-};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c
new file mode 100644 (file)
index 0000000..b3d47f0
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+#include "pinctrl-uniphier.h"
+
+static const struct uniphier_pinctrl_pin ph1_ld4_pins[] = {
+       UNIPHIER_PINCTRL_PIN(53, 0),
+       UNIPHIER_PINCTRL_PIN(54, 0),
+       UNIPHIER_PINCTRL_PIN(55, 0),
+       UNIPHIER_PINCTRL_PIN(56, 0),
+       UNIPHIER_PINCTRL_PIN(67, 0),
+       UNIPHIER_PINCTRL_PIN(68, 0),
+       UNIPHIER_PINCTRL_PIN(69, 0),
+       UNIPHIER_PINCTRL_PIN(70, 0),
+       UNIPHIER_PINCTRL_PIN(85, 0),
+       UNIPHIER_PINCTRL_PIN(88, 0),
+       UNIPHIER_PINCTRL_PIN(156, 0),
+};
+
+static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
+static const unsigned emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1};
+static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
+static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
+static const unsigned i2c0_pins[] = {102, 103};
+static const unsigned i2c0_muxvals[] = {0, 0};
+static const unsigned i2c1_pins[] = {104, 105};
+static const unsigned i2c1_muxvals[] = {0, 0};
+static const unsigned i2c2_pins[] = {108, 109};
+static const unsigned i2c2_muxvals[] = {2, 2};
+static const unsigned i2c3_pins[] = {108, 109};
+static const unsigned i2c3_muxvals[] = {3, 3};
+static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159,
+                                    160, 161, 162, 163, 164};
+static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                       0, 0};
+static const unsigned nand_cs1_pins[] = {22, 23};
+static const unsigned nand_cs1_muxvals[] = {0, 0};
+static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52};
+static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+static const unsigned uart0_pins[] = {85, 88};
+static const unsigned uart0_muxvals[] = {1, 1};
+static const unsigned uart1_pins[] = {155, 156};
+static const unsigned uart1_muxvals[] = {13, 13};
+static const unsigned uart1b_pins[] = {69, 70};
+static const unsigned uart1b_muxvals[] = {23, 23};
+static const unsigned uart2_pins[] = {128, 129};
+static const unsigned uart2_muxvals[] = {13, 13};
+static const unsigned uart3_pins[] = {110, 111};
+static const unsigned uart3_muxvals[] = {1, 1};
+static const unsigned usb0_pins[] = {53, 54};
+static const unsigned usb0_muxvals[] = {0, 0};
+static const unsigned usb1_pins[] = {55, 56};
+static const unsigned usb1_muxvals[] = {0, 0};
+static const unsigned usb2_pins[] = {155, 156};
+static const unsigned usb2_muxvals[] = {4, 4};
+static const unsigned usb2b_pins[] = {67, 68};
+static const unsigned usb2b_muxvals[] = {23, 23};
+
+static const struct uniphier_pinctrl_group ph1_ld4_groups[] = {
+       UNIPHIER_PINCTRL_GROUP(emmc),
+       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
+       UNIPHIER_PINCTRL_GROUP(i2c0),
+       UNIPHIER_PINCTRL_GROUP(i2c1),
+       UNIPHIER_PINCTRL_GROUP(i2c2),
+       UNIPHIER_PINCTRL_GROUP(i2c3),
+       UNIPHIER_PINCTRL_GROUP(nand),
+       UNIPHIER_PINCTRL_GROUP(nand_cs1),
+       UNIPHIER_PINCTRL_GROUP(sd),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart1b),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
+       UNIPHIER_PINCTRL_GROUP(usb0),
+       UNIPHIER_PINCTRL_GROUP(usb1),
+       UNIPHIER_PINCTRL_GROUP(usb2),
+       UNIPHIER_PINCTRL_GROUP(usb2b),
+};
+
+static const char * const ph1_ld4_functions[] = {
+       "emmc",
+       "i2c0",
+       "i2c1",
+       "i2c2",
+       "i2c3",
+       "nand",
+       "sd",
+       "uart0",
+       "uart1",
+       "uart2",
+       "uart3",
+       "usb0",
+       "usb1",
+       "usb2",
+};
+
+static struct uniphier_pinctrl_socdata ph1_ld4_pinctrl_socdata = {
+       .pins = ph1_ld4_pins,
+       .pins_count = ARRAY_SIZE(ph1_ld4_pins),
+       .groups = ph1_ld4_groups,
+       .groups_count = ARRAY_SIZE(ph1_ld4_groups),
+       .functions = ph1_ld4_functions,
+       .functions_count = ARRAY_SIZE(ph1_ld4_functions),
+       .mux_bits = 8,
+       .reg_stride = 4,
+       .load_pinctrl = false,
+};
+
+static int ph1_ld4_pinctrl_probe(struct udevice *dev)
+{
+       return uniphier_pinctrl_probe(dev, &ph1_ld4_pinctrl_socdata);
+}
+
+static const struct udevice_id ph1_ld4_pinctrl_match[] = {
+       { .compatible = "socionext,ph1-ld4-pinctrl" },
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(ph1_ld4_pinctrl) = {
+       .name = "ph1-ld4-pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = of_match_ptr(ph1_ld4_pinctrl_match),
+       .probe = ph1_ld4_pinctrl_probe,
+       .remove = uniphier_pinctrl_remove,
+       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
+       .ops = &uniphier_pinctrl_ops,
+};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c
new file mode 100644 (file)
index 0000000..8703a21
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+#include "pinctrl-uniphier.h"
+
+static const struct uniphier_pinctrl_pin ph1_ld6b_pins[] = {
+       UNIPHIER_PINCTRL_PIN(113, 0),
+       UNIPHIER_PINCTRL_PIN(114, 0),
+       UNIPHIER_PINCTRL_PIN(115, 0),
+       UNIPHIER_PINCTRL_PIN(116, 0),
+       UNIPHIER_PINCTRL_PIN(217, 0),
+       UNIPHIER_PINCTRL_PIN(218, 0),
+       UNIPHIER_PINCTRL_PIN(219, 0),
+       UNIPHIER_PINCTRL_PIN(220, 0),
+};
+
+static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
+static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
+static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
+static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
+static const unsigned i2c0_pins[] = {109, 110};
+static const unsigned i2c0_muxvals[] = {0, 0};
+static const unsigned i2c1_pins[] = {111, 112};
+static const unsigned i2c1_muxvals[] = {0, 0};
+static const unsigned i2c2_pins[] = {115, 116};
+static const unsigned i2c2_muxvals[] = {1, 1};
+static const unsigned i2c3_pins[] = {118, 119};
+static const unsigned i2c3_muxvals[] = {1, 1};
+static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41,
+                                    42, 43, 44, 45, 46};
+static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                       0, 0};
+static const unsigned nand_cs1_pins[] = {37, 38};
+static const unsigned nand_cs1_muxvals[] = {0, 0};
+static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
+static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+static const unsigned uart0_pins[] = {135, 136};
+static const unsigned uart0_muxvals[] = {3, 3};
+static const unsigned uart0b_pins[] = {11, 12};
+static const unsigned uart0b_muxvals[] = {2, 2};
+static const unsigned uart1_pins[] = {115, 116};
+static const unsigned uart1_muxvals[] = {0, 0};
+static const unsigned uart1b_pins[] = {113, 114};
+static const unsigned uart1b_muxvals[] = {1, 1};
+static const unsigned uart2_pins[] = {113, 114};
+static const unsigned uart2_muxvals[] = {2, 2};
+static const unsigned uart2b_pins[] = {86, 87};
+static const unsigned uart2b_muxvals[] = {1, 1};
+static const unsigned usb0_pins[] = {56, 57};
+static const unsigned usb0_muxvals[] = {0, 0};
+static const unsigned usb1_pins[] = {58, 59};
+static const unsigned usb1_muxvals[] = {0, 0};
+static const unsigned usb2_pins[] = {60, 61};
+static const unsigned usb2_muxvals[] = {0, 0};
+static const unsigned usb3_pins[] = {62, 63};
+static const unsigned usb3_muxvals[] = {0, 0};
+
+static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = {
+       UNIPHIER_PINCTRL_GROUP(emmc),
+       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
+       UNIPHIER_PINCTRL_GROUP(i2c0),
+       UNIPHIER_PINCTRL_GROUP(i2c1),
+       UNIPHIER_PINCTRL_GROUP(i2c2),
+       UNIPHIER_PINCTRL_GROUP(i2c3),
+       UNIPHIER_PINCTRL_GROUP(nand),
+       UNIPHIER_PINCTRL_GROUP(nand_cs1),
+       UNIPHIER_PINCTRL_GROUP(sd),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart0b),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart1b),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart2b),
+       UNIPHIER_PINCTRL_GROUP(usb0),
+       UNIPHIER_PINCTRL_GROUP(usb1),
+       UNIPHIER_PINCTRL_GROUP(usb2),
+       UNIPHIER_PINCTRL_GROUP(usb3),
+};
+
+static const char * const ph1_ld6b_functions[] = {
+       "emmc",
+       "i2c0",
+       "i2c1",
+       "i2c2",
+       "i2c3",
+       "nand",
+       "sd",
+       "uart0",
+       "uart1",
+       "uart2",
+       "usb0",
+       "usb1",
+       "usb2",
+       "usb3",
+};
+
+static struct uniphier_pinctrl_socdata ph1_ld6b_pinctrl_socdata = {
+       .pins = ph1_ld6b_pins,
+       .pins_count = ARRAY_SIZE(ph1_ld6b_pins),
+       .groups = ph1_ld6b_groups,
+       .groups_count = ARRAY_SIZE(ph1_ld6b_groups),
+       .functions = ph1_ld6b_functions,
+       .functions_count = ARRAY_SIZE(ph1_ld6b_functions),
+       .mux_bits = 8,
+       .reg_stride = 4,
+       .load_pinctrl = false,
+};
+
+static int ph1_ld6b_pinctrl_probe(struct udevice *dev)
+{
+       return uniphier_pinctrl_probe(dev, &ph1_ld6b_pinctrl_socdata);
+}
+
+static const struct udevice_id ph1_ld6b_pinctrl_match[] = {
+       { .compatible = "socionext,ph1-ld6b-pinctrl" },
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(ph1_ld6b_pinctrl) = {
+       .name = "ph1-ld6b-pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = of_match_ptr(ph1_ld6b_pinctrl_match),
+       .probe = ph1_ld6b_pinctrl_probe,
+       .remove = uniphier_pinctrl_remove,
+       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
+       .ops = &uniphier_pinctrl_ops,
+};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
new file mode 100644 (file)
index 0000000..b3eaf13
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+#include "pinctrl-uniphier.h"
+
+static const struct uniphier_pinctrl_pin ph1_pro4_pins[] = {
+};
+
+static const unsigned emmc_pins[] = {40, 41, 42, 43, 51, 52, 53};
+static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
+static const unsigned emmc_dat8_pins[] = {44, 45, 46, 47};
+static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
+static const unsigned i2c0_pins[] = {142, 143};
+static const unsigned i2c0_muxvals[] = {0, 0};
+static const unsigned i2c1_pins[] = {144, 145};
+static const unsigned i2c1_muxvals[] = {0, 0};
+static const unsigned i2c2_pins[] = {146, 147};
+static const unsigned i2c2_muxvals[] = {0, 0};
+static const unsigned i2c3_pins[] = {148, 149};
+static const unsigned i2c3_muxvals[] = {0, 0};
+static const unsigned i2c6_pins[] = {308, 309};
+static const unsigned i2c6_muxvals[] = {6, 6};
+static const unsigned nand_pins[] = {40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+                                    50, 51, 52, 53, 54};
+static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                       0, 0};
+static const unsigned nand_cs1_pins[] = {131, 132};
+static const unsigned nand_cs1_muxvals[] = {1, 1};
+static const unsigned sd_pins[] = {150, 151, 152, 153, 154, 155, 156, 157, 158};
+static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326,
+                                   327};
+static const unsigned sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+static const unsigned uart0_pins[] = {127, 128};
+static const unsigned uart0_muxvals[] = {0, 0};
+static const unsigned uart1_pins[] = {129, 130};
+static const unsigned uart1_muxvals[] = {0, 0};
+static const unsigned uart2_pins[] = {131, 132};
+static const unsigned uart2_muxvals[] = {0, 0};
+static const unsigned uart3_pins[] = {88, 89};
+static const unsigned uart3_muxvals[] = {2, 2};
+static const unsigned usb0_pins[] = {180, 181};
+static const unsigned usb0_muxvals[] = {0, 0};
+static const unsigned usb1_pins[] = {182, 183};
+static const unsigned usb1_muxvals[] = {0, 0};
+static const unsigned usb2_pins[] = {184, 185};
+static const unsigned usb2_muxvals[] = {0, 0};
+static const unsigned usb3_pins[] = {186, 187};
+static const unsigned usb3_muxvals[] = {0, 0};
+
+static const struct uniphier_pinctrl_group ph1_pro4_groups[] = {
+       UNIPHIER_PINCTRL_GROUP(emmc),
+       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
+       UNIPHIER_PINCTRL_GROUP(i2c0),
+       UNIPHIER_PINCTRL_GROUP(i2c1),
+       UNIPHIER_PINCTRL_GROUP(i2c2),
+       UNIPHIER_PINCTRL_GROUP(i2c3),
+       UNIPHIER_PINCTRL_GROUP(i2c6),
+       UNIPHIER_PINCTRL_GROUP(nand),
+       UNIPHIER_PINCTRL_GROUP(nand_cs1),
+       UNIPHIER_PINCTRL_GROUP(sd),
+       UNIPHIER_PINCTRL_GROUP(sd1),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
+       UNIPHIER_PINCTRL_GROUP(usb0),
+       UNIPHIER_PINCTRL_GROUP(usb1),
+       UNIPHIER_PINCTRL_GROUP(usb2),
+       UNIPHIER_PINCTRL_GROUP(usb3),
+};
+
+static const char * const ph1_pro4_functions[] = {
+       "emmc",
+       "i2c0",
+       "i2c1",
+       "i2c2",
+       "i2c3",
+       "i2c6",
+       "nand",
+       "sd",
+       "sd1",
+       "uart0",
+       "uart1",
+       "uart2",
+       "uart3",
+       "usb0",
+       "usb1",
+       "usb2",
+       "usb3",
+};
+
+static struct uniphier_pinctrl_socdata ph1_pro4_pinctrl_socdata = {
+       .pins = ph1_pro4_pins,
+       .pins_count = ARRAY_SIZE(ph1_pro4_pins),
+       .groups = ph1_pro4_groups,
+       .groups_count = ARRAY_SIZE(ph1_pro4_groups),
+       .functions = ph1_pro4_functions,
+       .functions_count = ARRAY_SIZE(ph1_pro4_functions),
+       .mux_bits = 4,
+       .reg_stride = 8,
+       .load_pinctrl = true,
+};
+
+static int ph1_pro4_pinctrl_probe(struct udevice *dev)
+{
+       return uniphier_pinctrl_probe(dev, &ph1_pro4_pinctrl_socdata);
+}
+
+static const struct udevice_id ph1_pro4_pinctrl_match[] = {
+       { .compatible = "socionext,ph1-pro4-pinctrl" },
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(ph1_pro4_pinctrl) = {
+       .name = "ph1-pro4-pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = of_match_ptr(ph1_pro4_pinctrl_match),
+       .probe = ph1_pro4_pinctrl_probe,
+       .remove = uniphier_pinctrl_remove,
+       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
+       .ops = &uniphier_pinctrl_ops,
+       .flags = DM_FLAG_PRE_RELOC,
+};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c
new file mode 100644 (file)
index 0000000..3749250
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+#include "pinctrl-uniphier.h"
+
+static const struct uniphier_pinctrl_pin ph1_pro5_pins[] = {
+       UNIPHIER_PINCTRL_PIN(47, 0),
+       UNIPHIER_PINCTRL_PIN(48, 0),
+       UNIPHIER_PINCTRL_PIN(49, 0),
+       UNIPHIER_PINCTRL_PIN(50, 0),
+       UNIPHIER_PINCTRL_PIN(53, 0),
+       UNIPHIER_PINCTRL_PIN(54, 0),
+       UNIPHIER_PINCTRL_PIN(87, 0),
+       UNIPHIER_PINCTRL_PIN(88, 0),
+       UNIPHIER_PINCTRL_PIN(101, 0),
+       UNIPHIER_PINCTRL_PIN(102, 0),
+};
+
+static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
+static const unsigned emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0};
+static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
+static const unsigned emmc_dat8_muxvals[] = {0, 0, 0, 0};
+static const unsigned i2c0_pins[] = {112, 113};
+static const unsigned i2c0_muxvals[] = {0, 0};
+static const unsigned i2c1_pins[] = {114, 115};
+static const unsigned i2c1_muxvals[] = {0, 0};
+static const unsigned i2c2_pins[] = {116, 117};
+static const unsigned i2c2_muxvals[] = {0, 0};
+static const unsigned i2c3_pins[] = {118, 119};
+static const unsigned i2c3_muxvals[] = {0, 0};
+static const unsigned i2c5_pins[] = {87, 88};
+static const unsigned i2c5_muxvals[] = {2, 2};
+static const unsigned i2c5b_pins[] = {196, 197};
+static const unsigned i2c5b_muxvals[] = {2, 2};
+static const unsigned i2c5c_pins[] = {215, 216};
+static const unsigned i2c5c_muxvals[] = {2, 2};
+static const unsigned i2c6_pins[] = {101, 102};
+static const unsigned i2c6_muxvals[] = {2, 2};
+static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30,
+                                    31, 32, 33, 34, 35};
+static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                       0, 0};
+static const unsigned nand_cs1_pins[] = {26, 27};
+static const unsigned nand_cs1_muxvals[] = {0, 0};
+static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258};
+static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+static const unsigned uart0_pins[] = {47, 48};
+static const unsigned uart0_muxvals[] = {0, 0};
+static const unsigned uart0b_pins[] = {227, 228};
+static const unsigned uart0b_muxvals[] = {3, 3};
+static const unsigned uart1_pins[] = {49, 50};
+static const unsigned uart1_muxvals[] = {0, 0};
+static const unsigned uart2_pins[] = {51, 52};
+static const unsigned uart2_muxvals[] = {0, 0};
+static const unsigned uart3_pins[] = {53, 54};
+static const unsigned uart3_muxvals[] = {0, 0};
+static const unsigned usb0_pins[] = {124, 125};
+static const unsigned usb0_muxvals[] = {0, 0};
+static const unsigned usb1_pins[] = {126, 127};
+static const unsigned usb1_muxvals[] = {0, 0};
+static const unsigned usb2_pins[] = {128, 129};
+static const unsigned usb2_muxvals[] = {0, 0};
+
+static const struct uniphier_pinctrl_group ph1_pro5_groups[] = {
+       UNIPHIER_PINCTRL_GROUP(emmc),
+       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
+       UNIPHIER_PINCTRL_GROUP(i2c0),
+       UNIPHIER_PINCTRL_GROUP(i2c1),
+       UNIPHIER_PINCTRL_GROUP(i2c2),
+       UNIPHIER_PINCTRL_GROUP(i2c3),
+       UNIPHIER_PINCTRL_GROUP(i2c5),
+       UNIPHIER_PINCTRL_GROUP(i2c5b),
+       UNIPHIER_PINCTRL_GROUP(i2c5c),
+       UNIPHIER_PINCTRL_GROUP(i2c6),
+       UNIPHIER_PINCTRL_GROUP(nand),
+       UNIPHIER_PINCTRL_GROUP(nand_cs1),
+       UNIPHIER_PINCTRL_GROUP(sd),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart0b),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
+       UNIPHIER_PINCTRL_GROUP(usb0),
+       UNIPHIER_PINCTRL_GROUP(usb1),
+       UNIPHIER_PINCTRL_GROUP(usb2),
+};
+
+static const char * const ph1_pro5_functions[] = {
+       "emmc",
+       "i2c0",
+       "i2c1",
+       "i2c2",
+       "i2c3",
+       "i2c5",
+       "i2c6",
+       "nand",
+       "sd",
+       "uart0",
+       "uart1",
+       "uart2",
+       "uart3",
+       "usb0",
+       "usb1",
+       "usb2",
+};
+
+static struct uniphier_pinctrl_socdata ph1_pro5_pinctrl_socdata = {
+       .pins = ph1_pro5_pins,
+       .pins_count = ARRAY_SIZE(ph1_pro5_pins),
+       .groups = ph1_pro5_groups,
+       .groups_count = ARRAY_SIZE(ph1_pro5_groups),
+       .functions = ph1_pro5_functions,
+       .functions_count = ARRAY_SIZE(ph1_pro5_functions),
+       .mux_bits = 4,
+       .reg_stride = 8,
+       .load_pinctrl = true,
+};
+
+static int ph1_pro5_pinctrl_probe(struct udevice *dev)
+{
+       return uniphier_pinctrl_probe(dev, &ph1_pro5_pinctrl_socdata);
+}
+
+static const struct udevice_id ph1_pro5_pinctrl_match[] = {
+       { .compatible = "socionext,ph1-pro5-pinctrl" },
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(ph1_pro5_pinctrl) = {
+       .name = "ph1-pro5-pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = of_match_ptr(ph1_pro5_pinctrl_match),
+       .probe = ph1_pro5_pinctrl_probe,
+       .remove = uniphier_pinctrl_remove,
+       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
+       .ops = &uniphier_pinctrl_ops,
+       .flags = DM_FLAG_PRE_RELOC,
+};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
new file mode 100644 (file)
index 0000000..2cca69d
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+#include "pinctrl-uniphier.h"
+
+static const struct uniphier_pinctrl_pin proxstream2_pins[] = {
+       UNIPHIER_PINCTRL_PIN(113, 0),
+       UNIPHIER_PINCTRL_PIN(114, 0),
+       UNIPHIER_PINCTRL_PIN(115, 0),
+       UNIPHIER_PINCTRL_PIN(116, 0),
+};
+
+static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
+static const unsigned emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9};
+static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
+static const unsigned emmc_dat8_muxvals[] = {9, 9, 9, 9};
+static const unsigned i2c0_pins[] = {109, 110};
+static const unsigned i2c0_muxvals[] = {8, 8};
+static const unsigned i2c1_pins[] = {111, 112};
+static const unsigned i2c1_muxvals[] = {8, 8};
+static const unsigned i2c2_pins[] = {171, 172};
+static const unsigned i2c2_muxvals[] = {8, 8};
+static const unsigned i2c3_pins[] = {159, 160};
+static const unsigned i2c3_muxvals[] = {8, 8};
+static const unsigned i2c5_pins[] = {183, 184};
+static const unsigned i2c5_muxvals[] = {11, 11};
+static const unsigned i2c6_pins[] = {185, 186};
+static const unsigned i2c6_muxvals[] = {11, 11};
+static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41,
+                                    42, 43, 44, 45, 46};
+static const unsigned nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+                                       8, 8};
+static const unsigned nand_cs1_pins[] = {37, 38};
+static const unsigned nand_cs1_muxvals[] = {8, 8};
+static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
+static const unsigned sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8};
+static const unsigned uart0_pins[] = {217, 218};
+static const unsigned uart0_muxvals[] = {8, 8};
+static const unsigned uart0b_pins[] = {179, 180};
+static const unsigned uart0b_muxvals[] = {10, 10};
+static const unsigned uart1_pins[] = {115, 116};
+static const unsigned uart1_muxvals[] = {8, 8};
+static const unsigned uart2_pins[] = {113, 114};
+static const unsigned uart2_muxvals[] = {8, 8};
+static const unsigned uart3_pins[] = {219, 220};
+static const unsigned uart3_muxvals[] = {8, 8};
+static const unsigned uart3b_pins[] = {181, 182};
+static const unsigned uart3b_muxvals[] = {10, 10};
+static const unsigned usb0_pins[] = {56, 57};
+static const unsigned usb0_muxvals[] = {8, 8};
+static const unsigned usb1_pins[] = {58, 59};
+static const unsigned usb1_muxvals[] = {8, 8};
+static const unsigned usb2_pins[] = {60, 61};
+static const unsigned usb2_muxvals[] = {8, 8};
+static const unsigned usb3_pins[] = {62, 63};
+static const unsigned usb3_muxvals[] = {8, 8};
+
+static const struct uniphier_pinctrl_group proxstream2_groups[] = {
+       UNIPHIER_PINCTRL_GROUP(emmc),
+       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
+       UNIPHIER_PINCTRL_GROUP(i2c0),
+       UNIPHIER_PINCTRL_GROUP(i2c1),
+       UNIPHIER_PINCTRL_GROUP(i2c2),
+       UNIPHIER_PINCTRL_GROUP(i2c3),
+       UNIPHIER_PINCTRL_GROUP(i2c5),
+       UNIPHIER_PINCTRL_GROUP(i2c6),
+       UNIPHIER_PINCTRL_GROUP(nand),
+       UNIPHIER_PINCTRL_GROUP(nand_cs1),
+       UNIPHIER_PINCTRL_GROUP(sd),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart0b),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
+       UNIPHIER_PINCTRL_GROUP(uart3b),
+       UNIPHIER_PINCTRL_GROUP(usb0),
+       UNIPHIER_PINCTRL_GROUP(usb1),
+       UNIPHIER_PINCTRL_GROUP(usb2),
+       UNIPHIER_PINCTRL_GROUP(usb3),
+};
+
+static const char * const proxstream2_functions[] = {
+       "emmc",
+       "i2c0",
+       "i2c1",
+       "i2c2",
+       "i2c3",
+       "i2c5",
+       "i2c6",
+       "nand",
+       "sd",
+       "uart0",
+       "uart0b",
+       "uart1",
+       "uart2",
+       "uart3",
+       "uart3b",
+       "usb0",
+       "usb1",
+       "usb2",
+       "usb3",
+};
+
+static struct uniphier_pinctrl_socdata proxstream2_pinctrl_socdata = {
+       .pins = proxstream2_pins,
+       .pins_count = ARRAY_SIZE(proxstream2_pins),
+       .groups = proxstream2_groups,
+       .groups_count = ARRAY_SIZE(proxstream2_groups),
+       .functions = proxstream2_functions,
+       .functions_count = ARRAY_SIZE(proxstream2_functions),
+       .mux_bits = 8,
+       .reg_stride = 4,
+       .load_pinctrl = false,
+};
+
+static int proxstream2_pinctrl_probe(struct udevice *dev)
+{
+       return uniphier_pinctrl_probe(dev, &proxstream2_pinctrl_socdata);
+}
+
+static const struct udevice_id proxstream2_pinctrl_match[] = {
+       { .compatible = "socionext,proxstream2-pinctrl" },
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(proxstream2_pinctrl) = {
+       .name = "proxstream2-pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = of_match_ptr(proxstream2_pinctrl_match),
+       .probe = proxstream2_pinctrl_probe,
+       .remove = uniphier_pinctrl_remove,
+       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
+       .ops = &uniphier_pinctrl_ops,
+};
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c
new file mode 100644 (file)
index 0000000..5fafdb6
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+#include "pinctrl-uniphier.h"
+
+static const struct uniphier_pinctrl_pin ph1_sld8_pins[] = {
+       UNIPHIER_PINCTRL_PIN(32, 8),
+       UNIPHIER_PINCTRL_PIN(33, 8),
+       UNIPHIER_PINCTRL_PIN(34, 8),
+       UNIPHIER_PINCTRL_PIN(35, 8),
+       UNIPHIER_PINCTRL_PIN(36, 8),
+       UNIPHIER_PINCTRL_PIN(37, 8),
+       UNIPHIER_PINCTRL_PIN(38, 8),
+       UNIPHIER_PINCTRL_PIN(39, 8),
+       UNIPHIER_PINCTRL_PIN(40, 9),
+       UNIPHIER_PINCTRL_PIN(41, 0),
+       UNIPHIER_PINCTRL_PIN(42, 0),
+       UNIPHIER_PINCTRL_PIN(43, 0),
+       UNIPHIER_PINCTRL_PIN(44, 0),
+       UNIPHIER_PINCTRL_PIN(70, 0),
+       UNIPHIER_PINCTRL_PIN(71, 0),
+       UNIPHIER_PINCTRL_PIN(102, 10),
+       UNIPHIER_PINCTRL_PIN(103, 10),
+       UNIPHIER_PINCTRL_PIN(104, 11),
+       UNIPHIER_PINCTRL_PIN(105, 11),
+       UNIPHIER_PINCTRL_PIN(108, 13),
+       UNIPHIER_PINCTRL_PIN(109, 13),
+       UNIPHIER_PINCTRL_PIN(112, 0),
+       UNIPHIER_PINCTRL_PIN(113, 0),
+       UNIPHIER_PINCTRL_PIN(114, 0),
+       UNIPHIER_PINCTRL_PIN(115, 0),
+};
+
+static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
+static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
+static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
+static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1};
+static const unsigned i2c0_pins[] = {102, 103};
+static const unsigned i2c0_muxvals[] = {0, 0};
+static const unsigned i2c1_pins[] = {104, 105};
+static const unsigned i2c1_muxvals[] = {0, 0};
+static const unsigned i2c2_pins[] = {108, 109};
+static const unsigned i2c2_muxvals[] = {2, 2};
+static const unsigned i2c3_pins[] = {108, 109};
+static const unsigned i2c3_muxvals[] = {3, 3};
+static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
+                                    27, 28, 29, 30, 31};
+static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                       0, 0};
+static const unsigned nand_cs1_pins[] = {22, 23};
+static const unsigned nand_cs1_muxvals[] = {0, 0};
+static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
+static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
+static const unsigned uart0_pins[] = {70, 71};
+static const unsigned uart0_muxvals[] = {3, 3};
+static const unsigned uart1_pins[] = {114, 115};
+static const unsigned uart1_muxvals[] = {0, 0};
+static const unsigned uart2_pins[] = {112, 113};
+static const unsigned uart2_muxvals[] = {1, 1};
+static const unsigned uart3_pins[] = {110, 111};
+static const unsigned uart3_muxvals[] = {1, 1};
+static const unsigned usb0_pins[] = {41, 42};
+static const unsigned usb0_muxvals[] = {0, 0};
+static const unsigned usb1_pins[] = {43, 44};
+static const unsigned usb1_muxvals[] = {0, 0};
+static const unsigned usb2_pins[] = {114, 115};
+static const unsigned usb2_muxvals[] = {1, 1};
+
+static const struct uniphier_pinctrl_group ph1_sld8_groups[] = {
+       UNIPHIER_PINCTRL_GROUP(emmc),
+       UNIPHIER_PINCTRL_GROUP(emmc_dat8),
+       UNIPHIER_PINCTRL_GROUP(i2c0),
+       UNIPHIER_PINCTRL_GROUP(i2c1),
+       UNIPHIER_PINCTRL_GROUP(i2c2),
+       UNIPHIER_PINCTRL_GROUP(i2c3),
+       UNIPHIER_PINCTRL_GROUP(nand),
+       UNIPHIER_PINCTRL_GROUP(nand_cs1),
+       UNIPHIER_PINCTRL_GROUP(sd),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
+       UNIPHIER_PINCTRL_GROUP(usb0),
+       UNIPHIER_PINCTRL_GROUP(usb1),
+       UNIPHIER_PINCTRL_GROUP(usb2),
+};
+
+static const char * const ph1_sld8_functions[] = {
+       "emmc",
+       "i2c0",
+       "i2c1",
+       "i2c2",
+       "i2c3",
+       "nand",
+       "sd",
+       "uart0",
+       "uart1",
+       "uart2",
+       "uart3",
+       "usb0",
+       "usb1",
+       "usb2",
+};
+
+static struct uniphier_pinctrl_socdata ph1_sld8_pinctrl_socdata = {
+       .pins = ph1_sld8_pins,
+       .pins_count = ARRAY_SIZE(ph1_sld8_pins),
+       .groups = ph1_sld8_groups,
+       .groups_count = ARRAY_SIZE(ph1_sld8_groups),
+       .functions = ph1_sld8_functions,
+       .functions_count = ARRAY_SIZE(ph1_sld8_functions),
+       .mux_bits = 8,
+       .reg_stride = 4,
+       .load_pinctrl = false,
+};
+
+static int ph1_sld8_pinctrl_probe(struct udevice *dev)
+{
+       return uniphier_pinctrl_probe(dev, &ph1_sld8_pinctrl_socdata);
+}
+
+static const struct udevice_id ph1_sld8_pinctrl_match[] = {
+       { .compatible = "socionext,ph1-sld8-pinctrl" },
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(ph1_sld8_pinctrl) = {
+       .name = "ph1-sld8-pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = of_match_ptr(ph1_sld8_pinctrl_match),
+       .probe = ph1_sld8_pinctrl_probe,
+       .remove = uniphier_pinctrl_remove,
+       .priv_auto_alloc_size = sizeof(struct uniphier_pinctrl_priv),
+       .ops = &uniphier_pinctrl_ops,
+};
index 784d3c1bbe81103eebf68c0efa5f4727732e2028..076c7332785584e0d0b2d075f43834fd7921cf6b 100644 (file)
 
 #define CONFIG_NAND_DENALI_ECC_SIZE                    1024
 
-#ifdef CONFIG_ARCH_UNIPHIER_PH1_SLD3
+#ifdef CONFIG_ARCH_UNIPHIER_SLD3
 #define CONFIG_SYS_NAND_REGS_BASE                      0xf8100000
 #define CONFIG_SYS_NAND_DATA_BASE                      0xf8000000
 #else
 #define CONFIG_SYS_SDRAM_BASE          0x80000000
 #define CONFIG_NR_DRAM_BANKS           2
 
-#if defined(CONFIG_ARCH_UNIPHIER_PH1_SLD3) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_LD4) || \
-       defined(CONFIG_ARCH_UNIPHIER_PH1_SLD8)
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3) || defined(CONFIG_ARCH_UNIPHIER_LD4) || \
+       defined(CONFIG_ARCH_UNIPHIER_SLD8)
 #define CONFIG_SPL_TEXT_BASE           0x00040000
 #else
 #define CONFIG_SPL_TEXT_BASE           0x00100000