Commit 16f4aa9b authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'pinctrl-v5.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl

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
...@@ -824,13 +824,12 @@ int imx_pinctrl_probe(struct platform_device *pdev, ...@@ -824,13 +824,12 @@ int imx_pinctrl_probe(struct platform_device *pdev,
return -EINVAL; return -EINVAL;
} }
ipctl->input_sel_base = devm_of_iomap(&pdev->dev, np, ipctl->input_sel_base = of_iomap(np, 0);
0, NULL);
of_node_put(np); of_node_put(np);
if (IS_ERR(ipctl->input_sel_base)) { if (!ipctl->input_sel_base) {
dev_err(&pdev->dev, dev_err(&pdev->dev,
"iomuxc input select base address not found\n"); "iomuxc input select base address not found\n");
return PTR_ERR(ipctl->input_sel_base); return -ENOMEM;
} }
} }
} }
......
...@@ -126,10 +126,7 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev, ...@@ -126,10 +126,7 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,
copy->name = name; copy->name = name;
mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp, copy); mcp->regmap = devm_regmap_init(dev, &mcp23sxx_spi_regmap, mcp, copy);
if (IS_ERR(mcp->regmap)) return PTR_ERR_OR_ZERO(mcp->regmap);
return PTR_ERR(mcp->regmap);
return 0;
} }
static int mcp23s08_probe(struct spi_device *spi) static int mcp23s08_probe(struct spi_device *spi)
......
...@@ -958,7 +958,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np, ...@@ -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 * @pctldev: pin controller device
* @pcs: pinctrl driver instance * @pcs: pinctrl driver instance
* @np: device node of the mux entry * @np: device node of the mux entry
......
...@@ -367,7 +367,8 @@ static const char * const wci20_groups[] = { ...@@ -367,7 +367,8 @@ static const char * const wci20_groups[] = {
static const char * const qpic_pad_groups[] = { static const char * const qpic_pad_groups[] = {
"gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio9", "gpio10", "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[] = { static const char * const burn0_groups[] = {
......
...@@ -170,6 +170,7 @@ struct pmic_gpio_state { ...@@ -170,6 +170,7 @@ struct pmic_gpio_state {
struct regmap *map; struct regmap *map;
struct pinctrl_dev *ctrl; struct pinctrl_dev *ctrl;
struct gpio_chip chip; struct gpio_chip chip;
struct irq_chip irq;
}; };
static const struct pinconf_generic_params pmic_gpio_bindings[] = { static const struct pinconf_generic_params pmic_gpio_bindings[] = {
...@@ -917,16 +918,6 @@ static int pmic_gpio_populate(struct pmic_gpio_state *state, ...@@ -917,16 +918,6 @@ static int pmic_gpio_populate(struct pmic_gpio_state *state,
return 0; 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, static int pmic_gpio_domain_translate(struct irq_domain *domain,
struct irq_fwspec *fwspec, struct irq_fwspec *fwspec,
unsigned long *hwirq, unsigned long *hwirq,
...@@ -1053,8 +1044,16 @@ static int pmic_gpio_probe(struct platform_device *pdev) ...@@ -1053,8 +1044,16 @@ static int pmic_gpio_probe(struct platform_device *pdev)
if (!parent_domain) if (!parent_domain)
return -ENXIO; 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 = &state->chip.irq;
girq->chip = &pmic_gpio_irq_chip; girq->chip = &state->irq;
girq->default_type = IRQ_TYPE_NONE; girq->default_type = IRQ_TYPE_NONE;
girq->handler = handle_level_irq; girq->handler = handle_level_irq;
girq->fwnode = of_node_to_fwnode(state->dev->of_node); girq->fwnode = of_node_to_fwnode(state->dev->of_node);
......
...@@ -731,8 +731,8 @@ static int tegra_pinctrl_resume(struct device *dev) ...@@ -731,8 +731,8 @@ static int tegra_pinctrl_resume(struct device *dev)
} }
const struct dev_pm_ops tegra_pinctrl_pm = { const struct dev_pm_ops tegra_pinctrl_pm = {
.suspend = &tegra_pinctrl_suspend, .suspend_noirq = &tegra_pinctrl_suspend,
.resume = &tegra_pinctrl_resume .resume_noirq = &tegra_pinctrl_resume
}; };
static bool tegra_pinctrl_gpio_node_has_range(struct tegra_pmx *pmx) static bool tegra_pinctrl_gpio_node_has_range(struct tegra_pmx *pmx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment