return addr >> (HWBLOCK_SHIFT + SECTOR_SHIFT + WPGROUP_SHIFT);
}
-static void sd_reset(SDState *sd)
+static void sd_reset(DeviceState *dev)
{
+ SDState *sd = SD_CARD(dev);
uint64_t size;
uint64_t sect;
qemu_set_irq(sd->inserted_cb, blk_is_inserted(sd->blk));
if (blk_is_inserted(sd->blk)) {
- sd_reset(sd);
+ sd_reset(DEVICE(sd));
qemu_set_irq(sd->readonly_cb, sd->wp_switch);
}
}
default:
sd->state = sd_idle_state;
- sd_reset(sd);
+ sd_reset(DEVICE(sd));
return sd->spi ? sd_r1 : sd_r0;
}
break;
if (sd->blk) {
blk_set_dev_ops(sd->blk, &sd_block_ops, sd);
}
-
- sd_reset(sd);
}
static Property sd_properties[] = {
dc->realize = sd_realize;
dc->props = sd_properties;
dc->vmsd = &sd_vmstate;
+ dc->reset = sd_reset;
}
static const TypeInfo sd_info = {