hw/ppc/pegasos2: Add bus frequency to machine state
Store the bus frequency in the machine state and set it from instance init method. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Link: https://lore.kernel.org/qemu-devel/b69e21e353b7d7f22a34db5f13443f60f51c7238.1761176219.git.balaton@eik.bme.hu Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
This commit is contained in:
parent
2c378545d0
commit
a310dbfade
1 changed files with 16 additions and 9 deletions
|
|
@ -55,8 +55,6 @@
|
|||
#define H_PRIVILEGE -3 /* Caller not privileged */
|
||||
#define H_PARAMETER -4 /* Parameter invalid, out-of-range or conflicting */
|
||||
|
||||
#define BUS_FREQ_HZ 133333333
|
||||
|
||||
#define TYPE_PEGASOS_MACHINE MACHINE_TYPE_NAME("pegasos")
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(PegasosMachineState, PEGASOS_MACHINE)
|
||||
|
||||
|
|
@ -66,6 +64,7 @@ struct PegasosMachineState {
|
|||
PowerPCCPU *cpu;
|
||||
DeviceState *nb; /* north bridge */
|
||||
DeviceState *sb; /* south bridge */
|
||||
int bus_freq_hz;
|
||||
IRQState pci_irqs[PCI_NUM_PINS];
|
||||
OrIRQState orirq[PCI_NUM_PINS];
|
||||
qemu_irq mv_pirq[PCI_NUM_PINS];
|
||||
|
|
@ -135,7 +134,7 @@ static void pegasos2_setup_pci_irq(PegasosMachineState *pm)
|
|||
qdev_get_gpio_in_named(pm->nb, "gpp", 31));
|
||||
}
|
||||
|
||||
static void pegasos2_init(MachineState *machine)
|
||||
static void pegasos_init(MachineState *machine)
|
||||
{
|
||||
PegasosMachineState *pm = PEGASOS_MACHINE(machine);
|
||||
CPUPPCState *env;
|
||||
|
|
@ -158,7 +157,7 @@ static void pegasos2_init(MachineState *machine)
|
|||
}
|
||||
|
||||
/* Set time-base frequency */
|
||||
cpu_ppc_tb_init(env, BUS_FREQ_HZ / 4);
|
||||
cpu_ppc_tb_init(env, pm->bus_freq_hz / 4);
|
||||
qemu_register_reset(pegasos2_cpu_reset, pm->cpu);
|
||||
|
||||
/* RAM */
|
||||
|
|
@ -610,7 +609,7 @@ static void pegasos2_machine_class_init(ObjectClass *oc, const void *data)
|
|||
VofMachineIfClass *vmc = VOF_MACHINE_CLASS(oc);
|
||||
|
||||
mc->desc = "Genesi/bPlan Pegasos II";
|
||||
mc->init = pegasos2_init;
|
||||
mc->init = pegasos_init;
|
||||
mc->reset = pegasos2_machine_reset;
|
||||
mc->block_default_type = IF_IDE;
|
||||
mc->default_boot_order = "cd";
|
||||
|
|
@ -629,6 +628,13 @@ static void pegasos2_machine_class_init(ObjectClass *oc, const void *data)
|
|||
vmc->setprop = pegasos2_setprop;
|
||||
}
|
||||
|
||||
static void pegasos2_init(Object *obj)
|
||||
{
|
||||
PegasosMachineState *pm = PEGASOS_MACHINE(obj);
|
||||
|
||||
pm->bus_freq_hz = 133333333;
|
||||
}
|
||||
|
||||
static const TypeInfo pegasos_machine_types[] = {
|
||||
{
|
||||
.name = TYPE_PEGASOS_MACHINE,
|
||||
|
|
@ -645,6 +651,7 @@ static const TypeInfo pegasos_machine_types[] = {
|
|||
.name = MACHINE_TYPE_NAME("pegasos2"),
|
||||
.parent = TYPE_PEGASOS_MACHINE,
|
||||
.class_init = pegasos2_machine_class_init,
|
||||
.instance_init = pegasos2_init,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
@ -777,7 +784,7 @@ static void add_pci_device(PCIBus *bus, PCIDevice *d, void *opaque)
|
|||
g_string_free(node, TRUE);
|
||||
}
|
||||
|
||||
static void add_cpu_info(void *fdt, PowerPCCPU *cpu)
|
||||
static void add_cpu_info(void *fdt, PowerPCCPU *cpu, int bus_freq)
|
||||
{
|
||||
uint32_t cells[2];
|
||||
|
||||
|
|
@ -824,8 +831,8 @@ static void add_cpu_info(void *fdt, PowerPCCPU *cpu)
|
|||
qemu_fdt_setprop_cell(fdt, cp, "reservation-granule-size", 4);
|
||||
qemu_fdt_setprop_cell(fdt, cp, "timebase-frequency",
|
||||
cpu->env.tb_env->tb_freq);
|
||||
qemu_fdt_setprop_cell(fdt, cp, "bus-frequency", BUS_FREQ_HZ);
|
||||
qemu_fdt_setprop_cell(fdt, cp, "clock-frequency", BUS_FREQ_HZ * 7.5);
|
||||
qemu_fdt_setprop_cell(fdt, cp, "bus-frequency", bus_freq);
|
||||
qemu_fdt_setprop_cell(fdt, cp, "clock-frequency", bus_freq * 7.5);
|
||||
qemu_fdt_setprop_cell(fdt, cp, "cpu-version", cpu->env.spr[SPR_PVR]);
|
||||
cells[0] = 0;
|
||||
cells[1] = 0;
|
||||
|
|
@ -860,7 +867,7 @@ static void *pegasos2_build_fdt(PegasosMachineState *pm, int *fdt_size)
|
|||
}
|
||||
qemu_fdt_setprop_string(fdt, "/", "name", "bplan,Pegasos2");
|
||||
|
||||
add_cpu_info(fdt, pm->cpu);
|
||||
add_cpu_info(fdt, pm->cpu, pm->bus_freq_hz);
|
||||
|
||||
fi.fdt = fdt;
|
||||
fi.path = "/pci@c0000000";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue