lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v3 5/6] i2c: iproc: handle master read request
    From
    Date


    On 11/2/2020 10:19 PM, Dhananjay Phadke wrote:
    > On Mon, 2 Nov 2020 09:24:32 +0530, Rayagonda Kokatanur wrote:
    >
    >> Handle single or multi byte master read request with or without
    >> repeated start.
    >>
    >> Fixes: c245d94ed106 ("i2c: iproc: Add multi byte read-write support for slave mode")
    >> Signed-off-by: Rayagonda Kokatanur <rayagonda.kokatanur@broadcom.com>
    >> ---
    >> drivers/i2c/busses/i2c-bcm-iproc.c | 215 +++++++++++++++++++++++------
    >> 1 file changed, 170 insertions(+), 45 deletions(-)
    >>
    >> diff --git a/drivers/i2c/busses/i2c-bcm-iproc.c b/drivers/i2c/busses/i2c-bcm-iproc.c
    >> index 7a235f9f5884..22e04055b447 100644
    >> --- a/drivers/i2c/busses/i2c-bcm-iproc.c
    >> +++ b/drivers/i2c/busses/i2c-bcm-iproc.c
    >> @@ -160,6 +160,11 @@
    >>
    >> #define IE_S_ALL_INTERRUPT_SHIFT 21
    >> #define IE_S_ALL_INTERRUPT_MASK 0x3f
    >> +/*
    >> + * It takes ~18us to reading 10bytes of data, hence to keep tasklet
    >> + * running for less time, max slave read per tasklet is set to 10 bytes.
    >> + */
    >> +#define MAX_SLAVE_RX_PER_INT 10
    >>
    >
    > In patch [3/6], you've enabled IS_S_RX_THLD_SHIFT in slave ISR bitmask,
    > however it's not actually used in processing rx events.
    >
    > Instead of hardcoding this threshold here, it's better to add a
    > device-tree knob for rx threshold, program it in controller and handle
    > that RX_THLD interrupt. This will give more flexibility to drain the rx
    > fifo earlier than -
    > (1) waiting for FIFO_FULL interrupt for transactions > 64B.
    > (2) waiting for start of read transaction in case of master write-read.

    The Device Tree is really intended to describe the hardware FIFO size,
    not watermarks, as those tend to be more of a policy/work load decision.
    Maybe this is something that can be added as a module parameter, or
    configurable via ioctl() at some point.
    --
    Florian

    \
     
     \ /
      Last update: 2020-11-04 04:36    [W:3.562 / U:0.640 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site