[PATCH 2/3] celleb: add supporting for native CBE

Arnd Bergmann arnd at arndb.de
Wed Dec 5 00:21:46 EST 2007


On Tuesday 04 December 2007, Ishizaki Kou wrote:
> This patch adds supporting for native CBE on Celleb.  Many codes in
> platforms/cell/ are used when native CBE environment.
> 
> Signed-off-by: Kou Ishizaki <Kou.Ishizaki at toshiba.co.jp>

Ah, excellent to hear that this is now working!

I'd suggest doing the initialization in a different way, so that you don't
need to decide on so many attributes dynamically. The easiest way would
probably be to have two separate define_machine() calls in the celleb
definition, like

define_machine(celleb_beat) {
        .probe                  = celleb_probe_beat,
        .setup_arch             = celleb_setup_arch_native,
        .show_cpuinfo           = celleb_show_cpuinfo,
        .restart                = beat_restart,
        .power_off              = beat_power_off,
        .halt                   = beat_halt,
        .get_rtc_time           = beat_get_rtc_time,
        .set_rtc_time           = beat_set_rtc_time,
        .calibrate_decr         = generic_calibrate_decr,
        .progress               = celleb_progress,
        .power_save             = beat_power_save,
        .nvram_size             = beat_nvram_get_size,
        .nvram_read             = beat_nvram_read,
        .nvram_write            = beat_nvram_write,
        .set_dabr               = beat_set_xdabr,
        .init_IRQ               = beatic_init_IRQ,
        .get_irq                = beatic_get_irq,
        .pci_probe_mode         = celleb_pci_probe_mode,
        .pci_setup_phb          = celleb_setup_phb,
	...
};

define_machine(celleb_native) {
        .probe                  = celleb_probe_native,
        .setup_arch             = celleb_setup_arch_native,
        .show_cpuinfo           = celleb_show_cpuinfo,
        .restart                = rtas_restart,
        .power_off              = rtas_power_off,
        .halt                   = rtas_halt,
        .get_rtc_time           = rtas_get_rtc_time,
        .set_rtc_time           = rtas_set_rtc_time,
        .calibrate_decr         = generic_calibrate_decr,
        .progress               = celleb_progress,
        .init_IRQ               = celleb_init_IRQ_native,
        .get_irq                = celleb_get_irq_native,
        .pci_probe_mode         = celleb_pci_probe_mode,
        .pci_setup_phb          = celleb_setup_phb,
	...
};

For this, you can either have the two machine definitions in the
same celleb/setup.c, or split setup.c into machine specific files,
depending on how much ends up being shared in the end.

An interesting question still is how close the native celleb machine
definition is to the one from platforms/cell/setup.c. Maybe it's best
to have a common machine definition for these two in the end.

	Arnd <><



More information about the Linuxppc-dev mailing list