mirror of https://github.com/xemu-project/xemu.git
aspeed: Introduce a 'boot-emmc' machine option
The default behavior of some Aspeed machines is to boot from the eMMC device, like the rainier-bmc. Others like ast2600-evb could also boot from eMMC if the HW strapping boot-from-eMMC bit was set. Add a property to set or unset this bit. This is useful to test boot images. For now, only activate this property on the ast2600-evb and rainier-bmc machines for which eMMC images are available or can be built. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Andrew Jeffery <andrew@codeconstruct.com.au> Tested-by: Andrew Jeffery <andrew@codeconstruct.com.au> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
621845a9e3
commit
056b779eaf
|
@ -123,6 +123,8 @@ To boot the machine from the flash image, use an MTD drive :
|
||||||
|
|
||||||
Options specific to Aspeed machines are :
|
Options specific to Aspeed machines are :
|
||||||
|
|
||||||
|
* ``boot-emmc`` to set or unset boot from eMMC (AST2600).
|
||||||
|
|
||||||
* ``execute-in-place`` which emulates the boot from the CE0 flash
|
* ``execute-in-place`` which emulates the boot from the CE0 flash
|
||||||
device by using the FMC controller to load the instructions, and
|
device by using the FMC controller to load the instructions, and
|
||||||
not simply from RAM. This takes a little longer.
|
not simply from RAM. This takes a little longer.
|
||||||
|
|
|
@ -1178,6 +1178,34 @@ static void aspeed_machine_class_init_cpus_defaults(MachineClass *mc)
|
||||||
mc->valid_cpu_types = sc->valid_cpu_types;
|
mc->valid_cpu_types = sc->valid_cpu_types;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool aspeed_machine_ast2600_get_boot_from_emmc(Object *obj, Error **errp)
|
||||||
|
{
|
||||||
|
AspeedMachineState *bmc = ASPEED_MACHINE(obj);
|
||||||
|
|
||||||
|
return !!(bmc->hw_strap1 & SCU_AST2600_HW_STRAP_BOOT_SRC_EMMC);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void aspeed_machine_ast2600_set_boot_from_emmc(Object *obj, bool value,
|
||||||
|
Error **errp)
|
||||||
|
{
|
||||||
|
AspeedMachineState *bmc = ASPEED_MACHINE(obj);
|
||||||
|
|
||||||
|
if (value) {
|
||||||
|
bmc->hw_strap1 |= SCU_AST2600_HW_STRAP_BOOT_SRC_EMMC;
|
||||||
|
} else {
|
||||||
|
bmc->hw_strap1 &= ~SCU_AST2600_HW_STRAP_BOOT_SRC_EMMC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void aspeed_machine_ast2600_class_emmc_init(ObjectClass *oc)
|
||||||
|
{
|
||||||
|
object_class_property_add_bool(oc, "boot-emmc",
|
||||||
|
aspeed_machine_ast2600_get_boot_from_emmc,
|
||||||
|
aspeed_machine_ast2600_set_boot_from_emmc);
|
||||||
|
object_class_property_set_description(oc, "boot-emmc",
|
||||||
|
"Set or unset boot from EMMC");
|
||||||
|
}
|
||||||
|
|
||||||
static void aspeed_machine_class_init(ObjectClass *oc, void *data)
|
static void aspeed_machine_class_init(ObjectClass *oc, void *data)
|
||||||
{
|
{
|
||||||
MachineClass *mc = MACHINE_CLASS(oc);
|
MachineClass *mc = MACHINE_CLASS(oc);
|
||||||
|
@ -1377,6 +1405,7 @@ static void aspeed_machine_ast2600_evb_class_init(ObjectClass *oc, void *data)
|
||||||
amc->i2c_init = ast2600_evb_i2c_init;
|
amc->i2c_init = ast2600_evb_i2c_init;
|
||||||
mc->default_ram_size = 1 * GiB;
|
mc->default_ram_size = 1 * GiB;
|
||||||
aspeed_machine_class_init_cpus_defaults(mc);
|
aspeed_machine_class_init_cpus_defaults(mc);
|
||||||
|
aspeed_machine_ast2600_class_emmc_init(oc);
|
||||||
};
|
};
|
||||||
|
|
||||||
static void aspeed_machine_tacoma_class_init(ObjectClass *oc, void *data)
|
static void aspeed_machine_tacoma_class_init(ObjectClass *oc, void *data)
|
||||||
|
@ -1449,6 +1478,7 @@ static void aspeed_machine_rainier_class_init(ObjectClass *oc, void *data)
|
||||||
amc->i2c_init = rainier_bmc_i2c_init;
|
amc->i2c_init = rainier_bmc_i2c_init;
|
||||||
mc->default_ram_size = 1 * GiB;
|
mc->default_ram_size = 1 * GiB;
|
||||||
aspeed_machine_class_init_cpus_defaults(mc);
|
aspeed_machine_class_init_cpus_defaults(mc);
|
||||||
|
aspeed_machine_ast2600_class_emmc_init(oc);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define FUJI_BMC_RAM_SIZE ASPEED_RAM_SIZE(2 * GiB)
|
#define FUJI_BMC_RAM_SIZE ASPEED_RAM_SIZE(2 * GiB)
|
||||||
|
|
Loading…
Reference in New Issue