2005-04-17 05:20:36 +07:00
|
|
|
/*
|
2008-08-02 16:55:55 +07:00
|
|
|
* arch/arm/include/asm/mach/arch.h
|
2005-04-17 05:20:36 +07:00
|
|
|
*
|
|
|
|
* Copyright (C) 2000 Russell King
|
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
|
2013-05-21 20:40:51 +07:00
|
|
|
#include <linux/types.h>
|
|
|
|
|
2005-04-17 05:20:36 +07:00
|
|
|
#ifndef __ASSEMBLY__
|
2013-07-09 06:01:39 +07:00
|
|
|
#include <linux/reboot.h>
|
2005-04-17 05:20:36 +07:00
|
|
|
|
|
|
|
struct tag;
|
|
|
|
struct meminfo;
|
2011-11-10 01:13:43 +07:00
|
|
|
struct pt_regs;
|
2011-09-08 15:06:10 +07:00
|
|
|
struct smp_operations;
|
|
|
|
#ifdef CONFIG_SMP
|
|
|
|
#define smp_ops(ops) (&(ops))
|
2013-05-21 20:40:51 +07:00
|
|
|
#define smp_init_ops(ops) (&(ops))
|
2011-09-08 15:06:10 +07:00
|
|
|
#else
|
|
|
|
#define smp_ops(ops) (struct smp_operations *)NULL
|
2013-05-21 20:40:51 +07:00
|
|
|
#define smp_init_ops(ops) (bool (*)(void))NULL
|
2011-09-08 15:06:10 +07:00
|
|
|
#endif
|
2005-04-17 05:20:36 +07:00
|
|
|
|
|
|
|
struct machine_desc {
|
|
|
|
unsigned int nr; /* architecture number */
|
|
|
|
const char *name; /* architecture name */
|
2011-07-06 09:38:10 +07:00
|
|
|
unsigned long atag_offset; /* tagged list (relative) */
|
2011-12-21 04:56:45 +07:00
|
|
|
const char *const *dt_compat; /* array of device tree
|
2011-04-29 03:27:21 +07:00
|
|
|
* 'compatible' strings */
|
2005-04-17 05:20:36 +07:00
|
|
|
|
2010-10-15 09:37:52 +07:00
|
|
|
unsigned int nr_irqs; /* number of IRQs */
|
|
|
|
|
2011-07-06 09:28:08 +07:00
|
|
|
#ifdef CONFIG_ZONE_DMA
|
2013-08-02 03:29:29 +07:00
|
|
|
phys_addr_t dma_zone_size; /* size of DMA-able area */
|
2011-07-06 09:28:08 +07:00
|
|
|
#endif
|
|
|
|
|
2005-04-17 05:20:36 +07:00
|
|
|
unsigned int video_start; /* start of video RAM */
|
|
|
|
unsigned int video_end; /* end of video RAM */
|
|
|
|
|
2011-11-01 21:27:33 +07:00
|
|
|
unsigned char reserve_lp0 :1; /* never has lp0 */
|
|
|
|
unsigned char reserve_lp1 :1; /* never has lp1 */
|
|
|
|
unsigned char reserve_lp2 :1; /* never has lp2 */
|
2013-07-09 06:01:39 +07:00
|
|
|
enum reboot_mode reboot_mode; /* default restart mode */
|
2011-09-08 15:06:10 +07:00
|
|
|
struct smp_operations *smp; /* SMP operations */
|
2013-05-21 20:40:51 +07:00
|
|
|
bool (*smp_init)(void);
|
ARM: platform fixups: remove mdesc argument to fixup function
Get rid of the mdesc pointer in the fixup function call. No one uses
the mdesc pointer, it shouldn't be modified anyway, and we can't wrap
it, so let's remove it.
Platform files found by:
$ regexp=$(git grep -h '\.fixup.*=' arch/arm |
sed 's!.*= *\([^,]*\),* *!\1!' | sort -u |
tr '\n' '|' | sed 's,|$,,;s,|,\\|,g')
$ git grep $regexp arch/arm
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2010-12-20 17:37:50 +07:00
|
|
|
void (*fixup)(struct tag *, char **,
|
2005-04-17 05:20:36 +07:00
|
|
|
struct meminfo *);
|
2013-07-31 23:44:46 +07:00
|
|
|
void (*init_meminfo)(void);
|
2010-05-23 00:18:57 +07:00
|
|
|
void (*reserve)(void);/* reserve mem blocks */
|
2005-04-17 05:20:36 +07:00
|
|
|
void (*map_io)(void);/* IO mapping function */
|
2010-12-16 20:49:34 +07:00
|
|
|
void (*init_early)(void);
|
2005-04-17 05:20:36 +07:00
|
|
|
void (*init_irq)(void);
|
2012-11-09 02:40:59 +07:00
|
|
|
void (*init_time)(void);
|
2005-04-17 05:20:36 +07:00
|
|
|
void (*init_machine)(void);
|
2012-04-25 21:24:44 +07:00
|
|
|
void (*init_late)(void);
|
2010-12-13 15:42:34 +07:00
|
|
|
#ifdef CONFIG_MULTI_IRQ_HANDLER
|
|
|
|
void (*handle_irq)(struct pt_regs *);
|
|
|
|
#endif
|
2013-07-09 06:01:40 +07:00
|
|
|
void (*restart)(enum reboot_mode, const char *);
|
2005-04-17 05:20:36 +07:00
|
|
|
};
|
|
|
|
|
2010-12-20 17:18:36 +07:00
|
|
|
/*
|
|
|
|
* Current machine - only accessible during boot.
|
|
|
|
*/
|
2013-07-26 20:55:59 +07:00
|
|
|
extern const struct machine_desc *machine_desc;
|
2010-12-20 17:18:36 +07:00
|
|
|
|
2011-04-29 03:27:21 +07:00
|
|
|
/*
|
|
|
|
* Machine type table - also only accessible during boot
|
|
|
|
*/
|
2013-07-26 20:55:59 +07:00
|
|
|
extern const struct machine_desc __arch_info_begin[], __arch_info_end[];
|
2011-04-29 03:27:21 +07:00
|
|
|
#define for_each_machine_desc(p) \
|
|
|
|
for (p = __arch_info_begin; p < __arch_info_end; p++)
|
|
|
|
|
2005-04-17 05:20:36 +07:00
|
|
|
/*
|
|
|
|
* Set of macros to define architecture features. This is built into
|
|
|
|
* a table by the linker.
|
|
|
|
*/
|
2005-10-28 20:29:43 +07:00
|
|
|
#define MACHINE_START(_type,_name) \
|
|
|
|
static const struct machine_desc __mach_desc_##_type \
|
2007-05-12 06:18:55 +07:00
|
|
|
__used \
|
2005-09-20 22:45:20 +07:00
|
|
|
__attribute__((__section__(".arch.info.init"))) = { \
|
2005-10-28 20:29:43 +07:00
|
|
|
.nr = MACH_TYPE_##_type, \
|
2005-04-17 05:20:36 +07:00
|
|
|
.name = _name,
|
|
|
|
|
|
|
|
#define MACHINE_END \
|
|
|
|
};
|
|
|
|
|
2011-07-25 22:52:11 +07:00
|
|
|
#define DT_MACHINE_START(_name, _namestr) \
|
|
|
|
static const struct machine_desc __mach_desc_##_name \
|
|
|
|
__used \
|
|
|
|
__attribute__((__section__(".arch.info.init"))) = { \
|
|
|
|
.nr = ~0, \
|
|
|
|
.name = _namestr,
|
|
|
|
|
2005-04-17 05:20:36 +07:00
|
|
|
#endif
|