Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck...
[linux-drm-fsl-dcu.git] / drivers / s390 / char / sclp_sdias.c
index b1032931a1c41237766eaf6c38d7e5032e71e33d..561a0414b35282f97174d0cfb0e68ce87fab9c50 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * Sclp "store data in absolut storage"
+ * SCLP "store data in absolute storage"
  *
- * Copyright IBM Corp. 2003, 2007
+ * Copyright IBM Corp. 2003, 2013
  * Author(s): Michael Holzheu
  */
 
@@ -14,6 +14,7 @@
 #include <asm/debug.h>
 #include <asm/ipl.h>
 
+#include "sclp_sdias.h"
 #include "sclp.h"
 #include "sclp_rw.h"
 
 #define SDIAS_RETRIES 300
 #define SDIAS_SLEEP_TICKS 50
 
-#define EQ_STORE_DATA  0x0
-#define EQ_SIZE                0x1
-#define DI_FCP_DUMP    0x0
-#define ASA_SIZE_32    0x0
-#define ASA_SIZE_64    0x1
-#define EVSTATE_ALL_STORED     0x0
-#define EVSTATE_NO_DATA                0x3
-#define EVSTATE_PART_STORED    0x10
-
 static struct debug_info *sdias_dbf;
 
 static struct sclp_register sclp_sdias_register = {
        .send_mask = EVTYP_SDIAS_MASK,
 };
 
-struct sdias_evbuf {
-       struct  evbuf_header hdr;
-       u8      event_qual;
-       u8      data_id;
-       u64     reserved2;
-       u32     event_id;
-       u16     reserved3;
-       u8      asa_size;
-       u8      event_status;
-       u32     reserved4;
-       u32     blk_cnt;
-       u64     asa;
-       u32     reserved5;
-       u32     fbn;
-       u32     reserved6;
-       u32     lbn;
-       u16     reserved7;
-       u16     dbs;
-} __attribute__((packed));
-
-struct sdias_sccb {
-       struct sccb_header  hdr;
-       struct sdias_evbuf  evbuf;
-} __attribute__((packed));
-
 static struct sdias_sccb sccb __attribute__((aligned(4096)));
 static struct sdias_evbuf sdias_evbuf;
 
@@ -148,8 +115,8 @@ int sclp_sdias_blk_count(void)
        sccb.hdr.length = sizeof(sccb);
        sccb.evbuf.hdr.length = sizeof(struct sdias_evbuf);
        sccb.evbuf.hdr.type = EVTYP_SDIAS;
-       sccb.evbuf.event_qual = EQ_SIZE;
-       sccb.evbuf.data_id = DI_FCP_DUMP;
+       sccb.evbuf.event_qual = SDIAS_EQ_SIZE;
+       sccb.evbuf.data_id = SDIAS_DI_FCP_DUMP;
        sccb.evbuf.event_id = 4712;
        sccb.evbuf.dbs = 1;
 
@@ -208,13 +175,13 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks)
        sccb.evbuf.hdr.length = sizeof(struct sdias_evbuf);
        sccb.evbuf.hdr.type = EVTYP_SDIAS;
        sccb.evbuf.hdr.flags = 0;
-       sccb.evbuf.event_qual = EQ_STORE_DATA;
-       sccb.evbuf.data_id = DI_FCP_DUMP;
+       sccb.evbuf.event_qual = SDIAS_EQ_STORE_DATA;
+       sccb.evbuf.data_id = SDIAS_DI_FCP_DUMP;
        sccb.evbuf.event_id = 4712;
 #ifdef CONFIG_64BIT
-       sccb.evbuf.asa_size = ASA_SIZE_64;
+       sccb.evbuf.asa_size = SDIAS_ASA_SIZE_64;
 #else
-       sccb.evbuf.asa_size = ASA_SIZE_32;
+       sccb.evbuf.asa_size = SDIAS_ASA_SIZE_32;
 #endif
        sccb.evbuf.event_status = 0;
        sccb.evbuf.blk_cnt = nr_blks;
@@ -240,20 +207,19 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks)
        }
 
        switch (sdias_evbuf.event_status) {
-               case EVSTATE_ALL_STORED:
-                       TRACE("all stored\n");
-                       break;
-               case EVSTATE_PART_STORED:
-                       TRACE("part stored: %i\n", sdias_evbuf.blk_cnt);
-                       break;
-               case EVSTATE_NO_DATA:
-                       TRACE("no data\n");
-                       /* fall through */
-               default:
-                       pr_err("Error from SCLP while copying hsa. "
-                              "Event status = %x\n",
-                              sdias_evbuf.event_status);
-                       rc = -EIO;
+       case SDIAS_EVSTATE_ALL_STORED:
+               TRACE("all stored\n");
+               break;
+       case SDIAS_EVSTATE_PART_STORED:
+               TRACE("part stored: %i\n", sdias_evbuf.blk_cnt);
+               break;
+       case SDIAS_EVSTATE_NO_DATA:
+               TRACE("no data\n");
+               /* fall through */
+       default:
+               pr_err("Error from SCLP while copying hsa. Event status = %x\n",
+                      sdias_evbuf.event_status);
+               rc = -EIO;
        }
 out:
        mutex_unlock(&sdias_mutex);