mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
Merge remote-tracking branches 'regulator/topic/lp872x', 'regulator/topic/ltc3589', 'regulator/topic/max77693' and 'regulator/topic/max8973' into regulator-next
This commit is contained in:
commit
176175b613
21 changed files with 622 additions and 913 deletions
|
|
@ -33,6 +33,7 @@
|
|||
#include <linux/mutex.h>
|
||||
#include <linux/mfd/core.h>
|
||||
#include <linux/mfd/max77693.h>
|
||||
#include <linux/mfd/max77693-common.h>
|
||||
#include <linux/mfd/max77693-private.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regmap.h>
|
||||
|
|
@ -193,22 +194,22 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
|
|||
} else
|
||||
dev_info(max77693->dev, "device ID: 0x%x\n", reg_data);
|
||||
|
||||
max77693->muic = i2c_new_dummy(i2c->adapter, I2C_ADDR_MUIC);
|
||||
if (!max77693->muic) {
|
||||
max77693->i2c_muic = i2c_new_dummy(i2c->adapter, I2C_ADDR_MUIC);
|
||||
if (!max77693->i2c_muic) {
|
||||
dev_err(max77693->dev, "Failed to allocate I2C device for MUIC\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
i2c_set_clientdata(max77693->muic, max77693);
|
||||
i2c_set_clientdata(max77693->i2c_muic, max77693);
|
||||
|
||||
max77693->haptic = i2c_new_dummy(i2c->adapter, I2C_ADDR_HAPTIC);
|
||||
if (!max77693->haptic) {
|
||||
max77693->i2c_haptic = i2c_new_dummy(i2c->adapter, I2C_ADDR_HAPTIC);
|
||||
if (!max77693->i2c_haptic) {
|
||||
dev_err(max77693->dev, "Failed to allocate I2C device for Haptic\n");
|
||||
ret = -ENODEV;
|
||||
goto err_i2c_haptic;
|
||||
}
|
||||
i2c_set_clientdata(max77693->haptic, max77693);
|
||||
i2c_set_clientdata(max77693->i2c_haptic, max77693);
|
||||
|
||||
max77693->regmap_haptic = devm_regmap_init_i2c(max77693->haptic,
|
||||
max77693->regmap_haptic = devm_regmap_init_i2c(max77693->i2c_haptic,
|
||||
&max77693_regmap_haptic_config);
|
||||
if (IS_ERR(max77693->regmap_haptic)) {
|
||||
ret = PTR_ERR(max77693->regmap_haptic);
|
||||
|
|
@ -222,7 +223,7 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
|
|||
* instance of MUIC device when irq of max77693 is initialized
|
||||
* before call max77693-muic probe() function.
|
||||
*/
|
||||
max77693->regmap_muic = devm_regmap_init_i2c(max77693->muic,
|
||||
max77693->regmap_muic = devm_regmap_init_i2c(max77693->i2c_muic,
|
||||
&max77693_regmap_muic_config);
|
||||
if (IS_ERR(max77693->regmap_muic)) {
|
||||
ret = PTR_ERR(max77693->regmap_muic);
|
||||
|
|
@ -255,7 +256,7 @@ static int max77693_i2c_probe(struct i2c_client *i2c,
|
|||
IRQF_ONESHOT | IRQF_SHARED |
|
||||
IRQF_TRIGGER_FALLING, 0,
|
||||
&max77693_charger_irq_chip,
|
||||
&max77693->irq_data_charger);
|
||||
&max77693->irq_data_chg);
|
||||
if (ret) {
|
||||
dev_err(max77693->dev, "failed to add irq chip: %d\n", ret);
|
||||
goto err_irq_charger;
|
||||
|
|
@ -296,15 +297,15 @@ err_mfd:
|
|||
err_intsrc:
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_muic);
|
||||
err_irq_muic:
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_charger);
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_chg);
|
||||
err_irq_charger:
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_topsys);
|
||||
err_irq_topsys:
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_led);
|
||||
err_regmap:
|
||||
i2c_unregister_device(max77693->haptic);
|
||||
i2c_unregister_device(max77693->i2c_haptic);
|
||||
err_i2c_haptic:
|
||||
i2c_unregister_device(max77693->muic);
|
||||
i2c_unregister_device(max77693->i2c_muic);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
@ -315,12 +316,12 @@ static int max77693_i2c_remove(struct i2c_client *i2c)
|
|||
mfd_remove_devices(max77693->dev);
|
||||
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_muic);
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_charger);
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_chg);
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_topsys);
|
||||
regmap_del_irq_chip(max77693->irq, max77693->irq_data_led);
|
||||
|
||||
i2c_unregister_device(max77693->muic);
|
||||
i2c_unregister_device(max77693->haptic);
|
||||
i2c_unregister_device(max77693->i2c_muic);
|
||||
i2c_unregister_device(max77693->i2c_haptic);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#include <linux/interrupt.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mfd/core.h>
|
||||
#include <linux/mfd/max77693-common.h>
|
||||
#include <linux/mfd/max77843-private.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
|
@ -71,7 +72,7 @@ static const struct regmap_irq_chip max77843_irq_chip = {
|
|||
};
|
||||
|
||||
/* Charger and Charger regulator use same regmap. */
|
||||
static int max77843_chg_init(struct max77843 *max77843)
|
||||
static int max77843_chg_init(struct max77693_dev *max77843)
|
||||
{
|
||||
int ret;
|
||||
|
||||
|
|
@ -101,7 +102,7 @@ err_chg_i2c:
|
|||
static int max77843_probe(struct i2c_client *i2c,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct max77843 *max77843;
|
||||
struct max77693_dev *max77843;
|
||||
unsigned int reg_data;
|
||||
int ret;
|
||||
|
||||
|
|
@ -113,6 +114,7 @@ static int max77843_probe(struct i2c_client *i2c,
|
|||
max77843->dev = &i2c->dev;
|
||||
max77843->i2c = i2c;
|
||||
max77843->irq = i2c->irq;
|
||||
max77843->type = id->driver_data;
|
||||
|
||||
max77843->regmap = devm_regmap_init_i2c(i2c,
|
||||
&max77843_regmap_config);
|
||||
|
|
@ -123,7 +125,7 @@ static int max77843_probe(struct i2c_client *i2c,
|
|||
|
||||
ret = regmap_add_irq_chip(max77843->regmap, max77843->irq,
|
||||
IRQF_TRIGGER_LOW | IRQF_ONESHOT | IRQF_SHARED,
|
||||
0, &max77843_irq_chip, &max77843->irq_data);
|
||||
0, &max77843_irq_chip, &max77843->irq_data_topsys);
|
||||
if (ret) {
|
||||
dev_err(&i2c->dev, "Failed to add TOPSYS IRQ chip\n");
|
||||
return ret;
|
||||
|
|
@ -164,18 +166,18 @@ static int max77843_probe(struct i2c_client *i2c,
|
|||
return 0;
|
||||
|
||||
err_pmic_id:
|
||||
regmap_del_irq_chip(max77843->irq, max77843->irq_data);
|
||||
regmap_del_irq_chip(max77843->irq, max77843->irq_data_topsys);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int max77843_remove(struct i2c_client *i2c)
|
||||
{
|
||||
struct max77843 *max77843 = i2c_get_clientdata(i2c);
|
||||
struct max77693_dev *max77843 = i2c_get_clientdata(i2c);
|
||||
|
||||
mfd_remove_devices(max77843->dev);
|
||||
|
||||
regmap_del_irq_chip(max77843->irq, max77843->irq_data);
|
||||
regmap_del_irq_chip(max77843->irq, max77843->irq_data_topsys);
|
||||
|
||||
i2c_unregister_device(max77843->i2c_chg);
|
||||
|
||||
|
|
@ -188,7 +190,7 @@ static const struct of_device_id max77843_dt_match[] = {
|
|||
};
|
||||
|
||||
static const struct i2c_device_id max77843_id[] = {
|
||||
{ "max77843", },
|
||||
{ "max77843", TYPE_MAX77843, },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, max77843_id);
|
||||
|
|
@ -196,7 +198,7 @@ MODULE_DEVICE_TABLE(i2c, max77843_id);
|
|||
static int __maybe_unused max77843_suspend(struct device *dev)
|
||||
{
|
||||
struct i2c_client *i2c = container_of(dev, struct i2c_client, dev);
|
||||
struct max77843 *max77843 = i2c_get_clientdata(i2c);
|
||||
struct max77693_dev *max77843 = i2c_get_clientdata(i2c);
|
||||
|
||||
disable_irq(max77843->irq);
|
||||
if (device_may_wakeup(dev))
|
||||
|
|
@ -208,7 +210,7 @@ static int __maybe_unused max77843_suspend(struct device *dev)
|
|||
static int __maybe_unused max77843_resume(struct device *dev)
|
||||
{
|
||||
struct i2c_client *i2c = container_of(dev, struct i2c_client, dev);
|
||||
struct max77843 *max77843 = i2c_get_clientdata(i2c);
|
||||
struct max77693_dev *max77843 = i2c_get_clientdata(i2c);
|
||||
|
||||
if (device_may_wakeup(dev))
|
||||
disable_irq_wake(max77843->irq);
|
||||
|
|
|
|||
Loading…
Reference in a new issue