On 3/23/25 10:37, Richard Henderson wrote:
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> hw/avr/atmega.h | 20 ++++++++++++++++++++
> hw/avr/atmega.c | 22 +---------------------
> 2 files changed, 21 insertions(+), 21 deletions(-)
>
> diff --git a/hw/avr/atmega.h b/hw/avr/atmega.h
> index a99ee15c7e..f031e6c10a 100644
> --- a/hw/avr/atmega.h
> +++ b/hw/avr/atmega.h
> @@ -23,6 +23,10 @@
> #define TYPE_ATMEGA1280_MCU "ATmega1280"
> #define TYPE_ATMEGA2560_MCU "ATmega2560"
>
> +typedef struct AtmegaMcuClass AtmegaMcuClass;
> +DECLARE_CLASS_CHECKERS(AtmegaMcuClass, ATMEGA_MCU,
> + TYPE_ATMEGA_MCU)
> +
> typedef struct AtmegaMcuState AtmegaMcuState;
> DECLARE_INSTANCE_CHECKER(AtmegaMcuState, ATMEGA_MCU,
> TYPE_ATMEGA_MCU)
> @@ -32,6 +36,22 @@ DECLARE_INSTANCE_CHECKER(AtmegaMcuState, ATMEGA_MCU,
> #define TIMER_MAX 6
> #define GPIO_MAX 12
>
> +struct AtmegaMcuClass {
> + /*< private >*/
> + SysBusDeviceClass parent_class;
> + /*< public >*/
> + const char *uc_name;
> + const char *cpu_type;
> + size_t flash_size;
> + size_t eeprom_size;
> + size_t sram_size;
> + size_t io_size;
> + size_t gpio_count;
> + size_t adc_count;
> + const uint8_t *irq;
> + const struct peripheral_cfg *dev;
> +};
> +
> struct AtmegaMcuState {
> /*< private >*/
> SysBusDevice parent_obj;
> diff --git a/hw/avr/atmega.c b/hw/avr/atmega.c
> index d4fc9c4aee..96e36743bc 100644
> --- a/hw/avr/atmega.c
> +++ b/hw/avr/atmega.c
> @@ -36,7 +36,7 @@ enum AtmegaPeripheral {
> #define TIMER(n) (n + TIMER0)
> #define POWER(n) (n + POWER0)
>
> -typedef struct {
> +typedef struct peripheral_cfg {
> uint16_t addr;
> enum AtmegaPeripheral power_index;
> uint8_t power_bit;
> @@ -46,26 +46,6 @@ typedef struct {
> bool is_timer16;
> } peripheral_cfg;
>
> -struct AtmegaMcuClass {
> - /*< private >*/
> - SysBusDeviceClass parent_class;
> - /*< public >*/
> - const char *uc_name;
> - const char *cpu_type;
> - size_t flash_size;
> - size_t eeprom_size;
> - size_t sram_size;
> - size_t io_size;
> - size_t gpio_count;
> - size_t adc_count;
> - const uint8_t *irq;
> - const peripheral_cfg *dev;
> -};
> -typedef struct AtmegaMcuClass AtmegaMcuClass;
> -
> -DECLARE_CLASS_CHECKERS(AtmegaMcuClass, ATMEGA_MCU,
> - TYPE_ATMEGA_MCU)
> -
> static const peripheral_cfg dev168_328[PERIFMAX] = {
> [USART0] = { 0xc0, POWER0, 1 },
> [TIMER2] = { 0xb0, POWER0, 6, 0x70, 0x37, false },
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>