|
@@ -388,7 +388,7 @@ static inline int aspeed_smc_flash_cmd(const AspeedSMCFlash *fl)
|
|
static inline int aspeed_smc_flash_addr_width(const AspeedSMCFlash *fl)
|
|
static inline int aspeed_smc_flash_addr_width(const AspeedSMCFlash *fl)
|
|
{
|
|
{
|
|
const AspeedSMCState *s = fl->controller;
|
|
const AspeedSMCState *s = fl->controller;
|
|
- AspeedSMCClass *asc = ASPEED_SMC_GET_CLASS(s);
|
|
|
|
|
|
+ AspeedSMCClass *asc = fl->asc;
|
|
|
|
|
|
if (asc->addr_width) {
|
|
if (asc->addr_width) {
|
|
return asc->addr_width(s);
|
|
return asc->addr_width(s);
|
|
@@ -420,7 +420,7 @@ static uint32_t aspeed_smc_check_segment_addr(const AspeedSMCFlash *fl,
|
|
uint32_t addr)
|
|
uint32_t addr)
|
|
{
|
|
{
|
|
const AspeedSMCState *s = fl->controller;
|
|
const AspeedSMCState *s = fl->controller;
|
|
- AspeedSMCClass *asc = ASPEED_SMC_GET_CLASS(s);
|
|
|
|
|
|
+ AspeedSMCClass *asc = fl->asc;
|
|
AspeedSegments seg;
|
|
AspeedSegments seg;
|
|
|
|
|
|
asc->reg_to_segment(s, s->regs[R_SEG_ADDR0 + fl->cs], &seg);
|
|
asc->reg_to_segment(s, s->regs[R_SEG_ADDR0 + fl->cs], &seg);
|
|
@@ -1234,7 +1234,6 @@ static const TypeInfo aspeed_smc_info = {
|
|
static void aspeed_smc_flash_realize(DeviceState *dev, Error **errp)
|
|
static void aspeed_smc_flash_realize(DeviceState *dev, Error **errp)
|
|
{
|
|
{
|
|
AspeedSMCFlash *s = ASPEED_SMC_FLASH(dev);
|
|
AspeedSMCFlash *s = ASPEED_SMC_FLASH(dev);
|
|
- AspeedSMCClass *asc;
|
|
|
|
g_autofree char *name = g_strdup_printf(TYPE_ASPEED_SMC_FLASH ".%d", s->cs);
|
|
g_autofree char *name = g_strdup_printf(TYPE_ASPEED_SMC_FLASH ".%d", s->cs);
|
|
|
|
|
|
if (!s->controller) {
|
|
if (!s->controller) {
|
|
@@ -1242,14 +1241,14 @@ static void aspeed_smc_flash_realize(DeviceState *dev, Error **errp)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- asc = ASPEED_SMC_GET_CLASS(s->controller);
|
|
|
|
|
|
+ s->asc = ASPEED_SMC_GET_CLASS(s->controller);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Use the default segment value to size the memory region. This
|
|
* Use the default segment value to size the memory region. This
|
|
* can be changed by FW at runtime.
|
|
* can be changed by FW at runtime.
|
|
*/
|
|
*/
|
|
memory_region_init_io(&s->mmio, OBJECT(s), &aspeed_smc_flash_ops,
|
|
memory_region_init_io(&s->mmio, OBJECT(s), &aspeed_smc_flash_ops,
|
|
- s, name, asc->segments[s->cs].size);
|
|
|
|
|
|
+ s, name, s->asc->segments[s->cs].size);
|
|
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mmio);
|
|
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mmio);
|
|
}
|
|
}
|
|
|
|
|