From: Rodolfo Giometti <giometti-AVVDYK/kqiJWk0Htik3J/w@public.gmane.org>
To: Guennadi Liakhovetski <g.liakhovetski-Mmb7MZpHnFY@public.gmane.org>
Cc: i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
Subject: Re: Complex I2C device
Date: Thu, 31 Jan 2008 10:16:19 +0100 [thread overview]
Message-ID: <20080131091619.GI9444@enneenne.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0801302126150.6547-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 3387 bytes --]
On Wed, Jan 30, 2008 at 09:32:38PM +0100, Guennadi Liakhovetski wrote:
> Hi Rodolfo,
>
> On Wed, 30 Jan 2008, Rodolfo Giometti wrote:
>
> > my custom board has a «complex» device... let me explain better: it's
> > formed by a custom I2C device and an I/O extender PCA9539.
> >
> > Ascii art:
> >
> >
> > +---------+
> > --+---+ |
> > | | PCA9539 |
> > | +---------+
> > Bus I2C ->> | | | |
> > | | | | <<--- GPIOs
> > | | | |
> > | +---------+
> > +---+ |
> > | CHIP |
> > +---------+
> >
> > Some input GPIOs of CHIP are managed by the PCA9539. So fisically I
> > have two devices but logically they are merged together into one.
> >
> > I can send commands to CHIP by both I2C bus and the GPIOs, which in
> > turn are controlled by the PCA9539.
> >
> > Can you please suggest me the best way to manage this problem? My
> > solution was to provide PCA9539's driver of some exported symbols and
> > using them into the CHIP's driver. Is that right? Or, can I "call" (in
> > any way) PCA9539 driver's methods from CHIP's driver?
>
> First, you want to use gpiolib, which in -mm tree now lives under
> drivers/gpio and includes a driver for pca9539. With it the pca9539 driver
> registers a gpio controller with the system, and then your driver for the
> other part can just request respective GPIOs as if they were normal CPU
> GPIOs or whatever else. And toggle them using the standard API. I will
> (hopefully tomorrow) post an example of exactly this to the
> video4linux-list-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org list. In my case this other chip is a CMOS
> camera.
Great, this would be a good solution for this scenario... but I'm
looking something more "general". A related problem of mine is on
another custom board which has the following:
+---------+
--+---+ Battery |
| | Manager |
| +---------+
Bus I2C ->> |
|
|
| +---------+
+---+ |
| CHIP |
+---------+
A (complex) battery pack are managed by a "battery manager" and a
custom chip connected by the I2C bus (my hardware designer _loves_ I2C
bus :). Even these devices can be logically considered as only one
(big) battery...
Looking at I2C code, which uses the new style driver model, I see the
function i2c_register_board_info() where we can specify the bus number
and the devices list attached on that I2C bus, so I suppose we can add
a function as:
struct i2c_client *i2c_find_client(int busnum, unsigned short addr);
which can return the i2c_client struct associated to the given bus
number and i2c address.
This should resolve any possible problem related to every I2C
"complex" device. Shouldn't it?
Thanks for your help,
Rodolfo
--
GNU/Linux Solutions e-mail: giometti-AVVDYK/kqiJWk0Htik3J/w@public.gmane.org
Linux Device Driver giometti-kaDoWcXyVrEAvxtiuMwx3w@public.gmane.org
Embedded Systems giometti-k2GhghHVRtY@public.gmane.org
UNIX programming phone: +39 349 2432127
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 157 bytes --]
_______________________________________________
i2c mailing list
i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
http://lists.lm-sensors.org/mailman/listinfo/i2c
next prev parent reply other threads:[~2008-01-31 9:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-30 14:46 Complex I2C device Rodolfo Giometti
[not found] ` <20080130144657.GA9444-AVVDYK/kqiJWk0Htik3J/w@public.gmane.org>
2008-01-30 20:32 ` Guennadi Liakhovetski
[not found] ` <Pine.LNX.4.64.0801302126150.6547-0199iw4Nj15frtckUFj5Ag@public.gmane.org>
2008-01-31 9:16 ` Rodolfo Giometti [this message]
[not found] ` <20080131091619.GI9444-AVVDYK/kqiJWk0Htik3J/w@public.gmane.org>
2008-02-19 13:21 ` Jean Delvare
[not found] ` <20080219142133.2e022910-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2008-02-19 14:10 ` Rodolfo Giometti
[not found] ` <20080219141049.GD8190-AVVDYK/kqiJWk0Htik3J/w@public.gmane.org>
2008-02-19 14:23 ` 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=20080131091619.GI9444@enneenne.com \
--to=giometti-avvdyk/kqijwk0htik3j/w@public.gmane.org \
--cc=g.liakhovetski-Mmb7MZpHnFY@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.