mirror of https://github.com/xemu-project/xemu.git
aspeed/smc: Drop AspeedSMCController structure
The characteristics of the Aspeed controllers are described in a AspeedSMCController structure which is redundant with the AspeedSMCClass. Move all attributes under the class and adapt the code to use class attributes instead. This is a large change but it is functionally equivalent. Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
d0180a3ae4
commit
30b6852ce4
|
@ -352,7 +352,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||||
}
|
}
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 0, sc->memmap[ASPEED_DEV_FMC]);
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 0, sc->memmap[ASPEED_DEV_FMC]);
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 1,
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 1,
|
||||||
s->fmc.ctrl->flash_window_base);
|
ASPEED_SMC_GET_CLASS(&s->fmc)->flash_window_base);
|
||||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->fmc), 0,
|
sysbus_connect_irq(SYS_BUS_DEVICE(&s->fmc), 0,
|
||||||
aspeed_soc_get_irq(s, ASPEED_DEV_FMC));
|
aspeed_soc_get_irq(s, ASPEED_DEV_FMC));
|
||||||
|
|
||||||
|
@ -367,7 +367,7 @@ static void aspeed_soc_ast2600_realize(DeviceState *dev, Error **errp)
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0,
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0,
|
||||||
sc->memmap[ASPEED_DEV_SPI1 + i]);
|
sc->memmap[ASPEED_DEV_SPI1 + i]);
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 1,
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 1,
|
||||||
s->spi[i].ctrl->flash_window_base);
|
ASPEED_SMC_GET_CLASS(&s->spi[i])->flash_window_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EHCI */
|
/* EHCI */
|
||||||
|
|
|
@ -310,7 +310,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||||
}
|
}
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 0, sc->memmap[ASPEED_DEV_FMC]);
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 0, sc->memmap[ASPEED_DEV_FMC]);
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 1,
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->fmc), 1,
|
||||||
s->fmc.ctrl->flash_window_base);
|
ASPEED_SMC_GET_CLASS(&s->fmc)->flash_window_base);
|
||||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->fmc), 0,
|
sysbus_connect_irq(SYS_BUS_DEVICE(&s->fmc), 0,
|
||||||
aspeed_soc_get_irq(s, ASPEED_DEV_FMC));
|
aspeed_soc_get_irq(s, ASPEED_DEV_FMC));
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ static void aspeed_soc_realize(DeviceState *dev, Error **errp)
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0,
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0,
|
||||||
sc->memmap[ASPEED_DEV_SPI1 + i]);
|
sc->memmap[ASPEED_DEV_SPI1 + i]);
|
||||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 1,
|
sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 1,
|
||||||
s->spi[i].ctrl->flash_window_base);
|
ASPEED_SMC_GET_CLASS(&s->spi[i])->flash_window_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EHCI */
|
/* EHCI */
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -29,35 +29,7 @@
|
||||||
#include "hw/sysbus.h"
|
#include "hw/sysbus.h"
|
||||||
#include "qom/object.h"
|
#include "qom/object.h"
|
||||||
|
|
||||||
typedef struct AspeedSegments {
|
|
||||||
hwaddr addr;
|
|
||||||
uint32_t size;
|
|
||||||
} AspeedSegments;
|
|
||||||
|
|
||||||
struct AspeedSMCState;
|
struct AspeedSMCState;
|
||||||
typedef struct AspeedSMCController {
|
|
||||||
const char *name;
|
|
||||||
uint8_t r_conf;
|
|
||||||
uint8_t r_ce_ctrl;
|
|
||||||
uint8_t r_ctrl0;
|
|
||||||
uint8_t r_timings;
|
|
||||||
uint8_t nregs_timings;
|
|
||||||
uint8_t conf_enable_w0;
|
|
||||||
uint8_t max_peripherals;
|
|
||||||
const AspeedSegments *segments;
|
|
||||||
hwaddr flash_window_base;
|
|
||||||
uint32_t flash_window_size;
|
|
||||||
uint32_t features;
|
|
||||||
hwaddr dma_flash_mask;
|
|
||||||
hwaddr dma_dram_mask;
|
|
||||||
uint32_t nregs;
|
|
||||||
uint32_t (*segment_to_reg)(const struct AspeedSMCState *s,
|
|
||||||
const AspeedSegments *seg);
|
|
||||||
void (*reg_to_segment)(const struct AspeedSMCState *s, uint32_t reg,
|
|
||||||
AspeedSegments *seg);
|
|
||||||
void (*dma_ctrl)(struct AspeedSMCState *s, uint32_t value);
|
|
||||||
} AspeedSMCController;
|
|
||||||
|
|
||||||
typedef struct AspeedSMCFlash {
|
typedef struct AspeedSMCFlash {
|
||||||
struct AspeedSMCState *controller;
|
struct AspeedSMCState *controller;
|
||||||
|
|
||||||
|
@ -71,18 +43,11 @@ typedef struct AspeedSMCFlash {
|
||||||
#define TYPE_ASPEED_SMC "aspeed.smc"
|
#define TYPE_ASPEED_SMC "aspeed.smc"
|
||||||
OBJECT_DECLARE_TYPE(AspeedSMCState, AspeedSMCClass, ASPEED_SMC)
|
OBJECT_DECLARE_TYPE(AspeedSMCState, AspeedSMCClass, ASPEED_SMC)
|
||||||
|
|
||||||
struct AspeedSMCClass {
|
|
||||||
SysBusDevice parent_obj;
|
|
||||||
const AspeedSMCController *ctrl;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ASPEED_SMC_R_MAX (0x100 / 4)
|
#define ASPEED_SMC_R_MAX (0x100 / 4)
|
||||||
|
|
||||||
struct AspeedSMCState {
|
struct AspeedSMCState {
|
||||||
SysBusDevice parent_obj;
|
SysBusDevice parent_obj;
|
||||||
|
|
||||||
const AspeedSMCController *ctrl;
|
|
||||||
|
|
||||||
MemoryRegion mmio;
|
MemoryRegion mmio;
|
||||||
MemoryRegion mmio_flash;
|
MemoryRegion mmio_flash;
|
||||||
MemoryRegion mmio_flash_alias;
|
MemoryRegion mmio_flash_alias;
|
||||||
|
@ -115,4 +80,33 @@ struct AspeedSMCState {
|
||||||
uint8_t snoop_dummies;
|
uint8_t snoop_dummies;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct AspeedSegments {
|
||||||
|
hwaddr addr;
|
||||||
|
uint32_t size;
|
||||||
|
} AspeedSegments;
|
||||||
|
|
||||||
|
struct AspeedSMCClass {
|
||||||
|
SysBusDeviceClass parent_obj;
|
||||||
|
|
||||||
|
uint8_t r_conf;
|
||||||
|
uint8_t r_ce_ctrl;
|
||||||
|
uint8_t r_ctrl0;
|
||||||
|
uint8_t r_timings;
|
||||||
|
uint8_t nregs_timings;
|
||||||
|
uint8_t conf_enable_w0;
|
||||||
|
uint8_t max_peripherals;
|
||||||
|
const AspeedSegments *segments;
|
||||||
|
hwaddr flash_window_base;
|
||||||
|
uint32_t flash_window_size;
|
||||||
|
uint32_t features;
|
||||||
|
hwaddr dma_flash_mask;
|
||||||
|
hwaddr dma_dram_mask;
|
||||||
|
uint32_t nregs;
|
||||||
|
uint32_t (*segment_to_reg)(const AspeedSMCState *s,
|
||||||
|
const AspeedSegments *seg);
|
||||||
|
void (*reg_to_segment)(const AspeedSMCState *s, uint32_t reg,
|
||||||
|
AspeedSegments *seg);
|
||||||
|
void (*dma_ctrl)(AspeedSMCState *s, uint32_t value);
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* ASPEED_SMC_H */
|
#endif /* ASPEED_SMC_H */
|
||||||
|
|
Loading…
Reference in New Issue