From: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: Guennadi Liakhovetski <g.liakhovetski-Mmb7MZpHnFY@public.gmane.org>
Cc: Darius Augulis
<augulis.darius-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Sascha Hauer <s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW@public.gmane.org,
linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Ben Dooks <ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org>
Subject: [PATCH] imx/i2c: Make disable_delay a per-device variable
Date: Mon, 30 Mar 2009 16:54:09 +0200 [thread overview]
Message-ID: <20090330145409.GD3058@pengutronix.de> (raw)
In-Reply-To: <Pine.LNX.4.64.0903301548570.4455-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2427 bytes --]
On Mon, Mar 30, 2009 at 03:50:28PM +0200, Guennadi Liakhovetski wrote:
> Ok, I just was informed, that there is a hardware bug on the board I am
> using. So, please ignore my objections. Sorry for the wasted time.
Well, not completely wasted: We found a bug :) Patch follows, Ben can
you add it?
Regards,
Wolfram
===
'disable_delay' was static which is wrong as it is calculated using the per-device
bus speed. This patch turns 'disable_delay' into a per-device variable.
Reported-by: Sascha Hauer <s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
Signed-off-by: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
---
drivers/i2c/busses/i2c-imx.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
Index: .kernel/drivers/i2c/busses/i2c-imx.c
===================================================================
--- .kernel.orig/drivers/i2c/busses/i2c-imx.c
+++ .kernel/drivers/i2c/busses/i2c-imx.c
@@ -86,8 +86,6 @@
/** Variables ******************************************************************
*******************************************************************************/
-static unsigned int disable_delay; /* Dummy delay */
-
/*
* sorted list of clock divider, register value pairs
* taken from table 26-5, p.26-9, Freescale i.MX
@@ -121,6 +119,7 @@ struct imx_i2c_struct {
int irq;
wait_queue_head_t queue;
unsigned long i2csr;
+ unsigned int disable_delay;
};
/** Functions for IMX I2C adapter driver ***************************************
@@ -212,7 +211,7 @@ static void i2c_imx_stop(struct imx_i2c_
* This delay caused by an i.MXL hardware bug.
* If no (or too short) delay, no "STOP" bit will be generated.
*/
- udelay(disable_delay);
+ udelay(i2c_imx->disable_delay);
/* Disable I2C controller */
writeb(0, i2c_imx->base + IMX_I2C_I2CR);
}
@@ -243,7 +242,7 @@ static void __init i2c_imx_set_clk(struc
* This delay is used in I2C bus disable function
* to fix chip hardware bug.
*/
- disable_delay = (500000U * i2c_clk_div[i][0]
+ i2c_imx->disable_delay = (500000U * i2c_clk_div[i][0]
+ (i2c_clk_rate / 2) - 1) / (i2c_clk_rate / 2);
/* dev_dbg() can't be used, because adapter is not yet registered */
--
Pengutronix e.K. | Wolfram Sang |
Industrial Linux Solutions | http://www.pengutronix.de/ |
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
next prev parent reply other threads:[~2009-03-30 14:54 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-24 8:47 [PATCH 1/5] I2C driver for MXC Darius
[not found] ` <49C89E13.7040801-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-03-24 9:42 ` Wolfram Sang
[not found] ` <20090324094215.GA3471-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2009-03-24 9:46 ` Darius
[not found] ` <49C8ABE5.40408-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-03-25 9:26 ` Wolfram Sang
[not found] ` <20090325092625.GA3029-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2009-03-25 10:03 ` Darius Augulis
[not found] ` <49CA017D.20005-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-03-25 10:43 ` Wolfram Sang
[not found] ` <20090325104357.GB3029-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2009-03-28 21:36 ` Guennadi Liakhovetski
2009-03-30 7:48 ` Darius Augulis
[not found] ` <d7f267fd0903300048p7caee6e0ne63916b986b132b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-03-30 9:26 ` Guennadi Liakhovetski
[not found] ` <Pine.LNX.4.64.0903301124040.4455-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
2009-03-30 9:11 ` Darius Augulis
2009-03-30 9:51 ` Sascha Hauer
[not found] ` <20090330095147.GP7861-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2009-03-30 9:58 ` Guennadi Liakhovetski
[not found] ` <Pine.LNX.4.64.0903301156060.4455-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
2009-03-30 9:03 ` Darius Augulis
[not found] ` <49D08AE4.1090102-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-03-30 13:50 ` Guennadi Liakhovetski
[not found] ` <Pine.LNX.4.64.0903301548570.4455-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
2009-03-30 14:54 ` Wolfram Sang [this message]
[not found] ` <20090330145409.GD3058-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2009-04-02 8:40 ` [PATCH] imx/i2c: Make disable_delay a per-device variable Guennadi Liakhovetski
2009-04-02 11:03 ` Darius Augulis
2009-03-31 2:54 ` [PATCH 1/5] I2C driver for MXC Richard Zhao
[not found] ` <4e090d470903301954h2b3174b5n4b6c41b02cf7b62c-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-03-31 11:48 ` Darius Augulis
2009-04-01 23:06 ` Guennadi Liakhovetski
[not found] ` <Pine.LNX.4.64.0904020105300.5389-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
2009-04-02 6:32 ` Darius Augulis
[not found] ` <Pine.LNX.4.64.0903282207480.9903-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
2009-03-30 0:30 ` Ben Dooks
[not found] ` <20090330003012.GM19758-elnMNo+KYs3pIgCt6eIbzw@public.gmane.org>
2009-03-30 8:53 ` Darius Augulis
2009-03-31 11:02 ` Darius Augulis
[not found] ` <49D1F85C.8040703-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-03-31 11:08 ` Wolfram Sang
2009-03-30 8:46 ` Sascha Hauer
[not found] ` <20090330084655.GO7861-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2009-03-30 9:23 ` Guennadi Liakhovetski
2009-03-30 9:24 ` Mark Brown
[not found] ` <20090330092402.GA31781-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2009-03-30 9:37 ` Guennadi Liakhovetski
[not found] ` <Pine.LNX.4.64.0903301128540.4455-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
2009-03-30 9:07 ` Darius Augulis
2009-04-01 11:57 ` Holger Schurig
[not found] ` <200904011357.03226.hs4233-x6+DxXLjN1AJvtFkdXX2Hg4jNU5vUVPG@public.gmane.org>
2009-04-02 6:32 ` Darius Augulis
2009-04-01 11:58 ` Holger Schurig
[not found] ` <200904011358.21191.hs4233-x6+DxXLjN1AJvtFkdXX2Hg4jNU5vUVPG@public.gmane.org>
2009-04-03 12:35 ` Sascha Hauer
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=20090330145409.GD3058@pengutronix.de \
--to=w.sang-bicnvbalz9megne8c9+irq@public.gmane.org \
--cc=augulis.darius-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=ben-linux-elnMNo+KYs3YtjvyW6yDsg@public.gmane.org \
--cc=g.liakhovetski-Mmb7MZpHnFY@public.gmane.org \
--cc=linux-arm-kernel-xIg/pKzrS19vn6HldHNs0ANdhmdF6hFW@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
/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.