-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The new machine is a thin layer over the AST2400 ARM926-based SoC[1]. Between the minimal machine and the current SoC implementation there is enough functionality to boot an aspeed_defconfig Linux kernel to userspace. Nothing yet is specific to the Palmetto's BMC (other than using an AST2400 SoC), but creating specific machine types is preferable to a generic machine that doesn't match any particular hardware. [1] http://www.aspeedtech.com/products.php?fPath=20&rId=376 Signed-off-by: Andrew Jeffery <[email protected]> Message-id: [email protected] Reviewed-by: Peter Maydell <[email protected]> Signed-off-by: Peter Maydell <[email protected]>
- Loading branch information
Showing
2 changed files
with
66 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
/* | ||
* OpenPOWER Palmetto BMC | ||
* | ||
* Andrew Jeffery <[email protected]> | ||
* | ||
* Copyright 2016 IBM Corp. | ||
* | ||
* This code is licensed under the GPL version 2 or later. See | ||
* the COPYING file in the top-level directory. | ||
*/ | ||
|
||
#include "qemu/osdep.h" | ||
#include "exec/address-spaces.h" | ||
#include "hw/arm/arm.h" | ||
#include "hw/arm/ast2400.h" | ||
#include "hw/boards.h" | ||
|
||
static struct arm_boot_info palmetto_bmc_binfo = { | ||
.loader_start = AST2400_SDRAM_BASE, | ||
.board_id = 0, | ||
.nb_cpus = 1, | ||
}; | ||
|
||
typedef struct PalmettoBMCState { | ||
AST2400State soc; | ||
MemoryRegion ram; | ||
} PalmettoBMCState; | ||
|
||
static void palmetto_bmc_init(MachineState *machine) | ||
{ | ||
PalmettoBMCState *bmc; | ||
|
||
bmc = g_new0(PalmettoBMCState, 1); | ||
object_initialize(&bmc->soc, (sizeof(bmc->soc)), TYPE_AST2400); | ||
object_property_add_child(OBJECT(machine), "soc", OBJECT(&bmc->soc), | ||
&error_abort); | ||
|
||
memory_region_allocate_system_memory(&bmc->ram, NULL, "ram", ram_size); | ||
memory_region_add_subregion(get_system_memory(), AST2400_SDRAM_BASE, | ||
&bmc->ram); | ||
object_property_add_const_link(OBJECT(&bmc->soc), "ram", OBJECT(&bmc->ram), | ||
&error_abort); | ||
object_property_set_bool(OBJECT(&bmc->soc), true, "realized", | ||
&error_abort); | ||
|
||
palmetto_bmc_binfo.kernel_filename = machine->kernel_filename; | ||
palmetto_bmc_binfo.initrd_filename = machine->initrd_filename; | ||
palmetto_bmc_binfo.kernel_cmdline = machine->kernel_cmdline; | ||
palmetto_bmc_binfo.ram_size = ram_size; | ||
arm_load_kernel(ARM_CPU(first_cpu), &palmetto_bmc_binfo); | ||
} | ||
|
||
static void palmetto_bmc_machine_init(MachineClass *mc) | ||
{ | ||
mc->desc = "OpenPOWER Palmetto BMC"; | ||
mc->init = palmetto_bmc_init; | ||
mc->max_cpus = 1; | ||
mc->no_sdcard = 1; | ||
mc->no_floppy = 1; | ||
mc->no_cdrom = 1; | ||
mc->no_sdcard = 1; | ||
mc->no_parallel = 1; | ||
} | ||
|
||
DEFINE_MACHINE("palmetto-bmc", palmetto_bmc_machine_init); |