powerpc/powernv: Move GET_FIELD/SET_FIELD to vas.h
authorSukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Tue, 29 Aug 2017 06:23:32 +0000 (23:23 -0700)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 31 Aug 2017 04:26:20 +0000 (14:26 +1000)
Move the GET_FIELD and SET_FIELD macros to vas.h as VAS and other
users of VAS, including NX-842 can use those macros.

There is a lot of related code between the VAS/NX kernel drivers
and skiboot. For consistency, switch the order of parameters in
SET_FIELD to match the order in skiboot.

Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Reviewed-by: Dan Streetman <ddstreet@ieee.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/vas.h
drivers/crypto/nx/nx-842-powernv.c
drivers/crypto/nx/nx-842.h

index 9f81db68f27b4d8baa113fbdd78da11b20fd59e5..7dcf3bded343747a1118db782038f2ee6367fddc 100644 (file)
 #define VAS_THRESH_FIFO_GT_QTR_FULL    2
 #define VAS_THRESH_FIFO_GT_EIGHTH_FULL 3
 
+/*
+ * Get/Set bit fields
+ */
+#define GET_FIELD(m, v)                (((v) & (m)) >> MASK_LSH(m))
+#define MASK_LSH(m)            (__builtin_ffsl(m) - 1)
+#define SET_FIELD(m, v, val)   \
+               (((v) & ~(m)) | ((((typeof(v))(val)) << MASK_LSH(m)) & (m)))
+
 /*
  * Co-processor Engine type.
  */
index 1710f80a09ec3b3227af8e2d04e9d3196dea031c..3abb045cdba72bbf462e81b9cd769e3f2de0bbc6 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <asm/prom.h>
 #include <asm/icswx.h>
+#include <asm/vas.h>
 
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("Dan Streetman <ddstreet@ieee.org>");
@@ -424,9 +425,9 @@ static int nx842_powernv_function(const unsigned char *in, unsigned int inlen,
 
        /* set up CCW */
        ccw = 0;
-       ccw = SET_FIELD(ccw, CCW_CT, nx842_ct);
-       ccw = SET_FIELD(ccw, CCW_CI_842, 0); /* use 0 for hw auto-selection */
-       ccw = SET_FIELD(ccw, CCW_FC_842, fc);
+       ccw = SET_FIELD(CCW_CT, ccw, nx842_ct);
+       ccw = SET_FIELD(CCW_CI_842, ccw, 0); /* use 0 for hw auto-selection */
+       ccw = SET_FIELD(CCW_FC_842, ccw, fc);
 
        /* set up CRB's CSB addr */
        csb_addr = nx842_get_pa(csb) & CRB_CSB_ADDRESS;
index a4eee3bba93736b601ca587fb702b4e88de1b9a9..30929bd7d1a93afbffb1fe65ada0ea6864ef7fc4 100644 (file)
@@ -100,11 +100,6 @@ static inline unsigned long nx842_get_pa(void *addr)
        return page_to_phys(vmalloc_to_page(addr)) + offset_in_page(addr);
 }
 
-/* Get/Set bit fields */
-#define MASK_LSH(m)            (__builtin_ffsl(m) - 1)
-#define GET_FIELD(v, m)                (((v) & (m)) >> MASK_LSH(m))
-#define SET_FIELD(v, m, val)   (((v) & ~(m)) | (((val) << MASK_LSH(m)) & (m)))
-
 /**
  * This provides the driver's constraints.  Different nx842 implementations
  * may have varying requirements.  The constraints are: