On Fri, 8 Dec 2023 at 02:33, Sergey Kambalin <serg.oker@gmail.com> wrote:
>
> Signed-off-by: Sergey Kambalin <sergey.kambalin@auriga.com>
> ---
> hw/arm/bcm2838_peripherals.c | 3 +++
> include/hw/arm/bcm2838_peripherals.h | 3 ++-
> include/hw/arm/raspi_platform.h | 1 +
> 3 files changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/hw/arm/bcm2838_peripherals.c b/hw/arm/bcm2838_peripherals.c
> index 196fb890a2..d3b42cf25b 100644
> --- a/hw/arm/bcm2838_peripherals.c
> +++ b/hw/arm/bcm2838_peripherals.c
> @@ -182,6 +182,9 @@ static void bcm2838_peripherals_realize(DeviceState *dev, Error **errp)
> sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->gpio), 0));
>
> object_property_add_alias(OBJECT(s), "sd-bus", OBJECT(&s->gpio), "sd-bus");
> +
> + /* BCM2838 RPiVid ASB must be mapped to prevent kernel crash */
> + create_unimp(s_base, &s->asb, "bcm2838-asb", RPI4B_ASB_OFFSET, 0x24);
> }
>
> static void bcm2838_peripherals_class_init(ObjectClass *oc, void *data)
> diff --git a/include/hw/arm/bcm2838_peripherals.h b/include/hw/arm/bcm2838_peripherals.h
> index 0a87645e01..af085934c9 100644
> --- a/include/hw/arm/bcm2838_peripherals.h
> +++ b/include/hw/arm/bcm2838_peripherals.h
> @@ -64,12 +64,13 @@ struct BCM2838PeripheralState {
> MemoryRegion mphi_mr_alias;
>
> SDHCIState emmc2;
> - UnimplementedDeviceState clkisp;
This seems like it should be in some other patch ?
> BCM2838GpioState gpio;
>
> OrIRQState mmc_irq_orgate;
> OrIRQState dma_7_8_irq_orgate;
> OrIRQState dma_9_10_irq_orgate;
> +
> + UnimplementedDeviceState asb;
> };
>
> struct BCM2838PeripheralClass {
> diff --git a/include/hw/arm/raspi_platform.h b/include/hw/arm/raspi_platform.h
> index 0db146e592..537fc6b4af 100644
> --- a/include/hw/arm/raspi_platform.h
> +++ b/include/hw/arm/raspi_platform.h
> @@ -74,6 +74,7 @@ uint64_t board_ram_size(uint32_t board_rev);
> #define DMA_OFFSET 0x7000 /* DMA controller, channels 0-14 */
> #define ARBA_OFFSET 0x9000
> #define BRDG_OFFSET 0xa000
> +#define RPI4B_ASB_OFFSET 0xa000 /* BCM2838 (BCM2711) RPiVid ASB */
I think the existing BRDG_OFFSET was intended to be the
define for the address of this bridge device, so we can just use
it rather than adding a new define.
> #define ARM_OFFSET 0xB000 /* ARM control block */
> #define ARMCTRL_OFFSET (ARM_OFFSET + 0x000)
> #define ARMCTRL_IC_OFFSET (ARM_OFFSET + 0x200) /* Interrupt controller */
thanks
-- PMM