X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/074f2fff798cb8f9588080b740dc356217a24720..80a2ba3d3cf33b777d6a45776b0625b9a4283951:/hw/ssi-sd.c diff --git a/hw/ssi-sd.c b/hw/ssi-sd.c index 4e67f143c3..b519bdb29a 100644 --- a/hw/ssi-sd.c +++ b/hw/ssi-sd.c @@ -4,12 +4,15 @@ * Copyright (c) 2007-2009 CodeSourcery. * Written by Paul Brook * - * This code is licenced under the GNU GPL v2. + * This code is licensed under the GNU GPL v2. + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. */ +#include "blockdev.h" #include "ssi.h" #include "sd.h" -#include "sysemu.h" //#define DEBUG_SSI_SD 1 @@ -229,27 +232,36 @@ static int ssi_sd_load(QEMUFile *f, void *opaque, int version_id) return 0; } -static void ssi_sd_init(SSISlave *dev) +static int ssi_sd_init(SSISlave *dev) { ssi_sd_state *s = FROM_SSI_SLAVE(ssi_sd_state, dev); - BlockDriverState *bs; + DriveInfo *dinfo; s->mode = SSI_SD_CMD; - bs = qdev_init_bdrv(&dev->qdev, IF_SD); - s->sd = sd_init(bs, 1); - register_savevm("ssi_sd", -1, 1, ssi_sd_save, ssi_sd_load, s); + dinfo = drive_get_next(IF_SD); + s->sd = sd_init(dinfo ? dinfo->bdrv : NULL, 1); + register_savevm(&dev->qdev, "ssi_sd", -1, 1, ssi_sd_save, ssi_sd_load, s); + return 0; +} + +static void ssi_sd_class_init(ObjectClass *klass, void *data) +{ + SSISlaveClass *k = SSI_SLAVE_CLASS(klass); + + k->init = ssi_sd_init; + k->transfer = ssi_sd_transfer; } -static SSISlaveInfo ssi_sd_info = { - .qdev.name = "ssi-sd", - .qdev.size = sizeof(ssi_sd_state), - .init = ssi_sd_init, - .transfer = ssi_sd_transfer +static TypeInfo ssi_sd_info = { + .name = "ssi-sd", + .parent = TYPE_SSI_SLAVE, + .instance_size = sizeof(ssi_sd_state), + .class_init = ssi_sd_class_init, }; -static void ssi_sd_register_devices(void) +static void ssi_sd_register_types(void) { - ssi_register_slave(&ssi_sd_info); + type_register_static(&ssi_sd_info); } -device_init(ssi_sd_register_devices) +type_init(ssi_sd_register_types)