/* arch/arm/mach-s3c2410/s3c2400.h
 *
 * Copyright (c) 2004 Simtec Electronics
 *	Ben Dooks <ben@simtec.co.uk>
 *
 * Header file for S3C2400 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.
 *
 * Modifications:
 *     09-Fev-2006 LCVR  First version, based on s3c2410.h
*/

#ifdef CONFIG_CPU_S3C2400

extern  int s3c2400_init(void);

extern void s3c2400_map_io(struct map_desc *mach_desc, int size);

extern void s3c2400_init_uarts(struct s3c2410_uartcfg *cfg, int no);

extern void s3c2400_init_clocks(int xtal);

#else
#define s3c2400_init_clocks NULL
#define s3c2400_init_uarts NULL
#define s3c2400_map_io NULL
#define s3c2400_init NULL
#endif
