aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd')
-rw-r--r--drivers/mfd/Kconfig3
-rw-r--r--drivers/mfd/Makefile2
-rw-r--r--drivers/mfd/tps65910-gpio.c91
3 files changed, 3 insertions, 93 deletions
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 4990a492a09b..b6c267724e14 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -721,8 +721,9 @@ config MFD_PM8XXX_IRQ
721 721
722config MFD_TPS65910 722config MFD_TPS65910
723 bool "TPS65910 Power Management chip" 723 bool "TPS65910 Power Management chip"
724 depends on I2C=y && GPIOLIB 724 depends on I2C=y
725 select MFD_CORE 725 select MFD_CORE
726 select GPIO_TPS65910
726 help 727 help
727 if you say yes here you get support for the TPS65910 series of 728 if you say yes here you get support for the TPS65910 series of
728 Power Management chips. 729 Power Management chips.
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index bdb8eab5668b..efe3cc33ed92 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -93,4 +93,4 @@ obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o
93obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o 93obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o
94obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o 94obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o
95obj-$(CONFIG_MFD_PM8XXX_IRQ) += pm8xxx-irq.o 95obj-$(CONFIG_MFD_PM8XXX_IRQ) += pm8xxx-irq.o
96obj-$(CONFIG_MFD_TPS65910) += tps65910.o tps65910-gpio.o tps65910-irq.o 96obj-$(CONFIG_MFD_TPS65910) += tps65910.o tps65910-irq.o
diff --git a/drivers/mfd/tps65910-gpio.c b/drivers/mfd/tps65910-gpio.c
deleted file mode 100644
index f3ae37652446..000000000000
--- a/drivers/mfd/tps65910-gpio.c
+++ /dev/null
@@ -1,91 +0,0 @@
1/*
2 * tps65910-gpio.c -- TI TPS6591x
3 *
4 * Copyright 2010 Texas Instruments Inc.
5 *
6 * Author: Graeme Gregory <gg@slimlogic.co.uk>
7 * Author: Jorge Eduardo Candelaria jedu@slimlogic.co.uk>
8 *
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published by the
11 * Free Software Foundation; either version 2 of the License, or (at your
12 * option) any later version.
13 *
14 */
15
16#include <linux/kernel.h>
17#include <linux/module.h>
18#include <linux/errno.h>
19#include <linux/gpio.h>
20#include <linux/i2c.h>
21#include <linux/mfd/tps65910.h>
22
23static int tps65910_gpio_get(struct gpio_chip *gc, unsigned offset)
24{
25 struct tps65910 *tps65910 = container_of(gc, struct tps65910, gpio);
26 uint8_t val;
27
28 tps65910->read(tps65910, TPS65910_GPIO0, 1, &val);
29
30 if (val & GPIO0_GPIO_STS_MASK)
31 return 1;
32
33 return 0;
34}
35
36static void tps65910_gpio_set(struct gpio_chip *gc, unsigned offset,
37 int value)
38{
39 struct tps65910 *tps65910 = container_of(gc, struct tps65910, gpio);
40
41 if (value)
42 tps65910_set_bits(tps65910, TPS65910_GPIO0,
43 GPIO0_GPIO_SET_MASK);
44 else
45 tps65910_clear_bits(tps65910, TPS65910_GPIO0,
46 GPIO0_GPIO_SET_MASK);
47}
48
49static int tps65910_gpio_output(struct gpio_chip *gc, unsigned offset,
50 int value)
51{
52 struct tps65910 *tps65910 = container_of(gc, struct tps65910, gpio);
53
54 /* Set the initial value */
55 tps65910_gpio_set(gc, 0, value);
56
57 return tps65910_set_bits(tps65910, TPS65910_GPIO0, GPIO0_GPIO_CFG_MASK);
58}
59
60static int tps65910_gpio_input(struct gpio_chip *gc, unsigned offset)
61{
62 struct tps65910 *tps65910 = container_of(gc, struct tps65910, gpio);
63
64 return tps65910_clear_bits(tps65910, TPS65910_GPIO0,
65 GPIO0_GPIO_CFG_MASK);
66}
67
68void tps65910_gpio_init(struct tps65910 *tps65910, int gpio_base)
69{
70 int ret;
71
72 if (!gpio_base)
73 return;
74
75 tps65910->gpio.owner = THIS_MODULE;
76 tps65910->gpio.label = tps65910->i2c_client->name;
77 tps65910->gpio.dev = tps65910->dev;
78 tps65910->gpio.base = gpio_base;
79 tps65910->gpio.ngpio = 1;
80 tps65910->gpio.can_sleep = 1;
81
82 tps65910->gpio.direction_input = tps65910_gpio_input;
83 tps65910->gpio.direction_output = tps65910_gpio_output;
84 tps65910->gpio.set = tps65910_gpio_set;
85 tps65910->gpio.get = tps65910_gpio_get;
86
87 ret = gpiochip_add(&tps65910->gpio);
88
89 if (ret)
90 dev_warn(tps65910->dev, "GPIO registration failed: %d\n", ret);
91}