|
@@ -208,10 +208,26 @@ static int max8997_i2c_probe(struct i2c_client *i2c,
|
|
|
mutex_init(&max8997->iolock);
|
|
|
|
|
|
max8997->rtc = i2c_new_dummy(i2c->adapter, I2C_ADDR_RTC);
|
|
|
+ if (!max8997->rtc) {
|
|
|
+ dev_err(max8997->dev, "Failed to allocate I2C device for RTC\n");
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
i2c_set_clientdata(max8997->rtc, max8997);
|
|
|
+
|
|
|
max8997->haptic = i2c_new_dummy(i2c->adapter, I2C_ADDR_HAPTIC);
|
|
|
+ if (!max8997->haptic) {
|
|
|
+ dev_err(max8997->dev, "Failed to allocate I2C device for Haptic\n");
|
|
|
+ ret = -ENODEV;
|
|
|
+ goto err_i2c_haptic;
|
|
|
+ }
|
|
|
i2c_set_clientdata(max8997->haptic, max8997);
|
|
|
+
|
|
|
max8997->muic = i2c_new_dummy(i2c->adapter, I2C_ADDR_MUIC);
|
|
|
+ if (!max8997->muic) {
|
|
|
+ dev_err(max8997->dev, "Failed to allocate I2C device for MUIC\n");
|
|
|
+ ret = -ENODEV;
|
|
|
+ goto err_i2c_muic;
|
|
|
+ }
|
|
|
i2c_set_clientdata(max8997->muic, max8997);
|
|
|
|
|
|
pm_runtime_set_active(max8997->dev);
|
|
@@ -239,7 +255,9 @@ static int max8997_i2c_probe(struct i2c_client *i2c,
|
|
|
err_mfd:
|
|
|
mfd_remove_devices(max8997->dev);
|
|
|
i2c_unregister_device(max8997->muic);
|
|
|
+err_i2c_muic:
|
|
|
i2c_unregister_device(max8997->haptic);
|
|
|
+err_i2c_haptic:
|
|
|
i2c_unregister_device(max8997->rtc);
|
|
|
return ret;
|
|
|
}
|