summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/pinctrl-rockchip.c
diff options
context:
space:
mode:
authorDavid Wu <david.wu@rock-chips.com>2017-08-23 04:00:07 -0400
committerLinus Walleij <linus.walleij@linaro.org>2017-08-31 09:25:42 -0400
commit12b8f01818974a5052b482db6c3fdca395f5dc4f (patch)
treebb4bd55929b1605941a15a083107ecadab657edf /drivers/pinctrl/pinctrl-rockchip.c
parent8546137721a9f8bb0fe99d89558628f17344ad5c (diff)
pinctrl: rockchip: Add rv1108 recalculated iomux support
The pins from GPIO1A0 to GPIO1B1 are special, need to recalculate iomux. And the register offset is larger than the u8 range, so changed to u32. Signed-off-by: David Wu <david.wu@rock-chips.com> Reviewed-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-rockchip.c')
-rw-r--r--drivers/pinctrl/pinctrl-rockchip.c68
1 files changed, 67 insertions, 1 deletions
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index c6f472e1bca6..b5cb7858ffdc 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -301,7 +301,7 @@ struct rockchip_pin_bank {
301struct rockchip_mux_recalced_data { 301struct rockchip_mux_recalced_data {
302 u8 num; 302 u8 num;
303 u8 pin; 303 u8 pin;
304 u8 reg; 304 u32 reg;
305 u8 bit; 305 u8 bit;
306 u8 mask; 306 u8 mask;
307}; 307};
@@ -558,6 +558,70 @@ static const struct pinctrl_ops rockchip_pctrl_ops = {
558 * Hardware access 558 * Hardware access
559 */ 559 */
560 560
561static struct rockchip_mux_recalced_data rv1108_mux_recalced_data[] = {
562 {
563 .num = 1,
564 .pin = 0,
565 .reg = 0x418,
566 .bit = 0,
567 .mask = 0x3
568 }, {
569 .num = 1,
570 .pin = 1,
571 .reg = 0x418,
572 .bit = 2,
573 .mask = 0x3
574 }, {
575 .num = 1,
576 .pin = 2,
577 .reg = 0x418,
578 .bit = 4,
579 .mask = 0x3
580 }, {
581 .num = 1,
582 .pin = 3,
583 .reg = 0x418,
584 .bit = 6,
585 .mask = 0x3
586 }, {
587 .num = 1,
588 .pin = 4,
589 .reg = 0x418,
590 .bit = 8,
591 .mask = 0x3
592 }, {
593 .num = 1,
594 .pin = 5,
595 .reg = 0x418,
596 .bit = 10,
597 .mask = 0x3
598 }, {
599 .num = 1,
600 .pin = 6,
601 .reg = 0x418,
602 .bit = 12,
603 .mask = 0x3
604 }, {
605 .num = 1,
606 .pin = 7,
607 .reg = 0x418,
608 .bit = 14,
609 .mask = 0x3
610 }, {
611 .num = 1,
612 .pin = 8,
613 .reg = 0x41c,
614 .bit = 0,
615 .mask = 0x3
616 }, {
617 .num = 1,
618 .pin = 9,
619 .reg = 0x41c,
620 .bit = 2,
621 .mask = 0x3
622 },
623};
624
561static struct rockchip_mux_recalced_data rk3128_mux_recalced_data[] = { 625static struct rockchip_mux_recalced_data rk3128_mux_recalced_data[] = {
562 { 626 {
563 .num = 2, 627 .num = 2,
@@ -3162,6 +3226,8 @@ static struct rockchip_pin_ctrl rv1108_pin_ctrl = {
3162 .type = RV1108, 3226 .type = RV1108,
3163 .grf_mux_offset = 0x10, 3227 .grf_mux_offset = 0x10,
3164 .pmu_mux_offset = 0x0, 3228 .pmu_mux_offset = 0x0,
3229 .iomux_recalced = rv1108_mux_recalced_data,
3230 .niomux_recalced = ARRAY_SIZE(rv1108_mux_recalced_data),
3165 .pull_calc_reg = rv1108_calc_pull_reg_and_bit, 3231 .pull_calc_reg = rv1108_calc_pull_reg_and_bit,
3166 .drv_calc_reg = rv1108_calc_drv_reg_and_bit, 3232 .drv_calc_reg = rv1108_calc_drv_reg_and_bit,
3167 .schmitt_calc_reg = rv1108_calc_schmitt_reg_and_bit, 3233 .schmitt_calc_reg = rv1108_calc_schmitt_reg_and_bit,