* [PATCH v2 0/4] Add iomux-route switching support @ 2017-05-26 7:20 David Wu [not found] ` <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: David Wu @ 2017-05-26 7:20 UTC (permalink / raw) To: heiko, linus.walleij Cc: huangtao, dianders, linux-rockchip, linux-gpio, linux-kernel, David Wu The rk3228, rk3328, rk3399 have an interesting new feature, some things like one specific uart can use multiple pins to output data, but control of that seems to be split. The actual pin config is identical for all pins - each needs to be configured to function 2. Use one pin of a specifc group to be set to its special pinmux function, then configure the corresponding routing bits. If the pinmux setting is wrong for that pin the ip block won't work correctly anyway. David Wu (4): pinctrl: rockchip: Add iomux-route switching support pinctrl: rockchip: Add iomux-route switching support for rk3228 pinctrl: rockchip: Add iomux-route switching support for rk3328 pinctrl: rockchip: Add iomux-route switching support for rk3399 drivers/pinctrl/pinctrl-rockchip.c | 321 ++++++++++++++++++++++++++++++++++++- 1 file changed, 320 insertions(+), 1 deletion(-) -- 1.9.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
[parent not found: <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org>]
* [PATCH v2 1/4] pinctrl: rockchip: Add iomux-route switching support [not found] ` <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> @ 2017-05-26 7:20 ` David Wu 2017-05-29 12:25 ` Linus Walleij 2017-05-26 7:20 ` [PATCH v2 2/4] pinctrl: rockchip: Add iomux-route switching support for rk3228 David Wu 2017-05-26 22:19 ` [PATCH v2 0/4] Add iomux-route switching support Heiko Stuebner 2 siblings, 1 reply; 10+ messages in thread From: David Wu @ 2017-05-26 7:20 UTC (permalink / raw) To: heiko-4mtYJXux2i+zQB+pC5nmwQ, linus.walleij-QSEj5FYQhm4dnm+yROfE0A Cc: huangtao-TNX95d0MmH7DzftRWevZcw, linux-gpio-u79uwXL29TY76Z2rM5mHXA, dianders-F7+t8E8rja9g9hUCZPvPmw, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, David Wu On the some rockchip SOCS, some things like rk3399 specific uart2 can use multiple pins. Somewhere between the pin io-cells and the uart it seems to have some sort of switch to decide to which pin to actually route the data. +-------+ +--------+ /- GPIO4_B0 (pinmux 2) | uart2 | -- | switch | --- GPIO4_C0 (pinmux 2) +-------+ +--------+ \- GPIO4_C3 (pinmux 2) (switch selects one of the 3 pins base on the GRF_SOC_CON7[BIT0, BIT1]) The routing switch is determined by one pin of a specific group to be set to its special pinmux function. If the pinmux setting is wrong for that pin the ip block won't work correctly anyway. Signed-off-by: David Wu <david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> --- drivers/pinctrl/pinctrl-rockchip.c | 65 +++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index f141aa0..a5d7177 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -146,6 +146,7 @@ struct rockchip_drv { * @irq_lock: bus lock for irq chip * @new_irqs: newly configured irqs which must be muxed as GPIOs in * irq_bus_sync_unlock() + * @route_mask: bits describing the routing pins of per bank */ struct rockchip_pin_bank { void __iomem *reg_base; @@ -170,6 +171,7 @@ struct rockchip_pin_bank { u32 toggle_edge_mode; struct mutex irq_lock; u32 new_irqs; + u32 route_mask; }; #define PIN_BANK(id, pins, label) \ @@ -293,6 +295,22 @@ struct rockchip_pin_bank { } /** + * struct rockchip_mux_recalced_data: represent a pin iomux data. + * @bank_num: bank number. + * @pin: index at register or used to calc index. + * @func: the min pin. + * @route_offset: the max pin. + * @route_val: the register offset. + */ +struct rockchip_mux_route_data { + u8 bank_num; + u8 pin; + u8 func; + u32 route_offset; + u32 route_val; +}; + +/** */ struct rockchip_pin_ctrl { struct rockchip_pin_bank *pin_banks; @@ -304,6 +322,8 @@ struct rockchip_pin_ctrl { int pmu_mux_offset; int grf_drv_offset; int pmu_drv_offset; + struct rockchip_mux_route_data *iomux_routes; + u32 niomux_routes; void (*pull_calc_reg)(struct rockchip_pin_bank *bank, int pin_num, struct regmap **regmap, @@ -585,6 +605,30 @@ static void rk3328_recalc_mux(u8 bank_num, int pin, int *reg, *bit = data->bit; } +static bool rockchip_get_mux_route(struct rockchip_pin_bank *bank, int pin, + int mux, u32 *reg, u32 *value) +{ + struct rockchip_pinctrl *info = bank->drvdata; + struct rockchip_pin_ctrl *ctrl = info->ctrl; + struct rockchip_mux_route_data *data; + int i; + + for (i = 0; i < ctrl->niomux_routes; i++) { + data = &ctrl->iomux_routes[i]; + if ((data->bank_num == bank->bank_num) && + (data->pin == pin) && (data->func == mux)) + break; + } + + if (i >= ctrl->niomux_routes) + return false; + + *reg = data->route_offset; + *value = data->route_val; + + return true; +} + static int rockchip_get_mux(struct rockchip_pin_bank *bank, int pin) { struct rockchip_pinctrl *info = bank->drvdata; @@ -683,7 +727,7 @@ static int rockchip_set_mux(struct rockchip_pin_bank *bank, int pin, int mux) struct regmap *regmap; int reg, ret, mask, mux_type; u8 bit; - u32 data, rmask; + u32 data, rmask, route_reg, route_val; ret = rockchip_verify_mux(bank, pin, mux); if (ret < 0) @@ -719,6 +763,15 @@ static int rockchip_set_mux(struct rockchip_pin_bank *bank, int pin, int mux) if (ctrl->iomux_recalc && (mux_type & IOMUX_RECALCED)) ctrl->iomux_recalc(bank->bank_num, pin, ®, &bit, &mask); + if (bank->route_mask & BIT(pin)) { + if (rockchip_get_mux_route(bank, pin, mux, &route_reg, + &route_val)) { + ret = regmap_write(regmap, route_reg, route_val); + if (ret) + return ret; + } + } + data = (mask << (bit + 16)); rmask = data | (data >> 16); data |= (mux & mask) << bit; @@ -2585,6 +2638,16 @@ static struct rockchip_pin_ctrl *rockchip_pinctrl_get_soc_data( bank_pins += 8; } + + /* calculate the per-bank route_mask */ + for (j = 0; j < ctrl->niomux_routes; j++) { + int pin = 0; + + if (ctrl->iomux_routes[j].bank_num == bank->bank_num) { + pin = ctrl->iomux_routes[j].pin; + bank->route_mask |= BIT(pin); + } + } } return ctrl; -- 1.9.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 1/4] pinctrl: rockchip: Add iomux-route switching support 2017-05-26 7:20 ` [PATCH v2 1/4] pinctrl: rockchip: " David Wu @ 2017-05-29 12:25 ` Linus Walleij 0 siblings, 0 replies; 10+ messages in thread From: Linus Walleij @ 2017-05-29 12:25 UTC (permalink / raw) To: David Wu Cc: Heiko Stübner, Tao Huang, Doug Anderson, open list:ARM/Rockchip SoC..., linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org On Fri, May 26, 2017 at 9:20 AM, David Wu <david.wu@rock-chips.com> wrote: > On the some rockchip SOCS, some things like rk3399 specific uart2 can use > multiple pins. Somewhere between the pin io-cells and the uart it seems > to have some sort of switch to decide to which pin to actually route the > data. > > +-------+ +--------+ /- GPIO4_B0 (pinmux 2) > > | uart2 | -- | switch | --- GPIO4_C0 (pinmux 2) > > +-------+ +--------+ \- GPIO4_C3 (pinmux 2) > (switch selects one of the 3 pins base on the GRF_SOC_CON7[BIT0, BIT1]) > > The routing switch is determined by one pin of a specific group to be set > to its special pinmux function. If the pinmux setting is wrong for that > pin the ip block won't work correctly anyway. > > Signed-off-by: David Wu <david.wu@rock-chips.com> Patch applied with Heiko's ACK. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/4] pinctrl: rockchip: Add iomux-route switching support for rk3228 [not found] ` <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2017-05-26 7:20 ` [PATCH v2 1/4] pinctrl: rockchip: " David Wu @ 2017-05-26 7:20 ` David Wu 2017-05-29 12:26 ` Linus Walleij 2017-05-26 22:19 ` [PATCH v2 0/4] Add iomux-route switching support Heiko Stuebner 2 siblings, 1 reply; 10+ messages in thread From: David Wu @ 2017-05-26 7:20 UTC (permalink / raw) To: heiko-4mtYJXux2i+zQB+pC5nmwQ, linus.walleij-QSEj5FYQhm4dnm+yROfE0A Cc: huangtao-TNX95d0MmH7DzftRWevZcw, linux-gpio-u79uwXL29TY76Z2rM5mHXA, dianders-F7+t8E8rja9g9hUCZPvPmw, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, David Wu There are 9 IP blocks pin routes need to be switched, that are pwm-0, pwm-1, pwm-2, pwm-3, sdio, spi, emmc, uart2, uart1. Signed-off-by: David Wu <david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> --- Change in v2: - calculate the per-bank value dynamically (Heiko) drivers/pinctrl/pinctrl-rockchip.c | 132 +++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index a5d7177..605e24e 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -605,6 +605,136 @@ static void rk3328_recalc_mux(u8 bank_num, int pin, int *reg, *bit = data->bit; } +static struct rockchip_mux_route_data rk3228_mux_route_data[] = { + { + /* pwm0-0 */ + .bank_num = 0, + .pin = 26, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16), + }, { + /* pwm0-1 */ + .bank_num = 3, + .pin = 21, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16) | BIT(0), + }, { + /* pwm1-0 */ + .bank_num = 0, + .pin = 27, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 1), + }, { + /* pwm1-1 */ + .bank_num = 0, + .pin = 30, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 1) | BIT(1), + }, { + /* pwm2-0 */ + .bank_num = 0, + .pin = 28, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 2), + }, { + /* pwm2-1 */ + .bank_num = 1, + .pin = 12, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 2) | BIT(2), + }, { + /* pwm3-0 */ + .bank_num = 3, + .pin = 26, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 3), + }, { + /* pwm3-1 */ + .bank_num = 1, + .pin = 11, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 3) | BIT(3), + }, { + /* sdio-0_d0 */ + .bank_num = 1, + .pin = 1, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 4), + }, { + /* sdio-1_d0 */ + .bank_num = 3, + .pin = 2, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 4) | BIT(4), + }, { + /* spi-0_rx */ + .bank_num = 0, + .pin = 13, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 5), + }, { + /* spi-1_rx */ + .bank_num = 2, + .pin = 0, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 5) | BIT(5), + }, { + /* emmc-0_cmd */ + .bank_num = 1, + .pin = 22, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 7), + }, { + /* emmc-1_cmd */ + .bank_num = 2, + .pin = 4, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 7) | BIT(7), + }, { + /* uart2-0_rx */ + .bank_num = 1, + .pin = 19, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 8), + }, { + /* uart2-1_rx */ + .bank_num = 1, + .pin = 10, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 8) | BIT(8), + }, { + /* uart1-0_rx */ + .bank_num = 1, + .pin = 10, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 11), + }, { + /* uart1-1_rx */ + .bank_num = 3, + .pin = 13, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 11) | BIT(11), + }, +}; + static bool rockchip_get_mux_route(struct rockchip_pin_bank *bank, int pin, int mux, u32 *reg, u32 *value) { @@ -2898,6 +3028,8 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev) .label = "RK3228-GPIO", .type = RK3288, .grf_mux_offset = 0x0, + .iomux_routes = rk3228_mux_route_data, + .niomux_routes = ARRAY_SIZE(rk3228_mux_route_data), .pull_calc_reg = rk3228_calc_pull_reg_and_bit, .drv_calc_reg = rk3228_calc_drv_reg_and_bit, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 2/4] pinctrl: rockchip: Add iomux-route switching support for rk3228 2017-05-26 7:20 ` [PATCH v2 2/4] pinctrl: rockchip: Add iomux-route switching support for rk3228 David Wu @ 2017-05-29 12:26 ` Linus Walleij 0 siblings, 0 replies; 10+ messages in thread From: Linus Walleij @ 2017-05-29 12:26 UTC (permalink / raw) To: David Wu Cc: Heiko Stübner, Tao Huang, Doug Anderson, open list:ARM/Rockchip SoC..., linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org On Fri, May 26, 2017 at 9:20 AM, David Wu <david.wu@rock-chips.com> wrote: > There are 9 IP blocks pin routes need to be switched, that are > pwm-0, pwm-1, pwm-2, pwm-3, sdio, spi, emmc, uart2, uart1. > > Signed-off-by: David Wu <david.wu@rock-chips.com> > --- > Change in v2: > - calculate the per-bank value dynamically (Heiko) Patch applied with Heikos ACK. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2 0/4] Add iomux-route switching support [not found] ` <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2017-05-26 7:20 ` [PATCH v2 1/4] pinctrl: rockchip: " David Wu 2017-05-26 7:20 ` [PATCH v2 2/4] pinctrl: rockchip: Add iomux-route switching support for rk3228 David Wu @ 2017-05-26 22:19 ` Heiko Stuebner 2 siblings, 0 replies; 10+ messages in thread From: Heiko Stuebner @ 2017-05-26 22:19 UTC (permalink / raw) To: David Wu Cc: huangtao-TNX95d0MmH7DzftRWevZcw, linux-gpio-u79uwXL29TY76Z2rM5mHXA, linus.walleij-QSEj5FYQhm4dnm+yROfE0A, dianders-F7+t8E8rja9g9hUCZPvPmw, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r Hi David, Am Freitag, 26. Mai 2017, 15:20:19 CEST schrieb David Wu: > The rk3228, rk3328, rk3399 have an interesting new feature, > some things like one specific uart can use multiple pins to > output data, but control of that seems to be split. The actual > pin config is identical for all pins - each needs to be configured > to function 2. > > Use one pin of a specifc group to be set to its special pinmux function, > then configure the corresponding routing bits. If the pinmux setting is > wrong for that pin the ip block won't work correctly anyway. the approach looks nice now, the whole series Reviewed-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org> Thanks Heiko > David Wu (4): > pinctrl: rockchip: Add iomux-route switching support > pinctrl: rockchip: Add iomux-route switching support for rk3228 > pinctrl: rockchip: Add iomux-route switching support for rk3328 > pinctrl: rockchip: Add iomux-route switching support for rk3399 > > drivers/pinctrl/pinctrl-rockchip.c | 321 ++++++++++++++++++++++++++++++++++++- > 1 file changed, 320 insertions(+), 1 deletion(-) > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 3/4] pinctrl: rockchip: Add iomux-route switching support for rk3328 2017-05-26 7:20 [PATCH v2 0/4] Add iomux-route switching support David Wu [not found] ` <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> @ 2017-05-26 7:20 ` David Wu 2017-05-29 12:27 ` Linus Walleij 2017-05-26 7:20 ` [PATCH v2 4/4] pinctrl: rockchip: Add iomux-route switching support for rk3399 David Wu 2 siblings, 1 reply; 10+ messages in thread From: David Wu @ 2017-05-26 7:20 UTC (permalink / raw) To: heiko, linus.walleij Cc: huangtao, dianders, linux-rockchip, linux-gpio, linux-kernel, David Wu There are 8 IP blocks pin routes need to be switched, that are uart2dbg, gmac-m1-optimized, pdm, spi, i2s2, card, tsp, cif. Signed-off-by: David Wu <david.wu@rock-chips.com> --- Change in v2: - calculate the per-bank value dynamically (Heiko) drivers/pinctrl/pinctrl-rockchip.c | 83 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index 605e24e..2563959 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -735,6 +735,87 @@ static void rk3328_recalc_mux(u8 bank_num, int pin, int *reg, }, }; +static struct rockchip_mux_route_data rk3328_mux_route_data[] = { + { + /* uart2dbg_rxm0 */ + .bank_num = 1, + .pin = 1, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16) | BIT(16 + 1), + }, { + /* uart2dbg_rxm1 */ + .bank_num = 2, + .pin = 1, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16) | BIT(16 + 1) | BIT(0), + }, { + /* gmac-m1-optimized_rxd0 */ + .bank_num = 1, + .pin = 11, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 2) | BIT(16 + 10) | BIT(2) | BIT(10), + }, { + /* pdm_sdi0m0 */ + .bank_num = 2, + .pin = 19, + .func = 2, + .route_offset = 0x50, + .route_val = BIT(16 + 3), + }, { + /* pdm_sdi0m1 */ + .bank_num = 1, + .pin = 23, + .func = 3, + .route_offset = 0x50, + .route_val = BIT(16 + 3) | BIT(3), + }, { + /* spi_rxdm2 */ + .bank_num = 3, + .pin = 2, + .func = 4, + .route_offset = 0x50, + .route_val = BIT(16 + 4) | BIT(16 + 5) | BIT(5), + }, { + /* i2s2_sdim0 */ + .bank_num = 1, + .pin = 24, + .func = 1, + .route_offset = 0x50, + .route_val = BIT(16 + 6), + }, { + /* i2s2_sdim1 */ + .bank_num = 3, + .pin = 2, + .func = 6, + .route_offset = 0x50, + .route_val = BIT(16 + 6) | BIT(6), + }, { + /* card_iom1 */ + .bank_num = 2, + .pin = 22, + .func = 3, + .route_offset = 0x50, + .route_val = BIT(16 + 7) | BIT(7), + }, { + /* tsp_d5m1 */ + .bank_num = 2, + .pin = 16, + .func = 3, + .route_offset = 0x50, + .route_val = BIT(16 + 8) | BIT(8), + }, { + /* cif_data5m1 */ + .bank_num = 2, + .pin = 16, + .func = 4, + .route_offset = 0x50, + .route_val = BIT(16 + 9) | BIT(9), + }, +}; + static bool rockchip_get_mux_route(struct rockchip_pin_bank *bank, int pin, int mux, u32 *reg, u32 *value) { @@ -3097,6 +3178,8 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev) .label = "RK3328-GPIO", .type = RK3288, .grf_mux_offset = 0x0, + .iomux_routes = rk3328_mux_route_data, + .niomux_routes = ARRAY_SIZE(rk3328_mux_route_data), .pull_calc_reg = rk3228_calc_pull_reg_and_bit, .drv_calc_reg = rk3228_calc_drv_reg_and_bit, .iomux_recalc = rk3328_recalc_mux, -- 1.9.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 3/4] pinctrl: rockchip: Add iomux-route switching support for rk3328 2017-05-26 7:20 ` [PATCH v2 3/4] pinctrl: rockchip: Add iomux-route switching support for rk3328 David Wu @ 2017-05-29 12:27 ` Linus Walleij 0 siblings, 0 replies; 10+ messages in thread From: Linus Walleij @ 2017-05-29 12:27 UTC (permalink / raw) To: David Wu Cc: Heiko Stübner, Tao Huang, Doug Anderson, open list:ARM/Rockchip SoC..., linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org On Fri, May 26, 2017 at 9:20 AM, David Wu <david.wu@rock-chips.com> wrote: > There are 8 IP blocks pin routes need to be switched, that are > uart2dbg, gmac-m1-optimized, pdm, spi, i2s2, card, tsp, cif. > > Signed-off-by: David Wu <david.wu@rock-chips.com> > --- > Change in v2: > - calculate the per-bank value dynamically (Heiko) Patch applied with Heiko's ACK. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 4/4] pinctrl: rockchip: Add iomux-route switching support for rk3399 2017-05-26 7:20 [PATCH v2 0/4] Add iomux-route switching support David Wu [not found] ` <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2017-05-26 7:20 ` [PATCH v2 3/4] pinctrl: rockchip: Add iomux-route switching support for rk3328 David Wu @ 2017-05-26 7:20 ` David Wu 2017-05-29 12:28 ` Linus Walleij 2 siblings, 1 reply; 10+ messages in thread From: David Wu @ 2017-05-26 7:20 UTC (permalink / raw) To: heiko, linus.walleij Cc: huangtao, dianders, linux-rockchip, linux-gpio, linux-kernel, David Wu There are 2 IP blocks pin routes need to be switched, that are uart2dbg, pcie_clkreq. Signed-off-by: David Wu <david.wu@rock-chips.com> --- Change in v2: - calculate the per-bank value dynamically (Heiko) drivers/pinctrl/pinctrl-rockchip.c | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index 2563959..6690883 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -816,6 +816,45 @@ static void rk3328_recalc_mux(u8 bank_num, int pin, int *reg, }, }; +static struct rockchip_mux_route_data rk3399_mux_route_data[] = { + { + /* uart2dbga_rx */ + .bank_num = 4, + .pin = 8, + .func = 2, + .route_offset = 0xe21c, + .route_val = BIT(16 + 10) | BIT(16 + 11), + }, { + /* uart2dbgb_rx */ + .bank_num = 4, + .pin = 16, + .func = 2, + .route_offset = 0xe21c, + .route_val = BIT(16 + 10) | BIT(16 + 11) | BIT(10), + }, { + /* uart2dbgc_rx */ + .bank_num = 4, + .pin = 19, + .func = 1, + .route_offset = 0xe21c, + .route_val = BIT(16 + 10) | BIT(16 + 11) | BIT(11), + }, { + /* pcie_clkreqn */ + .bank_num = 2, + .pin = 26, + .func = 2, + .route_offset = 0xe21c, + .route_val = BIT(16 + 14), + }, { + /* pcie_clkreqnb */ + .bank_num = 4, + .pin = 24, + .func = 1, + .route_offset = 0xe21c, + .route_val = BIT(16 + 14) | BIT(14), + }, +}; + static bool rockchip_get_mux_route(struct rockchip_pin_bank *bank, int pin, int mux, u32 *reg, u32 *value) { @@ -3270,6 +3309,8 @@ static int rockchip_pinctrl_probe(struct platform_device *pdev) .pmu_mux_offset = 0x0, .grf_drv_offset = 0xe100, .pmu_drv_offset = 0x80, + .iomux_routes = rk3399_mux_route_data, + .niomux_routes = ARRAY_SIZE(rk3399_mux_route_data), .pull_calc_reg = rk3399_calc_pull_reg_and_bit, .drv_calc_reg = rk3399_calc_drv_reg_and_bit, }; -- 1.9.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 4/4] pinctrl: rockchip: Add iomux-route switching support for rk3399 2017-05-26 7:20 ` [PATCH v2 4/4] pinctrl: rockchip: Add iomux-route switching support for rk3399 David Wu @ 2017-05-29 12:28 ` Linus Walleij 0 siblings, 0 replies; 10+ messages in thread From: Linus Walleij @ 2017-05-29 12:28 UTC (permalink / raw) To: David Wu Cc: Heiko Stübner, Tao Huang, Doug Anderson, open list:ARM/Rockchip SoC..., linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org On Fri, May 26, 2017 at 9:20 AM, David Wu <david.wu@rock-chips.com> wrote: > There are 2 IP blocks pin routes need to be switched, that are > uart2dbg, pcie_clkreq. > > Signed-off-by: David Wu <david.wu@rock-chips.com> > --- > Change in v2: > - calculate the per-bank value dynamically (Heiko) Patch applied with Heiko's ACK. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-05-29 12:28 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-05-26 7:20 [PATCH v2 0/4] Add iomux-route switching support David Wu [not found] ` <1495783223-28857-1-git-send-email-david.wu-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2017-05-26 7:20 ` [PATCH v2 1/4] pinctrl: rockchip: " David Wu 2017-05-29 12:25 ` Linus Walleij 2017-05-26 7:20 ` [PATCH v2 2/4] pinctrl: rockchip: Add iomux-route switching support for rk3228 David Wu 2017-05-29 12:26 ` Linus Walleij 2017-05-26 22:19 ` [PATCH v2 0/4] Add iomux-route switching support Heiko Stuebner 2017-05-26 7:20 ` [PATCH v2 3/4] pinctrl: rockchip: Add iomux-route switching support for rk3328 David Wu 2017-05-29 12:27 ` Linus Walleij 2017-05-26 7:20 ` [PATCH v2 4/4] pinctrl: rockchip: Add iomux-route switching support for rk3399 David Wu 2017-05-29 12:28 ` Linus Walleij
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).