public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Michael Hunold <hunold-ml@web.de>
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:48:51 +0200	[thread overview]
Message-ID: <41527FE3.9000809@web.de> (raw)
In-Reply-To: <1095877951.18365.232.camel@localhost>

Hi,

On 22.09.2004 20:32, Adrian Cox wrote:
>>Aha, this is an interesting point (which was missing from your previous
>>explanation). The base of your proposal would be to have several small i2c
>>"trees" (where a tree is a list of adapters and a list of clients) instead of
>>a larger, unique one. This would indeed solve a number of problems, and I
>>admit that it is somehow equivalent to Michael's classes in that it
>>efficiently prevents the hardware monitoring clients from probing the video
>>stuff. The rest is just details internal to each "tree". As I understand it,
>>each video device would be a tree on itself, while the whole hardware
>>monitoring stuff would constitute one (bigger) tree. Correct?

> I've been rereading the code, and it could be even simpler. How about
> this:
> 
> 1) The card driver defines an i2c_adapter structure, but never calls
> i2c_add_adapter(). The only extra thing it needs to do is to initialise
> the semaphores in the structure.
> 2) The frontend calls i2c_transfer() directly.
> 3) The i2c core never gets involved, and there is never any i2c_client
> structure.
> 
> This gives us the required reuse of the I2C algo-bit code, without any
> of the list walking or device probing being required.

This is the way the linux-dvb guys are currently favouring.

In some cases there should be an adapter that has been registered with 
i2c_add_adapter() because there can always be other drivers (audio/video 
multiplexes and the like) that you cannot get your hands on because they 
are provided by the manufacturer of some embedded platform.

For some cards (mostly bt8x8 based, ie. the core parts are driven by the 
"bttv" driver) and hybrid cards (ie. dvb cards that have a separate 
analog video input) the common i2c bus cannot go away, but it should be 
protected by proper .class entries in both the clients and adapters.

We think about splitting the frontend drivers into library parts, ie. 
library functions for demodulators (the current frontend drivers) and 
h/w dependent plls (or tuners).

Because of the fact the pci device knows which devices are present on 
the bus, it can register and configure the demod, pll and other specific 
dvb devices with direct i2c_transfer()s directly. If there are multiple 
combinations possible, it can use the library to probe as well.

The question we are currently facing is: are the frontend or demod i2c 
drivers real and independent i2c clients like thermal sensors or are 
they part of a h/w dependent design that should better be configured on 
a library basis?

If they are independend, then we need i2c bus types and type-safe 
client<=>adapter communication to exchange configuration and control 
informations, because the ioctl interface currently works from the 
adapter to the client and is not type safe.
Another question is, if this is probably too bloated. Think of simple 
matrix switch chipsets: the only "interface" they have is "set input a 
to output b".

> - Adrian Cox
> Humboldt Solutions Ltd.

CU
Michael.

  parent reply	other threads:[~2004-09-23  7:49 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 [this message]
2004-09-23  7:09               ` Michael Hunold
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=41527FE3.9000809@web.de \
    --to=hunold-ml@web.de \
    --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