Commit 16f4aa9b authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull pin control fixes from Linus Walleij:
 "Some early fixes collected during the first week after the merge
  window, all pretty self-evident, with the details below. The revert is
  the crucial thing.

   - Fix a warning on the Qualcomm SPMI GPIO chip being instatiated
     twice without a unique irqchip struct

   - Use the noirq variants of the suspend and resume callbacks in the
     Tegra driver

   - Clean up the errorpath on the MCP23s08 driver

   - Revert the use of devm_of_iomap() in the Freescale driver as it was
     regressing the platform

   - Add some missing pins in the Qualcomm IPQ6018 driver

   - Fix a simple documentation bug in the pinctrl-single driver"

* tag 'pinctrl-v5.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  pinctrl: single: fix function name in documentation
  pinctrl: qcom: ipq6018 Add missing pins in qpic pin group
  Revert "pinctrl: freescale: imx: Use 'devm_of_iomap()' to avoid a resource leak in case of error in 'imx_pinctrl_probe()'"
  pinctrl: mcp23s08: Split to three parts: fix ptr_ret.cocci warnings
  pinctrl: tegra: Use noirq suspend/resume callbacks
  pinctrl: qcom: spmi-gpio: fix warning about irq chip reusage
parents be9160a9 25fae752
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -824,13 +824,12 @@ int imx_pinctrl_probe(struct platform_device *pdev,
				return -EINVAL;
			}

			ipctl->input_sel_base = devm_of_iomap(&pdev->dev, np,
							      0, NULL);
			ipctl->input_sel_base = of_iomap(np, 0);
			of_node_put(np);
			if (IS_ERR(ipctl->input_sel_base)) {
			if (!ipctl->input_sel_base) {
				dev_err(&pdev->dev,
					"iomuxc input select base address not found\n");
				return PTR_ERR(ipctl->input_sel_base);
				return -ENOMEM;
			}
		}
	}
+1 −4
Original line number Diff line number Diff line
@@ -126,10 +126,7 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,
	copy->name = name;

	mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp, copy);
	if (IS_ERR(mcp->regmap))
		return PTR_ERR(mcp->regmap);

	return 0;
	return PTR_ERR_OR_ZERO(mcp->regmap);
}

static int mcp23s08_probe(struct spi_device *spi)
+1 −1
Original line number Diff line number Diff line
@@ -958,7 +958,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np,
}

/**
 * smux_parse_one_pinctrl_entry() - parses a device tree mux entry
 * pcs_parse_one_pinctrl_entry() - parses a device tree mux entry
 * @pctldev: pin controller device
 * @pcs: pinctrl driver instance
 * @np: device node of the mux entry
+2 −1
Original line number Diff line number Diff line
@@ -367,7 +367,8 @@ static const char * const wci20_groups[] = {

static const char * const qpic_pad_groups[] = {
	"gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio9", "gpio10",
	"gpio11", "gpio17",
	"gpio11", "gpio17", "gpio15", "gpio12", "gpio13", "gpio14", "gpio5",
	"gpio6", "gpio7", "gpio8",
};

static const char * const burn0_groups[] = {
+10 −11
Original line number Diff line number Diff line
@@ -170,6 +170,7 @@ struct pmic_gpio_state {
	struct regmap	*map;
	struct pinctrl_dev *ctrl;
	struct gpio_chip chip;
	struct irq_chip irq;
};

static const struct pinconf_generic_params pmic_gpio_bindings[] = {
@@ -917,16 +918,6 @@ static int pmic_gpio_populate(struct pmic_gpio_state *state,
	return 0;
}

static struct irq_chip pmic_gpio_irq_chip = {
	.name = "spmi-gpio",
	.irq_ack = irq_chip_ack_parent,
	.irq_mask = irq_chip_mask_parent,
	.irq_unmask = irq_chip_unmask_parent,
	.irq_set_type = irq_chip_set_type_parent,
	.irq_set_wake = irq_chip_set_wake_parent,
	.flags = IRQCHIP_MASK_ON_SUSPEND,
};

static int pmic_gpio_domain_translate(struct irq_domain *domain,
				      struct irq_fwspec *fwspec,
				      unsigned long *hwirq,
@@ -1053,8 +1044,16 @@ static int pmic_gpio_probe(struct platform_device *pdev)
	if (!parent_domain)
		return -ENXIO;

	state->irq.name = "spmi-gpio",
	state->irq.irq_ack = irq_chip_ack_parent,
	state->irq.irq_mask = irq_chip_mask_parent,
	state->irq.irq_unmask = irq_chip_unmask_parent,
	state->irq.irq_set_type = irq_chip_set_type_parent,
	state->irq.irq_set_wake = irq_chip_set_wake_parent,
	state->irq.flags = IRQCHIP_MASK_ON_SUSPEND,

	girq = &state->chip.irq;
	girq->chip = &pmic_gpio_irq_chip;
	girq->chip = &state->irq;
	girq->default_type = IRQ_TYPE_NONE;
	girq->handler = handle_level_irq;
	girq->fwnode = of_node_to_fwnode(state->dev->of_node);
Loading