Skip to content

Commit 68d804c

Browse files
committed
Merge tag 'pinctrl-v6.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control fixes from Linus Walleij: - Fix register naming in the Mediatek mt8189 driver - Select REGMAP_MMIO for the Realtek RTD driver - Fix the number of items in groups in the Toshiba Visconti driver - Fix a memory leak in the Cirrus CS42L43 driver - Fix a deadlock (!) in Qualcomm pinmux configuration - Fix use of uninitialized memory and list initialization in the S32CC pin controller * tag 'pinctrl-v6.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: dt-bindings: pinctrl: xlnx,versal-pinctrl: Add missing unevaluatedProperties on '^conf' nodes pinctrl: s32cc: initialize gpio_pin_config::list after kmalloc() pinctrl: s32cc: fix uninitialized memory in s32_pinctrl_desc pinctrl: qcom: msm: Fix deadlock in pinmux configuration pinctrl: cirrus: Fix fwnode leak in cs42l43_pin_probe() dt-bindings: pinctrl: toshiba,visconti: Fix number of items in groups pinctrl: realtek: Select REGMAP_MMIO for RTD driver pinctrl: mediatek: mt8189: align register base names to dt-bindings ones pinctrl: mediatek: mt8196: align register base names to dt-bindings ones
2 parents 2c26574 + 79afd3c commit 68d804c

File tree

8 files changed

+41
-25
lines changed

8 files changed

+41
-25
lines changed

Documentation/devicetree/bindings/pinctrl/toshiba,visconti-pinctrl.yaml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,20 @@ patternProperties:
5050
groups:
5151
description:
5252
Name of the pin group to use for the functions.
53-
$ref: /schemas/types.yaml#/definitions/string
54-
enum: [i2c0_grp, i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp,
55-
i2c5_grp, i2c6_grp, i2c7_grp, i2c8_grp,
56-
spi0_grp, spi0_cs0_grp, spi0_cs1_grp, spi0_cs2_grp,
57-
spi1_grp, spi2_grp, spi3_grp, spi4_grp, spi5_grp, spi6_grp,
58-
uart0_grp, uart1_grp, uart2_grp, uart3_grp,
59-
pwm0_gpio4_grp, pwm0_gpio8_grp, pwm0_gpio12_grp,
60-
pwm0_gpio16_grp, pwm1_gpio5_grp, pwm1_gpio9_grp,
61-
pwm1_gpio13_grp, pwm1_gpio17_grp, pwm2_gpio6_grp,
62-
pwm2_gpio10_grp, pwm2_gpio14_grp, pwm2_gpio18_grp,
63-
pwm3_gpio7_grp, pwm3_gpio11_grp, pwm3_gpio15_grp,
64-
pwm3_gpio19_grp, pcmif_out_grp, pcmif_in_grp]
53+
items:
54+
enum: [i2c0_grp, i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp,
55+
i2c5_grp, i2c6_grp, i2c7_grp, i2c8_grp,
56+
spi0_grp, spi0_cs0_grp, spi0_cs1_grp, spi0_cs2_grp,
57+
spi1_grp, spi2_grp, spi3_grp, spi4_grp, spi5_grp, spi6_grp,
58+
uart0_grp, uart1_grp, uart2_grp, uart3_grp,
59+
pwm0_gpio4_grp, pwm0_gpio8_grp, pwm0_gpio12_grp,
60+
pwm0_gpio16_grp, pwm1_gpio5_grp, pwm1_gpio9_grp,
61+
pwm1_gpio13_grp, pwm1_gpio17_grp, pwm2_gpio6_grp,
62+
pwm2_gpio10_grp, pwm2_gpio14_grp, pwm2_gpio18_grp,
63+
pwm3_gpio7_grp, pwm3_gpio11_grp, pwm3_gpio15_grp,
64+
pwm3_gpio19_grp, pcmif_out_grp, pcmif_in_grp]
65+
minItems: 1
66+
maxItems: 8
6567

6668
drive-strength:
6769
enum: [2, 4, 6, 8, 16, 24, 32]

Documentation/devicetree/bindings/pinctrl/xlnx,versal-pinctrl.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ patternProperties:
7474

7575
'^conf':
7676
type: object
77+
unevaluatedProperties: false
7778
description:
7879
Pinctrl node's client devices use subnodes for pin configurations,
7980
which in turn use the standard properties below.

drivers/pinctrl/cirrus/pinctrl-cs42l43.c

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,11 @@ static int cs42l43_gpio_add_pin_ranges(struct gpio_chip *chip)
532532
return ret;
533533
}
534534

