arm: separate hook for commandline
Subsystems (5)
RFC 4/8 arm: separate hook for commandline
This allows us to call it before setup_arch().
Untested.
Signed-off-by Rusty Russell <[email protected]>
--- arch/arm/include/asm/mach/arch.h | 3 ++- arch/arm/kernel/setup.c | 9 +++++++-- arch/arm/mach-clps711x/clep7312.c | 2 +- arch/arm/mach-clps711x/edb7211-arch.c | 2 +- arch/arm/mach-clps711x/fortunet.c | 11 +++++++++-- arch/arm/mach-clps711x/p720t.c | 2 +- arch/arm/mach-footbridge/cats-hw.c | 2 +- arch/arm/mach-footbridge/netwinder-hw.c | 2 +- arch/arm/mach-orion5x/common.c | 2 +- arch/arm/mach-orion5x/common.h | 2 +- arch/arm/mach-pxa/eseries.c | 2 +- arch/arm/mach-pxa/eseries.h | 2 +- arch/arm/mach-pxa/ezx.c | 2 +- arch/arm/mach-pxa/poodle.c | 2 +- arch/arm/mach-pxa/spitz.c | 2 +- arch/arm/mach-pxa/tosa.c | 2 +- arch/arm/mach-sa1100/assabet.c | 2 +- 17 files changed, 32 insertions(+), 19 deletions(-)
arch/arm/include/asm/mach/arch.h +2 -1
@@ -34,8 +34,9 @@ struct machine_desc { unsigned int reserve_lp1 :1; /* never has lp1 */ unsigned int reserve_lp2 :1; /* never has lp2 */ unsigned int soft_reboot :1; /* soft reboot */ +const char * (*cmdline)(void );void (*fixup)(struct machine_desc *, -struct tag *,char **, +struct tag *,struct meminfo *);void (*map_io)(void );/* IO mapping function */ void (*init_irq)(void );
arch/arm/kernel/setup.c +7 -2
@@ -677,7 +677,7 @@ void __init setup_arch(char **cmdline_p) {struct tag *tags = (struct tag *)&init_tags;struct machine_desc *mdesc; -char *from = default_command_line; +char *from;setup_processor (); mdesc =setup_machine (machine_arch_type);
@@ -700,8 +700,13 @@ void __init setup_arch(char **cmdline_p)if (tags->hdr.tag !=ATAG_CORE ) tags = (struct tag *)&init_tags; +if (mdesc->cmdline) + from = mdesc->cmdline (); +else + from = default_command_line; +if (mdesc->fixup) - mdesc->fixup (mdesc, tags, &from, &meminfo); + mdesc->fixup (mdesc, tags, &meminfo);if (tags->hdr.tag ==ATAG_CORE ) {if (meminfo.nr_banks !=0 )
arch/arm/mach-clps711x/clep7312.c +1 -1
@@ -27,7 +27,7 @@static void __init fixup_clep7312 (struct machine_desc *desc,struct tag *tags, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) { mi->nr_banks=1 ; mi->bank[0 ].start =0xc0000000 ;
arch/arm/mach-clps711x/edb7211-arch.c +1 -1
@@ -31,7 +31,7 @@ extern void edb7211_map_io(void);static void __init fixup_edb7211 (struct machine_desc *desc,struct tag *tags, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) {/* * Bank start addresses are not present in the information
arch/arm/mach-clps711x/fortunet.c +9 -2
@@ -58,12 +58,18 @@ typedef struct tag_IMAGE_PARAMS#define IMAGE_PARAMS_PHYS 0xC01F0000 +static const char *__init +fortunet_cmdline (void ) +{ +IMAGE_PARAMS *ip =phys_to_virt (IMAGE_PARAMS_PHYS ); +return phys_to_virt (ip->command_line); +} +static void __init fortunet_fixup (struct machine_desc *desc,struct tag *tags, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) {IMAGE_PARAMS *ip =phys_to_virt (IMAGE_PARAMS_PHYS ); - *cmdline =phys_to_virt (ip->command_line);#ifdef CONFIG_BLK_DEV_INITRD if (ip->ramdisk_ok) {
@@ -80,6 +86,7 @@ MACHINE_START(FORTUNET, "ARM-FortuNet") .phys_io = 0x80000000, .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, .boot_params = 0x00000000, + .cmdline = fortunet_cmdline, .fixup = fortunet_fixup, .map_io = clps711x_map_io, .init_irq = clps711x_init_irq,
arch/arm/mach-clps711x/p720t.c +1 -1
@@ -57,7 +57,7 @@ static struct map_desc p720t_io_desc[] _static void __init fixup_p720t (struct machine_desc *desc,struct tag *tag, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) {/* * Our bootloader doesn't setup any tags (yet).
arch/arm/mach-footbridge/cats-hw.c +1 -1
@@ -76,7 +76,7 @@ __initcall(cats_hw_init);*/ static void __init fixup_cats (struct machine_desc *desc,struct tag *tags, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) { screen_info.orig_video_lines =25 ; screen_info.orig_video_points =16 ;
arch/arm/mach-footbridge/netwinder- renamed from arch/arm/mach-footbridge/netwinder-hw.c +0 -0
hw.c
arch/arm/mach-footbridge/netwinder-hw.c +1 -1
@@ -632,7 +632,7 @@ __initcall(nw_hw_init);*/ static void __init fixup_netwinder (struct machine_desc *desc,struct tag *tags, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) {#ifdef CONFIG_ISAPNP extern int isapnp_disable;
arch/arm/mach-orion5x/common.c +1 -1
@@ -630,7 +630,7 @@ void __init orion5x_init(void)* This is a common fixup for bogus memory tags. */ void __init tag_fixup_mem32 (struct machine_desc *mdesc,struct tag *t, -char **from,struct meminfo *meminfo) +struct meminfo *meminfo) {for (; t->hdr.size; t =tag_next (t)) if (t->hdr.tag == ATAG_MEM &&
arch/arm/mach-orion5x/common.h +1 -1
@@ -62,7 +62,7 @@ struct meminfo;struct meminfo ;struct tag ;extern void __init tag_fixup_mem32 (struct machine_desc *,struct tag *, -char **,struct meminfo *); +struct meminfo *);#endif
arch/arm/mach-pxa/eseries.c +1 -1
@@ -26,7 +26,7 @@/* Only e800 has 128MB RAM */ void __init eseries_fixup (struct machine_desc *desc, -struct tag *tags,char **cmdline,struct meminfo *mi) +struct tag *tags,struct meminfo *mi) { mi->nr_banks=1 ; mi->bank[0 ].start =0xa0000000 ;
arch/arm/mach-pxa/eseries.h +1 -1
@@ -1,4 +1,4 @@ void __init eseries_fixup(struct machinevoid __init eseries_fixup (struct machine_desc *desc, -struct tag *tags,char **cmdline,struct meminfo *mi); +struct tag *tags,struct meminfo *mi);extern struct pxa2xx_udc_mach_info e7xx_udc_mach_info;
arch/arm/mach-pxa/ezx.c +1 -1
@@ -127,7 +127,7 @@ static void __init ezx_init(void) }static void __init ezx_fixup (struct machine_desc *desc,struct tag *tags, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) {/* We have two ram chips. First one with 32MB at 0xA0000000 and a second * 16MB one at 0xAC000000
arch/arm/mach-pxa/poodle.c +1 -1
@@ -455,7 +455,7 @@ static void __init poodle_init(void) }static void __init fixup_poodle (struct machine_desc *desc, -struct tag *tags,char **cmdline,struct meminfo *mi) +struct tag *tags,struct meminfo *mi) {sharpsl_save_param (); mi->nr_banks=1 ;
arch/arm/mach-pxa/spitz.c +1 -1
@@ -694,7 +694,7 @@ static void __init akita_init(void)#endif static void __init fixup_spitz (struct machine_desc *desc, -struct tag *tags,char **cmdline,struct meminfo *mi) +struct tag *tags,struct meminfo *mi) {sharpsl_save_param (); mi->nr_banks =1 ;
arch/arm/mach-pxa/tosa.c +1 -1
@@ -851,7 +851,7 @@ static void __init tosa_init(void) }static void __init fixup_tosa (struct machine_desc *desc, -struct tag *tags,char **cmdline,struct meminfo *mi) +struct tag *tags,struct meminfo *mi) {sharpsl_save_param (); mi->nr_banks=1 ;
arch/arm/mach-sa1100/assabet.c +1 -1
@@ -302,7 +302,7 @@ static void __init get_assabet_scr(void)static void __init fixup_assabet (struct machine_desc *desc,struct tag *tags, -char **cmdline,struct meminfo *mi) +struct meminfo *mi) {/* This must be done before any call to machine_has_neponset() */ map_sa1100_gpio_regs ();