s5p: show hw informamtion on download mode
authorMinkyu Kang <mk7.kang@samsung.com>
Fri, 12 Nov 2010 06:18:22 +0000 (15:18 +0900)
committerMinkyu Kang <mk7.kang@samsung.com>
Fri, 12 Nov 2010 06:18:22 +0000 (15:18 +0900)
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
arch/arm/cpu/armv7/s5p-common/usb_downloader.c
board/samsung/universal_c110/universal.c
board/samsung/universal_c210/universal.c

index 144d6d3..fd16aff 100644 (file)
@@ -46,6 +46,38 @@ int usb_board_init(void) __attribute__((weak, alias("__usb_board_init")));
 extern int s5p_no_lcd_support(void);
 extern void s5pc_fimd_lcd_off(unsigned int win_id);
 extern void s5pc_fimd_window_off(unsigned int win_id);
+extern void get_rev_info(char *rev_info);
+
+#ifdef CONFIG_GENERIC_MMC
+#include <mmc.h>
+static int mmc_type;
+extern int s5p_no_mmc_support(void);
+
+static void usbd_set_mmc_dev(struct usbd_ops *usbd)
+{
+       struct mmc *mmc;
+       char mmc_name[4];
+
+       if (s5p_no_mmc_support())
+               return;
+
+       usbd->mmc_dev = 0;
+       /* FIXME */
+       usbd->mmc_max = 0x8000;
+
+       mmc = find_mmc_device(usbd->mmc_dev);
+       mmc_init(mmc);
+
+       usbd->mmc_blk = mmc->read_bl_len;
+       usbd->mmc_total = mmc->capacity / mmc->read_bl_len;
+
+       sprintf(mmc_name, "%c%c%c", mmc->cid[0] & 0xff,
+                       (mmc->cid[1] >> 24), (mmc->cid[1] >> 16) & 0xff);
+
+       if (!strncmp(mmc_name, "SEM", 3))
+               mmc_type = 1;
+}
+#endif
 
 void s5pc1xx_wdt_reset(void)
 {
@@ -77,8 +109,22 @@ static void usb_init(void)
 
 #ifdef CONFIG_S5PC1XXFB
        if (!s5p_no_lcd_support()) {
+               char rev_info[64];
+
                init_font();
                set_font_color(FONT_WHITE);
+
+               get_rev_info(rev_info);
+               fb_printf(rev_info);
+
+#ifdef CONFIG_GENERIC_MMC
+               if (mmc_type)
+                       fb_printf("MMC: iNAND\n");
+               else
+                       fb_printf("MMC: MoviNAND\n");
+
+               fb_printf("\n");
+#endif
                fb_printf("Ready to USB Connection\n");
        }
 #endif
@@ -102,7 +148,7 @@ static void usb_init(void)
 #ifdef CONFIG_S5PC1XXFB
        if (!s5p_no_lcd_support()) {
                fb_printf("Download Start\n");
-               draw_progress(40, 0, FONT_WHITE);
+               draw_progress(80, 0, FONT_WHITE);
        }
 #endif
 }
@@ -149,29 +195,6 @@ static void recv_setup(char *addr, int len)
        otg.dn_filesize = len;
 }
 
-#ifdef CONFIG_GENERIC_MMC
-#include <mmc.h>
-extern int s5p_no_mmc_support(void);
-
-static void usbd_set_mmc_dev(struct usbd_ops *usbd)
-{
-       struct mmc *mmc;
-
-       if (s5p_no_mmc_support())
-               return;
-
-       usbd->mmc_dev = 0;
-       /* FIXME */
-       usbd->mmc_max = 0x8000;
-
-       mmc = find_mmc_device(usbd->mmc_dev);
-       mmc_init(mmc);
-
-       usbd->mmc_blk = mmc->read_bl_len;
-       usbd->mmc_total = mmc->capacity / mmc->read_bl_len;
-}
-#endif
-
 #ifdef CONFIG_S5PC1XXFB
 static void set_progress(int progress)
 {
index dd9027e..6ed5cfa 100644 (file)
@@ -758,6 +758,23 @@ static void show_hw_revision(void)
                s5p_get_cpu_rev() ? "" : "EVT0");
 }
 
+void get_rev_info(char *rev_info)
+{
+       int board;
+
+       if (mach_is_goni() || mach_is_aquila())
+               board = arch_number;
+       else
+               board = arch_number - C110_MACH_START;
+
+       check_board_revision(board, board_rev);
+
+       sprintf(rev_info, "HW Revision: %x (%s%s) %s\n",
+               board_rev, get_board_name(board),
+               display_features(board, board_rev),
+               s5p_get_cpu_rev() ? "" : "EVT0");
+}
+
 static void check_auto_burn(void)
 {
        unsigned long magic_base = CONFIG_SYS_SDRAM_BASE + 0x02000000;
index 216a8fe..77c5110 100644 (file)
@@ -1196,6 +1196,12 @@ static void check_hw_revision(void)
        printf("PCB Revision:\t%s\n", pcb_rev[board_rev & 0xf]);
 }
 
+void get_rev_info(char *rev_info)
+{
+       sprintf(rev_info, "HW Revision: 0x%x (%s)\n",
+                       board_rev, pcb_rev[board_rev & 0xf]);
+}
+
 static void check_reset_status(void)
 {
        int status = get_reset_status();