Commit 68d804c6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents 2c26574c 79afd3c5
Loading
Loading
Loading
Loading
+14 −12
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ patternProperties:
      groups:
        description:
          Name of the pin group to use for the functions.
        $ref: /schemas/types.yaml#/definitions/string
        items:
          enum: [i2c0_grp, i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp,
                 i2c5_grp, i2c6_grp, i2c7_grp, i2c8_grp,
                 spi0_grp, spi0_cs0_grp, spi0_cs1_grp, spi0_cs2_grp,
@@ -62,6 +62,8 @@ patternProperties:
                 pwm2_gpio10_grp, pwm2_gpio14_grp, pwm2_gpio18_grp,
                 pwm3_gpio7_grp, pwm3_gpio11_grp, pwm3_gpio15_grp,
                 pwm3_gpio19_grp, pcmif_out_grp, pcmif_in_grp]
        minItems: 1
        maxItems: 8

      drive-strength:
        enum: [2, 4, 6, 8, 16, 24, 32]
+1 −0
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ patternProperties:

      '^conf':
        type: object
        unevaluatedProperties: false
        description:
          Pinctrl node's client devices use subnodes for pin configurations,
          which in turn use the standard properties below.
+19 −4
Original line number Diff line number Diff line
@@ -532,6 +532,11 @@ static int cs42l43_gpio_add_pin_ranges(struct gpio_chip *chip)
	return ret;
}

static void cs42l43_fwnode_put(void *data)
{
	fwnode_handle_put(data);
}

static int cs42l43_pin_probe(struct platform_device *pdev)
{
	struct cs42l43 *cs42l43 = dev_get_drvdata(pdev->dev.parent);
@@ -563,10 +568,20 @@ static int cs42l43_pin_probe(struct platform_device *pdev)
	priv->gpio_chip.ngpio = CS42L43_NUM_GPIOS;

	if (is_of_node(fwnode)) {
		fwnode = fwnode_get_named_child_node(fwnode, "pinctrl");
		struct fwnode_handle *child;

		if (fwnode && !fwnode->dev)
			fwnode->dev = priv->dev;
		child = fwnode_get_named_child_node(fwnode, "pinctrl");
		if (child) {
			ret = devm_add_action_or_reset(&pdev->dev,
				cs42l43_fwnode_put, child);
			if (ret) {
				fwnode_handle_put(child);
				return ret;
			}
			if (!child->dev)
				child->dev = priv->dev;
			fwnode = child;
		}
	}

	priv->gpio_chip.fwnode = fwnode;
+1 −3
Original line number Diff line number Diff line
@@ -1642,9 +1642,7 @@ static const struct mtk_pin_reg_calc mt8189_reg_cals[PINCTRL_PIN_REG_MAX] = {
};

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

static const struct mtk_eint_hw mt8189_eint_hw = {
+2 −4
Original line number Diff line number Diff line
@@ -1801,10 +1801,8 @@ static const struct mtk_pin_reg_calc mt8196_reg_cals[PINCTRL_PIN_REG_MAX] = {
};

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

static const struct mtk_eint_hw mt8196_eint_hw = {
Loading