FAILED: patch "[PATCH] pinctrl: Ingenic: Add support for read the pin configuration" failed to apply to 5.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 1d0bd580ef83b78a10c0b37f3313eaa59d8c80db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=91=A8=E7=90=B0=E6=9D=B0=20=28Zhou=20Yanjie=29?=
<[email protected]>
Date: Sun, 18 Apr 2021 22:44:23 +0800
Subject: [PATCH] pinctrl: Ingenic: Add support for read the pin configuration
of X1830.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Add X1830 support in "ingenic_pinconf_get()", so that it can read the configuration of X1830 SoC correctly.
drivers/pinctrl/pinctrl-ingenic.c +31 -9
@@ -2109,26 +2109,48 @@ static int ingenic_pinconf_get(struct pinctrl_dev *pctldev,enum pin_config_param param =pinconf_to_config_param (*config);unsigned int idx = pin %PINS_PER_GPIO_CHIP ;unsigned int offt = pin /PINS_PER_GPIO_CHIP ; -bool pull; +unsigned int bias; +bool pull, pullup, pulldown; -if (jzpc->info->version >=ID_JZ4770 ) - pull = !ingenic_get_pin_config (jzpc, pin,JZ4770_GPIO_PEN ); -else - pull = !ingenic_get_pin_config (jzpc, pin,JZ4740_GPIO_PULL_DIS ); +if (jzpc->info->version >=ID_X1830 ) { +unsigned int half =PINS_PER_GPIO_CHIP /2 ; +unsigned int idxh = (pin % half) *2 ; + +if (idx < half) +regmap_read (jzpc->map, offt * jzpc->info->reg_offset + +X1830_GPIO_PEL , &bias); +else +regmap_read (jzpc->map, offt * jzpc->info->reg_offset + +X1830_GPIO_PEH , &bias); + + bias = (bias >> idxh) & (GPIO_PULL_UP |GPIO_PULL_DOWN ); + + pullup = (bias ==GPIO_PULL_UP ) && (jzpc->info->pull_ups[offt] &BIT (idx)); + pulldown = (bias ==GPIO_PULL_DOWN ) && (jzpc->info->pull_downs[offt] &BIT (idx)); + + }else { +if (jzpc->info->version >=ID_JZ4770 ) + pull = !ingenic_get_pin_config (jzpc, pin,JZ4770_GPIO_PEN ); +else + pull = !ingenic_get_pin_config (jzpc, pin,JZ4740_GPIO_PULL_DIS ); + + pullup = pull && (jzpc->info->pull_ups[offt] &BIT (idx)); + pulldown = pull && (jzpc->info->pull_downs[offt] &BIT (idx)); + }switch (param) {case PIN_CONFIG_BIAS_DISABLE : -if (pull) +if (pullup || pulldown)return -EINVAL ;break ;case PIN_CONFIG_BIAS_PULL_UP : -if (!pull || !(jzpc->info->pull_ups[offt] &BIT (idx))) +if (!pullup)return -EINVAL ;break ;case PIN_CONFIG_BIAS_PULL_DOWN : -if (!pull || !(jzpc->info->pull_downs[offt] &BIT (idx))) +if (!pulldown)return -EINVAL ;break ;
@@ -2146,7 +2168,7 @@ static void ingenic_set_bias(struct ingenic_pinctrl *jzpc,if (jzpc->info->version >=ID_X1830 ) {unsigned int idx = pin %PINS_PER_GPIO_CHIP ;unsigned int half =PINS_PER_GPIO_CHIP /2 ; -unsigned int idxh = pin % half *2 ; +unsigned int idxh = (pin % half) *2 ;unsigned int offt = pin /PINS_PER_GPIO_CHIP ;if (idx < half) {