Patchwork [05/17] ide: Convert verify commands to ide_cmd_table handler

login
register
mail settings
Submitter Kevin Wolf
Date June 18, 2013, 8:25 a.m.
Message ID <1371543971-23241-6-git-send-email-kwolf@redhat.com>
Download mbox | patch
Permalink /patch/252170/
State New
Headers show

Comments

Kevin Wolf - June 18, 2013, 8:25 a.m.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 hw/ide/core.c | 27 +++++++++++++--------------
 1 file changed, 13 insertions(+), 14 deletions(-)

Patch

diff --git a/hw/ide/core.c b/hw/ide/core.c
index 057662d..bf2007a 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -1046,6 +1046,16 @@  static bool cmd_identify(IDEState *s, uint8_t cmd)
     return true;
 }
 
+static bool cmd_verify(IDEState *s, uint8_t cmd)
+{
+    bool lba48 = (cmd == WIN_VERIFY_EXT);
+
+    /* do sector number check ? */
+    ide_cmd_lba48_transform(s, lba48);
+
+    return true;
+}
+
 #define HD_OK (1u << IDE_HD)
 #define CD_OK (1u << IDE_CD)
 #define CFA_OK (1u << IDE_CFATA)
@@ -1079,9 +1089,9 @@  static const struct {
     [CFA_WRITE_SECT_WO_ERASE]     = { NULL, CFA_OK },
     [WIN_MULTWRITE_EXT]           = { NULL, HD_CFA_OK },
     [WIN_WRITE_VERIFY]            = { NULL, HD_CFA_OK },
-    [WIN_VERIFY]                  = { NULL, HD_CFA_OK },
-    [WIN_VERIFY_ONCE]             = { NULL, HD_CFA_OK },
-    [WIN_VERIFY_EXT]              = { NULL, HD_CFA_OK },
+    [WIN_VERIFY]                  = { cmd_verify, HD_CFA_OK | SET_DSC },
+    [WIN_VERIFY_ONCE]             = { cmd_verify, HD_CFA_OK | SET_DSC },
+    [WIN_VERIFY_EXT]              = { cmd_verify, HD_CFA_OK | SET_DSC },
     [WIN_SEEK]                    = { NULL, HD_CFA_OK },
     [CFA_TRANSLATE_SECTOR]        = { NULL, CFA_OK },
     [WIN_DIAGNOSE]                = { NULL, ALL_OK },
@@ -1187,17 +1197,6 @@  void ide_exec_cmd(IDEBus *bus, uint32_t val)
         ide_set_irq(s->bus);
         break;
 
-    case WIN_VERIFY_EXT:
-        lba48 = 1;
-        /* fall through */
-    case WIN_VERIFY:
-    case WIN_VERIFY_ONCE:
-        /* do sector number check ? */
-	ide_cmd_lba48_transform(s, lba48);
-        s->status = READY_STAT | SEEK_STAT;
-        ide_set_irq(s->bus);
-        break;
-
     case WIN_READ_EXT:
         lba48 = 1;
         /* fall through */