lkml.org 
[lkml]   [2017]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v7 02/12] Move GET_FIELD/SET_FIELD to vas.h
    Date
    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>
    ---

    Changelog[v7]
    [Michael Ellerman] Move the macros to <asm/vas.h> rather than
    to <uapi/asm/vas.h>

    Changelog[v3]
    - Fix order of parameters in nx-842 driver.
    ---
    arch/powerpc/include/asm/vas.h | 8 ++++++++
    drivers/crypto/nx/nx-842-powernv.c | 7 ++++---
    drivers/crypto/nx/nx-842.h | 5 -----
    3 files changed, 12 insertions(+), 8 deletions(-)

    diff --git a/arch/powerpc/include/asm/vas.h b/arch/powerpc/include/asm/vas.h
    index 66a863c..e34d46a 100644
    --- a/arch/powerpc/include/asm/vas.h
    +++ b/arch/powerpc/include/asm/vas.h
    @@ -30,6 +30,14 @@
    #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.
    */
    enum vas_cop_type {
    diff --git a/drivers/crypto/nx/nx-842-powernv.c b/drivers/crypto/nx/nx-842-powernv.c
    index 1710f80..3abb045 100644
    --- a/drivers/crypto/nx/nx-842-powernv.c
    +++ b/drivers/crypto/nx/nx-842-powernv.c
    @@ -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;
    diff --git a/drivers/crypto/nx/nx-842.h b/drivers/crypto/nx/nx-842.h
    index a4eee3b..30929bd 100644
    --- a/drivers/crypto/nx/nx-842.h
    +++ b/drivers/crypto/nx/nx-842.h
    @@ -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:
    --
    2.7.4
    \
     
     \ /
      Last update: 2017-08-24 08:43    [W:4.336 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site