74b265d4e0
We need to add plat-s3c to the build to get the headers that will go in here once moved from include/asm-arm so we may as well put some useful common s3c code in here to stop the errors generated form having nothing built. The cpu setup is now passed the cpu idcode and the table of supported cpus to s3c_init_cpu() to abstract the cpu identification out of the initial io setup. As well as moving the cpu initialisation code, we move the map of the board specific items up to the calling code as none of the map_io() functions actually do anything other than pass this to iotable_init(). This patch does not rename any of the init functions that will be common to s3c24xx and any other s3c architectures as this can be done at a later date as it will touch all the board support files which use functions such as s3c24xx_init_clocks() and s3c24xx_init_uarts(). Note, the header arch/arm/plat-s3c24xx/include/plat/cpu.h still has functions that are used by both the cpu and board initialisation functions. This means that each board has definitions specific to the cpu support included and the vice-versa. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
70 lines
1.8 KiB
C
70 lines
1.8 KiB
C
/* linux/include/asm-arm/plat-s3c24xx/cpu.h
|
|
*
|
|
* Copyright (c) 2004-2005 Simtec Electronics
|
|
* Ben Dooks <ben@simtec.co.uk>
|
|
*
|
|
* Header file for S3C24XX CPU support
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
/* todo - fix when rmk changes iodescs to use `void __iomem *` */
|
|
|
|
#define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, __phys_to_pfn(S3C24XX_PA_##x), S3C24XX_SZ_##x, MT_DEVICE }
|
|
|
|
#ifndef MHZ
|
|
#define MHZ (1000*1000)
|
|
#endif
|
|
|
|
#define print_mhz(m) ((m) / MHZ), ((m / 1000) % 1000)
|
|
|
|
/* forward declaration */
|
|
struct s3c24xx_uart_resources;
|
|
struct platform_device;
|
|
struct s3c2410_uartcfg;
|
|
struct map_desc;
|
|
|
|
/* per-cpu initialisation function table. */
|
|
|
|
struct cpu_table {
|
|
unsigned long idcode;
|
|
unsigned long idmask;
|
|
void (*map_io)(void);
|
|
void (*init_uarts)(struct s3c2410_uartcfg *cfg, int no);
|
|
void (*init_clocks)(int xtal);
|
|
int (*init)(void);
|
|
const char *name;
|
|
};
|
|
|
|
extern void s3c_init_cpu(unsigned long idcode,
|
|
struct cpu_table *cpus, unsigned int cputab_size);
|
|
|
|
/* core initialisation functions */
|
|
|
|
extern void s3c24xx_init_irq(void);
|
|
|
|
extern void s3c24xx_init_io(struct map_desc *mach_desc, int size);
|
|
|
|
extern void s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no);
|
|
|
|
extern void s3c24xx_init_clocks(int xtal);
|
|
|
|
extern void s3c24xx_init_uartdevs(char *name,
|
|
struct s3c24xx_uart_resources *res,
|
|
struct s3c2410_uartcfg *cfg, int no);
|
|
|
|
/* timer for 2410/2440 */
|
|
|
|
struct sys_timer;
|
|
extern struct sys_timer s3c24xx_timer;
|
|
|
|
/* system device classes */
|
|
|
|
extern struct sysdev_class s3c2410_sysclass;
|
|
extern struct sysdev_class s3c2412_sysclass;
|
|
extern struct sysdev_class s3c2440_sysclass;
|
|
extern struct sysdev_class s3c2442_sysclass;
|
|
extern struct sysdev_class s3c2443_sysclass;
|