linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] mfd: palma: add RTC and GPIO support
@ 2013-01-03 10:46 Laxman Dewangan
  2013-01-03 10:46 ` [PATCH 1/4] mfd: palmas: add rtc irq number as irq resource for palmas-rtc Laxman Dewangan
                   ` (5 more replies)
  0 siblings, 6 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-03 10:46 UTC (permalink / raw)
  To: sameo, linus.walleij, grant.likely, akpm
  Cc: a.zummo, broonie, linux-kernel, rtc-linux, Laxman Dewangan

This series add the RTC and gpio driver for the TI Palma series PMIC.
The changes are splitted so that easy to apply in different sub systems.

Laxman Dewangan (4):
  mfd: palmas: add rtc irq number as irq resource for palmas-rtc
  mfd: palmas: add apis to access the Palmas' registers
  gpio: palmas: Add support for Palams GPIO
  rtc: palmas: add RTC driver Palmas series PMIC

 drivers/gpio/Kconfig       |    7 +
 drivers/gpio/Makefile      |    1 +
 drivers/gpio/gpio-palmas.c |  184 ++++++++++++++++++++++++
 drivers/mfd/palmas.c       |   14 ++-
 drivers/rtc/Kconfig        |   10 ++
 drivers/rtc/Makefile       |    1 +
 drivers/rtc/rtc-palmas.c   |  339 ++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/palmas.h |   52 +++++++
 8 files changed, 606 insertions(+), 2 deletions(-)
 create mode 100644 drivers/gpio/gpio-palmas.c
 create mode 100644 drivers/rtc/rtc-palmas.c


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH 1/4] mfd: palmas: add rtc irq number as irq resource for palmas-rtc
  2013-01-03 10:46 [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
@ 2013-01-03 10:46 ` Laxman Dewangan
  2013-01-03 10:46 ` [PATCH 2/4] mfd: palmas: add apis to access the Palmas' registers Laxman Dewangan
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-03 10:46 UTC (permalink / raw)
  To: sameo, linus.walleij, grant.likely, akpm
  Cc: a.zummo, broonie, linux-kernel, rtc-linux, Laxman Dewangan

Palma RTC is capable of generating alarm interrupt. Pass the alarm interrupt
as IRQ_RESOURCE for palmas-rtc sub device driver so that rtc driver can get
irq as platform_get_irq().

Also pass the irq domain in mfd_add_devices() to properly offset the irqs for
sub devices. This is needed when adding device through DT.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
 drivers/mfd/palmas.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c
index 6ffd7a2..bbdbc50 100644
--- a/drivers/mfd/palmas.c
+++ b/drivers/mfd/palmas.c
@@ -39,6 +39,14 @@ enum palmas_ids {
 	PALMAS_USB_ID,
 };
 
+static struct resource palmas_rtc_resources[] = {
+	{
+		.start  = PALMAS_RTC_ALARM_IRQ,
+		.end    = PALMAS_RTC_ALARM_IRQ,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
 static const struct mfd_cell palmas_children[] = {
 	{
 		.name = "palmas-pmic",
@@ -59,6 +67,8 @@ static const struct mfd_cell palmas_children[] = {
 	{
 		.name = "palmas-rtc",
 		.id = PALMAS_RTC_ID,
+		.resources = &palmas_rtc_resources[0],
+		.num_resources = ARRAY_SIZE(palmas_rtc_resources),
 	},
 	{
 		.name = "palmas-pwrbutton",
@@ -456,8 +466,8 @@ static int palmas_i2c_probe(struct i2c_client *i2c,
 
 	ret = mfd_add_devices(palmas->dev, -1,
 			      children, ARRAY_SIZE(palmas_children),
-			      NULL, regmap_irq_chip_get_base(palmas->irq_data),
-			      NULL);
+			      NULL, 0,
+			      regmap_irq_get_domain(palmas->irq_data));
 	kfree(children);
 
 	if (ret < 0)
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 2/4] mfd: palmas: add apis to access the Palmas' registers
  2013-01-03 10:46 [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
  2013-01-03 10:46 ` [PATCH 1/4] mfd: palmas: add rtc irq number as irq resource for palmas-rtc Laxman Dewangan
@ 2013-01-03 10:46 ` Laxman Dewangan
  2013-01-03 10:46 ` [PATCH 3/4] gpio: palmas: Add support for Palams GPIO Laxman Dewangan
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-03 10:46 UTC (permalink / raw)
  To: sameo, linus.walleij, grant.likely, akpm
  Cc: a.zummo, broonie, linux-kernel, rtc-linux, Laxman Dewangan

Palmas register set is divided into different blocks (base and offset)
and hence different i2c addresses. The i2c address offsets are derived
from base address of block of registers.

Add inline APIs to access the Palma's registers which takes the base of
register block and register offset. The i2c address offset is  derived
from the base address of register blocks.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
 include/linux/mfd/palmas.h |   52 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h
index 29f6616..a4d13d7 100644
--- a/include/linux/mfd/palmas.h
+++ b/include/linux/mfd/palmas.h
@@ -2789,4 +2789,56 @@ enum usb_irq_events {
 #define PALMAS_GPADC_TRIM15					0xE
 #define PALMAS_GPADC_TRIM16					0xF
 
+static inline int palmas_read(struct palmas *palmas, unsigned int base,
+		unsigned int reg, unsigned int *val)
+{
+	unsigned int addr =  PALMAS_BASE_TO_REG(base, reg);
+	int slave_id = PALMAS_BASE_TO_SLAVE(base);
+
+	return regmap_read(palmas->regmap[slave_id], addr, val);
+}
+
+static inline int palmas_write(struct palmas *palmas, unsigned int base,
+		unsigned int reg, unsigned int value)
+{
+	unsigned int addr = PALMAS_BASE_TO_REG(base, reg);
+	int slave_id = PALMAS_BASE_TO_SLAVE(base);
+
+	return regmap_write(palmas->regmap[slave_id], addr, value);
+}
+
+static inline int palmas_bulk_write(struct palmas *palmas, unsigned int base,
+	unsigned int reg, const void *val, size_t val_count)
+{
+	unsigned int addr = PALMAS_BASE_TO_REG(base, reg);
+	int slave_id = PALMAS_BASE_TO_SLAVE(base);
+
+	return regmap_bulk_write(palmas->regmap[slave_id], addr,
+			val, val_count);
+}
+
+static inline int palmas_bulk_read(struct palmas *palmas, unsigned int base,
+		unsigned int reg, void *val, size_t val_count)
+{
+	unsigned int addr = PALMAS_BASE_TO_REG(base, reg);
+	int slave_id = PALMAS_BASE_TO_SLAVE(base);
+
+	return regmap_bulk_read(palmas->regmap[slave_id], addr,
+		val, val_count);
+}
+
+static inline int palmas_update_bits(struct palmas *palmas, unsigned int base,
+	unsigned int reg, unsigned int mask, unsigned int val)
+{
+	unsigned int addr = PALMAS_BASE_TO_REG(base, reg);
+	int slave_id = PALMAS_BASE_TO_SLAVE(base);
+
+	return regmap_update_bits(palmas->regmap[slave_id], addr, mask, val);
+}
+
+static inline int palmas_irq_get_virq(struct palmas *palmas, int irq)
+{
+	return regmap_irq_get_virq(palmas->irq_data, irq);
+}
+
 #endif /*  __LINUX_MFD_PALMAS_H */
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-03 10:46 [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
  2013-01-03 10:46 ` [PATCH 1/4] mfd: palmas: add rtc irq number as irq resource for palmas-rtc Laxman Dewangan
  2013-01-03 10:46 ` [PATCH 2/4] mfd: palmas: add apis to access the Palmas' registers Laxman Dewangan
@ 2013-01-03 10:46 ` Laxman Dewangan
  2013-01-10 10:57   ` Linus Walleij
  2013-01-17 10:34   ` Linus Walleij
  2013-01-03 10:47 ` [PATCH 4/4] rtc: palmas: add RTC driver Palmas series PMIC Laxman Dewangan
                   ` (2 subsequent siblings)
  5 siblings, 2 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-03 10:46 UTC (permalink / raw)
  To: sameo, linus.walleij, grant.likely, akpm
  Cc: a.zummo, broonie, linux-kernel, rtc-linux, Laxman Dewangan

Add gpio driver for TI Palmas series PMIC. This has 8 gpio which can
work as input/output.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
 drivers/gpio/Kconfig       |    7 ++
 drivers/gpio/Makefile      |    1 +
 drivers/gpio/gpio-palmas.c |  184 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 192 insertions(+), 0 deletions(-)
 create mode 100644 drivers/gpio/gpio-palmas.c

diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 682de75..40a0ec3 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -663,6 +663,13 @@ config GPIO_AB8500
 	help
 	  Select this to enable the AB8500 IC GPIO driver
 
+config GPIO_PALMAS
+	bool "TI PALMAS series PMICs GPIO"
+	depends on MFD_PALMAS
+	help
+	  Select this option to enable GPIO driver for the TI PALMAS
+	  series chip family.
+
 config GPIO_TPS6586X
 	bool "TPS6586X GPIO"
 	depends on MFD_TPS6586X
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index c5aebd0..8962c5f 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -69,6 +69,7 @@ obj-$(CONFIG_GPIO_TC3589X)	+= gpio-tc3589x.o
 obj-$(CONFIG_ARCH_TEGRA)	+= gpio-tegra.o
 obj-$(CONFIG_GPIO_TIMBERDALE)	+= gpio-timberdale.o
 obj-$(CONFIG_ARCH_DAVINCI_TNETV107X) += gpio-tnetv107x.o
+obj-$(CONFIG_GPIO_PALMAS)	+= gpio-palmas.o
 obj-$(CONFIG_GPIO_TPS6586X)	+= gpio-tps6586x.o
 obj-$(CONFIG_GPIO_TPS65910)	+= gpio-tps65910.o
 obj-$(CONFIG_GPIO_TPS65912)	+= gpio-tps65912.o
diff --git a/drivers/gpio/gpio-palmas.c b/drivers/gpio/gpio-palmas.c
new file mode 100644
index 0000000..e3a4e56
--- /dev/null
+++ b/drivers/gpio/gpio-palmas.c
@@ -0,0 +1,184 @@
+/*
+ * TI Palma series PMIC's GPIO driver.
+ *
+ * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * Author: Laxman Dewangan <ldewangan@nvidia.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/gpio.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/mfd/palmas.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/platform_device.h>
+
+struct palmas_gpio {
+	struct gpio_chip gpio_chip;
+	struct palmas *palmas;
+};
+
+static inline struct palmas_gpio *to_palmas_gpio(struct gpio_chip *chip)
+{
+	return container_of(chip, struct palmas_gpio, gpio_chip);
+}
+
+static int palmas_gpio_get(struct gpio_chip *gc, unsigned offset)
+{
+	struct palmas_gpio *pg = to_palmas_gpio(gc);
+	struct palmas *palmas = pg->palmas;
+	unsigned int val;
+	int ret;
+
+	ret = palmas_read(palmas, PALMAS_GPIO_BASE, PALMAS_GPIO_DATA_IN, &val);
+	if (ret < 0) {
+		dev_err(gc->dev, "GPIO_DATA_IN read failed, err = %d\n", ret);
+		return ret;
+	}
+	return !!(val & BIT(offset));
+}
+
+static void palmas_gpio_set(struct gpio_chip *gc, unsigned offset,
+			int value)
+{
+	struct palmas_gpio *pg = to_palmas_gpio(gc);
+	struct palmas *palmas = pg->palmas;
+	int ret;
+
+	if (value)
+		ret = palmas_write(palmas, PALMAS_GPIO_BASE,
+				PALMAS_GPIO_SET_DATA_OUT, BIT(offset));
+	else
+		ret = palmas_write(palmas, PALMAS_GPIO_BASE,
+				PALMAS_GPIO_CLEAR_DATA_OUT, BIT(offset));
+	if (ret < 0)
+		dev_err(gc->dev, "%s write failed, err = %d\n",
+			(value) ? "GPIO_SET_DATA_OUT" : "GPIO_CLEAR_DATA_OUT",
+			ret);
+}
+
+static int palmas_gpio_output(struct gpio_chip *gc, unsigned offset,
+				int value)
+{
+	struct palmas_gpio *pg = to_palmas_gpio(gc);
+	struct palmas *palmas = pg->palmas;
+	int ret;
+
+	/* Set the initial value */
+	palmas_gpio_set(gc, offset, value);
+
+	ret = palmas_update_bits(palmas, PALMAS_GPIO_BASE,
+		PALMAS_GPIO_DATA_DIR, BIT(offset), BIT(offset));
+	if (ret < 0)
+		dev_err(gc->dev, "GPIO_DATA_DIR write failed, err = %d\n", ret);
+	return ret;
+}
+
+static int palmas_gpio_input(struct gpio_chip *gc, unsigned offset)
+{
+	struct palmas_gpio *pg = to_palmas_gpio(gc);
+	struct palmas *palmas = pg->palmas;
+	int ret;
+
+	ret = palmas_update_bits(palmas, PALMAS_GPIO_BASE,
+		PALMAS_GPIO_DATA_DIR, BIT(offset), 0);
+	if (ret < 0)
+		dev_err(gc->dev, "GPIO_DATA_DIR write failed, err = %d\n", ret);
+	return ret;
+}
+
+static int palmas_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
+{
+	struct palmas_gpio *pg = to_palmas_gpio(gc);
+	struct palmas *palmas = pg->palmas;
+
+	return palmas_irq_get_virq(palmas, PALMAS_GPIO_0_IRQ + offset);
+}
+
+static int palmas_gpio_probe(struct platform_device *pdev)
+{
+	struct palmas *palmas = dev_get_drvdata(pdev->dev.parent);
+	struct palmas_platform_data *palmas_pdata;
+	struct palmas_gpio *palmas_gpio;
+	int ret;
+
+	palmas_gpio = devm_kzalloc(&pdev->dev,
+				sizeof(*palmas_gpio), GFP_KERNEL);
+	if (!palmas_gpio) {
+		dev_err(&pdev->dev, "Could not allocate palmas_gpio\n");
+		return -ENOMEM;
+	}
+
+	palmas_gpio->palmas = palmas;
+	palmas_gpio->gpio_chip.owner = THIS_MODULE;
+	palmas_gpio->gpio_chip.label = dev_name(&pdev->dev);
+	palmas_gpio->gpio_chip.ngpio = 8;
+	palmas_gpio->gpio_chip.can_sleep = 1;
+	palmas_gpio->gpio_chip.direction_input = palmas_gpio_input;
+	palmas_gpio->gpio_chip.direction_output = palmas_gpio_output;
+	palmas_gpio->gpio_chip.to_irq = palmas_gpio_to_irq;
+	palmas_gpio->gpio_chip.set	= palmas_gpio_set;
+	palmas_gpio->gpio_chip.get	= palmas_gpio_get;
+	palmas_gpio->gpio_chip.dev = &pdev->dev;
+#ifdef CONFIG_OF_GPIO
+	palmas_gpio->gpio_chip.of_node = palmas->dev->of_node;
+#endif
+	palmas_pdata = dev_get_platdata(palmas->dev);
+	if (palmas_pdata && palmas_pdata->gpio_base)
+		palmas_gpio->gpio_chip.base = palmas_pdata->gpio_base;
+	else
+		palmas_gpio->gpio_chip.base = -1;
+
+	ret = gpiochip_add(&palmas_gpio->gpio_chip);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "Could not register gpiochip, %d\n", ret);
+		return ret;
+	}
+
+	platform_set_drvdata(pdev, palmas_gpio);
+	return ret;
+}
+
+static int palmas_gpio_remove(struct platform_device *pdev)
+{
+	struct palmas_gpio *palmas_gpio = platform_get_drvdata(pdev);
+
+	return gpiochip_remove(&palmas_gpio->gpio_chip);
+}
+
+static struct platform_driver palmas_gpio_driver = {
+	.driver.name	= "palmas-gpio",
+	.driver.owner	= THIS_MODULE,
+	.probe		= palmas_gpio_probe,
+	.remove		= palmas_gpio_remove,
+};
+
+static int __init palmas_gpio_init(void)
+{
+	return platform_driver_register(&palmas_gpio_driver);
+}
+subsys_initcall(palmas_gpio_init);
+
+static void __exit palmas_gpio_exit(void)
+{
+	platform_driver_unregister(&palmas_gpio_driver);
+}
+module_exit(palmas_gpio_exit);
+
+MODULE_ALIAS("platform:palmas-gpio");
+MODULE_AUTHOR("Laxman Dewangan <ldewangan@nvidia.com>");
+MODULE_DESCRIPTION("GPIO driver for TI Palmas series PMICs");
+MODULE_LICENSE("GPL v2");
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH 4/4] rtc: palmas: add RTC driver Palmas series PMIC
  2013-01-03 10:46 [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
                   ` (2 preceding siblings ...)
  2013-01-03 10:46 ` [PATCH 3/4] gpio: palmas: Add support for Palams GPIO Laxman Dewangan
@ 2013-01-03 10:47 ` Laxman Dewangan
  2013-01-24  4:49 ` [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
  2013-01-27  0:28 ` Samuel Ortiz
  5 siblings, 0 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-03 10:47 UTC (permalink / raw)
  To: sameo, linus.walleij, grant.likely, akpm
  Cc: a.zummo, broonie, linux-kernel, rtc-linux, Laxman Dewangan

TI Palmas series PMIC support the RTC and alarm functionality.
Add RTC driver with alarm support for this device.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
---
 drivers/rtc/Kconfig      |   10 ++
 drivers/rtc/Makefile     |    1 +
 drivers/rtc/rtc-palmas.c |  339 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 350 insertions(+), 0 deletions(-)
 create mode 100644 drivers/rtc/rtc-palmas.c

diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index d03bb8f..a0e86ba 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -279,6 +279,16 @@ config RTC_DRV_X1205
 	  This driver can also be built as a module. If so, the module
 	  will be called rtc-x1205.
 
+config RTC_DRV_PALMAS
+	tristate "TI Palmas RTC driver"
+	depends on MFD_PALMAS
+	help
+	  If you say yes here you get support for the RTC of TI PALMA series PMIC
+	  chips.
+
+	  This driver can also be built as a module. If so, the module
+	  will be called rtc-palma.
+
 config RTC_DRV_PCF8523
 	tristate "NXP PCF8523"
 	help
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index 3215b5c..1050c4e 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -77,6 +77,7 @@ obj-$(CONFIG_RTC_DRV_MPC5121)	+= rtc-mpc5121.o
 obj-$(CONFIG_RTC_DRV_MV)	+= rtc-mv.o
 obj-$(CONFIG_RTC_DRV_NUC900)	+= rtc-nuc900.o
 obj-$(CONFIG_RTC_DRV_OMAP)	+= rtc-omap.o
+obj-$(CONFIG_RTC_DRV_PALMAS)	+= rtc-palmas.o
 obj-$(CONFIG_RTC_DRV_PCAP)	+= rtc-pcap.o
 obj-$(CONFIG_RTC_DRV_PCF8523)	+= rtc-pcf8523.o
 obj-$(CONFIG_RTC_DRV_PCF8563)	+= rtc-pcf8563.o
diff --git a/drivers/rtc/rtc-palmas.c b/drivers/rtc/rtc-palmas.c
new file mode 100644
index 0000000..59c4298
--- /dev/null
+++ b/drivers/rtc/rtc-palmas.c
@@ -0,0 +1,339 @@
+/*
+ * rtc-palmas.c -- Palmas Real Time Clock driver.
+
+ * RTC driver for TI Palma series devices like TPS65913,
+ * TPS65914 power management IC.
+ *
+ * Copyright (c) 2012, NVIDIA Corporation.
+ *
+ * Author: Laxman Dewangan <ldewangan@nvidia.com>
+ *
+ * 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any kind,
+ * whether express or implied; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ * 02111-1307, USA
+ */
+
+#include <linux/bcd.h>
+#include <linux/errno.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/kernel.h>
+#include <linux/mfd/palmas.h>
+#include <linux/module.h>
+#include <linux/rtc.h>
+#include <linux/types.h>
+#include <linux/platform_device.h>
+#include <linux/pm.h>
+
+struct palmas_rtc {
+	struct rtc_device	*rtc;
+	struct device		*dev;
+	unsigned int		irq;
+};
+
+/* Total number of RTC registers needed to set time*/
+#define PALMAS_NUM_TIME_REGS	(PALMAS_YEARS_REG - PALMAS_SECONDS_REG + 1)
+
+static int palmas_rtc_read_time(struct device *dev, struct rtc_time *tm)
+{
+	unsigned char rtc_data[PALMAS_NUM_TIME_REGS];
+	struct palmas *palmas = dev_get_drvdata(dev->parent);
+	int ret;
+
+	/* Copy RTC counting registers to static registers or latches */
+	ret = palmas_update_bits(palmas, PALMAS_RTC_BASE, PALMAS_RTC_CTRL_REG,
+		PALMAS_RTC_CTRL_REG_GET_TIME, PALMAS_RTC_CTRL_REG_GET_TIME);
+	if (ret < 0) {
+		dev_err(dev, "RTC CTRL reg update failed, err: %d\n", ret);
+		return ret;
+	}
+
+	ret = palmas_bulk_read(palmas, PALMAS_RTC_BASE, PALMAS_SECONDS_REG,
+			rtc_data, PALMAS_NUM_TIME_REGS);
+	if (ret < 0) {
+		dev_err(dev, "RTC_SECONDS reg read failed, err = %d\n", ret);
+		return ret;
+	}
+
+	tm->tm_sec = bcd2bin(rtc_data[0]);
+	tm->tm_min = bcd2bin(rtc_data[1]);
+	tm->tm_hour = bcd2bin(rtc_data[2]);
+	tm->tm_mday = bcd2bin(rtc_data[3]);
+	tm->tm_mon = bcd2bin(rtc_data[4]) - 1;
+	tm->tm_year = bcd2bin(rtc_data[5]) + 100;
+
+	return ret;
+}
+
+static int palmas_rtc_set_time(struct device *dev, struct rtc_time *tm)
+{
+	unsigned char rtc_data[PALMAS_NUM_TIME_REGS];
+	struct palmas *palmas = dev_get_drvdata(dev->parent);
+	int ret;
+
+	rtc_data[0] = bin2bcd(tm->tm_sec);
+	rtc_data[1] = bin2bcd(tm->tm_min);
+	rtc_data[2] = bin2bcd(tm->tm_hour);
+	rtc_data[3] = bin2bcd(tm->tm_mday);
+	rtc_data[4] = bin2bcd(tm->tm_mon + 1);
+	rtc_data[5] = bin2bcd(tm->tm_year - 100);
+
+	/* Stop RTC while updating the RTC time registers */
+	ret = palmas_update_bits(palmas, PALMAS_RTC_BASE, PALMAS_RTC_CTRL_REG,
+		PALMAS_RTC_CTRL_REG_STOP_RTC, 0);
+	if (ret < 0) {
+		dev_err(dev, "RTC stop failed, err = %d\n", ret);
+		return ret;
+	}
+
+	ret = palmas_bulk_write(palmas, PALMAS_RTC_BASE, PALMAS_SECONDS_REG,
+		rtc_data, PALMAS_NUM_TIME_REGS);
+	if (ret < 0) {
+		dev_err(dev, "RTC_SECONDS reg write failed, err = %d\n", ret);
+		return ret;
+	}
+
+	/* Start back RTC */
+	ret = palmas_update_bits(palmas, PALMAS_RTC_BASE, PALMAS_RTC_CTRL_REG,
+		PALMAS_RTC_CTRL_REG_STOP_RTC, PALMAS_RTC_CTRL_REG_STOP_RTC);
+	if (ret < 0)
+		dev_err(dev, "RTC start failed, err = %d\n", ret);
+	return ret;
+}
+
+static int palmas_rtc_alarm_irq_enable(struct device *dev, unsigned enabled)
+{
+	struct palmas *palmas = dev_get_drvdata(dev->parent);
+	u8 val;
+
+	val = enabled ? PALMAS_RTC_INTERRUPTS_REG_IT_ALARM : 0;
+	return palmas_write(palmas, PALMAS_RTC_BASE,
+		PALMAS_RTC_INTERRUPTS_REG, val);
+}
+
+static int palmas_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alm)
+{
+	unsigned char alarm_data[PALMAS_NUM_TIME_REGS];
+	u32 int_val;
+	struct palmas *palmas = dev_get_drvdata(dev->parent);
+	int ret;
+
+	ret = palmas_bulk_read(palmas, PALMAS_RTC_BASE,
+			PALMAS_ALARM_SECONDS_REG,
+			alarm_data, PALMAS_NUM_TIME_REGS);
+	if (ret < 0) {
+		dev_err(dev, "RTC_ALARM_SECONDS read failed, err = %d\n", ret);
+		return ret;
+	}
+
+	alm->time.tm_sec = bcd2bin(alarm_data[0]);
+	alm->time.tm_min = bcd2bin(alarm_data[1]);
+	alm->time.tm_hour = bcd2bin(alarm_data[2]);
+	alm->time.tm_mday = bcd2bin(alarm_data[3]);
+	alm->time.tm_mon = bcd2bin(alarm_data[4]) - 1;
+	alm->time.tm_year = bcd2bin(alarm_data[5]) + 100;
+
+	ret = palmas_read(palmas, PALMAS_RTC_BASE, PALMAS_RTC_INTERRUPTS_REG,
+			&int_val);
+	if (ret < 0) {
+		dev_err(dev, "RTC_INTERRUPTS reg read failed, err = %d\n", ret);
+		return ret;
+	}
+
+	if (int_val & PALMAS_RTC_INTERRUPTS_REG_IT_ALARM)
+		alm->enabled = 1;
+	return ret;
+}
+
+static int palmas_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
+{
+	unsigned char alarm_data[PALMAS_NUM_TIME_REGS];
+	struct palmas *palmas = dev_get_drvdata(dev->parent);
+	int ret;
+
+	ret = palmas_rtc_alarm_irq_enable(dev, 0);
+	if (ret < 0) {
+		dev_err(dev, "Disable RTC alarm failed\n");
+		return ret;
+	}
+
+	alarm_data[0] = bin2bcd(alm->time.tm_sec);
+	alarm_data[1] = bin2bcd(alm->time.tm_min);
+	alarm_data[2] = bin2bcd(alm->time.tm_hour);
+	alarm_data[3] = bin2bcd(alm->time.tm_mday);
+	alarm_data[4] = bin2bcd(alm->time.tm_mon + 1);
+	alarm_data[5] = bin2bcd(alm->time.tm_year - 100);
+
+	ret = palmas_bulk_write(palmas, PALMAS_RTC_BASE,
+		PALMAS_ALARM_SECONDS_REG, alarm_data, PALMAS_NUM_TIME_REGS);
+	if (ret < 0) {
+		dev_err(dev, "ALARM_SECONDS_REG write failed, err = %d\n", ret);
+		return ret;
+	}
+
+	if (alm->enabled)
+		ret = palmas_rtc_alarm_irq_enable(dev, 1);
+	return ret;
+}
+
+static int palmas_clear_interrupts(struct device *dev)
+{
+	struct palmas *palmas = dev_get_drvdata(dev->parent);
+	unsigned int rtc_reg;
+	int ret;
+
+	ret = palmas_read(palmas, PALMAS_RTC_BASE, PALMAS_RTC_STATUS_REG,
+				&rtc_reg);
+	if (ret < 0) {
+		dev_err(dev, "RTC_STATUS read failed, err = %d\n", ret);
+		return ret;
+	}
+
+	ret = palmas_write(palmas, PALMAS_RTC_BASE, PALMAS_RTC_STATUS_REG,
+			rtc_reg);
+	if (ret < 0) {
+		dev_err(dev, "RTC_STATUS write failed, err = %d\n", ret);
+		return ret;
+	}
+	return 0;
+}
+
+static irqreturn_t palmas_rtc_interrupt(int irq, void *context)
+{
+	struct palmas_rtc *palmas_rtc = context;
+	struct device *dev = palmas_rtc->dev;
+	int ret;
+
+	ret = palmas_clear_interrupts(dev);
+	if (ret < 0) {
+		dev_err(dev, "RTC interrupt clear failed, err = %d\n", ret);
+		return IRQ_NONE;
+	}
+
+	rtc_update_irq(palmas_rtc->rtc, 1, RTC_IRQF | RTC_AF);
+	return IRQ_HANDLED;
+}
+
+static struct rtc_class_ops palmas_rtc_ops = {
+	.read_time	= palmas_rtc_read_time,
+	.set_time	= palmas_rtc_set_time,
+	.read_alarm	= palmas_rtc_read_alarm,
+	.set_alarm	= palmas_rtc_set_alarm,
+	.alarm_irq_enable = palmas_rtc_alarm_irq_enable,
+};
+
+static int palmas_rtc_probe(struct platform_device *pdev)
+{
+	struct palmas *palmas = dev_get_drvdata(pdev->dev.parent);
+	struct palmas_rtc *palmas_rtc = NULL;
+	int ret;
+
+	palmas_rtc = devm_kzalloc(&pdev->dev, sizeof(struct palmas_rtc),
+			GFP_KERNEL);
+	if (!palmas_rtc)
+		return -ENOMEM;
+
+	/* Clear pending interrupts */
+	ret = palmas_clear_interrupts(&pdev->dev);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "clear RTC int failed, err = %d\n", ret);
+		return ret;
+	}
+
+	palmas_rtc->dev = &pdev->dev;
+	platform_set_drvdata(pdev, palmas_rtc);
+
+	/* Start RTC */
+	ret = palmas_update_bits(palmas, PALMAS_RTC_BASE, PALMAS_RTC_CTRL_REG,
+			PALMAS_RTC_CTRL_REG_STOP_RTC,
+			PALMAS_RTC_CTRL_REG_STOP_RTC);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "RTC_CTRL write failed, err = %d\n", ret);
+		return ret;
+	}
+
+	palmas_rtc->irq = platform_get_irq(pdev, 0);
+
+	palmas_rtc->rtc = rtc_device_register(pdev->name, &pdev->dev,
+				&palmas_rtc_ops, THIS_MODULE);
+	if (IS_ERR(palmas_rtc->rtc)) {
+		ret = PTR_ERR(palmas_rtc->rtc);
+		dev_err(&pdev->dev, "RTC register failed, err = %d\n", ret);
+		return ret;
+	}
+
+	ret = request_threaded_irq(palmas_rtc->irq, NULL,
+			palmas_rtc_interrupt,
+			IRQF_TRIGGER_LOW | IRQF_ONESHOT |
+			IRQF_EARLY_RESUME,
+			dev_name(&pdev->dev), palmas_rtc);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "IRQ request failed, err = %d\n", ret);
+		rtc_device_unregister(palmas_rtc->rtc);
+		return ret;
+	}
+
+	device_set_wakeup_capable(&pdev->dev, 1);
+	return 0;
+}
+
+static int palmas_rtc_remove(struct platform_device *pdev)
+{
+	struct palmas_rtc *palmas_rtc = platform_get_drvdata(pdev);
+
+	palmas_rtc_alarm_irq_enable(&pdev->dev, 0);
+	free_irq(palmas_rtc->irq, palmas_rtc);
+	rtc_device_unregister(palmas_rtc->rtc);
+	return 0;
+}
+
+#ifdef CONFIG_PM_SLEEP
+static int palmas_rtc_suspend(struct device *dev)
+{
+	struct palmas_rtc *palmas_rtc = dev_get_drvdata(dev);
+
+	if (device_may_wakeup(dev))
+		enable_irq_wake(palmas_rtc->irq);
+	return 0;
+}
+
+static int palmas_rtc_resume(struct device *dev)
+{
+	struct palmas_rtc *palmas_rtc = dev_get_drvdata(dev);
+
+	if (device_may_wakeup(dev))
+		disable_irq_wake(palmas_rtc->irq);
+	return 0;
+}
+#endif
+
+static const struct dev_pm_ops palmas_rtc_pm_ops = {
+	SET_SYSTEM_SLEEP_PM_OPS(palmas_rtc_suspend, palmas_rtc_resume)
+};
+
+static struct platform_driver palmas_rtc_driver = {
+	.probe		= palmas_rtc_probe,
+	.remove		= palmas_rtc_remove,
+	.driver		= {
+		.owner	= THIS_MODULE,
+		.name	= "palmas-rtc",
+		.pm	= &palmas_rtc_pm_ops,
+	},
+};
+
+module_platform_driver(palmas_rtc_driver);
+
+MODULE_ALIAS("platform:palmas_rtc");
+MODULE_DESCRIPTION("TI PALMAS series RTC driver");
+MODULE_AUTHOR("Laxman Dewangan <ldewangan@nvidia.com>");
+MODULE_LICENSE("GPL v2");
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-03 10:46 ` [PATCH 3/4] gpio: palmas: Add support for Palams GPIO Laxman Dewangan
@ 2013-01-10 10:57   ` Linus Walleij
  2013-01-10 11:03     ` Laxman Dewangan
  2013-01-10 11:05     ` Mark Brown
  2013-01-17 10:34   ` Linus Walleij
  1 sibling, 2 replies; 17+ messages in thread
From: Linus Walleij @ 2013-01-10 10:57 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: sameo, grant.likely, akpm, a.zummo, broonie, linux-kernel,
	rtc-linux

On Thu, Jan 3, 2013 at 11:46 AM, Laxman Dewangan <ldewangan@nvidia.com> wrote:

> Add gpio driver for TI Palmas series PMIC. This has 8 gpio which can
> work as input/output.
>
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>

This driver seems unnecessary. Can't you just use
drivers/gpio/gpio-generic.c ?

> +static int palmas_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
> +{
> +       struct palmas_gpio *pg = to_palmas_gpio(gc);
> +       struct palmas *palmas = pg->palmas;
> +
> +       return palmas_irq_get_virq(palmas, PALMAS_GPIO_0_IRQ + offset);
> +}

Why are you implementing this for a driver which does not even expose
the ability to trigger IRQs? If it's supposed to support IRQs it should
register a struct irq_chip.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-10 10:57   ` Linus Walleij
@ 2013-01-10 11:03     ` Laxman Dewangan
  2013-01-10 11:05     ` Mark Brown
  1 sibling, 0 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-10 11:03 UTC (permalink / raw)
  To: Linus Walleij
  Cc: sameo@linux.intel.com, grant.likely@secretlab.ca,
	akpm@linux-foundation.org, a.zummo@towertech.it,
	broonie@opensource.wolfsonmicro.com, linux-kernel@vger.kernel.org,
	rtc-linux@googlegroups.com

On Thursday 10 January 2013 04:27 PM, Linus Walleij wrote:
> On Thu, Jan 3, 2013 at 11:46 AM, Laxman Dewangan <ldewangan@nvidia.com> wrote:
>
>> Add gpio driver for TI Palmas series PMIC. This has 8 gpio which can
>> work as input/output.
>>
>> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
> This driver seems unnecessary. Can't you just use
> drivers/gpio/gpio-generic.c ?
The gpio-generic driver is for the MMIO based interface. This is for the 
PMIC-Palma which is in i2c interface and so need to have register access 
through the i2c call exposed by palma mfd driver.



>
>> +static int palmas_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
>> +{
>> +       struct palmas_gpio *pg = to_palmas_gpio(gc);
>> +       struct palmas *palmas = pg->palmas;
>> +
>> +       return palmas_irq_get_virq(palmas, PALMAS_GPIO_0_IRQ + offset);
>> +}
> Why are you implementing this for a driver which does not even expose
> the ability to trigger IRQs? If it's supposed to support IRQs it should
> register a struct irq_chip.

The interrupts are registered in mfd core via the regmap-irq_chip.
This api converts the gpio number to corresponding irq.


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-10 10:57   ` Linus Walleij
  2013-01-10 11:03     ` Laxman Dewangan
@ 2013-01-10 11:05     ` Mark Brown
  1 sibling, 0 replies; 17+ messages in thread
From: Mark Brown @ 2013-01-10 11:05 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Laxman Dewangan, sameo, grant.likely, akpm, a.zummo, linux-kernel,
	rtc-linux

[-- Attachment #1: Type: text/plain, Size: 1125 bytes --]

On Thu, Jan 10, 2013 at 11:57:10AM +0100, Linus Walleij wrote:
> On Thu, Jan 3, 2013 at 11:46 AM, Laxman Dewangan <ldewangan@nvidia.com> wrote:

> > Add gpio driver for TI Palmas series PMIC. This has 8 gpio which can
> > work as input/output.

> > Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>

> This driver seems unnecessary. Can't you just use
> drivers/gpio/gpio-generic.c ?

This only works for memory mapped devices but this is an I2C controlled
MFD.  Someone should really do a regmap gpio-chip (or convert the
gpio-generic driver to regmap, regmap does support MMIO now but it does
add a little overhead).

> > +static int palmas_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
> > +{
> > +       struct palmas_gpio *pg = to_palmas_gpio(gc);
> > +       struct palmas *palmas = pg->palmas;
> > +
> > +       return palmas_irq_get_virq(palmas, PALMAS_GPIO_0_IRQ + offset);
> > +}

> Why are you implementing this for a driver which does not even expose
> the ability to trigger IRQs? If it's supposed to support IRQs it should
> register a struct irq_chip.

The irq_chip is in the MFD core for the device.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-03 10:46 ` [PATCH 3/4] gpio: palmas: Add support for Palams GPIO Laxman Dewangan
  2013-01-10 10:57   ` Linus Walleij
@ 2013-01-17 10:34   ` Linus Walleij
  2013-01-17 10:35     ` Mark Brown
  1 sibling, 1 reply; 17+ messages in thread
From: Linus Walleij @ 2013-01-17 10:34 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: sameo, grant.likely, akpm, a.zummo, broonie, linux-kernel,
	rtc-linux

On Thu, Jan 3, 2013 at 11:46 AM, Laxman Dewangan <ldewangan@nvidia.com> wrote:

> Add gpio driver for TI Palmas series PMIC. This has 8 gpio which can
> work as input/output.
>
> Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>

OK you & Mark have convinced me that this driver is OK as it stands.

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Do you want me to apply it to my GPIO tree or does it have
dependencies so you'll take it through MFD or something?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-17 10:34   ` Linus Walleij
@ 2013-01-17 10:35     ` Mark Brown
  2013-01-17 10:37       ` Laxman Dewangan
  0 siblings, 1 reply; 17+ messages in thread
From: Mark Brown @ 2013-01-17 10:35 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Laxman Dewangan, sameo, grant.likely, akpm, a.zummo, linux-kernel,
	rtc-linux

On Thu, Jan 17, 2013 at 11:34:42AM +0100, Linus Walleij wrote:

> Do you want me to apply it to my GPIO tree or does it have
> dependencies so you'll take it through MFD or something?

The MFD has been merged for a couple of releases now.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-17 10:35     ` Mark Brown
@ 2013-01-17 10:37       ` Laxman Dewangan
  2013-01-17 13:58         ` [rtc-linux] " Linus Walleij
  0 siblings, 1 reply; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-17 10:37 UTC (permalink / raw)
  To: Mark Brown
  Cc: Linus Walleij, sameo@linux.intel.com, grant.likely@secretlab.ca,
	akpm@linux-foundation.org, a.zummo@towertech.it,
	linux-kernel@vger.kernel.org, rtc-linux@googlegroups.com

On Thursday 17 January 2013 04:05 PM, Mark Brown wrote:
> On Thu, Jan 17, 2013 at 11:34:42AM +0100, Linus Walleij wrote:
>
>> Do you want me to apply it to my GPIO tree or does it have
>> dependencies so you'll take it through MFD or something?
> The MFD has been merged for a couple of releases now.
Yes, Although this driver used the new API introduced in patch 1/4 but I 
think it is fine to apply this in GPIO subsystem here as it is 
independent driver.



^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [rtc-linux] Re: [PATCH 3/4] gpio: palmas: Add support for Palams GPIO
  2013-01-17 10:37       ` Laxman Dewangan
@ 2013-01-17 13:58         ` Linus Walleij
  0 siblings, 0 replies; 17+ messages in thread
From: Linus Walleij @ 2013-01-17 13:58 UTC (permalink / raw)
  To: rtc-linux
  Cc: Mark Brown, sameo@linux.intel.com, grant.likely@secretlab.ca,
	akpm@linux-foundation.org, a.zummo@towertech.it,
	linux-kernel@vger.kernel.org

On Thu, Jan 17, 2013 at 11:37 AM, Laxman Dewangan <ldewangan@nvidia.com> wrote:
> On Thursday 17 January 2013 04:05 PM, Mark Brown wrote:
>>
>> On Thu, Jan 17, 2013 at 11:34:42AM +0100, Linus Walleij wrote:
>>
>>> Do you want me to apply it to my GPIO tree or does it have
>>> dependencies so you'll take it through MFD or something?
>>
>> The MFD has been merged for a couple of releases now.
>
> Yes, Although this driver used the new API introduced in patch 1/4 but I
> think it is fine to apply this in GPIO subsystem here as it is independent
> driver.

OK that's what fooled me.

Patch applied!

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/4] mfd: palma: add RTC and GPIO support
  2013-01-03 10:46 [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
                   ` (3 preceding siblings ...)
  2013-01-03 10:47 ` [PATCH 4/4] rtc: palmas: add RTC driver Palmas series PMIC Laxman Dewangan
@ 2013-01-24  4:49 ` Laxman Dewangan
  2013-01-27  0:28 ` Samuel Ortiz
  5 siblings, 0 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-24  4:49 UTC (permalink / raw)
  To: sameo@linux.intel.com
  Cc: Laxman Dewangan, linus.walleij@linaro.org,
	grant.likely@secretlab.ca, akpm@linux-foundation.org,
	a.zummo@towertech.it, broonie@opensource.wolfsonmicro.com,
	linux-kernel@vger.kernel.org, rtc-linux@googlegroups.com

On Thursday 03 January 2013 04:16 PM, Laxman Dewangan wrote:
> This series add the RTC and gpio driver for the TI Palma series PMIC.
> The changes are splitted so that easy to apply in different sub systems.
>
> Laxman Dewangan (4):
>    mfd: palmas: add rtc irq number as irq resource for palmas-rtc
>    mfd: palmas: add apis to access the Palmas' registers
>    gpio: palmas: Add support for Palams GPIO
>    rtc: palmas: add RTC driver Palmas series PMIC
>

Samuel,
I think you need to take all these patches to your tree as Linus has 
dropped the gpio patch due to build error. Possible same will apply for 
RTC change also.

Thanks,
Laxman

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/4] mfd: palma: add RTC and GPIO support
  2013-01-03 10:46 [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
                   ` (4 preceding siblings ...)
  2013-01-24  4:49 ` [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
@ 2013-01-27  0:28 ` Samuel Ortiz
  2013-01-27  8:45   ` Laxman Dewangan
  5 siblings, 1 reply; 17+ messages in thread
From: Samuel Ortiz @ 2013-01-27  0:28 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: linus.walleij, grant.likely, akpm, a.zummo, broonie, linux-kernel,
	rtc-linux

Hi Laxman,

On Thu, Jan 03, 2013 at 04:16:56PM +0530, Laxman Dewangan wrote:
> This series add the RTC and gpio driver for the TI Palma series PMIC.
> The changes are splitted so that easy to apply in different sub systems.
> 
> Laxman Dewangan (4):
>   mfd: palmas: add rtc irq number as irq resource for palmas-rtc
>   mfd: palmas: add apis to access the Palmas' registers
>   gpio: palmas: Add support for Palams GPIO
>   rtc: palmas: add RTC driver Palmas series PMIC
All 4 patches applied to my for-next branch, thanks.

Cheers,
Samuel.

-- 
Intel Open Source Technology Centre
http://oss.intel.com/

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/4] mfd: palma: add RTC and GPIO support
  2013-01-27  0:28 ` Samuel Ortiz
@ 2013-01-27  8:45   ` Laxman Dewangan
  2013-01-27 21:28     ` Samuel Ortiz
  0 siblings, 1 reply; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-27  8:45 UTC (permalink / raw)
  To: Samuel Ortiz
  Cc: linus.walleij@linaro.org, grant.likely@secretlab.ca,
	akpm@linux-foundation.org, a.zummo@towertech.it,
	broonie@opensource.wolfsonmicro.com, linux-kernel@vger.kernel.org,
	rtc-linux@googlegroups.com

On Sunday 27 January 2013 05:58 AM, Samuel Ortiz wrote:
> Hi Laxman,
>
> On Thu, Jan 03, 2013 at 04:16:56PM +0530, Laxman Dewangan wrote:
>> This series add the RTC and gpio driver for the TI Palma series PMIC.
>> The changes are splitted so that easy to apply in different sub systems.
>>
>> Laxman Dewangan (4):
>>    mfd: palmas: add rtc irq number as irq resource for palmas-rtc
>>    mfd: palmas: add apis to access the Palmas' registers
>>    gpio: palmas: Add support for Palams GPIO
>>    rtc: palmas: add RTC driver Palmas series PMIC
> All 4 patches applied to my for-next branch, thanks.
Hi Samuel,

Thanks for taking care. But it seems 2/4 of this series is missed which 
is very important for 3/4 and 4/4 to be compile.

Can you please apply the 2/4 before 3/4 and 4/4?

Thanks,
Laxman


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/4] mfd: palma: add RTC and GPIO support
  2013-01-27  8:45   ` Laxman Dewangan
@ 2013-01-27 21:28     ` Samuel Ortiz
  2013-01-28  5:30       ` Laxman Dewangan
  0 siblings, 1 reply; 17+ messages in thread
From: Samuel Ortiz @ 2013-01-27 21:28 UTC (permalink / raw)
  To: Laxman Dewangan
  Cc: linus.walleij@linaro.org, grant.likely@secretlab.ca,
	akpm@linux-foundation.org, a.zummo@towertech.it,
	broonie@opensource.wolfsonmicro.com, linux-kernel@vger.kernel.org,
	rtc-linux@googlegroups.com

Hi Laxman,

On Sun, Jan 27, 2013 at 02:15:43PM +0530, Laxman Dewangan wrote:
> On Sunday 27 January 2013 05:58 AM, Samuel Ortiz wrote:
> >Hi Laxman,
> >
> >On Thu, Jan 03, 2013 at 04:16:56PM +0530, Laxman Dewangan wrote:
> >>This series add the RTC and gpio driver for the TI Palma series PMIC.
> >>The changes are splitted so that easy to apply in different sub systems.
> >>
> >>Laxman Dewangan (4):
> >>   mfd: palmas: add rtc irq number as irq resource for palmas-rtc
> >>   mfd: palmas: add apis to access the Palmas' registers
> >>   gpio: palmas: Add support for Palams GPIO
> >>   rtc: palmas: add RTC driver Palmas series PMIC
> >All 4 patches applied to my for-next branch, thanks.
> Hi Samuel,
> 
> Thanks for taking care. But it seems 2/4 of this series is missed
> which is very important for 3/4 and 4/4 to be compile.
> 
> Can you please apply the 2/4 before 3/4 and 4/4?

Patch #2 is applied, see:

http://git.kernel.org/?p=linux/kernel/git/sameo/mfd-2.6.git;a=commit;h=2c3a09ab5da9ef4438af445d8f051e92bac85616

Cheers,
Samuel.

-- 
Intel Open Source Technology Centre
http://oss.intel.com/

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH 0/4] mfd: palma: add RTC and GPIO support
  2013-01-27 21:28     ` Samuel Ortiz
@ 2013-01-28  5:30       ` Laxman Dewangan
  0 siblings, 0 replies; 17+ messages in thread
From: Laxman Dewangan @ 2013-01-28  5:30 UTC (permalink / raw)
  To: Samuel Ortiz
  Cc: linus.walleij@linaro.org, grant.likely@secretlab.ca,
	akpm@linux-foundation.org, a.zummo@towertech.it,
	broonie@opensource.wolfsonmicro.com, linux-kernel@vger.kernel.org,
	rtc-linux@googlegroups.com

On Monday 28 January 2013 02:58 AM, Samuel Ortiz wrote:
> Hi Laxman,
>
> On Sun, Jan 27, 2013 at 02:15:43PM +0530, Laxman Dewangan wrote:
>> On Sunday 27 January 2013 05:58 AM, Samuel Ortiz wrote:
>>> Hi Laxman,
>>>
>>> On Thu, Jan 03, 2013 at 04:16:56PM +0530, Laxman Dewangan wrote:
>>>> This series add the RTC and gpio driver for the TI Palma series PMIC.
>>>> The changes are splitted so that easy to apply in different sub systems.
>>>>
>>>> Laxman Dewangan (4):
>>>>    mfd: palmas: add rtc irq number as irq resource for palmas-rtc
>>>>    mfd: palmas: add apis to access the Palmas' registers
>>>>    gpio: palmas: Add support for Palams GPIO
>>>>    rtc: palmas: add RTC driver Palmas series PMIC
>>> All 4 patches applied to my for-next branch, thanks.
>> Hi Samuel,
>>
>> Thanks for taking care. But it seems 2/4 of this series is missed
>> which is very important for 3/4 and 4/4 to be compile.
>>
>> Can you please apply the 2/4 before 3/4 and 4/4?
> Patch #2 is applied, see:
>
> http://git.kernel.org/?p=linux/kernel/git/sameo/mfd-2.6.git;a=commit;h=2c3a09ab5da9ef4438af445d8f051e92bac85616
>

Yes, it is there, Thank you very much. All patches are applied properly.


Thanks,
Laxman


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2013-01-28  5:32 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-03 10:46 [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
2013-01-03 10:46 ` [PATCH 1/4] mfd: palmas: add rtc irq number as irq resource for palmas-rtc Laxman Dewangan
2013-01-03 10:46 ` [PATCH 2/4] mfd: palmas: add apis to access the Palmas' registers Laxman Dewangan
2013-01-03 10:46 ` [PATCH 3/4] gpio: palmas: Add support for Palams GPIO Laxman Dewangan
2013-01-10 10:57   ` Linus Walleij
2013-01-10 11:03     ` Laxman Dewangan
2013-01-10 11:05     ` Mark Brown
2013-01-17 10:34   ` Linus Walleij
2013-01-17 10:35     ` Mark Brown
2013-01-17 10:37       ` Laxman Dewangan
2013-01-17 13:58         ` [rtc-linux] " Linus Walleij
2013-01-03 10:47 ` [PATCH 4/4] rtc: palmas: add RTC driver Palmas series PMIC Laxman Dewangan
2013-01-24  4:49 ` [PATCH 0/4] mfd: palma: add RTC and GPIO support Laxman Dewangan
2013-01-27  0:28 ` Samuel Ortiz
2013-01-27  8:45   ` Laxman Dewangan
2013-01-27 21:28     ` Samuel Ortiz
2013-01-28  5:30       ` Laxman Dewangan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).