amlogic_i2c: fixed deinitialization

Change-Id: I5bad8abcc2da2a0f8ab543f29c56a484f704e2c0
This commit is contained in:
Staroselskii Georgii
2015-04-16 18:17:21 +03:00
committed by codewalker
parent b04aed20eb
commit e86ff848ec

View File

@@ -1172,6 +1172,8 @@ static int aml_i2c_probe(struct platform_device *pdev)
if(ret)
printk(" class register i2c_class fail!\n");
platform_set_drvdata(pdev, i2c);
return 0;
}
@@ -1180,14 +1182,24 @@ static int aml_i2c_probe(struct platform_device *pdev)
static int aml_i2c_remove(struct platform_device *pdev)
{
struct aml_i2c *i2c = platform_get_drvdata(pdev);
if (i2c->mode == I2C_INTERRUPT_MODE)
free_irq(i2c->irq, i2c);
if (i2c->mode == I2C_TIMER_POLLING_MODE)
hrtimer_cancel(&i2c->aml_i2c_hrtimer);
mutex_destroy(i2c->lock);
i2c_del_adapter(&i2c->adap);
kzfree(i2c);
i2c= NULL;
if (i2c != NULL) {
if (i2c->mode == I2C_INTERRUPT_MODE) {
free_irq(i2c->irq, i2c);
}
if (i2c->mode == I2C_TIMER_POLLING_MODE) {
hrtimer_cancel(&i2c->aml_i2c_hrtimer);
}
mutex_destroy(i2c->lock);
i2c_del_adapter(&i2c->adap);
class_unregister(&i2c->cls);
kzfree(i2c);
} else {
printk(KERN_ALERT "[%s]: i2c is NULL\n", __func__);
}
return 0;
}