mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-09-21 12:11:49 +08:00
Pin control fixes for the v6.11 series:
- Fix the hwirq map and pin offsets in the Qualcomm X1E80100 driver. - Fix the pin range handling in the AT91 driver so it works again. - Fix a NULL-dereference risk in pinctrl single. - Fix a serious biasing bug in the Mediatek driver. - Fix the level trigged IRQ in the StarFive JH7110. - Fix the iomux width in the Rockchip GPIO2-B pin handling. -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmbN7ksACgkQQRCzN7AZ XXN4LRAAq1SfehCkuTOcJLEMgRUyWXoY9GadNNBoW/j7wV/XkBiBnZGBxWSlbSM7 2NP/Rdnmadx/PXp39ptMYPyQjOouROpMnq0VNv9GqU3lF5JonXA0ccXQeFEqCtDq 57d/orkcRrVJ8AxerEp/SDasfm6yUDOBKA0M/lc4aFNebMsH785LZt6zfBTuxAUs dU453uilizOM8w2qS280BcAdpW+hhm0Ev6dWuRN7ALNSXnLM/LXx6vutf984rCmH Ua+9CxbQ46CO2gZcdBWRZjkbgz6tI6sCELAum/bWEZQytx9BpAPA//0iJcCPtVS+ BVAFAAABLtDEP4p9pRtMcXhBkA9CJ1Uv+Fx3nK+qoYv0M4BkpUC0nE7csoKs2ya0 odfXJOjnprY6T93yHdrnUxb7ME7jkr4wpQJA6dYo8rBpwHmvyXRdtRZLwtsG97Wi DZohQTTt+M/CnduuMDNebER6k9lHjgHx7VyaCrKfBMm/F4fjrFgK2z7gnz8XmMZQ MyLPN0zA2or/LuyIk7hnEREPdvqhTd+3ORWLSBX08BTQMkmBWTLuAoX3cN5kpCBH 6exbVCqR+KrX2C7r8oEBrpH7wncoBon6br7Bh08y4UhzA/5e2Rl4pgjULfc/gTGW Fs+yRZwgJuFN9GzaCzSudxvPD/bUt56ceyx2w9CdBrjXdyAmxj4= =+YGQ -----END PGP SIGNATURE----- Merge tag 'pinctrl-v6.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl Pull pin control fixes from Linus Walleij: - Fix the hwirq map and pin offsets in the Qualcomm X1E80100 driver - Fix the pin range handling in the AT91 driver so it works again - Fix a NULL-dereference risk in pinctrl single - Fix a serious biasing bug in the Mediatek driver - Fix the level trigged IRQ in the StarFive JH7110 - Fix the iomux width in the Rockchip GPIO2-B pin handling * tag 'pinctrl-v6.11-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: pinctrl: rockchip: correct RK3328 iomux width flag for GPIO2-B pins pinctrl: starfive: jh7110: Correct the level trigger configuration of iev register pinctrl: qcom: x1e80100: Fix special pin offsets pinctrl: mediatek: common-v2: Fix broken bias-disable for PULL_PU_PD_RSEL_TYPE pinctrl: single: fix potential NULL dereference in pcs_get_function() pinctrl: at91: make it work with current gpiolib pinctrl: qcom: x1e80100: Update PDC hwirq map
This commit is contained in:
commit
41594663c3
@ -709,32 +709,35 @@ static int mtk_pinconf_bias_set_rsel(struct mtk_pinctrl *hw,
|
||||
{
|
||||
int err, rsel_val;
|
||||
|
||||
if (!pullup && arg == MTK_DISABLE)
|
||||
return 0;
|
||||
|
||||
if (hw->rsel_si_unit) {
|
||||
/* find pin rsel_index from pin_rsel array*/
|
||||
err = mtk_hw_pin_rsel_lookup(hw, desc, pullup, arg, &rsel_val);
|
||||
if (err)
|
||||
goto out;
|
||||
return err;
|
||||
} else {
|
||||
if (arg < MTK_PULL_SET_RSEL_000 ||
|
||||
arg > MTK_PULL_SET_RSEL_111) {
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (arg < MTK_PULL_SET_RSEL_000 || arg > MTK_PULL_SET_RSEL_111)
|
||||
return -EINVAL;
|
||||
|
||||
rsel_val = arg - MTK_PULL_SET_RSEL_000;
|
||||
}
|
||||
|
||||
err = mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_RSEL, rsel_val);
|
||||
if (err)
|
||||
goto out;
|
||||
return mtk_hw_set_value(hw, desc, PINCTRL_PIN_REG_RSEL, rsel_val);
|
||||
}
|
||||
|
||||
err = mtk_pinconf_bias_set_pu_pd(hw, desc, pullup, MTK_ENABLE);
|
||||
static int mtk_pinconf_bias_set_pu_pd_rsel(struct mtk_pinctrl *hw,
|
||||
const struct mtk_pin_desc *desc,
|
||||
u32 pullup, u32 arg)
|
||||
{
|
||||
u32 enable = arg == MTK_DISABLE ? MTK_DISABLE : MTK_ENABLE;
|
||||
int err;
|
||||
|
||||
out:
|
||||
return err;
|
||||
if (arg != MTK_DISABLE) {
|
||||
err = mtk_pinconf_bias_set_rsel(hw, desc, pullup, arg);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
return mtk_pinconf_bias_set_pu_pd(hw, desc, pullup, enable);
|
||||
}
|
||||
|
||||
int mtk_pinconf_bias_set_combo(struct mtk_pinctrl *hw,
|
||||
@ -750,22 +753,22 @@ int mtk_pinconf_bias_set_combo(struct mtk_pinctrl *hw,
|
||||
try_all_type = MTK_PULL_TYPE_MASK;
|
||||
|
||||
if (try_all_type & MTK_PULL_RSEL_TYPE) {
|
||||
err = mtk_pinconf_bias_set_rsel(hw, desc, pullup, arg);
|
||||
err = mtk_pinconf_bias_set_pu_pd_rsel(hw, desc, pullup, arg);
|
||||
if (!err)
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
|
||||
err = mtk_pinconf_bias_set_pu_pd(hw, desc, pullup, arg);
|
||||
if (!err)
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (try_all_type & MTK_PULL_PULLSEL_TYPE) {
|
||||
err = mtk_pinconf_bias_set_pullsel_pullen(hw, desc,
|
||||
pullup, arg);
|
||||
if (!err)
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (try_all_type & MTK_PULL_PUPD_R1R0_TYPE)
|
||||
@ -803,9 +806,9 @@ static int mtk_rsel_get_si_unit(struct mtk_pinctrl *hw,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mtk_pinconf_bias_get_rsel(struct mtk_pinctrl *hw,
|
||||
const struct mtk_pin_desc *desc,
|
||||
u32 *pullup, u32 *enable)
|
||||
static int mtk_pinconf_bias_get_pu_pd_rsel(struct mtk_pinctrl *hw,
|
||||
const struct mtk_pin_desc *desc,
|
||||
u32 *pullup, u32 *enable)
|
||||
{
|
||||
int pu, pd, rsel, err;
|
||||
|
||||
@ -939,22 +942,22 @@ int mtk_pinconf_bias_get_combo(struct mtk_pinctrl *hw,
|
||||
try_all_type = MTK_PULL_TYPE_MASK;
|
||||
|
||||
if (try_all_type & MTK_PULL_RSEL_TYPE) {
|
||||
err = mtk_pinconf_bias_get_rsel(hw, desc, pullup, enable);
|
||||
err = mtk_pinconf_bias_get_pu_pd_rsel(hw, desc, pullup, enable);
|
||||
if (!err)
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (try_all_type & MTK_PULL_PU_PD_TYPE) {
|
||||
err = mtk_pinconf_bias_get_pu_pd(hw, desc, pullup, enable);
|
||||
if (!err)
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (try_all_type & MTK_PULL_PULLSEL_TYPE) {
|
||||
err = mtk_pinconf_bias_get_pullsel_pullen(hw, desc,
|
||||
pullup, enable);
|
||||
if (!err)
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (try_all_type & MTK_PULL_PUPD_R1R0_TYPE)
|
||||
|
@ -1403,8 +1403,11 @@ static int at91_pinctrl_probe(struct platform_device *pdev)
|
||||
|
||||
/* We will handle a range of GPIO pins */
|
||||
for (i = 0; i < gpio_banks; i++)
|
||||
if (gpio_chips[i])
|
||||
if (gpio_chips[i]) {
|
||||
pinctrl_add_gpio_range(info->pctl, &gpio_chips[i]->range);
|
||||
gpiochip_add_pin_range(&gpio_chips[i]->chip, dev_name(info->pctl->dev), 0,
|
||||
gpio_chips[i]->range.pin_base, gpio_chips[i]->range.npins);
|
||||
}
|
||||
|
||||
dev_info(dev, "initialized AT91 pinctrl driver\n");
|
||||
|
||||
|
@ -3795,7 +3795,7 @@ static struct rockchip_pin_bank rk3328_pin_banks[] = {
|
||||
PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", 0, 0, 0, 0),
|
||||
PIN_BANK_IOMUX_FLAGS(1, 32, "gpio1", 0, 0, 0, 0),
|
||||
PIN_BANK_IOMUX_FLAGS(2, 32, "gpio2", 0,
|
||||
0,
|
||||
IOMUX_WIDTH_2BIT,
|
||||
IOMUX_WIDTH_3BIT,
|
||||
0),
|
||||
PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3",
|
||||
|
@ -345,6 +345,8 @@ static int pcs_get_function(struct pinctrl_dev *pctldev, unsigned pin,
|
||||
return -ENOTSUPP;
|
||||
fselector = setting->func;
|
||||
function = pinmux_generic_get_function(pctldev, fselector);
|
||||
if (!function)
|
||||
return -EINVAL;
|
||||
*func = function->data;
|
||||
if (!(*func)) {
|
||||
dev_err(pcs->dev, "%s could not find function%i\n",
|
||||
|
@ -1805,26 +1805,29 @@ static const struct msm_pingroup x1e80100_groups[] = {
|
||||
[235] = PINGROUP(235, aon_cci, qdss_gpio, _, _, _, _, _, _, _),
|
||||
[236] = PINGROUP(236, aon_cci, qdss_gpio, _, _, _, _, _, _, _),
|
||||
[237] = PINGROUP(237, _, _, _, _, _, _, _, _, _),
|
||||
[238] = UFS_RESET(ufs_reset, 0x1f9000),
|
||||
[239] = SDC_QDSD_PINGROUP(sdc2_clk, 0x1f2000, 14, 6),
|
||||
[240] = SDC_QDSD_PINGROUP(sdc2_cmd, 0x1f2000, 11, 3),
|
||||
[241] = SDC_QDSD_PINGROUP(sdc2_data, 0x1f2000, 9, 0),
|
||||
[238] = UFS_RESET(ufs_reset, 0xf9000),
|
||||
[239] = SDC_QDSD_PINGROUP(sdc2_clk, 0xf2000, 14, 6),
|
||||
[240] = SDC_QDSD_PINGROUP(sdc2_cmd, 0xf2000, 11, 3),
|
||||
[241] = SDC_QDSD_PINGROUP(sdc2_data, 0xf2000, 9, 0),
|
||||
};
|
||||
|
||||
static const struct msm_gpio_wakeirq_map x1e80100_pdc_map[] = {
|
||||
{ 0, 72 }, { 2, 70 }, { 3, 71 }, { 6, 123 }, { 7, 67 }, { 11, 85 },
|
||||
{ 15, 68 }, { 18, 122 }, { 19, 69 }, { 21, 158 }, { 23, 143 }, { 26, 129 },
|
||||
{ 27, 144 }, { 28, 77 }, { 29, 78 }, { 30, 92 }, { 32, 145 }, { 33, 115 },
|
||||
{ 34, 130 }, { 35, 146 }, { 36, 147 }, { 39, 80 }, { 43, 148 }, { 47, 149 },
|
||||
{ 51, 79 }, { 53, 89 }, { 59, 87 }, { 64, 90 }, { 65, 106 }, { 66, 142 },
|
||||
{ 67, 88 }, { 71, 91 }, { 75, 152 }, { 79, 153 }, { 80, 125 }, { 81, 128 },
|
||||
{ 84, 137 }, { 85, 155 }, { 87, 156 }, { 91, 157 }, { 92, 138 }, { 94, 140 },
|
||||
{ 95, 141 }, { 113, 84 }, { 121, 73 }, { 123, 74 }, { 129, 76 }, { 131, 82 },
|
||||
{ 134, 83 }, { 141, 93 }, { 144, 94 }, { 147, 96 }, { 148, 97 }, { 150, 102 },
|
||||
{ 151, 103 }, { 153, 104 }, { 156, 105 }, { 157, 107 }, { 163, 98 }, { 166, 112 },
|
||||
{ 172, 99 }, { 181, 101 }, { 184, 116 }, { 193, 40 }, { 193, 117 }, { 196, 108 },
|
||||
{ 203, 133 }, { 212, 120 }, { 213, 150 }, { 214, 121 }, { 215, 118 }, { 217, 109 },
|
||||
{ 220, 110 }, { 221, 111 }, { 222, 124 }, { 224, 131 }, { 225, 132 },
|
||||
{ 13, 86 }, { 15, 68 }, { 18, 122 }, { 19, 69 }, { 21, 158 }, { 23, 143 },
|
||||
{ 24, 126 }, { 26, 129 }, { 27, 144 }, { 28, 77 }, { 29, 78 }, { 30, 92 },
|
||||
{ 31, 159 }, { 32, 145 }, { 33, 115 }, { 34, 130 }, { 35, 146 }, { 36, 147 },
|
||||
{ 38, 113 }, { 39, 80 }, { 43, 148 }, { 47, 149 }, { 51, 79 }, { 53, 89 },
|
||||
{ 55, 81 }, { 59, 87 }, { 64, 90 }, { 65, 106 }, { 66, 142 }, { 67, 88 },
|
||||
{ 68, 151 }, { 71, 91 }, { 75, 152 }, { 79, 153 }, { 80, 125 }, { 81, 128 },
|
||||
{ 83, 154 }, { 84, 137 }, { 85, 155 }, { 87, 156 }, { 91, 157 }, { 92, 138 },
|
||||
{ 93, 139 }, { 94, 140 }, { 95, 141 }, { 113, 84 }, { 121, 73 }, { 123, 74 },
|
||||
{ 125, 75 }, { 129, 76 }, { 131, 82 }, { 134, 83 }, { 141, 93 }, { 144, 94 },
|
||||
{ 145, 95 }, { 147, 96 }, { 148, 97 }, { 150, 102 }, { 151, 103 }, { 153, 104 },
|
||||
{ 154, 100 }, { 156, 105 }, { 157, 107 }, { 163, 98 }, { 166, 112 }, { 172, 99 },
|
||||
{ 175, 114 }, { 181, 101 }, { 184, 116 }, { 193, 117 }, { 196, 108 }, { 203, 133 },
|
||||
{ 208, 134 }, { 212, 120 }, { 213, 150 }, { 214, 121 }, { 215, 118 }, { 217, 109 },
|
||||
{ 219, 119 }, { 220, 110 }, { 221, 111 }, { 222, 124 }, { 224, 131 }, { 225, 132 },
|
||||
{ 228, 135 }, { 230, 136 }, { 232, 162 },
|
||||
};
|
||||
|
||||
static const struct msm_pinctrl_soc_data x1e80100_pinctrl = {
|
||||
|
@ -793,12 +793,12 @@ static int jh7110_irq_set_type(struct irq_data *d, unsigned int trigger)
|
||||
case IRQ_TYPE_LEVEL_HIGH:
|
||||
irq_type = 0; /* 0: level triggered */
|
||||
edge_both = 0; /* 0: ignored */
|
||||
polarity = mask; /* 1: high level */
|
||||
polarity = 0; /* 0: high level */
|
||||
break;
|
||||
case IRQ_TYPE_LEVEL_LOW:
|
||||
irq_type = 0; /* 0: level triggered */
|
||||
edge_both = 0; /* 0: ignored */
|
||||
polarity = 0; /* 0: low level */
|
||||
polarity = mask; /* 1: low level */
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
Loading…
Reference in New Issue
Block a user