mirror of https://gitee.com/openkylin/linux.git
i2c: S3C2410: Pass the I2C bus number via drivers platform data
Allow the platform data to specify the bus bumber that the new I2C bus will be given. This is to allow the use of the board registration mechanism to specify the new style of I2C device registration which allows boards to provide a list of attached devices. Note, as discussed on the mailing list, we have dropped backwards compatibility of adding an dynamic bus number as it should not affect most boards to have the bus pinned to 0 if they have either not specified platform data for driver. Any board supplying platform data will automatically have the bus_num field set to 0, and anyone who needs the driver on a different bus number can supply platform data to set bus_num. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
This commit is contained in:
parent
c9272c4f9f
commit
399dee2371
|
@ -752,9 +752,12 @@ static int s3c24xx_i2c_init(struct s3c24xx_i2c *i2c)
|
|||
static int s3c24xx_i2c_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct s3c24xx_i2c *i2c = &s3c24xx_i2c;
|
||||
struct s3c2410_platform_i2c *pdata;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
|
||||
pdata = s3c24xx_i2c_get_platformdata(&pdev->dev);
|
||||
|
||||
/* find the clock and enable it */
|
||||
|
||||
i2c->dev = &pdev->dev;
|
||||
|
@ -832,7 +835,15 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev)
|
|||
dev_dbg(&pdev->dev, "irq resource %p (%lu)\n", res,
|
||||
(unsigned long)res->start);
|
||||
|
||||
ret = i2c_add_adapter(&i2c->adap);
|
||||
/* Note, previous versions of the driver used i2c_add_adapter()
|
||||
* to add the bus at any number. We now pass the bus number via
|
||||
* the platform data, so if unset it will now default to always
|
||||
* being bus 0.
|
||||
*/
|
||||
|
||||
i2c->adap.nr = pdata->bus_num;
|
||||
|
||||
ret = i2c_add_numbered_adapter(&i2c->adap);
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "failed to add bus to i2c core\n");
|
||||
goto err_irq;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
struct s3c2410_platform_i2c {
|
||||
int bus_num; /* bus number to use */
|
||||
unsigned int flags;
|
||||
unsigned int slave_addr; /* slave address for controller */
|
||||
unsigned long bus_freq; /* standard bus frequency */
|
||||
|
|
Loading…
Reference in New Issue