Revision 47c06340 hw/ide/core.c

b/hw/ide/core.c
115 115
    put_le16(p + 20, 3); /* XXX: retired, remove ? */
116 116
    put_le16(p + 21, 512); /* cache size in sectors */
117 117
    put_le16(p + 22, 4); /* ecc bytes */
118
    padstr((char *)(p + 23), QEMU_VERSION, 8); /* firmware version */
118
    padstr((char *)(p + 23), s->version, 8); /* firmware version */
119 119
    padstr((char *)(p + 27), "QEMU HARDDISK", 40); /* model */
120 120
#if MAX_MULT_SECTORS > 1
121 121
    put_le16(p + 47, 0x8000 | MAX_MULT_SECTORS);
......
186 186
    put_le16(p + 20, 3); /* buffer type */
187 187
    put_le16(p + 21, 512); /* cache size in sectors */
188 188
    put_le16(p + 22, 4); /* ecc bytes */
189
    padstr((char *)(p + 23), QEMU_VERSION, 8); /* firmware version */
189
    padstr((char *)(p + 23), s->version, 8); /* firmware version */
190 190
    padstr((char *)(p + 27), "QEMU DVD-ROM", 40); /* model */
191 191
    put_le16(p + 48, 1); /* dword I/O (XXX: should not be set on CDROM) */
192 192
#ifdef USE_DMA_CDROM
......
238 238
    put_le16(p + 8, s->nb_sectors);		/* Sectors per card */
239 239
    padstr((char *)(p + 10), s->drive_serial_str, 20); /* serial number */
240 240
    put_le16(p + 22, 0x0004);			/* ECC bytes */
241
    padstr((char *) (p + 23), QEMU_VERSION, 8);	/* Firmware Revision */
241
    padstr((char *) (p + 23), s->version, 8);	/* Firmware Revision */
242 242
    padstr((char *) (p + 27), "QEMU MICRODRIVE", 40);/* Model number */
243 243
#if MAX_MULT_SECTORS > 1
244 244
    put_le16(p + 47, 0x8000 | MAX_MULT_SECTORS);
......
1591 1591
        buf[7] = 0; /* reserved */
1592 1592
        padstr8(buf + 8, 8, "QEMU");
1593 1593
        padstr8(buf + 16, 16, "QEMU DVD-ROM");
1594
        padstr8(buf + 32, 4, QEMU_VERSION);
1594
        padstr8(buf + 32, 4, s->version);
1595 1595
        ide_atapi_cmd_reply(s, 36, max_len);
1596 1596
        break;
1597 1597
    case GPCMD_GET_CONFIGURATION:
......
2590 2590
    ide_clear_hob(bus);
2591 2591
}
2592 2592

  
2593
void ide_init_drive(IDEState *s, DriveInfo *dinfo)
2593
void ide_init_drive(IDEState *s, DriveInfo *dinfo, const char *version)
2594 2594
{
2595 2595
    int cylinders, heads, secs;
2596 2596
    uint64_t nb_sectors;
......
2619 2619
    if (strlen(s->drive_serial_str) == 0)
2620 2620
        snprintf(s->drive_serial_str, sizeof(s->drive_serial_str),
2621 2621
                 "QM%05d", s->drive_serial);
2622
    if (version) {
2623
        pstrcpy(s->version, sizeof(s->version), version);
2624
    } else {
2625
        pstrcpy(s->version, sizeof(s->version), QEMU_VERSION);
2626
    }
2622 2627
    ide_reset(s);
2623 2628
}
2624 2629

  
......
2639 2644
        s->sector_write_timer = qemu_new_timer(vm_clock,
2640 2645
                                               ide_sector_write_timer_cb, s);
2641 2646
        if (i == 0)
2642
            ide_init_drive(s, hd0);
2647
            ide_init_drive(s, hd0, NULL);
2643 2648
        if (i == 1)
2644
            ide_init_drive(s, hd1);
2649
            ide_init_drive(s, hd1, NULL);
2645 2650
    }
2646 2651
    bus->irq = irq;
2647 2652
}

Also available in: Unified diff