arch:exynos: boot mode: add get_boot_mode(), code cleanup
authorPrzemyslaw Marczak <p.marczak@samsung.com>
Mon, 1 Sep 2014 11:50:44 +0000 (13:50 +0200)
committerChanho Park <chanho61.park@samsung.com>
Mon, 11 Apr 2016 03:53:14 +0000 (12:53 +0900)
This patch introduces code clean-up for exynos boot mode check.
It includes:
- removal of typedef: boot_mode
- move the boot mode enum to arch-exynos/power.h
- add bootmode for sequence: eMMC 4.4 ch4 / SD ch2
- add new function: get_boot_mode() for OM[5:1] pin check
- update spl boot code

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Changes v5:
- exynos: boot mode: add missing bootmode (1st:EMMC 4.4 / 2nd:SD ch2)

Changes v6:
- none

changes v7:
- change boot mode name: BOOT_MODE_MMC to BOOT_MODE_SD
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
Conflicts:
arch/arm/cpu/armv7/exynos/spl_boot.c
arch/arm/include/asm/arch-exynos/spl.h

Change-Id: Ia91a5e251c476ee97bdd4921f602a5d737b6db10

arch/arm/cpu/armv7/exynos/power.c
arch/arm/include/asm/arch-exynos/power.h

index ffc6c45f5d41b0b14dab788f838c33e683e42d65..9c6adb80996eea50f7c77f69f23cad30c8b8829a 100644 (file)
@@ -212,3 +212,10 @@ void power_exit_wakeup(void)
        else
                exynos4_power_exit_wakeup();
 }
+
+unsigned int get_boot_mode(void)
+{
+       unsigned int om_pin = samsung_get_base_power();
+
+       return readl(om_pin) & OM_PIN_MASK;
+}
index b26a6ddb06f7dcd259fd4a837e7e6429527e45ac..5d2d59a9c9928640349b33898981154d33d86681 100644 (file)
@@ -901,6 +901,27 @@ struct exynos5430_power {
 };
 #endif /* __ASSEMBLY__ */
 
+#define OM_PIN_BITS    0x1f
+#define OM_PIN_SHIFT   0x1
+#define OM_PIN_MASK    (OM_PIN_BITS << OM_PIN_SHIFT)
+
+enum {
+       /*
+        * Assign the OM pin values for respective boot modes.
+        * Exynos4 does not support spi boot and the mmc boot OM
+        * pin values are the same across Exynos4 and Exynos5.
+        */
+       BOOT_MODE_SD = 4,      /* SD_CH2  | USB */
+       BOOT_MODE_EMMC = 8,     /* EMMC4.4 | USB */
+       BOOT_MODE_EMMC_SD = 40, /* EMMC4.4 | SD_CH2 */
+       BOOT_MODE_SERIAL = 20,
+       /* Boot based on Operating Mode pin settings */
+       BOOT_MODE_OM = 32,
+       BOOT_MODE_USB,  /* Boot using USB download */
+};
+
+unsigned int get_boot_mode(void);
+
 void set_mipi_phy_ctrl(unsigned int dev_index, unsigned int enable);
 
 #define EXYNOS_MIPI_PHY_ENABLE         (1 << 0)