All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
To: i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
Subject: Re: [PATCHv2 3/3] Add platform driver on top of the new pca-algorithm
Date: Fri, 07 Mar 2008 16:52:05 +0100	[thread overview]
Message-ID: <fqrob6$3e6$1@ger.gmane.org> (raw)
In-Reply-To: <20080212225306.4cf2bd74-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>

Hi Jean,

nearly a month since your reply, I am sorry. Work was shifting in a 
different direction meanwhile.

(Everything I did not comment on is already fixed as suggested)

>> +/* Read/Write functions for different register alignments */
>> +
>> +static int i2c_pca_pf_readbyte8(void *pd, int reg)
>> +{
>> +	struct i2c_pca_pf_data *i2c = pd;
>> +	return ioread8(i2c->reg_base + reg);
>> +}
>> +
>> +static int i2c_pca_pf_readbyte16(void *pd, int reg)
>> +{
>> +	struct i2c_pca_pf_data *i2c = pd;
>> +	return ioread8(i2c->reg_base + reg * 2);
> 
> Shouldn't this be ioread16?
I don't think so. The registers get scattered differently in the 
address-room, but their size itself is still 8 bit. I expect that 
ioread8 gives me just those 8 bits I want, hiding that some busses 
actually do 32-bit accesses only. Am I wrong?

>> +	if (i2c->irq) {
>> +		ret = wait_event_interruptible(i2c->wait,
>> +			i2c->algo_data.read_byte(i2c, I2C_PCA_CON)
>> +			& I2C_PCA_CON_SI);
>> +	} else {
>> +		while ((i2c->algo_data.read_byte(i2c, I2C_PCA_CON)
>> +				& I2C_PCA_CON_SI) == 0)
>> +			udelay(100);
> 
> No timeout?
You got a point there. The thing is that the underlying pca-algorithm 
does not have a timeout when expecting this condition (interrupt bit 
set). Even when using interrupts instead of polling, it will just sleep 
forever, if there goes something _really_ wrong. I could copy at least 
this behaviour by replacing the udelay(100); with an msleep(x) with x 
being a module parameter. I hope this is good enough, connecting the IRQ 
is preferred anyhow. (I am afraid that I don't have the time to add a 
sane and tested timeout mechanism to the algorithm)

> The i2c_clock gets to be copied to the driver data structure, but for
> the gpio you have to fetch it from the platform device data? Not very
> consistent.
ACK.

>> +	i2c->adap.owner   = THIS_MODULE;
> No alignment in code please.
Really? Well, if you say so...

> That's a bit confusing given that the driver isn't named i2c-pca9564.
> Other drivers usually include the address to distinguish between
> multiple device for example (..., "PCA9564 adapter at %04lx",
> res->start).
Okay, will look for something better.

>> +struct i2c_pca9564_pf_platform_data {
> "pf" is redundant with "platform", isn't it?
My intention was that 'i2c_pca9564_pf_' is the prefix for everything 
related to this platform-driver, and platform_data happens to be 
...well... the platform data :)

>> +	int timeout;		/* timeout = this value * 10us */
> A rather curious time unit if you ask me.
Given by the algorithm. I didn't question it.

Best wishes,

    Wolfram

-- 
   Dipl.-Ing. Wolfram Sang | http://www.pengutronix.de
  Pengutronix - Linux Solutions for Science and Industry


_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

  parent reply	other threads:[~2008-03-07 15:52 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-06 20:20 [PATCHv2 0/3] PCA9564 platform driver Wolfram Sang
2008-02-06 20:20 ` [PATCHv2 1/3] Remove trailing whitespaces and unnecessary UTF Wolfram Sang
     [not found]   ` <20080206203036.394734224-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-02-12 16:31     ` Jean Delvare
2008-02-06 20:20 ` [PATCHv2 2/3] Extend the PCA9564-algorithm and adapt its only user (pca-isa) Wolfram Sang
     [not found]   ` <20080206203036.863518353-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-02-12 17:14     ` Jean Delvare
2008-02-06 20:20 ` [PATCHv2 3/3] Add platform driver on top of the new pca-algorithm Wolfram Sang
     [not found]   ` <20080206203037.228001815-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-02-12 21:53     ` Jean Delvare
     [not found]       ` <20080212225306.4cf2bd74-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-07 15:52         ` Wolfram Sang [this message]
2008-03-08 10:13           ` Jean Delvare
     [not found]             ` <20080308111337.440a7c83-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-10 11:26               ` Wolfram Sang
     [not found]                 ` <20080310112640.GB12128-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-03-10 21:31                   ` Jean Delvare
     [not found]                     ` <20080310223116.73277c4f-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-14 14:50                       ` Wolfram Sang
     [not found]                         ` <20080314145010.GA28612-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-03-14 18:46                           ` Jean Delvare
     [not found]                             ` <20080314194628.07630698-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-16 14:28                               ` Wolfram Sang
     [not found]                                 ` <20080316142834.GA4485-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
2008-03-16 15:44                                   ` Jean Delvare
     [not found]                                     ` <20080316164457.19157e0c-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-03-16 19:55                                       ` Trent Piepho
2008-03-12 10:43                   ` Jean Delvare

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='fqrob6$3e6$1@ger.gmane.org' \
    --to=w.sang-bicnvbalz9megne8c9+irq@public.gmane.org \
    --cc=i2c-GZX6beZjE8VD60Wz+7aTrA@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.