535+
static void cs42l43_fwnode_put(void *data)
536+
{
537+
fwnode_handle_put(data);
538+
}
539+
535540
static int cs42l43_pin_probe(struct platform_device *pdev)
536541
{
537542
struct cs42l43 *cs42l43 = dev_get_drvdata(pdev->dev.parent);
@@ -563,10 +568,20 @@ static int cs42l43_pin_probe(struct platform_device *pdev)
563568
priv->gpio_chip.ngpio = CS42L43_NUM_GPIOS;
564569

565570
if (is_of_node(fwnode)) {
566-
fwnode = fwnode_get_named_child_node(fwnode, "pinctrl");
567-
568-
if (fwnode && !fwnode->dev)
569-
fwnode->dev = priv->dev;
571+
struct fwnode_handle *child;
572+
573+
child = fwnode_get_named_child_node(fwnode, "pinctrl");
574+
if (child) {
575+
ret = devm_add_action_or_reset(&pdev->dev,
576+
cs42l43_fwnode_put, child);
577+
if (ret) {
578+
fwnode_handle_put(child);
579+
return ret;
580+
}
581+
if (!child->dev)
582+
child->dev = priv->dev;
583+
fwnode = child;
584+
}
570585
}
571586

572587
priv->gpio_chip.fwnode = fwnode;

drivers/pinctrl/mediatek/pinctrl-mt8189.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1642,9 +1642,7 @@ static const struct mtk_pin_reg_calc mt8189_reg_cals[PINCTRL_PIN_REG_MAX] = {
16421642
};
16431643

16441644
static const char * const mt8189_pinctrl_register_base_names[] = {
1645-
"gpio_base", "iocfg_bm0_base", "iocfg_bm1_base", "iocfg_bm2_base", "iocfg_lm_base",
1646-
"iocfg_lt0_base", "iocfg_lt1_base", "iocfg_rb0_base", "iocfg_rb1_base",
1647-
"iocfg_rt_base"
1645+
"base", "lm", "rb0", "rb1", "bm0", "bm1", "bm2", "lt0", "lt1", "rt",
16481646
};
16491647

16501648
static const struct mtk_eint_hw mt8189_eint_hw = {

drivers/pinctrl/mediatek/pinctrl-mt8196.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1801,10 +1801,8 @@ static const struct mtk_pin_reg_calc mt8196_reg_cals[PINCTRL_PIN_REG_MAX] = {
18011801
};
18021802

18031803
static const char * const mt8196_pinctrl_register_base_names[] = {
1804-
"iocfg0", "iocfg_rt", "iocfg_rm1", "iocfg_rm2",
1805-
"iocfg_rb", "iocfg_bm1", "iocfg_bm2", "iocfg_bm3",
1806-
"iocfg_lt", "iocfg_lm1", "iocfg_lm2", "iocfg_lb1",
1807-
"iocfg_lb2", "iocfg_tm1", "iocfg_tm2", "iocfg_tm3",
1804+
"base", "rt", "rm1", "rm2", "rb", "bm1", "bm2", "bm3",
1805+
"lt", "lm1", "lm2", "lb1", "lb2", "tm1", "tm2", "tm3",
18081806
};
18091807

18101808
static const struct mtk_eint_hw mt8196_eint_hw = {

drivers/pinctrl/nxp/pinctrl-s32cc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,7 @@ static int s32_pmx_gpio_request_enable(struct pinctrl_dev *pctldev,
392392

393393
gpio_pin->pin_id = offset;
394394
gpio_pin->config = config;
395+
INIT_LIST_HEAD(&gpio_pin->list);
395396

396397
spin_lock_irqsave(&ipctl->gpio_configs_lock, flags);
397398
list_add(&gpio_pin->list, &ipctl->gpio_configs);
@@ -951,7 +952,7 @@ int s32_pinctrl_probe(struct platform_device *pdev,
951952
spin_lock_init(&ipctl->gpio_configs_lock);
952953

953954
s32_pinctrl_desc =
954-
devm_kmalloc(&pdev->dev, sizeof(*s32_pinctrl_desc), GFP_KERNEL);
955+
devm_kzalloc(&pdev->dev, sizeof(*s32_pinctrl_desc), GFP_KERNEL);
955956
if (!s32_pinctrl_desc)
956957
return -ENOMEM;
957958

drivers/pinctrl/qcom/pinctrl-msm.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ static int msm_pinmux_set_mux(struct pinctrl_dev *pctldev,
189189
*/
190190
if (d && i != gpio_func &&
191191
!test_and_set_bit(d->hwirq, pctrl->disabled_for_mux))
192-
disable_irq(irq);
192+
disable_irq_nosync(irq);
193193

194194
raw_spin_lock_irqsave(&pctrl->lock, flags);
195195

drivers/pinctrl/realtek/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ config PINCTRL_RTD
66
default y
77
select PINMUX
88
select GENERIC_PINCONF
9+
select REGMAP_MMIO
910

1011
config PINCTRL_RTD1619B
1112
tristate "Realtek DHC 1619B pin controller driver"

0 commit comments

Comments
 (0)