lkml.org 
[lkml]   [2013]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 3/8] regmap: Add support for using regmap over ssbi
    On 12/10/13 15:50, Mark Brown wrote:
    > On Tue, Dec 10, 2013 at 03:35:18PM -0800, Stephen Boyd wrote:
    >
    >> + while (val_size) {
    >> + ret = ssbi_read(context, *(u16 *)reg, val, 1);
    >> + if (ret)
    >> + return ret;
    >> + reg += sizeof(u16);
    >> + val += sizeof(u8);
    >> + val_size -= sizeof(u8);
    > I'd expect this to generate out of bounds accesses and bad interactions
    > on the bus if we go through the loop more than once since it appears to
    > incrementing the address of reg for every register. I'm also having a
    > hard time understanding why this is doing a read per byte, ssbi_read()
    > seems to map fairly directly onto the interface of the operation so
    > there doesn't seem to be any reason for this loop to exist in the first
    > place.

    ssbi_read() just reads the same register x number of times and doesn't
    do any sort of incrementing of address. My understanding was that
    regmap_bulk_read() will read incrementing addresses and then call down
    into this code with the sequential addresses formatted into the reg
    buffer. That was the flaw. Instead we need to take reg and then
    increment reg by 1 every time through this loop. Or should we just have
    use_single_rw == true?

    >
    > Has this been tested?

    Yes. But so far they've all been single register reads.

    >
    > It'd be helpful to CC the entire series, or at least the patches this
    > builds on...

    Sure, will do next time.

    --
    Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
    hosted by The Linux Foundation



    \
     
     \ /
      Last update: 2013-12-11 01:41    [W:2.917 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site