Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1182744 > unrolled thread

[PATCH v4 0/9] regulator: Merge max77843 into max77693

Started byKrzysztof Kozlowski <k.kozlowski.k@gmail.com>
First post2015-07-13 13:30 +0200
Last post2015-07-13 13:30 +0200
Articles 3 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [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

#1182744 — [PATCH v4 0/9] regulator: Merge max77843 into max77693

FromKrzysztof Kozlowski <k.kozlowski.k@gmail.com>
Date2015-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]


#1182745 — [PATCH v4 2/9] mfd: max77693: Store I2C device type as enum and add default unknown

FromKrzysztof Kozlowski <k.kozlowski.k@gmail.com>
Date2015-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]


#1182746 — [PATCH v4 4/9] drivers: max77693: Move state container to common header

FromKrzysztof Kozlowski <k.kozlowski.k@gmail.com>
Date2015-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