void ide_init_drive(IDEState *s, DriveInfo *dinfo, const char *version)

{

    int cylinders, heads, secs;

    uint64_t nb_sectors;



    if (dinfo && dinfo->bdrv) {

        s->bs = dinfo->bdrv;

        bdrv_get_geometry(s->bs, &nb_sectors);

        bdrv_guess_geometry(s->bs, &cylinders, &heads, &secs);

        s->cylinders = cylinders;

        s->heads = heads;

        s->sectors = secs;

        s->nb_sectors = nb_sectors;

        /* The SMART values should be preserved across power cycles

           but they aren't.  */

        s->smart_enabled = 1;

        s->smart_autosave = 1;

        s->smart_errors = 0;

        s->smart_selftest_count = 0;

        if (bdrv_get_type_hint(s->bs) == BDRV_TYPE_CDROM) {

            s->is_cdrom = 1;

            bdrv_set_change_cb(s->bs, cdrom_change_cb, s);

        }

        strncpy(s->drive_serial_str, drive_get_serial(s->bs),

                sizeof(s->drive_serial_str));

    }

    if (strlen(s->drive_serial_str) == 0)

        snprintf(s->drive_serial_str, sizeof(s->drive_serial_str),

                 "QM%05d", s->drive_serial);

    if (version) {

        pstrcpy(s->version, sizeof(s->version), version);

    } else {

        pstrcpy(s->version, sizeof(s->version), QEMU_VERSION);

    }

    ide_reset(s);

}

void ide_init_drive(IDEState *s, DriveInfo *dinfo, const char *version)

{

    int cylinders, heads, secs;

    uint64_t nb_sectors;



    if (dinfo && dinfo->bdrv) {

        s->bs = dinfo->bdrv;

        bdrv_get_geometry(s->bs, &nb_sectors);

        bdrv_guess_geometry(s->bs, &cylinders, &heads, &secs);

        s->cylinders = cylinders;

        s->heads = heads;

        s->sectors = secs;

        s->nb_sectors = nb_sectors;

        



        s->smart_enabled = 1;

        s->smart_autosave = 1;

        s->smart_errors = 0;

        s->smart_selftest_count = 0;

        if (bdrv_get_type_hint(s->bs) == BDRV_TYPE_CDROM) {

            s->is_cdrom = 1;

            bdrv_set_change_cb(s->bs, cdrom_change_cb, s);

        }

        strncpy(s->drive_serial_str, drive_get_serial(s->bs),

                sizeof(s->drive_serial_str));

    }

    if (strlen(s->drive_serial_str) == 0)

        snprintf(s->drive_serial_str, sizeof(s->drive_serial_str),

                 "QM%05d", s->drive_serial);

    if (version) {

        pstrcpy(s->version, sizeof(s->version), version);

    } else {

        pstrcpy(s->version, sizeof(s->version), QEMU_VERSION);

    }

    ide_reset(s);

}

void FUNC_0(IDEState *VAR_0, DriveInfo *VAR_1, const char *VAR_2)

{

    int VAR_3, VAR_4, VAR_5;

    uint64_t nb_sectors;



    if (VAR_1 && VAR_1->bdrv) {

        VAR_0->bs = VAR_1->bdrv;

        bdrv_get_geometry(VAR_0->bs, &nb_sectors);

        bdrv_guess_geometry(VAR_0->bs, &VAR_3, &VAR_4, &VAR_5);

        VAR_0->VAR_3 = VAR_3;

        VAR_0->VAR_4 = VAR_4;

        VAR_0->sectors = VAR_5;

        VAR_0->nb_sectors = nb_sectors;

        



        VAR_0->smart_enabled = 1;

        VAR_0->smart_autosave = 1;

        VAR_0->smart_errors = 0;

        VAR_0->smart_selftest_count = 0;

        if (bdrv_get_type_hint(VAR_0->bs) == BDRV_TYPE_CDROM) {

            VAR_0->is_cdrom = 1;

            bdrv_set_change_cb(VAR_0->bs, cdrom_change_cb, VAR_0);

        }

        strncpy(VAR_0->drive_serial_str, drive_get_serial(VAR_0->bs),

                sizeof(VAR_0->drive_serial_str));

    }

    if (strlen(VAR_0->drive_serial_str) == 0)

        snprintf(VAR_0->drive_serial_str, sizeof(VAR_0->drive_serial_str),

                 "QM%05d", VAR_0->drive_serial);

    if (VAR_2) {

        pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), VAR_2);

    } else {

        pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), QEMU_VERSION);

    }

    ide_reset(VAR_0);

}

void FUNC_0(IDEState *VAR_0, DriveInfo *VAR_1, const char *VAR_2)
{ int VAR_3, VAR_4, VAR_5; uint64_t nb_sectors; if (VAR_1 && VAR_1->bdrv) { VAR_0->bs = VAR_1->bdrv; bdrv_get_geometry(VAR_0->bs, &nb_sectors); bdrv_guess_geometry(VAR_0->bs, &VAR_3, &VAR_4, &VAR_5); VAR_0->VAR_3 = VAR_3; VAR_0->VAR_4 = VAR_4; VAR_0->sectors = VAR_5; VAR_0->nb_sectors = nb_sectors; VAR_0->smart_enabled = 1; VAR_0->smart_autosave = 1; VAR_0->smart_errors = 0; VAR_0->smart_selftest_count = 0; if (bdrv_get_type_hint(VAR_0->bs) == BDRV_TYPE_CDROM) { VAR_0->is_cdrom = 1; bdrv_set_change_cb(VAR_0->bs, cdrom_change_cb, VAR_0); } strncpy(VAR_0->drive_serial_str, drive_get_serial(VAR_0->bs),
sizeof(VAR_0->drive_serial_str)); } if (strlen(VAR_0->drive_serial_str) == 0)
snprintf(VAR_0->drive_serial_str, sizeof(VAR_0->drive_serial_str),
"QM%05d", VAR_0->drive_serial); if (VAR_2) { pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), VAR_2); } else { pstrcpy(VAR_0->VAR_2, sizeof(VAR_0->VAR_2), QEMU_VERSION); } ide_reset(VAR_0); }