Message ID | 20201018203358.1530378-9-f4bug@amsat.org |
---|---|
State | Superseded |
Headers | show |
Series | hw/arm: Add raspi Zero, 1A+ and 3A+ machines | expand |
On Sun, 18 Oct 2020 22:33:57 +0200 Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > Similarly to the Pi A, the Pi Zero uses a BCM2835 SoC (ARMv6Z core). > > Example booting the machine using content from [*]: > > $ qemu-system-arm -M raspi0 -serial stdio \ > -kernel raspberrypi/firmware/boot/kernel.img \ > -dtb raspberrypi/firmware/boot/bcm2708-rpi-zero.dtb \ > -append 'printk.time=0 earlycon=pl011,0x20201000 console=ttyAMA0' > [ 0.000000] Booting Linux on physical CPU 0x0 > [ 0.000000] Linux version 4.19.118+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1311 Mon Apr 27 14:16:15 BST 2020 > [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d > [ 0.000000] CPU: VIPT aliasing data cache, unknown instruction cache > [ 0.000000] OF: fdt: Machine model: Raspberry Pi Zero > ... > > [*] http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel_1.20200512-2_armhf.deb > > Reviewed-by: Luc Michel <luc.michel@greensocs.com> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > hw/arm/raspi.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c > index 91a59d1d489..1510ca01afe 100644 > --- a/hw/arm/raspi.c > +++ b/hw/arm/raspi.c > @@ -319,6 +319,15 @@ static void raspi_machine_class_common_init(MachineClass *mc, > mc->default_ram_id = "ram"; > }; > > +static void raspi0_machine_class_init(ObjectClass *oc, void *data) > +{ > + MachineClass *mc = MACHINE_CLASS(oc); > + RaspiMachineClass *rmc = RASPI_MACHINE_CLASS(oc); > + > + rmc->board_rev = 0x900092; shouldn't it be 920092 Zero 1.2 512MB Embest or 920093 Zero 1.3 512MB Embest > + raspi_machine_class_common_init(mc, rmc->board_rev); > +}; > + > static void raspi1ap_machine_class_init(ObjectClass *oc, void *data) > { > MachineClass *mc = MACHINE_CLASS(oc); > @@ -352,6 +361,10 @@ static void raspi3b_machine_class_init(ObjectClass *oc, void *data) > > static const TypeInfo raspi_machine_types[] = { > { > + .name = MACHINE_TYPE_NAME("raspi0"), > + .parent = TYPE_RASPI_MACHINE, > + .class_init = raspi0_machine_class_init, > + }, { > .name = MACHINE_TYPE_NAME("raspi1ap"), > .parent = TYPE_RASPI_MACHINE, > .class_init = raspi1ap_machine_class_init,
Hi Igor, On 10/23/20 5:51 PM, Igor Mammedov wrote: > On Sun, 18 Oct 2020 22:33:57 +0200 > Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > >> Similarly to the Pi A, the Pi Zero uses a BCM2835 SoC (ARMv6Z core). >> >> Example booting the machine using content from [*]: >> >> $ qemu-system-arm -M raspi0 -serial stdio \ >> -kernel raspberrypi/firmware/boot/kernel.img \ >> -dtb raspberrypi/firmware/boot/bcm2708-rpi-zero.dtb \ >> -append 'printk.time=0 earlycon=pl011,0x20201000 console=ttyAMA0' >> [ 0.000000] Booting Linux on physical CPU 0x0 >> [ 0.000000] Linux version 4.19.118+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1311 Mon Apr 27 14:16:15 BST 2020 >> [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d >> [ 0.000000] CPU: VIPT aliasing data cache, unknown instruction cache >> [ 0.000000] OF: fdt: Machine model: Raspberry Pi Zero >> ... >> >> [*] http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel_1.20200512-2_armhf.deb >> >> Reviewed-by: Luc Michel <luc.michel@greensocs.com> >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> >> --- >> hw/arm/raspi.c | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c >> index 91a59d1d489..1510ca01afe 100644 >> --- a/hw/arm/raspi.c >> +++ b/hw/arm/raspi.c >> @@ -319,6 +319,15 @@ static void raspi_machine_class_common_init(MachineClass *mc, >> mc->default_ram_id = "ram"; >> }; >> >> +static void raspi0_machine_class_init(ObjectClass *oc, void *data) >> +{ >> + MachineClass *mc = MACHINE_CLASS(oc); >> + RaspiMachineClass *rmc = RASPI_MACHINE_CLASS(oc); >> + >> + rmc->board_rev = 0x900092; > > shouldn't it be > 920092 Zero 1.2 512MB Embest > or > 920093 Zero 1.3 512MB Embest I took the value from the "New-style revision codes" table listed in hw/arm/raspi.c before the REV_CODE register definitions: https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md 90009x's manufacturer is "Sony UK", 92009x is "Embest". I guess we don't care much the manufacturer :) The Revision 1.3 exposed the MIPI camera interface. As we don't model it, I prefer to use the 1.2 revision which matches better. I'll add this information in the commit description. Thanks for reviewing! > >> + raspi_machine_class_common_init(mc, rmc->board_rev); >> +}; >> + >> static void raspi1ap_machine_class_init(ObjectClass *oc, void *data) >> { >> MachineClass *mc = MACHINE_CLASS(oc); >> @@ -352,6 +361,10 @@ static void raspi3b_machine_class_init(ObjectClass *oc, void *data) >> >> static const TypeInfo raspi_machine_types[] = { >> { >> + .name = MACHINE_TYPE_NAME("raspi0"), >> + .parent = TYPE_RASPI_MACHINE, >> + .class_init = raspi0_machine_class_init, >> + }, { >> .name = MACHINE_TYPE_NAME("raspi1ap"), >> .parent = TYPE_RASPI_MACHINE, >> .class_init = raspi1ap_machine_class_init, > >
On Fri, 23 Oct 2020 19:35:19 +0200 Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > Hi Igor, > > On 10/23/20 5:51 PM, Igor Mammedov wrote: > > On Sun, 18 Oct 2020 22:33:57 +0200 > > Philippe Mathieu-Daudé <f4bug@amsat.org> wrote: > > > >> Similarly to the Pi A, the Pi Zero uses a BCM2835 SoC (ARMv6Z core). > >> > >> Example booting the machine using content from [*]: > >> > >> $ qemu-system-arm -M raspi0 -serial stdio \ > >> -kernel raspberrypi/firmware/boot/kernel.img \ > >> -dtb raspberrypi/firmware/boot/bcm2708-rpi-zero.dtb \ > >> -append 'printk.time=0 earlycon=pl011,0x20201000 console=ttyAMA0' > >> [ 0.000000] Booting Linux on physical CPU 0x0 > >> [ 0.000000] Linux version 4.19.118+ (dom@buildbot) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611)) #1311 Mon Apr 27 14:16:15 BST 2020 > >> [ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d > >> [ 0.000000] CPU: VIPT aliasing data cache, unknown instruction cache > >> [ 0.000000] OF: fdt: Machine model: Raspberry Pi Zero > >> ... > >> > >> [*] http://archive.raspberrypi.org/debian/pool/main/r/raspberrypi-firmware/raspberrypi-kernel_1.20200512-2_armhf.deb > >> > >> Reviewed-by: Luc Michel <luc.michel@greensocs.com> > >> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > >> --- > >> hw/arm/raspi.c | 13 +++++++++++++ > >> 1 file changed, 13 insertions(+) > >> > >> diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c > >> index 91a59d1d489..1510ca01afe 100644 > >> --- a/hw/arm/raspi.c > >> +++ b/hw/arm/raspi.c > >> @@ -319,6 +319,15 @@ static void raspi_machine_class_common_init(MachineClass *mc, > >> mc->default_ram_id = "ram"; > >> }; > >> > >> +static void raspi0_machine_class_init(ObjectClass *oc, void *data) > >> +{ > >> + MachineClass *mc = MACHINE_CLASS(oc); > >> + RaspiMachineClass *rmc = RASPI_MACHINE_CLASS(oc); > >> + > >> + rmc->board_rev = 0x900092; > > > > shouldn't it be > > 920092 Zero 1.2 512MB Embest > > or > > 920093 Zero 1.3 512MB Embest > > I took the value from the "New-style revision codes" > table listed in hw/arm/raspi.c before the REV_CODE > register definitions: > > https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md > > 90009x's manufacturer is "Sony UK", 92009x is "Embest". > I guess we don't care much the manufacturer :) > > The Revision 1.3 exposed the MIPI camera interface. > As we don't model it, I prefer to use the 1.2 revision > which matches better. > > I'll add this information in the commit description. With that Reviewed-by: Igor Mammedov <imammedo@redhat.com> > > Thanks for reviewing! > > > > >> + raspi_machine_class_common_init(mc, rmc->board_rev); > >> +}; > >> + > >> static void raspi1ap_machine_class_init(ObjectClass *oc, void *data) > >> { > >> MachineClass *mc = MACHINE_CLASS(oc); > >> @@ -352,6 +361,10 @@ static void raspi3b_machine_class_init(ObjectClass *oc, void *data) > >> > >> static const TypeInfo raspi_machine_types[] = { > >> { > >> + .name = MACHINE_TYPE_NAME("raspi0"), > >> + .parent = TYPE_RASPI_MACHINE, > >> + .class_init = raspi0_machine_class_init, > >> + }, { > >> .name = MACHINE_TYPE_NAME("raspi1ap"), > >> .parent = TYPE_RASPI_MACHINE, > >> .class_init = raspi1ap_machine_class_init, > > > > >
diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 91a59d1d489..1510ca01afe 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -319,6 +319,15 @@ static void raspi_machine_class_common_init(MachineClass *mc, mc->default_ram_id = "ram"; }; +static void raspi0_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + RaspiMachineClass *rmc = RASPI_MACHINE_CLASS(oc); + + rmc->board_rev = 0x900092; + raspi_machine_class_common_init(mc, rmc->board_rev); +}; + static void raspi1ap_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); @@ -352,6 +361,10 @@ static void raspi3b_machine_class_init(ObjectClass *oc, void *data) static const TypeInfo raspi_machine_types[] = { { + .name = MACHINE_TYPE_NAME("raspi0"), + .parent = TYPE_RASPI_MACHINE, + .class_init = raspi0_machine_class_init, + }, { .name = MACHINE_TYPE_NAME("raspi1ap"), .parent = TYPE_RASPI_MACHINE, .class_init = raspi1ap_machine_class_init,