All of lore.kernel.org
 help / color / mirror / Atom feed
From: James Hogan <james.hogan@imgtec.com>
To: Sifan Naeem <sifan.naeem@imgtec.com>,
	Wolfram Sang <wsa@the-dreams.de>,
	linux-i2c@vger.kernel.org
Cc: "Stable kernel (v3.19+)" <stable@vger.kernel.org>
Subject: Re: [PATCH 4/8] i2c: img-scb: fix LOW and HIGH period values for the SCL clock
Date: Tue, 28 Jul 2015 12:27:09 +0100	[thread overview]
Message-ID: <55B7670D.7080806@imgtec.com> (raw)
In-Reply-To: <1437997641-32575-5-git-send-email-sifan.naeem@imgtec.com>

[-- Attachment #1: Type: text/plain, Size: 2385 bytes --]

Hi Sifan,

On 27/07/15 12:47, Sifan Naeem wrote:
> After determining the minimum value for the High period (TCKH) the
> remainder of the internal clock pulses is set as the Low period (TCKL).
> This causes the i2c clock duty cycle to be much less than 50%.
> 
> The fix suggested here, start with TCKH and TCKL at 50% of the internal
> clock pulses and adjusts the TCKH and TCKL values from there if the
> minimum value for TCKL is not met. This will make sure the i2c clock
> duty cycle is at 50% or close 50% whenever possible.
> 
> Fixes: 27bce4 ("i2c: img-scb: Add Imagination Technologies I2C SCB driver")
> Signed-off-by: Sifan Naeem <sifan.naeem@imgtec.com>
> Cc: Stable kernel (v3.19+) <stable@vger.kernel.org>
> ---
>  drivers/i2c/busses/i2c-img-scb.c |   30 +++++++++++++++++-------------
>  1 file changed, 17 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c
> index b4f59e1..51a5be8 100644
> --- a/drivers/i2c/busses/i2c-img-scb.c
> +++ b/drivers/i2c/busses/i2c-img-scb.c
> @@ -1178,25 +1178,29 @@ static int img_i2c_init(struct img_i2c *i2c)
>  	    ((bitrate_khz * clk_period) / 2))
>  		int_bitrate++;
>  
> -	/* Setup TCKH value */
> -	tckh = DIV_ROUND_UP(timing.tckh, clk_period);
> +	/*
> +	 * Setup clock duty cycle, start with 50% and adjust TCKH and TCKL
> +	 * values from there if they don't meet minimum timing requirements
> +	 */
> +	 tckh = int_bitrate / 2;
> +	 tckl = int_bitrate - tckh;

too much indentation here.

Otherwise looks good to me.

Acked-by: James Hogan <james.hogan@imgtec.com>

Cheers
James

>  
> -	if (tckh > 0)
> -		data = tckh - 1;
> -	else
> -		data = 0;
> +	/* Adjust TCKH and TCKL values */
> +	data = DIV_ROUND_UP(timing.tckl, clk_period);
>  
> -	img_i2c_writel(i2c, SCB_TIME_TCKH_REG, data);
> +	if (tckl < data) {
> +		tckl = data;
> +		tckh = int_bitrate - tckl;
> +	}
>  
> -	/* Setup TCKL value */
> -	tckl = int_bitrate - tckh;
> +	if (tckh > 0)
> +		--tckh;
>  
>  	if (tckl > 0)
> -		data = tckl - 1;
> -	else
> -		data = 0;
> +		--tckl;
>  
> -	img_i2c_writel(i2c, SCB_TIME_TCKL_REG, data);
> +	img_i2c_writel(i2c, SCB_TIME_TCKH_REG, tckh);
> +	img_i2c_writel(i2c, SCB_TIME_TCKL_REG, tckl);
>  
>  	/* Setup TSDH value */
>  	tsdh = DIV_ROUND_UP(timing.tsdh, clk_period);
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: James Hogan <james.hogan@imgtec.com>
To: Sifan Naeem <sifan.naeem@imgtec.com>,
	Wolfram Sang <wsa@the-dreams.de>, <linux-i2c@vger.kernel.org>
