projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mfd: rk808: add rk816 support
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
gpio
/
gpio-rk8xx.c
diff --git
a/drivers/gpio/gpio-rk8xx.c
b/drivers/gpio/gpio-rk8xx.c
index 6adc8d408c4a0a65cfd17eeebfd22709a97aa637..67577d21baab7922cd91207c7846f09f0647dddb 100644
(file)
--- 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 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;
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);
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;
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);
default:
dev_err(&pdev->dev, "unsupported RK8XX ID %lu\n",
rk8xx->variant);