Re: [i2c] Question about i2c new style modle

2008-10-12 Thread Wolfram Sang
Hello Wen,

On Sun, Oct 12, 2008 at 02:35:49PM +0800, Wen Wang wrote:

Can anyone please help to tell me if I have to upgrade my I2C client
driver from legacy binding model to new style binding model in 2.6.27
kernel or not?

It is not required yet, but it is always a good idea to move to the new
binding (which will be required somewhen, nevertheless).

If I have to :(, I don't know which part of code will
update the board info about I2C devices or this should be done by the
client driver?

I am not sure if I understood what you meant with updating the board
info. You supply i2c_board_info in your board init code and when the
i2c adapter is initialized, it will call the client drivers
probe-function. Maybe the guide in Documentation/i2c/upgrading-clients
will further help you?

All the best,

   Wolfram

-- 
  Dipl.-Ing. Wolfram Sang | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry


signature.asc
Description: Digital signature
___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

Re: [i2c] Question about i2c new style modle

2008-10-12 Thread Wen Wang
 Hi Wolfram,

Thank you for your quick response, really appreciate.

You're saying You supply i2c_board_info in your board init code and when
the
i2c adapter is initialized, but I'm quite sure there won't be a such
static i2c_board_info in the board init code.

And I'm just wonder if there is a dynamic detect method to go?

Here is my proposed code, can you please help to correct it if I'm wrong?

static const unsigned short normal_i2c[] = { DEVICE_ADDRESS, I2C_CLIENT_END
};
I2C_CLIENT_INSMOD(foo);

static int foo_detect(struct i2c_client *client, int kind,
 struct i2c_board_info *info)
{
 /* Things here */
 return 0;
}

static int foo_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
  /* Things here */
 return 0;
}

static int foo_remove(struct i2c_client *client)
{
 /* Things here */
 return 0;
}

static const struct i2c_device_id foo_id[] = {
 { foo, 0 },
 { }
};

static struct i2c_driver foo_driver = {
 .driver = {
 .name = foo,
 },
 .probe  = foo_probe,
 .remove  = foo_remove,
 .id_table = foo_id,
 .class  = I2C_CLASS_CAM_DIGITAL,
 .detect  = foo_detect,
 .address_data = addr_data,
};

Best Regards
Wen
___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c

Re: [i2c] Question about i2c new style modle

2008-10-12 Thread Wolfram Sang
Hello Wen,

On Sun, Oct 12, 2008 at 07:52:08PM +0800, Wen Wang wrote:

i2c adapter is initialized, but I'm quite sure there won't be a such
static i2c_board_info in the board init code.

Well, you could add one :)

And I'm just wonder if there is a dynamic detect method to go?

There is also Documentation/i2c/writing-clients with a chapter about
Device creation and Device detection using the standard driver model.
For reference examples, just look in drivers/hwmon/. There should be
plenty of drivers which use a detect-callback, in case you need this.

All the best,

   Wolfram

-- 
  Dipl.-Ing. Wolfram Sang | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry


signature.asc
Description: Digital signature
___
i2c mailing list
i2c@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/i2c