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
next prev 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.