summaryrefslogtreecommitdiff
path: root/drivers/gpio
diff options
context:
space:
mode:
authorshengfei Xu <xsf@rock-chips.com>2017-07-07 17:18:10 +0800
committerHuang, Tao <huangtao@rock-chips.com>2017-07-19 14:33:51 +0800
commitce4e02a88b73f7e5828153811cc52b1c5539dcbf (patch)
tree23b5b01140813e29cd49de22e774a955f9c9e847 /drivers/gpio
parent9d1525c6d75a111ca5d743becfb57dbbfc7b2117 (diff)
mfd: rk808: add rk816 support
include sub modules: regulator, rtc, gpio, pwrkey Change-Id: I59cc4b943403f1e0b1210a314cfcbf61fc193bdf Signed-off-by: shengfei Xu <xsf@rock-chips.com>
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/gpio-rk8xx.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-rk8xx.c b/drivers/gpio/gpio-rk8xx.c
index 6adc8d408c4a..67577d21baab 100644
--- a/drivers/gpio/gpio-rk8xx.c
+++ b/drivers/gpio/gpio-rk8xx.c
@@ -29,6 +29,10 @@
#define RK805_OUT0_VALMASK BIT(0)
#define RK805_OUT1_VALMASK BIT(1)
+#define RK816_FUN_MASK BIT(2)
+#define RK816_OUT_VALMASK BIT(3)
+#define RK816_DIR_MASK BIT(4)
+
struct rk8xx_gpio_reg {
u8 reg;
u8 dir_msk;
@@ -174,6 +178,15 @@ static struct rk8xx_gpio_reg rk805_gpio_reg[] = {
},
};
+static struct rk8xx_gpio_reg rk816_gpio_reg[] = {
+ {
+ .reg = RK816_GPIO_IO_POL_REG,
+ .dir_msk = RK816_DIR_MASK,
+ .val_msk = RK816_OUT_VALMASK,
+ .fun_msk = RK816_FUN_MASK,
+ },
+};
+
static int rk8xx_gpio_probe(struct platform_device *pdev)
{
struct rk808 *rk8xx = dev_get_drvdata(pdev->dev.parent);
@@ -198,6 +211,10 @@ static int rk8xx_gpio_probe(struct platform_device *pdev)
gi->gpio_reg = rk805_gpio_reg;
gi->gpio_nr = ARRAY_SIZE(rk805_gpio_reg);
break;
+ case RK816_ID:
+ gi->gpio_reg = rk816_gpio_reg;
+ gi->gpio_nr = ARRAY_SIZE(rk816_gpio_reg);
+ break;
default:
dev_err(&pdev->dev, "unsupported RK8XX ID %lu\n",
rk8xx->variant);