linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / arm / mach-s3c2410 / cpu.c
index 1c3c6ad..00a3793 100644 (file)
 #include <asm/mach/map.h>
 
 #include <asm/arch/regs-gpio.h>
-#include <asm/arch/regs-serial.h>
 
 #include "cpu.h"
-#include "devs.h"
 #include "clock.h"
 #include "s3c2400.h"
 #include "s3c2410.h"
-#include "s3c2412.h"
-#include "s3c244x.h"
 #include "s3c2440.h"
-#include "s3c2442.h"
 
 struct cpu_table {
        unsigned long   idcode;
@@ -63,9 +58,7 @@ struct cpu_table {
 
 static const char name_s3c2400[]  = "S3C2400";
 static const char name_s3c2410[]  = "S3C2410";
-static const char name_s3c2412[]  = "S3C2412";
 static const char name_s3c2440[]  = "S3C2440";
-static const char name_s3c2442[]  = "S3C2442";
 static const char name_s3c2410a[] = "S3C2410A";
 static const char name_s3c2440a[] = "S3C2440A";
 
@@ -91,39 +84,21 @@ static struct cpu_table cpu_ids[] __initdata = {
        {
                .idcode         = 0x32440000,
                .idmask         = 0xffffffff,
-               .map_io         = s3c244x_map_io,
-               .init_clocks    = s3c244x_init_clocks,
-               .init_uarts     = s3c244x_init_uarts,
+               .map_io         = s3c2440_map_io,
+               .init_clocks    = s3c2440_init_clocks,
+               .init_uarts     = s3c2440_init_uarts,
                .init           = s3c2440_init,
                .name           = name_s3c2440
        },
        {
                .idcode         = 0x32440001,
                .idmask         = 0xffffffff,
-               .map_io         = s3c244x_map_io,
-               .init_clocks    = s3c244x_init_clocks,
-               .init_uarts     = s3c244x_init_uarts,
+               .map_io         = s3c2440_map_io,
+               .init_clocks    = s3c2440_init_clocks,
+               .init_uarts     = s3c2440_init_uarts,
                .init           = s3c2440_init,
                .name           = name_s3c2440a
        },
-       {
-               .idcode         = 0x32440aaa,
-               .idmask         = 0xffffffff,
-               .map_io         = s3c244x_map_io,
-               .init_clocks    = s3c244x_init_clocks,
-               .init_uarts     = s3c244x_init_uarts,
-               .init           = s3c2442_init,
-               .name           = name_s3c2442
-       },
-       {
-               .idcode         = 0x32412001,
-               .idmask         = 0xffffffff,
-               .map_io         = s3c2412_map_io,
-               .init_clocks    = s3c2412_init_clocks,
-               .init_uarts     = s3c2412_init_uarts,
-               .init           = s3c2412_init,
-               .name           = name_s3c2412,
-       },
        {
                .idcode         = 0x0,   /* S3C2400 doesn't have an idcode */
                .idmask         = 0xffffffff,
@@ -171,7 +146,7 @@ void s3c24xx_set_board(struct s3c24xx_board *b)
        board = b;
 
        if (b->clocks_count != 0) {
-               struct clk **ptr = b->clocks;
+               struct clk **ptr = b->clocks;;
 
                for (i = b->clocks_count; i > 0; i--, ptr++)
                        s3c24xx_register_clock(*ptr);
@@ -182,24 +157,6 @@ void s3c24xx_set_board(struct s3c24xx_board *b)
 
 static struct cpu_table *cpu;
 
-static unsigned long s3c24xx_read_idcode_v5(void)
-{
-#if defined(CONFIG_CPU_S3C2412) || defined(CONFIG_CPU_S3C2413)
-       return __raw_readl(S3C2412_GSTATUS1);
-#else
-       return 1UL;     /* don't look like an 2400 */
-#endif
-}
-
-static unsigned long s3c24xx_read_idcode_v4(void)
-{
-#ifndef CONFIG_CPU_S3C2400
-       return __raw_readl(S3C2410_GSTATUS1);
-#else
-       return 0UL;
-#endif
-}
-
 void __init s3c24xx_init_io(struct map_desc *mach_desc, int size)
 {
        unsigned long idcode = 0x0;
@@ -207,11 +164,9 @@ void __init s3c24xx_init_io(struct map_desc *mach_desc, int size)
        /* initialise the io descriptors we need for initialisation */
        iotable_init(s3c_iodesc, ARRAY_SIZE(s3c_iodesc));
 
-       if (cpu_architecture() >= CPU_ARCH_ARMv5) {
-               idcode = s3c24xx_read_idcode_v5();
-       } else {
-               idcode = s3c24xx_read_idcode_v4();
-       }
+#ifndef CONFIG_CPU_S3C2400
+       idcode = __raw_readl(S3C2410_GSTATUS1);
+#endif
 
        cpu = s3c_lookup_cpu(idcode);
 
@@ -220,13 +175,13 @@ void __init s3c24xx_init_io(struct map_desc *mach_desc, int size)
                panic("Unknown S3C24XX CPU");
        }
 
-       printk("CPU %s (id 0x%08lx)\n", cpu->name, idcode);
-
        if (cpu->map_io == NULL || cpu->init == NULL) {
                printk(KERN_ERR "CPU %s support not enabled\n", cpu->name);
                panic("Unsupported S3C24XX CPU");
        }
 
+       printk("CPU %s (id 0x%08lx)\n", cpu->name, idcode);
+
        (cpu->map_io)(mach_desc, size);
 }
 
@@ -253,49 +208,6 @@ void __init s3c24xx_init_clocks(int xtal)
                (cpu->init_clocks)(xtal);
 }
 
-/* uart management */
-
-static int nr_uarts __initdata = 0;
-
-static struct s3c2410_uartcfg uart_cfgs[3];
-
-/* s3c24xx_init_uartdevs
- *
- * copy the specified platform data and configuration into our central
- * set of devices, before the data is thrown away after the init process.
- *
- * This also fills in the array passed to the serial driver for the
- * early initialisation of the console.
-*/
-
-void __init s3c24xx_init_uartdevs(char *name,
-                                 struct s3c24xx_uart_resources *res,
-                                 struct s3c2410_uartcfg *cfg, int no)
-{
-       struct platform_device *platdev;
-       struct s3c2410_uartcfg *cfgptr = uart_cfgs;
-       struct s3c24xx_uart_resources *resp;
-       int uart;
-
-       memcpy(cfgptr, cfg, sizeof(struct s3c2410_uartcfg) * no);
-
-       for (uart = 0; uart < no; uart++, cfg++, cfgptr++) {
-               platdev = s3c24xx_uart_src[cfgptr->hwport];
-
-               resp = res + cfgptr->hwport;
-
-               s3c24xx_uart_devs[uart] = platdev;
-
-               platdev->name = name;
-               platdev->resource = resp->resources;
-               platdev->num_resources = resp->nr_resources;
-
-               platdev->dev.platform_data = cfgptr;
-       }
-
-       nr_uarts = no;
-}
-
 void __init s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 {
        if (cpu == NULL)
@@ -320,10 +232,6 @@ static int __init s3c_arch_init(void)
        if (ret != 0)
                return ret;
 
-       ret = platform_add_devices(s3c24xx_uart_devs, nr_uarts);
-       if (ret != 0)
-               return ret;
-
        if (board != NULL) {
                struct platform_device **ptr = board->devices;
                int i;