[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <861d734f-c776-f70b-e414-a4b32c0f991e@gmail.com>
Date: Tue, 3 Nov 2020 19:35:49 -0800
From: Florian Fainelli <f.fainelli@...il.com>
To: Dhananjay Phadke <dphadke@...ux.microsoft.com>,
rayagonda.kokatanur@...adcom.com
Cc: andriy.shevchenko@...ux.intel.com,
bcm-kernel-feedback-list@...adcom.com, brendanhiggins@...gle.com,
f.fainelli@...il.com, linux-arm-kernel@...ts.infradead.org,
linux-i2c@...r.kernel.org, linux-kernel@...r.kernel.org,
lori.hikichi@...adcom.com, rjui@...adcom.com,
sbranden@...adcom.com, wsa@...nel.org
Subject: Re: [PATCH v3 5/6] i2c: iproc: handle master read request
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@...adcom.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
Powered by blists - more mailing lists