Re: [PATCH 1/8] i2c: img-scb: enable fencing for all versions of the ip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 28/07/15 10:26, Sifan Naeem wrote:
> Hi James,
> 
>> -----Original Message-----
>> From: James Hogan
>> Sent: 27 July 2015 21:21
>> To: Sifan Naeem
>> Cc: Wolfram Sang; linux-i2c@xxxxxxxxxxxxxxx; Stable kernel (v3.19+)
>> Subject: Re: [PATCH 1/8] i2c: img-scb: enable fencing for all versions of the ip
>>
>> Hi Sifan,
>>
>> On Mon, Jul 27, 2015 at 12:47:14PM +0100, Sifan Naeem wrote:
>>> The code to read from the master read fifo, and write to the master
>>> write fifo, checks a bit in an SCB register before every byte to
>>> ensure that the fifo is not full (write fifo) or empty (read fifo).
>>> Due to clock domain crossing inside the SCB block the updated value of
>>> this bit is only visible after 2 cycles.
>>>
>>> The scb_wr_rd_fence() function does 2 dummy writes (to the read-only
>>> revision register), and it's called before reading from or writing to
>>> the fifos to ensure that subsequent reads of the fifo status bits do
>>> not read stale values.
>>>
>>> As the 2 dummy writes are required in all versions of the ip, the
>>> version check is dropped.
>>
>> Is it anticipated that a future version of the hardware will probably resolve
>> the clock domain crossing issue? If so fine, but if not its probably worth
>> removing need_wr_rd_fence.
>>
> Yes, it's expected to be fixed in the future, albeit not in the near future.

Okay, no problem then.

> 
>>>
>>> Fixes: 27bce4 ("i2c: img-scb: Add Imagination Technologies I2C SCB
>>> driver")
>>
>> I believe 12 digits of SHA1 is recommended now, to avoid collisions. I suggest
>> doing this:
>> $ git config --global core.abbrev 12
>>
> Should I send a new patch with 12 digit SHA1?

I need to review the other patches anyway (sorry i've been slow to look
through them properly).

> 
>>> Signed-off-by: Sifan Naeem <sifan.naeem@xxxxxxxxxx>
>>> Cc: Stable kernel (v3.19+) <stable@xxxxxxxxxxxxxxx>
>>
>> That's a fairly non-conventional way to specify stable versions. The
>> recommended way to Cc stable according to
>> Documentation/stable_kernel_rules.txt is more like this:
>> Cc: <stable@xxxxxxxxxxxxxxx> # 3.19.x-
>>
> 
> I go this error when doing that way:
> 
> (body) Adding cc: Sifan Naeem <sifan.naeem@xxxxxxxxxx> from line 'Signed-off-by: Sifan Naeem <sifan.naeem@xxxxxxxxxx>'
> (body) Adding cc: <stable@xxxxxxxxxxxxxxx> # 4.1 from line 'Cc: <stable@xxxxxxxxxxxxxxx> # 4.1'
> Use of uninitialized value $cc in string eq at /usr/lib/git-core/git-send-email line 983.
> Use of uninitialized value $cc in quotemeta at /usr/lib/git-core/git-send-email line 983.
> W: unable to extract a valid address from: <stable@xxxxxxxxxxxxxxx> # 4.1
> W: unable to extract a valid address from: <stable@xxxxxxxxxxxxxxx> # 4.1

Sounds like you're using an old version of git. Something similar is
described here:
http://comments.gmane.org/gmane.comp.version-control.git/210042

If the warning can be ignored, you can always add stable back to cc list
with --cc=stable@xxxxxxxxxxxxxxx.

Cheers
James

> 
>> Patch looks fine though
>>
>> Acked-by: James Hogan <james.hogan@xxxxxxxxxx>
>>
> Thanks,
> Sifan
> 
>> Thanks
>> James
>>
>>> ---
>>>  drivers/i2c/busses/i2c-img-scb.c |    8 ++------
>>>  1 file changed, 2 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/drivers/i2c/busses/i2c-img-scb.c
>>> b/drivers/i2c/busses/i2c-img-scb.c
>>> index 00ffd66..5c3c615 100644
>>> --- a/drivers/i2c/busses/i2c-img-scb.c
>>> +++ b/drivers/i2c/busses/i2c-img-scb.c
>>> @@ -278,8 +278,6 @@
>>>  #define ISR_COMPLETE(err)	(ISR_COMPLETE_M | (ISR_STATUS_M &
>> (err)))
>>>  #define ISR_FATAL(err)		(ISR_COMPLETE(err) | ISR_FATAL_M)
>>>
>>> -#define REL_SOC_IP_SCB_2_2_1	0x00020201
>>> -
>>>  enum img_i2c_mode {
>>>  	MODE_INACTIVE,
>>>  	MODE_RAW,
>>> @@ -1120,10 +1118,8 @@ static int img_i2c_init(struct img_i2c *i2c)
>>>  		return -EINVAL;
>>>  	}
>>>
>>> -	if (rev == REL_SOC_IP_SCB_2_2_1) {
>>> -		i2c->need_wr_rd_fence = true;
>>> -		dev_info(i2c->adap.dev.parent, "fence quirk enabled");
>>> -	}
>>> +	/* Fencing enabled by default. */
>>> +	i2c->need_wr_rd_fence = true;
>>>
>>>  	bitrate_khz = i2c->bitrate / 1000;
>>>  	clk_khz = clk_get_rate(i2c->scb_clk) / 1000;
>>> --
>>> 1.7.9.5
>>>

Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]