Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* arch/arm/mach-s3c2410/cpu.h |
2 | * | |
3 | * Copyright (c) 2004-2005 Simtec Electronics | |
4 | * Ben Dooks <ben@simtec.co.uk> | |
5 | * | |
6 | * Header file for S3C24XX CPU support | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify | |
9 | * it under the terms of the GNU General Public License version 2 as | |
10 | * published by the Free Software Foundation. | |
11 | * | |
12 | * Modifications: | |
13 | * 24-Aug-2004 BJD Start of generic S3C24XX support | |
14 | * 18-Oct-2004 BJD Moved board struct into this file | |
15 | * 04-Jan-2005 BJD New uart initialisation | |
16 | * 10-Jan-2005 BJD Moved generic init here, specific to cpu headers | |
17 | * 14-Jan-2005 BJD Added s3c24xx_init_clocks() call | |
18 | * 10-Mar-2005 LCVR Changed S3C2410_{VA,SZ} to S3C24XX_{VA,SZ} & IODESC_ENT | |
19 | * 14-Mar-2005 BJD Updated for __iomem | |
20 | */ | |
21 | ||
22 | /* todo - fix when rmk changes iodescs to use `void __iomem *` */ | |
23 | ||
24 | #define IODESC_ENT(x) { (unsigned long)S3C24XX_VA_##x, S3C2410_PA_##x, S3C24XX_SZ_##x, MT_DEVICE } | |
25 | ||
26 | #ifndef MHZ | |
27 | #define MHZ (1000*1000) | |
28 | #endif | |
29 | ||
30 | #define print_mhz(m) ((m) / MHZ), ((m / 1000) % 1000) | |
31 | ||
32 | /* forward declaration */ | |
33 | struct s3c2410_uartcfg; | |
34 | struct map_desc; | |
35 | ||
36 | /* core initialisation functions */ | |
37 | ||
38 | extern void s3c24xx_init_irq(void); | |
39 | ||
40 | extern void s3c24xx_init_io(struct map_desc *mach_desc, int size); | |
41 | ||
42 | extern void s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no); | |
43 | ||
44 | extern void s3c24xx_init_clocks(int xtal); | |
45 | ||
46 | /* the board structure is used at first initialsation time | |
47 | * to get info such as the devices to register for this | |
48 | * board. This is done because platfrom_add_devices() cannot | |
49 | * be called from the map_io entry. | |
50 | */ | |
51 | ||
52 | struct s3c24xx_board { | |
53 | struct platform_device **devices; | |
54 | unsigned int devices_count; | |
55 | ||
56 | struct clk **clocks; | |
57 | unsigned int clocks_count; | |
58 | }; | |
59 | ||
60 | extern void s3c24xx_set_board(struct s3c24xx_board *board); | |
61 | ||
62 | /* timer for 2410/2440 */ | |
63 | ||
64 | struct sys_timer; | |
65 | extern struct sys_timer s3c24xx_timer; | |
66 | ||
67 | /* system device classes */ | |
68 | ||
69 | extern struct sysdev_class s3c2440_sysclass; |