qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [4890] ide: enable single word DMA, by Stefano Stabellini.


From: Thiemo Seufer
Subject: [Qemu-devel] [4890] ide: enable single word DMA, by Stefano Stabellini.
Date: Fri, 18 Jul 2008 16:49:42 +0000

Revision: 4890
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4890
Author:   ths
Date:     2008-07-18 16:49:42 +0000 (Fri, 18 Jul 2008)

Log Message:
-----------
ide: enable single word DMA, by Stefano Stabellini.

Modified Paths:
--------------
    trunk/hw/ide.c

Modified: trunk/hw/ide.c
===================================================================
--- trunk/hw/ide.c      2008-07-18 16:35:27 UTC (rev 4889)
+++ trunk/hw/ide.c      2008-07-18 16:49:42 UTC (rev 4890)
@@ -569,6 +569,7 @@
         put_le16(p + 59, 0x100 | s->mult_sectors);
     put_le16(p + 60, s->nb_sectors);
     put_le16(p + 61, s->nb_sectors >> 16);
+    put_le16(p + 62, 0x07); /* single word dma0-2 supported */
     put_le16(p + 63, 0x07); /* mdma0-2 supported */
     put_le16(p + 65, 120);
     put_le16(p + 66, 120);
@@ -620,6 +621,7 @@
 #ifdef USE_DMA_CDROM
     put_le16(p + 49, 1 << 9 | 1 << 8); /* DMA and LBA supported */
     put_le16(p + 53, 7); /* words 64-70, 54-58, 88 valid */
+    put_le16(p + 62, 7);  /* single word dma0-2 supported */
     put_le16(p + 63, 7);  /* mdma0-2 supported */
     put_le16(p + 64, 0x3f); /* PIO modes supported */
 #else
@@ -2194,14 +2196,22 @@
                switch (s->nsector >> 3) {
                    case 0x00: /* pio default */
                    case 0x01: /* pio mode */
+                       put_le16(s->identify_data + 62,0x07);
                        put_le16(s->identify_data + 63,0x07);
                        put_le16(s->identify_data + 88,0x3f);
                        break;
+                    case 0x02: /* sigle word dma mode*/
+                       put_le16(s->identify_data + 62,0x07 | (1 << (val + 8)));
+                       put_le16(s->identify_data + 63,0x07);
+                       put_le16(s->identify_data + 88,0x3f);
+                       break;
                    case 0x04: /* mdma mode */
+                       put_le16(s->identify_data + 62,0x07);
                        put_le16(s->identify_data + 63,0x07 | (1 << (val + 8)));
                        put_le16(s->identify_data + 88,0x3f);
                        break;
                    case 0x08: /* udma mode */
+                       put_le16(s->identify_data + 62,0x07);
                        put_le16(s->identify_data + 63,0x07);
                        put_le16(s->identify_data + 88,0x3f | (1 << (val + 8)));
                        break;






reply via email to

[Prev in Thread] Current Thread [Next in Thread]