Cc: "Stable kernel (v3.19+)" <stable@vger.kernel.org>
Subject: Re: [PATCH 4/8] i2c: img-scb: fix LOW and HIGH period values for the SCL clock
Date: Tue, 28 Jul 2015 12:27:09 +0100	[thread overview]
Message-ID: <55B7670D.7080806@imgtec.com> (raw)
In-Reply-To: <1437997641-32575-5-git-send-email-sifan.naeem@imgtec.com>

[-- Attachment #1: Type: text/plain, Size: 2385 bytes --]

Hi Sifan,

On 27/07/15 12:47, Sifan Naeem wrote:
> After determining the minimum value for the High period (TCKH) the
> remainder of the internal clock pulses is set as the Low period (TCKL).
> This causes the i2c clock duty cycle to be much less than 50%.
> 
> The fix suggested here, start with TCKH and TCKL at 50% of the internal
> clock pulses and adjusts the TCKH and TCKL values from there if the
> minimum value for TCKL is not met. This will make sure the i2c clock
> duty cycle is at 50% or close 50% whenever possible.
> 
> Fixes: 27bce4 ("i2c: img-scb: Add Imagination Technologies I2C SCB driver")
> Signed-off-by: Sifan Naeem <sifan.naeem@imgtec.com>
> Cc: Stable kernel (v3.19+) <stable@vger.kernel.org>
> ---
>  drivers/i2c/busses/i2c-img-scb.c |   30 +++++++++++++++++-------------
>  1 file changed, 17 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c
> index b4f59e1..51a5be8 100644
> --- a/drivers/i2c/busses/i2c-img-scb.c
> +++ b/drivers/i2c/busses/i2c-img-scb.c
> @@ -1178,25 +1178,29 @@ static int img_i2c_init(struct img_i2c *i2c)
>  	    ((bitrate_khz * clk_period) / 2))
>  		int_bitrate++;
>  
> -	/* Setup TCKH value */
> -	tckh = DIV_ROUND_UP(timing.tckh, clk_period);
> +	/*
> +	 * Setup clock duty cycle, start with 50% and adjust TCKH and TCKL
> +	 * values from there if they don't meet minimum timing requirements
> +	 */
> +	 tckh = int_bitrate / 2;
> +	 tckl = int_bitrate - tckh;

too much indentation here.

Otherwise looks good to me.

Acked-by: James Hogan <james.hogan@imgtec.com>

Cheers
James

>  
> -	if (tckh > 0)
> -		data = tckh - 1;
> -	else
> -		data = 0;
> +	/* Adjust TCKH and TCKL values */
> +	data = DIV_ROUND_UP(timing.tckl, clk_period);
>  
> -	img_i2c_writel(i2c, SCB_TIME_TCKH_REG, data);
> +	if (tckl < data) {
> +		tckl = data;
> +		tckh = int_bitrate - tckl;
> +	}
>  
> -	/* Setup TCKL value */
> -	tckl = int_bitrate - tckh;
> +	if (tckh > 0)
> +		--tckh;
>  
>  	if (tckl > 0)
> -		data = tckl - 1;
> -	else
> -		data = 0;
> +		--tckl;
>  
> -	img_i2c_writel(i2c, SCB_TIME_TCKL_REG, data);
> +	img_i2c_writel(i2c, SCB_TIME_TCKH_REG, tckh);
> +	img_i2c_writel(i2c, SCB_TIME_TCKL_REG, tckl);
>  
>  	/* Setup TSDH value */
>  	tsdh = DIV_ROUND_UP(timing.tsdh, clk_period);
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2015-07-28 11:27 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-27 11:47 [PATCH 0/8] i2c: img-scb: fixes to support i2c on pistachio Sifan Naeem
2015-07-27 11:47 ` Sifan Naeem
2015-07-27 11:47 ` [PATCH 2/8] i2c: img-scb: do dummy writes before fifo access Sifan Naeem
2015-07-27 11:47   ` Sifan Naeem
     [not found] ` <1437997641-32575-1-git-send-email-sifan.naeem-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2015-07-27 11:47   ` [PATCH 1/8] i2c: img-scb: enable fencing for all versions of the ip Sifan Naeem
2015-07-27 11:47     ` Sifan Naeem
2015-07-27 20:20     ` James Hogan
2015-07-27 20:20       ` James Hogan
2015-07-28  9:26       ` Sifan Naeem
2015-07-28  9:38         ` James Hogan
2015-07-27 11:47   ` [PATCH 3/8] i2c: img-scb: use DIV_ROUND_UP to round divisor values Sifan Naeem
2015-07-27 11:47     ` Sifan Naeem
     [not found]     ` <1437997641-32575-4-git-send-email-sifan.naeem-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2015-07-28 10:45       ` James Hogan
