Commit e0fe67aa7240369b9ba3463df8c12c87955664c9

Authored by bellard
1 parent f6c958c8

enabled DMA


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1128 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 5 additions and 3 deletions
hw/ide.c
@@ -416,10 +416,10 @@ static void ide_identify(IDEState *s) @@ -416,10 +416,10 @@ static void ide_identify(IDEState *s)
416 put_le16(p + 47, 0x8000 | MAX_MULT_SECTORS); 416 put_le16(p + 47, 0x8000 | MAX_MULT_SECTORS);
417 #endif 417 #endif
418 put_le16(p + 48, 1); /* dword I/O */ 418 put_le16(p + 48, 1); /* dword I/O */
419 - put_le16(p + 49, 1 << 9); /* LBA supported, no DMA */ 419 + put_le16(p + 49, 1 << 9 | 1 << 8); /* DMA and LBA supported */
420 put_le16(p + 51, 0x200); /* PIO transfer cycle */ 420 put_le16(p + 51, 0x200); /* PIO transfer cycle */
421 put_le16(p + 52, 0x200); /* DMA transfer cycle */ 421 put_le16(p + 52, 0x200); /* DMA transfer cycle */
422 - put_le16(p + 53, 1); /* words 54-58 are valid */ 422 + put_le16(p + 53, 1 | 1 << 2); /* words 54-58,88 are valid */
423 put_le16(p + 54, s->cylinders); 423 put_le16(p + 54, s->cylinders);
424 put_le16(p + 55, s->heads); 424 put_le16(p + 55, s->heads);
425 put_le16(p + 56, s->sectors); 425 put_le16(p + 56, s->sectors);
@@ -437,6 +437,8 @@ static void ide_identify(IDEState *s) @@ -437,6 +437,8 @@ static void ide_identify(IDEState *s)
437 put_le16(p + 85, (1 << 14)); 437 put_le16(p + 85, (1 << 14));
438 put_le16(p + 86, 0); 438 put_le16(p + 86, 0);
439 put_le16(p + 87, (1 << 14)); 439 put_le16(p + 87, (1 << 14));
  440 + put_le16(p + 88, 0x1f | (1 << 13));
  441 + put_le16(p + 93, 1 | (1 << 14) | 0x2000 | 0x4000);
440 } 442 }
441 443
442 static void ide_atapi_identify(IDEState *s) 444 static void ide_atapi_identify(IDEState *s)
@@ -1560,7 +1562,7 @@ static void ide_ioport_write(void *opaque, uint32_t addr, uint32_t val) @@ -1560,7 +1562,7 @@ static void ide_ioport_write(void *opaque, uint32_t addr, uint32_t val)
1560 case 0x82: /* write cache disable */ 1562 case 0x82: /* write cache disable */
1561 case 0xaa: /* read look-ahead enable */ 1563 case 0xaa: /* read look-ahead enable */
1562 case 0x55: /* read look-ahead disable */ 1564 case 0x55: /* read look-ahead disable */
1563 - s->status = READY_STAT; 1565 + s->status = READY_STAT | SEEK_STAT;
1564 ide_set_irq(s); 1566 ide_set_irq(s);
1565 break; 1567 break;
1566 default: 1568 default: