ARM: uniphier: fix boot mode for PH1-LD11
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Sat, 4 Jun 2016 13:39:09 +0000 (22:39 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 8 Jun 2016 23:17:59 +0000 (08:17 +0900)
This function is shared between PH1-LD11 and PH1-LD20.  The difference
is the boot-mode latch for the USB boot mode.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
arch/arm/mach-uniphier/boot-mode/boot-mode-ld20.c

index 96a127082c6abf118482aa92195018b944d22f21..24255a0f5081ccf2b65d4e17200a9f5e92bdeb3e 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/io.h>
 
 #include "../sg-regs.h"
+#include "../soc-info.h"
 #include "boot-device.h"
 
 static struct boot_device_info boot_device_table[] = {
@@ -54,8 +55,24 @@ static int get_boot_mode_sel(void)
 u32 uniphier_ld20_boot_device(void)
 {
        int boot_mode;
+       u32 usb_boot_mask;
 
-       if (~readl(SG_PINMON0) & 0x00000780)
+       switch (uniphier_get_soc_type()) {
+#if defined(CONFIG_ARCH_UNIPHIER_LD11)
+       case SOC_UNIPHIER_LD11:
+               usb_boot_mask = 0x00000080;
+               break;
+#endif
+#if defined(CONFIG_ARCH_UNIPHIER_LD20)
+       case SOC_UNIPHIER_LD20:
+               usb_boot_mask = 0x00000780;
+               break;
+#endif
+       default:
+               BUG();
+       }
+
+       if (~readl(SG_PINMON0) & usb_boot_mask)
                return BOOT_DEVICE_USB;
 
        boot_mode = get_boot_mode_sel();