[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v5 1/8] Implement STM32L4x5_RCC skeleton
From: |
Peter Maydell |
Subject: |
Re: [PATCH v5 1/8] Implement STM32L4x5_RCC skeleton |
Date: |
Fri, 23 Feb 2024 14:26:46 +0000 |
On Mon, 19 Feb 2024 at 20:11, Arnaud Minier
<arnaud.minier@telecom-paris.fr> wrote:
>
> Add the necessary files to add a simple RCC implementation with just
> reads from and writes to registers. Also instanciate the RCC in the
"instantiate"
> STM32L4x5_SoC. It is needed for accurate emulation of all the SoC
> clocks and timers.
>
> Signed-off-by: Arnaud Minier <arnaud.minier@telecom-paris.fr>
> Signed-off-by: Inès Varhol <ines.varhol@telecom-paris.fr>
> Acked-by: Alistair Francis <alistair.francis@wdc.com>
> ---
> +static const MemoryRegionOps stm32l4x5_rcc_ops = {
> + .read = stm32l4x5_rcc_read,
> + .write = stm32l4x5_rcc_write,
> + .endianness = DEVICE_NATIVE_ENDIAN,
> + .valid = {
> + .max_access_size = 4,
> + .unaligned = false
> + },
> +};
What's the .valid.min_access_size ?
Do we need to set the .impl max/min access size here too ?
> +
> +static const ClockPortInitArray stm32l4x5_rcc_clocks = {
> + QDEV_CLOCK_IN(Stm32l4x5RccState, hsi16_rc, NULL, 0),
> + QDEV_CLOCK_IN(Stm32l4x5RccState, msi_rc, NULL, 0),
> + QDEV_CLOCK_IN(Stm32l4x5RccState, hse, NULL, 0),
> + QDEV_CLOCK_IN(Stm32l4x5RccState, lsi_rc, NULL, 0),
> + QDEV_CLOCK_IN(Stm32l4x5RccState, lse_crystal, NULL, 0),
> + QDEV_CLOCK_IN(Stm32l4x5RccState, sai1_extclk, NULL, 0),
> + QDEV_CLOCK_IN(Stm32l4x5RccState, sai2_extclk, NULL, 0),
> + QDEV_CLOCK_END
> +};
These are input clocks, so they each need a VMSTATE_CLOCK()
line in the VMStateDescription. (I think only input clocks
need to be migrated.)
> +
> +
> +static void stm32l4x5_rcc_init(Object *obj)
> +{
> + Stm32l4x5RccState *s = STM32L4X5_RCC(obj);
> +
> + sysbus_init_irq(SYS_BUS_DEVICE(obj), &s->irq);
> +
> + memory_region_init_io(&s->mmio, obj, &stm32l4x5_rcc_ops, s,
> + TYPE_STM32L4X5_RCC, 0x400);
> + sysbus_init_mmio(SYS_BUS_DEVICE(obj), &s->mmio);
> +
> + qdev_init_clocks(DEVICE(s), stm32l4x5_rcc_clocks);
> +
> + s->gnd = clock_new(obj, "gnd");
> +}
Otherwise
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM
- [PATCH v5 0/8] Add device STM32L4x5 RCC, Arnaud Minier, 2024/02/19
- [PATCH v5 2/8] Add an internal clock multiplexer object, Arnaud Minier, 2024/02/19
- [PATCH v5 3/8] Add an internal PLL Clock object, Arnaud Minier, 2024/02/19
- [PATCH v5 4/8] Add initialization information for PLLs and clock multiplexers, Arnaud Minier, 2024/02/19
- [PATCH v5 5/8] RCC: Handle Register Updates, Arnaud Minier, 2024/02/19
- [PATCH v5 6/8] Add write protections to CR register, Arnaud Minier, 2024/02/19