lkml.org 
[lkml]   [2012]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] regmap: Add support for device with 24 data bits.
    Date
    Add support for devices with 24 data bits.

    Signed-off-by: Marc Reilly <marc@cpdesign.com.au>
    ---
    drivers/base/regmap/regmap.c | 23 +++++++++++++++++++++++
    1 files changed, 23 insertions(+), 0 deletions(-)

    diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
    index 253882d..9cfe203 100644
    --- a/drivers/base/regmap/regmap.c
    +++ b/drivers/base/regmap/regmap.c
    @@ -126,6 +126,15 @@ static void regmap_format_16(void *buf, unsigned int val)
    b[0] = cpu_to_be16(val);
    }

    +static void regmap_format_24(void *buf, unsigned int val)
    +{
    + u8 *b = buf;
    +
    + b[0] = val >> 16;
    + b[1] = val >> 8;
    + b[2] = val;
    +}
    +
    static void regmap_format_32(void *buf, unsigned int val)
    {
    __be32 *b = buf;
    @@ -149,6 +158,16 @@ static unsigned int regmap_parse_16(void *buf)
    return b[0];
    }

    +static unsigned int regmap_parse_24(void *buf)
    +{
    + u8 *b = buf;
    + unsigned int ret = b[2];
    + ret |= ((unsigned int)b[1]) << 8;
    + ret |= ((unsigned int)b[0]) << 16;
    +
    + return ret;
    +}
    +
    static unsigned int regmap_parse_32(void *buf)
    {
    __be32 *b = buf;
    @@ -273,6 +292,10 @@ struct regmap *regmap_init(struct device *dev,
    map->format.format_val = regmap_format_16;
    map->format.parse_val = regmap_parse_16;
    break;
    + case 24:
    + map->format.format_val = regmap_format_24;
    + map->format.parse_val = regmap_parse_24;
    + break;
    case 32:
    map->format.format_val = regmap_format_32;
    map->format.parse_val = regmap_parse_32;
    --
    1.7.3.4


    \
     
     \ /
      Last update: 2012-03-16 03:11    [W:0.021 / U:59.792 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site