2015-07-28 10:45         ` James Hogan
2015-07-27 11:47   ` [PATCH 4/8] i2c: img-scb: fix LOW and HIGH period values for the SCL clock Sifan Naeem
2015-07-27 11:47     ` Sifan Naeem
2015-07-28 11:27     ` James Hogan [this message]
2015-07-28 11:27       ` James Hogan
2015-07-31 11:12   ` [PATCH 0/8] i2c: img-scb: fixes to support i2c on pistachio Wolfram Sang
2015-07-31 11:12     ` Wolfram Sang
2015-09-07 13:41     ` Ezequiel Garcia
     [not found]       ` <CAAEAJfCW9cEMDZwta5Q6VVEZfzxTDZ50Fx=YeW6bPMnrtKNcbw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-07 13:50         ` Wolfram Sang
2015-09-07 14:22           ` Ezequiel Garcia
     [not found]             ` <CAAEAJfBj+qdv58gzOnqMrmN0486Enzbn3G1L0KhMctMkEkXfTw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-09-07 21:13               ` i2ctransfer (Was: [PATCH 0/8] i2c: img-scb: fixes to support i2c on pistachio) Jean Delvare
2015-07-27 11:47 ` [PATCH 5/8] i2c: img-scb: reset interrupts in img_i2c_soft_reset Sifan Naeem
2015-07-27 11:47   ` Sifan Naeem
     [not found]   ` <1437997641-32575-6-git-send-email-sifan.naeem-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2015-07-28 11:35     ` James Hogan
2015-07-28 11:35       ` James Hogan
2015-07-28 11:46       ` Sifan Naeem
2015-07-28 11:51         ` James Hogan
2015-07-27 11:47 ` [PATCH 6/8] i2c: img-scb: remove start bit detected status after handling Sifan Naeem
2015-07-27 11:47   ` Sifan Naeem
2015-07-28 13:53   ` James Hogan
2015-07-28 13:53     ` James Hogan
2015-07-29 12:49     ` Sifan Naeem
2015-07-27 11:47 ` [PATCH 7/8] i2c: img-scb: improve transaction complete handle Sifan Naeem
2015-07-27 11:47   ` Sifan Naeem
     [not found]   ` <1437997641-32575-8-git-send-email-sifan.naeem-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2015-07-29 12:22     ` James Hogan
2015-07-29 12:22       ` James Hogan
     [not found]       ` <55B8C56A.7050102-1AXoQHu6uovQT0dZR+AlfA@public.gmane.org>
2015-07-29 13:35         ` Sifan Naeem
2015-07-29 13:35           ` Sifan Naeem
2015-07-27 11:47 ` [PATCH 8/8] i2c: img-scb: verify support for requested bit rate Sifan Naeem
2015-07-27 11:47   ` Sifan Naeem
2015-07-29 12:02   ` James Hogan
2015-07-29 12:02     ` James Hogan
2015-07-29 13:34     ` Sifan Naeem

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55B7670D.7080806@imgtec.com \
    --to=james.hogan@imgtec.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=sifan.naeem@imgtec.com \
    --cc=stable@vger.kernel.org \
    --cc=wsa@the-dreams.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.