]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] ARM: OMAP: Add basic cpu support for OMAP330 processor
authorRomain Goyet <r.goyet@gmail.com>
Wed, 14 Sep 2005 13:34:50 +0000 (16:34 +0300)
committerTony Lindgren <tony@atomide.com>
Wed, 14 Sep 2005 13:34:50 +0000 (16:34 +0300)
Add basic 330 cpu support. 330 is handled as 15xx.

arch/arm/mach-omap1/id.c
arch/arm/mach-omap1/irq.c
arch/arm/plat-omap/clock.c
arch/arm/plat-omap/sram.c
include/asm-arm/arch-omap/cpu.h

index 986c3b7e09bbf464d35052febf3d62e5c0842d09..fad195510e755fc820327ad787a3763f794454ae 100644 (file)
@@ -27,6 +27,7 @@ struct omap_id {
 
 /* Register values to detect the OMAP version */
 static struct omap_id omap_ids[] __initdata = {
+       { .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000},
        { .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
        { .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
        { .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
@@ -164,6 +165,7 @@ void __init omap_check_revision(void)
        case 0x07:
                system_rev |= 0x07;
                break;
+       case 0x03:
        case 0x15:
                system_rev |= 0x15;
                break;
index 192ce6055faabb13f31c6e49c6c4b3b05b3dda9e..50adaa0b1679649b534eef1bceeb979005392936 100644 (file)
@@ -152,6 +152,10 @@ static struct omap_irq_bank omap1510_irq_banks[] = {
        { .base_reg = OMAP_IH1_BASE,            .trigger_map = 0xb3febfff },
        { .base_reg = OMAP_IH2_BASE,            .trigger_map = 0xffbfffed },
 };
+static struct omap_irq_bank omap310_irq_banks[] = {
+       { .base_reg = OMAP_IH1_BASE,            .trigger_map = 0xb3faefc3 },
+       { .base_reg = OMAP_IH2_BASE,            .trigger_map = 0x65b3c061 },
+};
 #endif
 
 #if defined(CONFIG_ARCH_OMAP16XX)
@@ -186,6 +190,10 @@ void __init omap_init_irq(void)
                irq_banks = omap1510_irq_banks;
                irq_bank_count = ARRAY_SIZE(omap1510_irq_banks);
        }
+       if (cpu_is_omap310()) {
+               irq_banks = omap310_irq_banks;
+               irq_bank_count = ARRAY_SIZE(omap310_irq_banks);
+       }
 #endif
 #if defined(CONFIG_ARCH_OMAP16XX)
        if (cpu_is_omap16xx()) {
index 52a58b2da2882553121810e75ba9aa1d168674b0..6513da0b19dfd7be4eeeb6f5602fed88d79383f3 100644 (file)
@@ -1158,7 +1158,7 @@ int __init clk_init(void)
        omap_early_clk_reset();
 
        for (clkp = onchip_clks; clkp < onchip_clks+ARRAY_SIZE(onchip_clks); clkp++) {
-               if (((*clkp)->flags &CLOCK_IN_OMAP1510) && cpu_is_omap1510()) {
+               if (((*clkp)->flags &CLOCK_IN_OMAP1510) && cpu_is_omap15xx()) {
                        clk_register(*clkp);
                        continue;
                }
@@ -1269,7 +1269,7 @@ int __init clk_init(void)
        clk_use(&armxor_ck);
        clk_use(&armtim_ck);
 
-       if (cpu_is_omap1510())
+       if (cpu_is_omap15xx())
                clk_enable(&arm_gpio_ck);
 
        return 0;
index 7719a4062e3ae075d78b151fc56c255abc112809..2328449f146f8a9be0250676e16ac94885501fb9 100644 (file)
@@ -42,6 +42,8 @@ void __init omap_detect_sram(void)
        omap_sram_base = OMAP1_SRAM_BASE;
 
        if (cpu_is_omap730())
+               omap_sram_size = 0x30000;
+       else if (cpu_is_omap730())
                omap_sram_size = 0x32000;
        else if (cpu_is_omap1510())
                omap_sram_size = 0x80000;
index 1119e2b53e724fb9773c35dcaf793cc7b7df62e0..81a08356f9dbcd797949ea55807b0dcba75a58dd 100644 (file)
@@ -79,7 +79,7 @@ extern unsigned int system_rev;
  * Macros to group OMAP into cpu classes.
  * These can be used in most places.
  * cpu_is_omap7xx():   True for OMAP730
- * cpu_is_omap15xx():  True for OMAP1510 and OMAP5910
+ * cpu_is_omap15xx():  True for OMAP1510, OMAP5910 and OMAP310
  * cpu_is_omap16xx():  True for OMAP1610, OMAP5912 and OMAP1710
  * cpu_is_omap24xx():  True for OMAP2420
  */
@@ -136,6 +136,7 @@ IS_OMAP_CLASS(24xx, 0x24)
 /*
  * Macros to detect individual cpu types.
  * These are only rarely needed.
+ * cpu_is_omap330():   True for OMAP330
  * cpu_is_omap730():   True for OMAP730
  * cpu_is_omap1510():  True for OMAP1510
  * cpu_is_omap1610():  True for OMAP1610
@@ -153,6 +154,7 @@ static inline int is_omap ##type (void)                     \
        return (GET_OMAP_TYPE == (id)) ? 1 : 0;         \
 }
 
+IS_OMAP_TYPE(310, 0x0310)
 IS_OMAP_TYPE(730, 0x0730)
 IS_OMAP_TYPE(1510, 0x1510)
 IS_OMAP_TYPE(1610, 0x1610)
@@ -162,6 +164,7 @@ IS_OMAP_TYPE(1621, 0x1621)
 IS_OMAP_TYPE(1710, 0x1710)
 IS_OMAP_TYPE(2420, 0x2420)
 
+#define cpu_is_omap310()               0
 #define cpu_is_omap730()               0
 #define cpu_is_omap1510()              0
 #define cpu_is_omap1610()              0
@@ -176,25 +179,24 @@ IS_OMAP_TYPE(2420, 0x2420)
 #  undef  cpu_is_omap730
 #  define cpu_is_omap730()             is_omap730()
 # endif
-# if defined(CONFIG_ARCH_OMAP1510)
-#  undef  cpu_is_omap1510
-#  define cpu_is_omap1510()            is_omap1510()
-# endif
 #else
 # if defined(CONFIG_ARCH_OMAP730)
 #  undef  cpu_is_omap730
 #  define cpu_is_omap730()             1
 # endif
-# if defined(CONFIG_ARCH_OMAP1510)
-#  undef  cpu_is_omap1510
-#  define cpu_is_omap1510()            1
-# endif
 #endif
 
 /*
  * Whether we have MULTI_OMAP1 or not, we still need to distinguish
- * between 1611B/5912 and 1710.
+ * between 330 vs. 1510 and 1611B/5912 vs. 1710.
  */
+#if defined(CONFIG_ARCH_OMAP1510)
+# undef  cpu_is_omap310
+# undef  cpu_is_omap1510
+# define cpu_is_omap310()              is_omap310()
+# define cpu_is_omap1510()             is_omap1510()
+#endif
+
 #if defined(CONFIG_ARCH_OMAP16XX)
 # undef  cpu_is_omap1610
 # undef  cpu_is_omap1611