| /* 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 const struct bus_type s3c6410_subsys; | 
 |  | 
 | #endif |