Commit 6676ba2a authored by Linus Torvalds's avatar Linus Torvalds

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

Pull pin control fixes from Linus Walleij:

 - Fix some drive strength and pull-up code in the K210 driver.

 - Add the Alder Lake-M ACPI ID so it starts to work properly.

 - Use a static name for the StarFive GPIO irq_chip, forestalling an
   upcoming fixes series from Marc Zyngier.

 - Fix an ages old bug in the Tegra 186 driver where we were indexing at
   random into struct and being lucky getting the right member.

* tag 'pinctrl-v5-17-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  gpio: tegra186: Fix chip_data type confusion
  pinctrl: starfive: Use a static name for the GPIO irq_chip
  pinctrl: tigerlake: Revert "Add Alder Lake-M ACPI ID"
  pinctrl: k210: Fix bias-pull-up
  pinctrl: fix loop in k210_pinconf_get_drive()
parents 2293be58 486c2d15
...@@ -343,9 +343,12 @@ static int tegra186_gpio_of_xlate(struct gpio_chip *chip, ...@@ -343,9 +343,12 @@ static int tegra186_gpio_of_xlate(struct gpio_chip *chip,
return offset + pin; return offset + pin;
} }
#define to_tegra_gpio(x) container_of((x), struct tegra_gpio, gpio)
static void tegra186_irq_ack(struct irq_data *data) static void tegra186_irq_ack(struct irq_data *data)
{ {
struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); struct gpio_chip *gc = irq_data_get_irq_chip_data(data);
struct tegra_gpio *gpio = to_tegra_gpio(gc);
void __iomem *base; void __iomem *base;
base = tegra186_gpio_get_base(gpio, data->hwirq); base = tegra186_gpio_get_base(gpio, data->hwirq);
...@@ -357,7 +360,8 @@ static void tegra186_irq_ack(struct irq_data *data) ...@@ -357,7 +360,8 @@ static void tegra186_irq_ack(struct irq_data *data)
static void tegra186_irq_mask(struct irq_data *data) static void tegra186_irq_mask(struct irq_data *data)
{ {
struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); struct gpio_chip *gc = irq_data_get_irq_chip_data(data);
struct tegra_gpio *gpio = to_tegra_gpio(gc);
void __iomem *base; void __iomem *base;
u32 value; u32 value;
...@@ -372,7 +376,8 @@ static void tegra186_irq_mask(struct irq_data *data) ...@@ -372,7 +376,8 @@ static void tegra186_irq_mask(struct irq_data *data)
static void tegra186_irq_unmask(struct irq_data *data) static void tegra186_irq_unmask(struct irq_data *data)
{ {
struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); struct gpio_chip *gc = irq_data_get_irq_chip_data(data);
struct tegra_gpio *gpio = to_tegra_gpio(gc);
void __iomem *base; void __iomem *base;
u32 value; u32 value;
...@@ -387,7 +392,8 @@ static void tegra186_irq_unmask(struct irq_data *data) ...@@ -387,7 +392,8 @@ static void tegra186_irq_unmask(struct irq_data *data)
static int tegra186_irq_set_type(struct irq_data *data, unsigned int type) static int tegra186_irq_set_type(struct irq_data *data, unsigned int type)
{ {
struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); struct gpio_chip *gc = irq_data_get_irq_chip_data(data);
struct tegra_gpio *gpio = to_tegra_gpio(gc);
void __iomem *base; void __iomem *base;
u32 value; u32 value;
......
...@@ -749,7 +749,6 @@ static const struct acpi_device_id tgl_pinctrl_acpi_match[] = { ...@@ -749,7 +749,6 @@ static const struct acpi_device_id tgl_pinctrl_acpi_match[] = {
{ "INT34C5", (kernel_ulong_t)&tgllp_soc_data }, { "INT34C5", (kernel_ulong_t)&tgllp_soc_data },
{ "INT34C6", (kernel_ulong_t)&tglh_soc_data }, { "INT34C6", (kernel_ulong_t)&tglh_soc_data },
{ "INTC1055", (kernel_ulong_t)&tgllp_soc_data }, { "INTC1055", (kernel_ulong_t)&tgllp_soc_data },
{ "INTC1057", (kernel_ulong_t)&tgllp_soc_data },
{ } { }
}; };
MODULE_DEVICE_TABLE(acpi, tgl_pinctrl_acpi_match); MODULE_DEVICE_TABLE(acpi, tgl_pinctrl_acpi_match);
......
...@@ -482,7 +482,7 @@ static int k210_pinconf_get_drive(unsigned int max_strength_ua) ...@@ -482,7 +482,7 @@ static int k210_pinconf_get_drive(unsigned int max_strength_ua)
{ {
int i; int i;
for (i = K210_PC_DRIVE_MAX; i; i--) { for (i = K210_PC_DRIVE_MAX; i >= 0; i--) {
if (k210_pinconf_drive_strength[i] <= max_strength_ua) if (k210_pinconf_drive_strength[i] <= max_strength_ua)
return i; return i;
} }
...@@ -527,7 +527,7 @@ static int k210_pinconf_set_param(struct pinctrl_dev *pctldev, ...@@ -527,7 +527,7 @@ static int k210_pinconf_set_param(struct pinctrl_dev *pctldev,
case PIN_CONFIG_BIAS_PULL_UP: case PIN_CONFIG_BIAS_PULL_UP:
if (!arg) if (!arg)
return -EINVAL; return -EINVAL;
val |= K210_PC_PD; val |= K210_PC_PU;
break; break;
case PIN_CONFIG_DRIVE_STRENGTH: case PIN_CONFIG_DRIVE_STRENGTH:
arg *= 1000; arg *= 1000;
......
...@@ -1164,6 +1164,7 @@ static int starfive_irq_set_type(struct irq_data *d, unsigned int trigger) ...@@ -1164,6 +1164,7 @@ static int starfive_irq_set_type(struct irq_data *d, unsigned int trigger)
} }
static struct irq_chip starfive_irq_chip = { static struct irq_chip starfive_irq_chip = {
.name = "StarFive GPIO",
.irq_ack = starfive_irq_ack, .irq_ack = starfive_irq_ack,
.irq_mask = starfive_irq_mask, .irq_mask = starfive_irq_mask,
.irq_mask_ack = starfive_irq_mask_ack, .irq_mask_ack = starfive_irq_mask_ack,
...@@ -1308,7 +1309,6 @@ static int starfive_probe(struct platform_device *pdev) ...@@ -1308,7 +1309,6 @@ static int starfive_probe(struct platform_device *pdev)
sfp->gc.ngpio = NR_GPIOS; sfp->gc.ngpio = NR_GPIOS;
starfive_irq_chip.parent_device = dev; starfive_irq_chip.parent_device = dev;
starfive_irq_chip.name = sfp->gc.label;
sfp->gc.irq.chip = &starfive_irq_chip; sfp->gc.irq.chip = &starfive_irq_chip;
sfp->gc.irq.parent_handler = starfive_gpio_irq_handler; sfp->gc.irq.parent_handler = starfive_gpio_irq_handler;
......
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