From: Michael Hunold <hunold@linuxtv.org>
To: Adrian Cox <adrian@humboldt.co.uk>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
sensors@Stimpy.netroedge.com, Jon Smirl <jonsmirl@gmail.com>,
Greg KH <greg@kroah.com>
Subject: Re: [PATCH][2.6] Add command function to struct i2c_adapter
Date: Thu, 23 Sep 2004 09:09:10 +0200 [thread overview]
Message-ID: <41527696.5060002@linuxtv.org> (raw)
In-Reply-To: <1095854048.18365.75.camel@localhost>
Hi,
On 22.09.2004 13:54, Adrian Cox wrote:
> Not in the current Linux DVB code. A frontend driver registers itself
> onto a list, and whenever a DVB card registers its I2C adapter the
> available frontends are probed. My solution would throw away all the
> list handling in dvb_i2c.c entirely.
Kernels including 2.6.9-rc2-mm1 have the proprietary dvb_i2c
implementation inside, ie. no kernel i2c at all. I have recently sent a
patch to Andrew that converts all dvb drivers and frontends to fully use
kernel i2c. The current discussion is completely about the
not-yet-officially-released dvb subsystem using kernel-i2c.
>>All in all I don't see how we can solve the problem without either a "do not
>>probe" flag in the adapter structure or a class bitfield in both the adapter
>>and the client structures. I would be fine with either option unless someone
>>explains how one is better than the other in any particular case.
> What I want is a way for a card driver to create a private I2C adapter,
> and private instances of I2C clients, for purposes of code reuse. The
> card driver would be responsible for attaching those clients to the bus
> and cleaning up the objects on removal. The bus wouldn't be visible in
> sysfs, or accessible from user-mode.
We're having a similar discussion on the linux-dvb mailing list and I
have made a similar suggestion. There shouldn't be such a thing as a
generic i2c bus at all - at least not for specific PCI or AGP cards
having an i2c bus, because you really now what's there.
The adapters should be able to create a specific i2c bus. This bus then
should have a well-defined client<->adapter interface. The adapter
provides an interface clients can use for example to query h/w dependent
informations, like "Is it possible to have chipset XY on your bus?". For
DVB this question can be answered using pci subvendor/subdevice
informations. This avoids the need to add a command() function to struct
i2c_adapter.
If the adapter wants a client to join the bus and the client is really
found, then the client must provide a well-defined set of functions as
well. The adapter can then control the device in a type-safe manner and
doesn't have to control it using the current ioctl interface.
> - Adrian Cox
> Humboldt Solutions Ltd.
We need to keep in mind, that the adapter interface must be a per-client
interface. On PCI devices it's simple: you have a i2c bus bound to a dvb
card and know which chipsets can be there. The bus is dvb specific.
On embedded platforms, however, you usually have one one i2c bus, where
everything is present: dvb frontends, audio/video multiplexers,
digital/analog audio converters, stuff like that.
So if you create *the* i2c bus and invite i2c client to participate at
the party, you need to provide different interfaces to the different
chipsets.
CU
Michael.
next prev parent reply other threads:[~2004-09-23 7:10 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-20 17:19 [PATCH][2.6] Add command function to struct i2c_adapter Michael Hunold
2004-09-21 15:41 ` Greg KH
2004-09-21 17:10 ` Michael Hunold
2004-09-21 17:39 ` Jon Smirl
2004-09-21 18:05 ` Michael Hunold
2004-09-22 8:56 ` Adrian Cox
2004-09-22 12:08 ` Jean Delvare
2004-09-22 11:54 ` Adrian Cox
2004-09-22 13:38 ` Jean Delvare
2004-09-22 13:13 ` Adrian Cox
2004-09-22 15:40 ` Jon Smirl
2004-09-22 15:56 ` Adrian Cox
2004-09-22 16:07 ` Jon Smirl
2004-09-22 16:51 ` Adrian Cox
2004-09-22 17:17 ` Jon Smirl
2004-09-22 18:55 ` Jean Delvare
2004-09-22 18:32 ` Adrian Cox
2004-09-22 20:04 ` Mark M. Hoffman
2004-09-23 7:41 ` Michael Hunold
2004-09-23 7:48 ` Michael Hunold
2004-09-23 7:09 ` Michael Hunold [this message]
2004-09-23 20:18 ` Adrian Cox
2004-09-21 20:33 ` Jean Delvare
2004-09-21 21:02 ` Jon Smirl
2004-09-24 17:06 ` Michael Hunold
2004-09-24 18:05 ` Jean Delvare
2004-09-24 20:21 ` Michael Hunold
2004-10-01 6:52 ` Greg KH
2004-10-01 12:22 ` Adrian Cox
2004-10-01 13:57 ` Jean Delvare
2004-10-01 23:41 ` Greg KH
[not found] <41500BED.8090607@linuxtv.org>
2004-09-21 13:28 ` Jean Delvare
2004-09-21 14:38 ` Michael Hunold
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=41527696.5060002@linuxtv.org \
--to=hunold@linuxtv.org \
--cc=adrian@humboldt.co.uk \
--cc=greg@kroah.com \
--cc=jonsmirl@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sensors@Stimpy.netroedge.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox