Commit 31b62a98 authored by Jonas Karlman's avatar Jonas Karlman Committed by Linus Walleij
Browse files

pinctrl: rockchip: fix reading pull type on rk3568



When reading pinconf-pins from debugfs it fails to get the configured pull
type on RK3568, "unsupported pinctrl type" error messages is also reported.

Fix this by adding support for RK3568 in rockchip_get_pull, including a
reverse of the pull-up value swap applied in rockchip_set_pull so that
pull-up is correctly reported in pinconf-pins.
Also update the workaround comment to reflect affected pins, GPIO0_D3-D6.

Fixes: c0dadc0e ("pinctrl: rockchip: add support for rk3568")
Signed-off-by: default avatarJonas Karlman <jonas@kwiboo.se>
Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
Reviewed-by: default avatarJianqun Xu <jay.xu@rock-chips.com>
Link: https://lore.kernel.org/r/20230110172955.1258840-1-jonas@kwiboo.se


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 937e7a39
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -2436,10 +2436,19 @@ static int rockchip_get_pull(struct rockchip_pin_bank *bank, int pin_num)
	case RK3308:
	case RK3308:
	case RK3368:
	case RK3368:
	case RK3399:
	case RK3399:
	case RK3568:
	case RK3588:
	case RK3588:
		pull_type = bank->pull_type[pin_num / 8];
		pull_type = bank->pull_type[pin_num / 8];
		data >>= bit;
		data >>= bit;
		data &= (1 << RK3188_PULL_BITS_PER_PIN) - 1;
		data &= (1 << RK3188_PULL_BITS_PER_PIN) - 1;
		/*
		 * In the TRM, pull-up being 1 for everything except the GPIO0_D3-D6,
		 * where that pull up value becomes 3.
		 */
		if (ctrl->type == RK3568 && bank->bank_num == 0 && pin_num >= 27 && pin_num <= 30) {
			if (data == 3)
				data = 1;
		}


		return rockchip_pull_list[pull_type][data];
		return rockchip_pull_list[pull_type][data];
	default:
	default:
@@ -2497,7 +2506,7 @@ static int rockchip_set_pull(struct rockchip_pin_bank *bank,
			}
			}
		}
		}
		/*
		/*
		 * In the TRM, pull-up being 1 for everything except the GPIO0_D0-D6,
		 * In the TRM, pull-up being 1 for everything except the GPIO0_D3-D6,
		 * where that pull up value becomes 3.
		 * where that pull up value becomes 3.
		 */
		 */
		if (ctrl->type == RK3568 && bank->bank_num == 0 && pin_num >= 27 && pin_num <= 30) {
		if (ctrl->type == RK3568 && bank->bank_num == 0 && pin_num >= 27 && pin_num <= 30) {