|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | /* | 
|  | * Copyright (c) 2011 Samsung Electronics Co., Ltd. | 
|  | *		http://www.samsung.com/ | 
|  | * | 
|  | * Copyright (c) 2004-2005 Simtec Electronics | 
|  | *	Ben Dooks <ben@simtec.co.uk> | 
|  | * | 
|  | * Header file for Samsung CPU support | 
|  | */ | 
|  |  | 
|  | /* todo - fix when rmk changes iodescs to use `void __iomem *` */ | 
|  |  | 
|  | #ifndef __SAMSUNG_PLAT_CPU_H | 
|  | #define __SAMSUNG_PLAT_CPU_H | 
|  |  | 
|  | extern unsigned long samsung_cpu_id; | 
|  |  | 
|  | #define S3C6400_CPU_ID		0x36400000 | 
|  | #define S3C6410_CPU_ID		0x36410000 | 
|  | #define S3C64XX_CPU_MASK	0xFFFFF000 | 
|  |  | 
|  | #define S5PV210_CPU_ID		0x43110000 | 
|  | #define S5PV210_CPU_MASK	0xFFFFF000 | 
|  |  | 
|  | #define IS_SAMSUNG_CPU(name, id, mask)		\ | 
|  | static inline int is_samsung_##name(void)	\ | 
|  | {						\ | 
|  | return ((samsung_cpu_id & mask) == (id & mask));	\ | 
|  | } | 
|  |  | 
|  | IS_SAMSUNG_CPU(s3c6400, S3C6400_CPU_ID, S3C64XX_CPU_MASK) | 
|  | IS_SAMSUNG_CPU(s3c6410, S3C6410_CPU_ID, S3C64XX_CPU_MASK) | 
|  |  | 
|  | #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410) | 
|  | # define soc_is_s3c6400()	is_samsung_s3c6400() | 
|  | # define soc_is_s3c6410()	is_samsung_s3c6410() | 
|  | # define soc_is_s3c64xx()	(is_samsung_s3c6400() || is_samsung_s3c6410()) | 
|  | #else | 
|  | # define soc_is_s3c6400()	0 | 
|  | # define soc_is_s3c6410()	0 | 
|  | # define soc_is_s3c64xx()	0 | 
|  | #endif | 
|  |  | 
|  | #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); | 
|  | 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 s3c64xx_init_cpu(void); | 
|  |  | 
|  | extern void s3c24xx_init_uarts(struct s3c2410_uartcfg *cfg, int no); | 
|  | extern void s3c24xx_init_uartdevs(char *name, | 
|  | struct s3c24xx_uart_resources *res, | 
|  | struct s3c2410_uartcfg *cfg, int no); | 
|  |  | 
|  | extern struct bus_type s3c6410_subsys; | 
|  |  | 
|  | #endif |