From: hunold@linuxtv.org (Michael Hunold)
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: [PATCH][2.6] Add command function to struct i2c_adapter
Date: Thu, 19 May 2005 06:25:17 +0000 [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.
WARNING: multiple messages have this Message-ID (diff)
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:[~2005-05-19 6:25 UTC|newest]
Thread overview: 65+ 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
2005-05-19 6:25 ` Greg KH
2004-09-21 17:10 ` Michael Hunold
2005-05-19 6:25 ` Michael Hunold
2004-09-21 17:39 ` Jon Smirl
2005-05-19 6:25 ` Jon Smirl
2004-09-21 18:05 ` Michael Hunold
2005-05-19 6:25 ` Michael Hunold
2004-09-22 8:56 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-09-22 12:08 ` Jean Delvare
2005-05-19 6:25 ` Jean Delvare
2004-09-22 11:54 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-09-22 13:38 ` Jean Delvare
2005-05-19 6:25 ` Jean Delvare
2004-09-22 13:13 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-09-22 15:40 ` Jon Smirl
2005-05-19 6:25 ` Jon Smirl
2004-09-22 15:56 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-09-22 16:07 ` Jon Smirl
2005-05-19 6:25 ` Jon Smirl
2004-09-22 16:51 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-09-22 17:17 ` Jon Smirl
2005-05-19 6:25 ` Jon Smirl
2004-09-22 18:55 ` Jean Delvare
2005-05-19 6:25 ` Jean Delvare
2004-09-22 18:32 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-09-22 20:04 ` Mark M. Hoffman
2005-05-19 6:25 ` Mark M. Hoffman
2004-09-23 7:41 ` Michael Hunold
2005-05-19 6:25 ` Michael Hunold
2004-09-23 7:48 ` Michael Hunold
2005-05-19 6:25 ` Michael Hunold
2004-09-23 7:09 ` Michael Hunold [this message]
2005-05-19 6:25 ` Michael Hunold
2004-09-23 20:18 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-09-21 20:33 ` Jean Delvare
2005-05-19 6:25 ` Jean Delvare
2004-09-21 21:02 ` Jon Smirl
2005-05-19 6:25 ` Jon Smirl
2004-09-24 17:06 ` Michael Hunold
2005-05-19 6:25 ` Michael Hunold
2004-09-24 18:05 ` Jean Delvare
2005-05-19 6:25 ` Jean Delvare
2004-09-24 20:21 ` Michael Hunold
2005-05-19 6:25 ` Michael Hunold
2004-10-01 6:52 ` Greg KH
2005-05-19 6:25 ` Greg KH
2004-10-01 12:22 ` Adrian Cox
2005-05-19 6:25 ` Adrian Cox
2004-10-01 13:57 ` Jean Delvare
2005-05-19 6:25 ` Jean Delvare
2004-10-01 23:41 ` Greg KH
2005-05-19 6:25 ` Greg KH
-- strict thread matches above, loose matches on Subject: below --
2005-05-19 6:25 [Fwd: [PATCH][2.6] Add command function to struct i2c_adapter] Michael Hunold
2004-09-21 13:28 ` [PATCH][2.6] Add command function to struct i2c_adapter Jean Delvare
2005-05-19 6:25 ` Jean Delvare
2004-09-21 14:38 ` Michael Hunold
2005-05-19 6:25 ` 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 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.