Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1182744 > unrolled thread
| Started by | Krzysztof Kozlowski <k.kozlowski.k@gmail.com> |
|---|---|
| First post | 2015-07-13 13:30 +0200 |
| Last post | 2015-07-13 13:30 +0200 |
| Articles | 3 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH v4 0/9] regulator: Merge max77843 into max77693 Krzysztof Kozlowski <k.kozlowski.k@gmail.com> - 2015-07-13 13:30 +0200
[PATCH v4 2/9] mfd: max77693: Store I2C device type as enum and add default unknown Krzysztof Kozlowski <k.kozlowski.k@gmail.com> - 2015-07-13 13:30 +0200
[PATCH v4 4/9] drivers: max77693: Move state container to common header Krzysztof Kozlowski <k.kozlowski.k@gmail.com> - 2015-07-13 13:30 +0200
| From | Krzysztof Kozlowski <k.kozlowski.k@gmail.com> |
|---|---|
| Date | 2015-07-13 13:30 +0200 |
| Subject | [PATCH v4 0/9] regulator: Merge max77843 into max77693 |
| Message-ID | <pLK5Q-4pk-5@gated-at.bofh.it> |
Hi,
The patchset merges max77843 regulator driver into max77693.
I still need acks from leds subsystem for patch 4:
drivers: max77693: Move state container to common header
The patchset touches multiple subsystems so I think the best way
would be to merge it through one tree. I already got acks from extcon,
input mfd and power maintainers.
If there are no objections then everything could go through regulator
tree.
Changes since v3
================
1. Patch 4/9: Fix missing includei n leds driver (leds-max77693.c).
2. Rebase on v4.2-rc2.
Changes since v2
================
1. Rebase on v4.2-rc1.
2. Add acks: Chanwoo Choi, Dmitry Torokhov, Lee Jones. Thanks!
Changes since v1
================
1. Drop patch "regulator: max77693: Use core code for charger's
is_enabled" because Mark Brown picked it up.
2. Patch 2: remove some more old IRQ extcon stuff (suggested by Chanwoo
Choi).
3. Patch 6: minor fixes over defines (suggested by Lee Jones).
4. Send last patch, previously it slipped during "git send-email".
5. Add acks obtained for v1. I still need more of them.
Rationale
=========
The recently added max77843 regulator driver is very similar to
its older brother: the max77693. Both devices provide two safeouts
and a charger.
The main difference is in charger's output capabilities and related
registry values.
With some code additions the max77693 regulator driver can support both
chipsets. This reduces overall code duplication and is a first step
toward integrating other drivers for these devices. I plan to merge
also input/haptic drivers.
Patchset description
====================
Patches 1-2 do various cleanup.
Patch 3 prepares max77694 regulator driver for supporting different
devices.
Patch 4 switches max77693 drivers to common state container.
Patch 5 updates max77843 drivers to common state container.
Patches 6-7 do final cleanup before merging.
Patches 8-9 do the merge of max77843 regulator into max77693.
Dependencies
============
Everything is bisectable but next patches depend on previous ones.
So probably the easiest way would be picking picked up by one
maintainer.
Best regards,
Krzysztof
Krzysztof Kozlowski (9):
mfd/extcon: max77693: Remove unused extern declarations and
max77693_dev members
mfd: max77693: Store I2C device type as enum and add default unknown
regulator: max77693: Support different register configurations
drivers: max77693: Move state container to common header
drivers: max77843: Switch to common max77693 state container
mfd/extcon: max77693: Rename defines to allow inclusion with max77843
mfd/extcon: max77843: Rename defines to allow inclusion with max77693
regulator: max77693: Add support for MAX77843 device
regulator: Remove the max77843 driver
drivers/extcon/extcon-max77693.c | 94 +++++++---------
drivers/extcon/extcon-max77843.c | 66 +++++++-----
drivers/input/misc/max77693-haptic.c | 1 +
drivers/input/misc/max77843-haptic.c | 3 +-
drivers/leds/leds-max77693.c | 1 +
drivers/mfd/max77693.c | 31 +++---
drivers/mfd/max77843.c | 20 ++--
drivers/power/max77693_charger.c | 1 +
drivers/regulator/Kconfig | 16 +--
drivers/regulator/Makefile | 1 -
drivers/regulator/max77693.c | 161 ++++++++++++++++++++++++----
drivers/regulator/max77843.c | 201 -----------------------------------
include/linux/mfd/max77693-common.h | 49 +++++++++
include/linux/mfd/max77693-private.h | 134 +++++++++--------------
include/linux/mfd/max77843-private.h | 174 ++++++++++++++----------------
15 files changed, 433 insertions(+), 520 deletions(-)
delete mode 100644 drivers/regulator/max77843.c
create mode 100644 include/linux/mfd/max77693-common.h
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Krzysztof Kozlowski <k.kozlowski.k@gmail.com> |
|---|---|
| Date | 2015-07-13 13:30 +0200 |
| Subject | [PATCH v4 2/9] mfd: max77693: Store I2C device type as enum and add default unknown |
| Message-ID | <pLK5Q-4pk-25@gated-at.bofh.it> |
| In reply to | #1182744 |
Store the device type (obtained from i2c_device_id) as an enum and add a
default type of unknown to distinguish from case when this is not set
at all.
Signed-off-by: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
---
include/linux/mfd/max77693-private.h | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h
index ad67b8235a8d..e3c0afff38d3 100644
--- a/include/linux/mfd/max77693-private.h
+++ b/include/linux/mfd/max77693-private.h
@@ -529,13 +529,18 @@ enum max77693_irq_muic {
MAX77693_MUIC_IRQ_NR,
};
+enum max77693_types {
+ TYPE_MAX77693_UNKNOWN,
+ TYPE_MAX77693,
+};
+
struct max77693_dev {
struct device *dev;
struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */
struct i2c_client *muic; /* 0x4A , MUIC */
struct i2c_client *haptic; /* 0x90 , Haptic */
- int type;
+ enum max77693_types type;
struct regmap *regmap;
struct regmap *regmap_muic;
@@ -549,8 +554,4 @@ struct max77693_dev {
int irq;
};
-enum max77693_types {
- TYPE_MAX77693,
-};
-
#endif /* __LINUX_MFD_MAX77693_PRIV_H */
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Krzysztof Kozlowski <k.kozlowski.k@gmail.com> |
|---|---|
| Date | 2015-07-13 13:30 +0200 |
| Subject | [PATCH v4 4/9] drivers: max77693: Move state container to common header |
| Message-ID | <pLK5Q-4pk-29@gated-at.bofh.it> |
| In reply to | #1182744 |
This prepares for merging some of the drivers between max77693 and
max77843 so the child MFD driver can be attached to any parent MFD main
driver.
Move the state container to common header file. Additionally add
consistent 'i2c' prefixes to its members (of 'struct i2c_client' type).
Signed-off-by: Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
Acked-by: Sebastian Reichel <sre@kernel.org>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
---
drivers/extcon/extcon-max77693.c | 3 ++-
drivers/input/misc/max77693-haptic.c | 1 +
drivers/leds/leds-max77693.c | 1 +
drivers/mfd/max77693.c | 31 +++++++++++++------------
drivers/power/max77693_charger.c | 1 +
drivers/regulator/max77693.c | 1 +
include/linux/mfd/max77693-common.h | 44 ++++++++++++++++++++++++++++++++++++
include/linux/mfd/max77693-private.h | 25 --------------------
8 files changed, 66 insertions(+), 41 deletions(-)
create mode 100644 include/linux/mfd/max77693-common.h
diff --git a/drivers/extcon/extcon-max77693.c b/drivers/extcon/extcon-max77693.c
index 770db3a72a6a..08391b5c8e8f 100644
--- a/drivers/extcon/extcon-max77693.c
+++ b/drivers/extcon/extcon-max77693.c
@@ -25,6 +25,7 @@
#include <linux/platform_device.h>
#include <linux/mfd/max77693.h>
#include <linux/mfd/max77693-private.h>
+#include <linux/mfd/max77693-common.h>
#include <linux/extcon.h>
#include <linux/regmap.h>
#include <linux/irqdomain.h>
@@ -1077,7 +1078,7 @@ static int max77693_muic_probe(struct platform_device *pdev)
dev_dbg(&pdev->dev, "allocate register map\n");
} else {
info->max77693->regmap_muic = devm_regmap_init_i2c(
- info->max77693->muic,
+ info->max77693->i2c_muic,
&max77693_muic_regmap_config);
if (IS_ERR(info->max77693->regmap_muic)) {
ret = PTR_ERR(info->max77693->regmap_muic);
diff --git a/drivers/input/misc/max77693-haptic.c b/drivers/input/misc/max77693-haptic.c
index 39e930c10ebb..69a4e401fe24 100644
--- a/drivers/input/misc/max77693-haptic.c
+++ b/drivers/input/misc/max77693-haptic.c
@@ -25,6 +25,7 @@
#include <linux/regulator/consumer.h>
#include <linux/mfd/max77693.h>
#include <linux/mfd/max77693-private.h>
+#include <linux/mfd/max77693-common.h>
#define MAX_MAGNITUDE_SHIFT 16
diff --git a/drivers/leds/leds-max77693.c b/drivers/leds/leds-max77693.c
index b8b0eec7b540..44f5a0500a2a 100644
--- a/drivers/leds/leds-max77693.c
+++ b/drivers/leds/leds-max77693.c
@@ -14,6 +14,7 @@
#include <linux/led-class-flash.h>
#include <linux/mfd/max77693.h>
#include <linux/mfd/max77693-private.h>
+#include <linux/mfd/max77693-common.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/platform_device.h>
diff --git a/drivers/mfd/max77693.c b/drivers/mfd/max77693.c
index cb14afa97e6f..07fdf35bb9a1 100644
--- a/drivers/mfd/max77693.c
+++ b/drivers/mfd/max77693.c
@@ -34,6 +34,7 @@
#include <linux/mfd/core.h>
#include <linux/mfd/max77693.h>
#include <linux/mfd/max77693-private.h>
+#include <linux/mfd/max77693-common.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;
}
diff --git a/drivers/power/max77693_charger.c b/drivers/power/max77693_charger.c
index 754879eb59f6..eb68d0572799 100644
--- a/drivers/power/max77693_charger.c
+++ b/drivers/power/max77693_charger.c
@@ -21,6 +21,7 @@
#include <linux/regmap.h>
#include <linux/mfd/max77693.h>
#include <linux/mfd/max77693-private.h>
+#include <linux/mfd/max77693-common.h>
#define MAX77693_CHARGER_NAME "max77693-charger"
static const char *max77693_charger_model = "MAX77693";
diff --git a/drivers/regulator/max77693.c b/drivers/regulator/max77693.c
index 236851ab575a..5b30dc42679c 100644
--- a/drivers/regulator/max77693.c
+++ b/drivers/regulator/max77693.c
@@ -30,6 +30,7 @@
#include <linux/regulator/machine.h>
#include <linux/mfd/max77693.h>
#include <linux/mfd/max77693-private.h>
+#include <linux/mfd/max77693-common.h>
#include <linux/regulator/of_regulator.h>
#include <linux/regmap.h>
diff --git a/include/linux/mfd/max77693-common.h b/include/linux/mfd/max77693-common.h
new file mode 100644
index 000000000000..7da4cc38e982
--- /dev/null
+++ b/include/linux/mfd/max77693-common.h
@@ -0,0 +1,44 @@
+/*
+ * Common data shared between Maxim 77693 and 77843 drivers
+ *
+ * Copyright (C) 2015 Samsung Electronics
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef __LINUX_MFD_MAX77693_COMMON_H
+#define __LINUX_MFD_MAX77693_COMMON_H
+
+enum max77693_types {
+ TYPE_MAX77693_UNKNOWN,
+ TYPE_MAX77693,
+};
+
+/*
+ * Shared also with max77843.
+ */
+struct max77693_dev {
+ struct device *dev;
+ struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */
+ struct i2c_client *i2c_muic; /* 0x4A , MUIC */
+ struct i2c_client *i2c_haptic; /* MAX77693: 0x90 , Haptic */
+
+ enum max77693_types type;
+
+ struct regmap *regmap;
+ struct regmap *regmap_muic;
+ struct regmap *regmap_haptic; /* Only MAX77693 */
+
+ struct regmap_irq_chip_data *irq_data_led;
+ struct regmap_irq_chip_data *irq_data_topsys;
+ struct regmap_irq_chip_data *irq_data_chg; /* Only MAX77693 */
+ struct regmap_irq_chip_data *irq_data_muic;
+
+ int irq;
+};
+
+
+#endif /* __LINUX_MFD_MAX77693_COMMON_H */
diff --git a/include/linux/mfd/max77693-private.h b/include/linux/mfd/max77693-private.h
index e3c0afff38d3..8c4143c0c651 100644
--- a/include/linux/mfd/max77693-private.h
+++ b/include/linux/mfd/max77693-private.h
@@ -529,29 +529,4 @@ enum max77693_irq_muic {
MAX77693_MUIC_IRQ_NR,
};
-enum max77693_types {
- TYPE_MAX77693_UNKNOWN,
- TYPE_MAX77693,
-};
-
-struct max77693_dev {
- struct device *dev;
- struct i2c_client *i2c; /* 0xCC , PMIC, Charger, Flash LED */
- struct i2c_client *muic; /* 0x4A , MUIC */
- struct i2c_client *haptic; /* 0x90 , Haptic */
-
- enum max77693_types type;
-
- struct regmap *regmap;
- struct regmap *regmap_muic;
- struct regmap *regmap_haptic;
-
- struct regmap_irq_chip_data *irq_data_led;
- struct regmap_irq_chip_data *irq_data_topsys;
- struct regmap_irq_chip_data *irq_data_charger;
- struct regmap_irq_chip_data *irq_data_muic;
-
- int irq;
-};
-
#endif /* __LINUX_MFD_MAX77693_PRIV_H */
--
2.1.4
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web