[DRIVER MODEL] Convert platform drivers to use struct platform_driver
This allows us to eliminate the casts in the drivers, and eventually remove the use of the device_driver function pointer methods for platform device drivers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Russell King
parent
00d3dcdd96
commit
3ae5eaec1d
@@ -405,10 +405,9 @@ static struct i2c_algorithm iop3xx_i2c_algo = {
|
||||
};
|
||||
|
||||
static int
|
||||
iop3xx_i2c_remove(struct device *device)
|
||||
iop3xx_i2c_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(device);
|
||||
struct i2c_adapter *padapter = dev_get_drvdata(&pdev->dev);
|
||||
struct i2c_adapter *padapter = platform_get_drvdata(pdev);
|
||||
struct i2c_algo_iop3xx_data *adapter_data =
|
||||
(struct i2c_algo_iop3xx_data *)padapter->algo_data;
|
||||
struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
@@ -426,15 +425,14 @@ iop3xx_i2c_remove(struct device *device)
|
||||
kfree(adapter_data);
|
||||
kfree(padapter);
|
||||
|
||||
dev_set_drvdata(&pdev->dev, NULL);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
iop3xx_i2c_probe(struct device *dev)
|
||||
iop3xx_i2c_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct resource *res;
|
||||
int ret;
|
||||
struct i2c_adapter *new_adapter;
|
||||
@@ -499,7 +497,7 @@ iop3xx_i2c_probe(struct device *dev)
|
||||
iop3xx_i2c_set_slave_addr(adapter_data);
|
||||
iop3xx_i2c_enable(adapter_data);
|
||||
|
||||
dev_set_drvdata(&pdev->dev, new_adapter);
|
||||
platform_set_drvdata(pdev, new_adapter);
|
||||
new_adapter->algo_data = adapter_data;
|
||||
|
||||
i2c_add_adapter(new_adapter);
|
||||
@@ -523,24 +521,25 @@ out:
|
||||
}
|
||||
|
||||
|
||||
static struct device_driver iop3xx_i2c_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "IOP3xx-I2C",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver iop3xx_i2c_driver = {
|
||||
.probe = iop3xx_i2c_probe,
|
||||
.remove = iop3xx_i2c_remove
|
||||
.remove = iop3xx_i2c_remove,
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "IOP3xx-I2C",
|
||||
},
|
||||
};
|
||||
|
||||
static int __init
|
||||
i2c_iop3xx_init (void)
|
||||
{
|
||||
return driver_register(&iop3xx_i2c_driver);
|
||||
return platform_driver_register(&iop3xx_i2c_driver);
|
||||
}
|
||||
|
||||
static void __exit
|
||||
i2c_iop3xx_exit (void)
|
||||
{
|
||||
driver_unregister(&iop3xx_i2c_driver);
|
||||
platform_driver_unregister(&iop3xx_i2c_driver);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -86,12 +86,11 @@ struct ixp2000_i2c_data {
|
||||
struct i2c_algo_bit_data algo_data;
|
||||
};
|
||||
|
||||
static int ixp2000_i2c_remove(struct device *dev)
|
||||
static int ixp2000_i2c_remove(struct platform_device *plat_dev)
|
||||
{
|
||||
struct platform_device *plat_dev = to_platform_device(dev);
|
||||
struct ixp2000_i2c_data *drv_data = dev_get_drvdata(&plat_dev->dev);
|
||||
struct ixp2000_i2c_data *drv_data = platform_get_drvdata(plat_dev);
|
||||
|
||||
dev_set_drvdata(&plat_dev->dev, NULL);
|
||||
platform_set_drvdata(plat_dev, NULL);
|
||||
|
||||
i2c_bit_del_bus(&drv_data->adapter);
|
||||
|
||||
@@ -100,10 +99,9 @@ static int ixp2000_i2c_remove(struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ixp2000_i2c_probe(struct device *dev)
|
||||
static int ixp2000_i2c_probe(struct platform_device *plat_dev)
|
||||
{
|
||||
int err;
|
||||
struct platform_device *plat_dev = to_platform_device(dev);
|
||||
struct ixp2000_i2c_pins *gpio = plat_dev->dev.platform_data;
|
||||
struct ixp2000_i2c_data *drv_data =
|
||||
kzalloc(sizeof(struct ixp2000_i2c_data), GFP_KERNEL);
|
||||
@@ -139,27 +137,28 @@ static int ixp2000_i2c_probe(struct device *dev)
|
||||
return err;
|
||||
}
|
||||
|
||||
dev_set_drvdata(&plat_dev->dev, drv_data);
|
||||
platform_set_drvdata(plat_dev, drv_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct device_driver ixp2000_i2c_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "IXP2000-I2C",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver ixp2000_i2c_driver = {
|
||||
.probe = ixp2000_i2c_probe,
|
||||
.remove = ixp2000_i2c_remove,
|
||||
.driver = {
|
||||
.name = "IXP2000-I2C",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init ixp2000_i2c_init(void)
|
||||
{
|
||||
return driver_register(&ixp2000_i2c_driver);
|
||||
return platform_driver_register(&ixp2000_i2c_driver);
|
||||
}
|
||||
|
||||
static void __exit ixp2000_i2c_exit(void)
|
||||
{
|
||||
driver_unregister(&ixp2000_i2c_driver);
|
||||
platform_driver_unregister(&ixp2000_i2c_driver);
|
||||
}
|
||||
|
||||
module_init(ixp2000_i2c_init);
|
||||
|
@@ -87,12 +87,11 @@ struct ixp4xx_i2c_data {
|
||||
struct i2c_algo_bit_data algo_data;
|
||||
};
|
||||
|
||||
static int ixp4xx_i2c_remove(struct device *dev)
|
||||
static int ixp4xx_i2c_remove(struct platform_device *plat_dev)
|
||||
{
|
||||
struct platform_device *plat_dev = to_platform_device(dev);
|
||||
struct ixp4xx_i2c_data *drv_data = dev_get_drvdata(&plat_dev->dev);
|
||||
struct ixp4xx_i2c_data *drv_data = platform_get_drvdata(plat_dev);
|
||||
|
||||
dev_set_drvdata(&plat_dev->dev, NULL);
|
||||
platform_set_drvdata(plat_dev, NULL);
|
||||
|
||||
i2c_bit_del_bus(&drv_data->adapter);
|
||||
|
||||
@@ -101,10 +100,9 @@ static int ixp4xx_i2c_remove(struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ixp4xx_i2c_probe(struct device *dev)
|
||||
static int ixp4xx_i2c_probe(struct platform_device *plat_dev)
|
||||
{
|
||||
int err;
|
||||
struct platform_device *plat_dev = to_platform_device(dev);
|
||||
struct ixp4xx_i2c_pins *gpio = plat_dev->dev.platform_data;
|
||||
struct ixp4xx_i2c_data *drv_data =
|
||||
kzalloc(sizeof(struct ixp4xx_i2c_data), GFP_KERNEL);
|
||||
@@ -148,27 +146,28 @@ static int ixp4xx_i2c_probe(struct device *dev)
|
||||
return err;
|
||||
}
|
||||
|
||||
dev_set_drvdata(&plat_dev->dev, drv_data);
|
||||
platform_set_drvdata(plat_dev, drv_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct device_driver ixp4xx_i2c_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "IXP4XX-I2C",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver ixp4xx_i2c_driver = {
|
||||
.probe = ixp4xx_i2c_probe,
|
||||
.remove = ixp4xx_i2c_remove,
|
||||
.driver = {
|
||||
.name = "IXP4XX-I2C",
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init ixp4xx_i2c_init(void)
|
||||
{
|
||||
return driver_register(&ixp4xx_i2c_driver);
|
||||
return platform_driver_register(&ixp4xx_i2c_driver);
|
||||
}
|
||||
|
||||
static void __exit ixp4xx_i2c_exit(void)
|
||||
{
|
||||
driver_unregister(&ixp4xx_i2c_driver);
|
||||
platform_driver_unregister(&ixp4xx_i2c_driver);
|
||||
}
|
||||
|
||||
module_init(ixp4xx_i2c_init);
|
||||
|
@@ -288,11 +288,10 @@ static struct i2c_adapter mpc_ops = {
|
||||
.retries = 1
|
||||
};
|
||||
|
||||
static int fsl_i2c_probe(struct device *device)
|
||||
static int fsl_i2c_probe(struct platform_device *pdev)
|
||||
{
|
||||
int result = 0;
|
||||
struct mpc_i2c *i2c;
|
||||
struct platform_device *pdev = to_platform_device(device);
|
||||
struct fsl_i2c_platform_data *pdata;
|
||||
struct resource *r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
|
||||
@@ -323,7 +322,7 @@ static int fsl_i2c_probe(struct device *device)
|
||||
}
|
||||
|
||||
mpc_i2c_setclock(i2c);
|
||||
dev_set_drvdata(device, i2c);
|
||||
platform_set_drvdata(pdev, i2c);
|
||||
|
||||
i2c->adap = mpc_ops;
|
||||
i2c_set_adapdata(&i2c->adap, i2c);
|
||||
@@ -345,12 +344,12 @@ static int fsl_i2c_probe(struct device *device)
|
||||
return result;
|
||||
};
|
||||
|
||||
static int fsl_i2c_remove(struct device *device)
|
||||
static int fsl_i2c_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct mpc_i2c *i2c = dev_get_drvdata(device);
|
||||
struct mpc_i2c *i2c = platform_get_drvdata(pdev);
|
||||
|
||||
i2c_del_adapter(&i2c->adap);
|
||||
dev_set_drvdata(device, NULL);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
|
||||
if (i2c->irq != 0)
|
||||
free_irq(i2c->irq, i2c);
|
||||
@@ -361,22 +360,23 @@ static int fsl_i2c_remove(struct device *device)
|
||||
};
|
||||
|
||||
/* Structure for a device driver */
|
||||
static struct device_driver fsl_i2c_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "fsl-i2c",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver fsl_i2c_driver = {
|
||||
.probe = fsl_i2c_probe,
|
||||
.remove = fsl_i2c_remove,
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "fsl-i2c",
|
||||
},
|
||||
};
|
||||
|
||||
static int __init fsl_i2c_init(void)
|
||||
{
|
||||
return driver_register(&fsl_i2c_driver);
|
||||
return platform_driver_register(&fsl_i2c_driver);
|
||||
}
|
||||
|
||||
static void __exit fsl_i2c_exit(void)
|
||||
{
|
||||
driver_unregister(&fsl_i2c_driver);
|
||||
platform_driver_unregister(&fsl_i2c_driver);
|
||||
}
|
||||
|
||||
module_init(fsl_i2c_init);
|
||||
|
@@ -492,11 +492,10 @@ mv64xxx_i2c_unmap_regs(struct mv64xxx_i2c_data *drv_data)
|
||||
}
|
||||
|
||||
static int __devinit
|
||||
mv64xxx_i2c_probe(struct device *dev)
|
||||
mv64xxx_i2c_probe(struct platform_device *pd)
|
||||
{
|
||||
struct platform_device *pd = to_platform_device(dev);
|
||||
struct mv64xxx_i2c_data *drv_data;
|
||||
struct mv64xxx_i2c_pdata *pdata = dev->platform_data;
|
||||
struct mv64xxx_i2c_pdata *pdata = pd->dev.platform_data;
|
||||
int rc;
|
||||
|
||||
if ((pd->id != 0) || !pdata)
|
||||
@@ -526,7 +525,7 @@ mv64xxx_i2c_probe(struct device *dev)
|
||||
drv_data->adapter.class = I2C_CLASS_HWMON;
|
||||
drv_data->adapter.timeout = pdata->timeout;
|
||||
drv_data->adapter.retries = pdata->retries;
|
||||
dev_set_drvdata(dev, drv_data);
|
||||
platform_set_drvdata(pd, drv_data);
|
||||
i2c_set_adapdata(&drv_data->adapter, drv_data);
|
||||
|
||||
if (request_irq(drv_data->irq, mv64xxx_i2c_intr, 0,
|
||||
@@ -555,9 +554,9 @@ mv64xxx_i2c_probe(struct device *dev)
|
||||
}
|
||||
|
||||
static int __devexit
|
||||
mv64xxx_i2c_remove(struct device *dev)
|
||||
mv64xxx_i2c_remove(struct platform_device *dev)
|
||||
{
|
||||
struct mv64xxx_i2c_data *drv_data = dev_get_drvdata(dev);
|
||||
struct mv64xxx_i2c_data *drv_data = platform_get_drvdata(dev);
|
||||
int rc;
|
||||
|
||||
rc = i2c_del_adapter(&drv_data->adapter);
|
||||
@@ -568,24 +567,25 @@ mv64xxx_i2c_remove(struct device *dev)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static struct device_driver mv64xxx_i2c_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = MV64XXX_I2C_CTLR_NAME,
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver mv64xxx_i2c_driver = {
|
||||
.probe = mv64xxx_i2c_probe,
|
||||
.remove = mv64xxx_i2c_remove,
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = MV64XXX_I2C_CTLR_NAME,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init
|
||||
mv64xxx_i2c_init(void)
|
||||
{
|
||||
return driver_register(&mv64xxx_i2c_driver);
|
||||
return platform_driver_register(&mv64xxx_i2c_driver);
|
||||
}
|
||||
|
||||
static void __exit
|
||||
mv64xxx_i2c_exit(void)
|
||||
{
|
||||
driver_unregister(&mv64xxx_i2c_driver);
|
||||
platform_driver_unregister(&mv64xxx_i2c_driver);
|
||||
}
|
||||
|
||||
module_init(mv64xxx_i2c_init);
|
||||
|
@@ -936,10 +936,10 @@ static struct pxa_i2c i2c_pxa = {
|
||||
},
|
||||
};
|
||||
|
||||
static int i2c_pxa_probe(struct device *dev)
|
||||
static int i2c_pxa_probe(struct platform_device *dev)
|
||||
{
|
||||
struct pxa_i2c *i2c = &i2c_pxa;
|
||||
struct i2c_pxa_platform_data *plat = dev->platform_data;
|
||||
struct i2c_pxa_platform_data *plat = dev->dev.platform_data;
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_PXA27x
|
||||
@@ -968,7 +968,7 @@ static int i2c_pxa_probe(struct device *dev)
|
||||
i2c_pxa_reset(i2c);
|
||||
|
||||
i2c->adap.algo_data = i2c;
|
||||
i2c->adap.dev.parent = dev;
|
||||
i2c->adap.dev.parent = &dev->dev;
|
||||
|
||||
ret = i2c_add_adapter(&i2c->adap);
|
||||
if (ret < 0) {
|
||||
@@ -976,7 +976,7 @@ static int i2c_pxa_probe(struct device *dev)
|
||||
goto err_irq;
|
||||
}
|
||||
|
||||
dev_set_drvdata(dev, i2c);
|
||||
platform_set_drvdata(dev, i2c);
|
||||
|
||||
#ifdef CONFIG_I2C_PXA_SLAVE
|
||||
printk(KERN_INFO "I2C: %s: PXA I2C adapter, slave address %d\n",
|
||||
@@ -993,11 +993,11 @@ static int i2c_pxa_probe(struct device *dev)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int i2c_pxa_remove(struct device *dev)
|
||||
static int i2c_pxa_remove(struct platform_device *dev)
|
||||
{
|
||||
struct pxa_i2c *i2c = dev_get_drvdata(dev);
|
||||
struct pxa_i2c *i2c = platform_get_drvdata(dev);
|
||||
|
||||
dev_set_drvdata(dev, NULL);
|
||||
platform_set_drvdata(dev, NULL);
|
||||
|
||||
i2c_del_adapter(&i2c->adap);
|
||||
free_irq(IRQ_I2C, i2c);
|
||||
@@ -1006,21 +1006,22 @@ static int i2c_pxa_remove(struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct device_driver i2c_pxa_driver = {
|
||||
.name = "pxa2xx-i2c",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver i2c_pxa_driver = {
|
||||
.probe = i2c_pxa_probe,
|
||||
.remove = i2c_pxa_remove,
|
||||
.driver = {
|
||||
.name = "pxa2xx-i2c",
|
||||
},
|
||||
};
|
||||
|
||||
static int __init i2c_adap_pxa_init(void)
|
||||
{
|
||||
return driver_register(&i2c_pxa_driver);
|
||||
return platform_driver_register(&i2c_pxa_driver);
|
||||
}
|
||||
|
||||
static void i2c_adap_pxa_exit(void)
|
||||
{
|
||||
return driver_unregister(&i2c_pxa_driver);
|
||||
return platform_driver_unregister(&i2c_pxa_driver);
|
||||
}
|
||||
|
||||
module_init(i2c_adap_pxa_init);
|
||||
|
@@ -760,24 +760,23 @@ static void s3c24xx_i2c_free(struct s3c24xx_i2c *i2c)
|
||||
* called by the bus driver when a suitable device is found
|
||||
*/
|
||||
|
||||
static int s3c24xx_i2c_probe(struct device *dev)
|
||||
static int s3c24xx_i2c_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct s3c24xx_i2c *i2c = &s3c24xx_i2c;
|
||||
struct resource *res;
|
||||
int ret;
|
||||
|
||||
/* find the clock and enable it */
|
||||
|
||||
i2c->dev = dev;
|
||||
i2c->clk = clk_get(dev, "i2c");
|
||||
i2c->dev = &pdev->dev;
|
||||
i2c->clk = clk_get(&pdev->dev, "i2c");
|
||||
if (IS_ERR(i2c->clk)) {
|
||||
dev_err(dev, "cannot get clock\n");
|
||||
dev_err(&pdev->dev, "cannot get clock\n");
|
||||
ret = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
|
||||
dev_dbg(dev, "clock source %p\n", i2c->clk);
|
||||
dev_dbg(&pdev->dev, "clock source %p\n", i2c->clk);
|
||||
|
||||
clk_use(i2c->clk);
|
||||
clk_enable(i2c->clk);
|
||||
@@ -786,7 +785,7 @@ static int s3c24xx_i2c_probe(struct device *dev)
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (res == NULL) {
|
||||
dev_err(dev, "cannot find IO resource\n");
|
||||
dev_err(&pdev->dev, "cannot find IO resource\n");
|
||||
ret = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
@@ -795,7 +794,7 @@ static int s3c24xx_i2c_probe(struct device *dev)
|
||||
pdev->name);
|
||||
|
||||
if (i2c->ioarea == NULL) {
|
||||
dev_err(dev, "cannot request IO\n");
|
||||
dev_err(&pdev->dev, "cannot request IO\n");
|
||||
ret = -ENXIO;
|
||||
goto out;
|
||||
}
|
||||
@@ -803,17 +802,17 @@ static int s3c24xx_i2c_probe(struct device *dev)
|
||||
i2c->regs = ioremap(res->start, (res->end-res->start)+1);
|
||||
|
||||
if (i2c->regs == NULL) {
|
||||
dev_err(dev, "cannot map IO\n");
|
||||
dev_err(&pdev->dev, "cannot map IO\n");
|
||||
ret = -ENXIO;
|
||||
goto out;
|
||||
}
|
||||
|
||||
dev_dbg(dev, "registers %p (%p, %p)\n", i2c->regs, i2c->ioarea, res);
|
||||
dev_dbg(&pdev->dev, "registers %p (%p, %p)\n", i2c->regs, i2c->ioarea, res);
|
||||
|
||||
/* setup info block for the i2c core */
|
||||
|
||||
i2c->adap.algo_data = i2c;
|
||||
i2c->adap.dev.parent = dev;
|
||||
i2c->adap.dev.parent = &pdev->dev;
|
||||
|
||||
/* initialise the i2c controller */
|
||||
|
||||
@@ -827,7 +826,7 @@ static int s3c24xx_i2c_probe(struct device *dev)
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (res == NULL) {
|
||||
dev_err(dev, "cannot find IRQ\n");
|
||||
dev_err(&pdev->dev, "cannot find IRQ\n");
|
||||
ret = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
@@ -836,23 +835,23 @@ static int s3c24xx_i2c_probe(struct device *dev)
|
||||
pdev->name, i2c);
|
||||
|
||||
if (ret != 0) {
|
||||
dev_err(dev, "cannot claim IRQ\n");
|
||||
dev_err(&pdev->dev, "cannot claim IRQ\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
i2c->irq = res;
|
||||
|
||||
dev_dbg(dev, "irq resource %p (%ld)\n", res, res->start);
|
||||
dev_dbg(&pdev->dev, "irq resource %p (%ld)\n", res, res->start);
|
||||
|
||||
ret = i2c_add_adapter(&i2c->adap);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "failed to add bus to i2c core\n");
|
||||
dev_err(&pdev->dev, "failed to add bus to i2c core\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
dev_set_drvdata(dev, i2c);
|
||||
platform_set_drvdata(pdev, i2c);
|
||||
|
||||
dev_info(dev, "%s: S3C I2C adapter\n", i2c->adap.dev.bus_id);
|
||||
dev_info(&pdev->dev, "%s: S3C I2C adapter\n", i2c->adap.dev.bus_id);
|
||||
|
||||
out:
|
||||
if (ret < 0)
|
||||
@@ -866,22 +865,22 @@ static int s3c24xx_i2c_probe(struct device *dev)
|
||||
* called when device is removed from the bus
|
||||
*/
|
||||
|
||||
static int s3c24xx_i2c_remove(struct device *dev)
|
||||
static int s3c24xx_i2c_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct s3c24xx_i2c *i2c = dev_get_drvdata(dev);
|
||||
struct s3c24xx_i2c *i2c = platform_get_drvdata(pdev);
|
||||
|
||||
if (i2c != NULL) {
|
||||
s3c24xx_i2c_free(i2c);
|
||||
dev_set_drvdata(dev, NULL);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int s3c24xx_i2c_resume(struct device *dev)
|
||||
static int s3c24xx_i2c_resume(struct platform_device *dev)
|
||||
{
|
||||
struct s3c24xx_i2c *i2c = dev_get_drvdata(dev);
|
||||
struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
|
||||
|
||||
if (i2c != NULL)
|
||||
s3c24xx_i2c_init(i2c);
|
||||
@@ -895,33 +894,35 @@ static int s3c24xx_i2c_resume(struct device *dev)
|
||||
|
||||
/* device driver for platform bus bits */
|
||||
|
||||
static struct device_driver s3c2410_i2c_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "s3c2410-i2c",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver s3c2410_i2c_driver = {
|
||||
.probe = s3c24xx_i2c_probe,
|
||||
.remove = s3c24xx_i2c_remove,
|
||||
.resume = s3c24xx_i2c_resume,
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "s3c2410-i2c",
|
||||
},
|
||||
};
|
||||
|
||||
static struct device_driver s3c2440_i2c_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "s3c2440-i2c",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver s3c2440_i2c_driver = {
|
||||
.probe = s3c24xx_i2c_probe,
|
||||
.remove = s3c24xx_i2c_remove,
|
||||
.resume = s3c24xx_i2c_resume,
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "s3c2440-i2c",
|
||||
},
|
||||
};
|
||||
|
||||
static int __init i2c_adap_s3c_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = driver_register(&s3c2410_i2c_driver);
|
||||
ret = platform_driver_register(&s3c2410_i2c_driver);
|
||||
if (ret == 0) {
|
||||
ret = driver_register(&s3c2440_i2c_driver);
|
||||
ret = platform_driver_register(&s3c2440_i2c_driver);
|
||||
if (ret)
|
||||
driver_unregister(&s3c2410_i2c_driver);
|
||||
platform_driver_unregister(&s3c2410_i2c_driver);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -929,8 +930,8 @@ static int __init i2c_adap_s3c_init(void)
|
||||
|
||||
static void __exit i2c_adap_s3c_exit(void)
|
||||
{
|
||||
driver_unregister(&s3c2410_i2c_driver);
|
||||
driver_unregister(&s3c2440_i2c_driver);
|
||||
platform_driver_unregister(&s3c2410_i2c_driver);
|
||||
platform_driver_unregister(&s3c2440_i2c_driver);
|
||||
}
|
||||
|
||||
module_init(i2c_adap_s3c_init);
|
||||
|
@@ -873,26 +873,27 @@ static int otg_init(struct isp1301 *isp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int otg_probe(struct device *dev)
|
||||
static int otg_probe(struct platform_device *dev)
|
||||
{
|
||||
// struct omap_usb_config *config = dev->platform_data;
|
||||
|
||||
otg_dev = to_platform_device(dev);
|
||||
otg_dev = dev;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int otg_remove(struct device *dev)
|
||||
static int otg_remove(struct platform_device *dev)
|
||||
{
|
||||
otg_dev = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct device_driver omap_otg_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "omap_otg",
|
||||
.bus = &platform_bus_type,
|
||||
struct platform_driver omap_otg_driver = {
|
||||
.probe = otg_probe,
|
||||
.remove = otg_remove,
|
||||
.remove = otg_remove,
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "omap_otg",
|
||||
},
|
||||
};
|
||||
|
||||
static int otg_bind(struct isp1301 *isp)
|
||||
@@ -902,7 +903,7 @@ static int otg_bind(struct isp1301 *isp)
|
||||
if (otg_dev)
|
||||
return -EBUSY;
|
||||
|
||||
status = driver_register(&omap_otg_driver);
|
||||
status = platform_driver_register(&omap_otg_driver);
|
||||
if (status < 0)
|
||||
return status;
|
||||
|
||||
@@ -913,7 +914,7 @@ static int otg_bind(struct isp1301 *isp)
|
||||
status = -ENODEV;
|
||||
|
||||
if (status < 0)
|
||||
driver_unregister(&omap_otg_driver);
|
||||
platform_driver_unregister(&omap_otg_driver);
|
||||
return status;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user