All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Gehrlein <sew_s@tqs.de>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH 01/10] [ARM] MXC: insert bus busy check in i2c_probe
Date: Mon, 07 Jul 2008 14:21:16 +0200	[thread overview]
Message-ID: <48720A3C.4040206@tqs.de> (raw)
In-Reply-To: <20080705155928.GA9234@game.jcrosoft.org>

Jean-Christophe PLAGNIOL-VILLARD schrieb:
> On 16:50 Fri 04 Jul     , Jens Gehrlein wrote:
>> On fast CPUs the time between two chip queries can become too short
>> to issue clear start and stop conditions. The bus seems to be blocked.
>> This cannot be compensated by just waiting for completed byte transfer.
>> The patch introduces polling of the bus busy bit in the I2C
>> controller's status register before the next bus access is possible.
>>
>> Signed-off-by: Jens Gehrlein <sew_s@tqs.de>
>> ---
>>
>>  drivers/i2c/mxc_i2c.c |   10 ++++++++++
>>  1 files changed, 10 insertions(+), 0 deletions(-)
>>
>>
>> diff --git a/drivers/i2c/mxc_i2c.c b/drivers/i2c/mxc_i2c.c
>> index a218329..6f9306f 100644
>> --- a/drivers/i2c/mxc_i2c.c
>> +++ b/drivers/i2c/mxc_i2c.c
>> @@ -115,6 +115,16 @@ static int rx_byte(void)
>>  int i2c_probe(uchar chip)
>>  {
>>  	int ret;
>> +	int timeout = 100000;
> Could you explain why 100000?
>> +
>> +	/* Check if bus is busy before probing next chip */
>> +	while ((__REG16(I2C_BASE + I2SR) & I2SR_IBB) && --timeout)
>> +		udelay(1);
>> +
>> +	if (timeout == 0) {
>> +		printf ("\nerror: bus blocked\n");
>> +		return -1;
>> +	}
>>  
>>  	__REG16(I2C_BASE + I2CR) = 0; /* Reset module */
>>  	__REG16(I2C_BASE + I2CR) = I2CR_IEN;

You are right. 100 ms is too high, although it should be irrelevant for 
a U-Boot command. Measurement showed, that some 100 microseconds would 
be enough. Do you agree if I set the timeout value to 1 ms? Other proposals?

Kind regards,
Jens

  reply	other threads:[~2008-07-07 12:21 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-04 14:50 [U-Boot-Users] [PATCH 00/10] [ARM] TQMA31: new board Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 01/10] [ARM] MXC: insert bus busy check in i2c_probe Jens Gehrlein
2008-07-05 15:59   ` Jean-Christophe PLAGNIOL-VILLARD
2008-07-07 12:21     ` Jens Gehrlein [this message]
2008-07-07 14:55       ` Wolfgang Denk
2008-07-07 15:24         ` Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 02/10] [ARM] MX31: fix bit masks in function mx31_decode_pll() Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 03/10] [ARM] MX31: fix typos in defines for UART and SPI IO multiplexer pins Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 04/10] [ARM] TQMA31: add new board with i.MX31 processor Jens Gehrlein
2008-07-04 18:28   ` Magnus Lilja
2008-07-06 12:04   ` Magnus Lilja
2008-07-07 10:27   ` Detlev Zundel
2008-07-07 11:26     ` Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 05/10] [ARM] TQMA31: add support for I2C, I2C temperature sensor and I2C-EEPROM Jens Gehrlein
2008-07-08 10:36   ` Jean-Christophe PLAGNIOL-VILLARD
2008-07-08 11:30     ` Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 06/10] [ARM] TQMA31: add support for SPI and SPI device MC13783-RTC Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 07/10] [ARM] TQMA31: adjust voltage regulators in PMIC MC13738 Jens Gehrlein
2008-07-04 18:28   ` Magnus Lilja
2008-07-08  8:55     ` Jens Gehrlein
2008-07-09 16:01       ` Magnus Lilja
2008-07-09 16:11         ` Detlev Zundel
2008-07-09 16:31           ` Jean-Christophe PLAGNIOL-VILLARD
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 08/10] [ARM] TQMA31: adjust pad property of IPU pin FPSHIFT for the display Jens Gehrlein
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 09/10] [ARM] TQMA31: add FPGA configuration flash Jens Gehrlein
2008-07-08 10:37   ` Jean-Christophe PLAGNIOL-VILLARD
2008-07-04 14:50 ` [U-Boot-Users] [PATCH 10/10] [ARM] TQMA31: new kernel param. to pass the eth MAC addr to the Linux eth chip driver Jens Gehrlein
2008-07-05 16:18   ` Jean-Christophe PLAGNIOL-VILLARD
2008-07-07  7:38     ` Jens Gehrlein
2008-07-04 15:01 ` [U-Boot-Users] [PATCH 00/10] [ARM] TQMA31: new board Jens Gehrlein
2008-07-04 16:43   ` Peter Pearse
2008-07-06 22:38     ` Wolfgang Denk
2008-07-06 22:38   ` Wolfgang Denk
2008-07-04 18:28 ` Magnus Lilja

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=48720A3C.4040206@tqs.de \
    --to=sew_s@tqs.de \
    --cc=u-boot@lists.denx.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.