Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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()

+13 -8
+10 -4
drivers/gpio/gpio-tegra186.c
··· 343 343 return offset + pin; 344 344 } 345 345 346 + #define to_tegra_gpio(x) container_of((x), struct tegra_gpio, gpio) 347 + 346 348 static void tegra186_irq_ack(struct irq_data *data) 347 349 { 348 - struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); 350 + struct gpio_chip *gc = irq_data_get_irq_chip_data(data); 351 + struct tegra_gpio *gpio = to_tegra_gpio(gc); 349 352 void __iomem *base; 350 353 351 354 base = tegra186_gpio_get_base(gpio, data->hwirq); ··· 360 357 361 358 static void tegra186_irq_mask(struct irq_data *data) 362 359 { 363 - struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); 360 + struct gpio_chip *gc = irq_data_get_irq_chip_data(data); 361 + struct tegra_gpio *gpio = to_tegra_gpio(gc); 364 362 void __iomem *base; 365 363 u32 value; 366 364 ··· 376 372 377 373 static void tegra186_irq_unmask(struct irq_data *data) 378 374 { 379 - struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); 375 + struct gpio_chip *gc = irq_data_get_irq_chip_data(data); 376 + struct tegra_gpio *gpio = to_tegra_gpio(gc); 380 377 void __iomem *base; 381 378 u32 value; 382 379 ··· 392 387 393 388 static int tegra186_irq_set_type(struct irq_data *data, unsigned int type) 394 389 { 395 - struct tegra_gpio *gpio = irq_data_get_irq_chip_data(data); 390 + struct gpio_chip *gc = irq_data_get_irq_chip_data(data); 391 + struct tegra_gpio *gpio = to_tegra_gpio(gc); 396 392 void __iomem *base; 397 393 u32 value; 398 394
-1
drivers/pinctrl/intel/pinctrl-tigerlake.c
··· 749 749 { "INT34C5", (kernel_ulong_t)&tgllp_soc_data }, 750 750 { "INT34C6", (kernel_ulong_t)&tglh_soc_data }, 751 751 { "INTC1055", (kernel_ulong_t)&tgllp_soc_data }, 752 - { "INTC1057", (kernel_ulong_t)&tgllp_soc_data }, 753 752 { } 754 753 }; 755 754 MODULE_DEVICE_TABLE(acpi, tgl_pinctrl_acpi_match);
+2 -2
drivers/pinctrl/pinctrl-k210.c
··· 482 482 { 483 483 int i; 484 484 485 - for (i = K210_PC_DRIVE_MAX; i; i--) { 485 + for (i = K210_PC_DRIVE_MAX; i >= 0; i--) { 486 486 if (k210_pinconf_drive_strength[i] <= max_strength_ua) 487 487 return i; 488 488 } ··· 527 527 case PIN_CONFIG_BIAS_PULL_UP: 528 528 if (!arg) 529 529 return -EINVAL; 530 - val |= K210_PC_PD; 530 + val |= K210_PC_PU; 531 531 break; 532 532 case PIN_CONFIG_DRIVE_STRENGTH: 533 533 arg *= 1000;
+1 -1
drivers/pinctrl/pinctrl-starfive.c
··· 1164 1164 } 1165 1165 1166 1166 static struct irq_chip starfive_irq_chip = { 1167 + .name = "StarFive GPIO", 1167 1168 .irq_ack = starfive_irq_ack, 1168 1169 .irq_mask = starfive_irq_mask, 1169 1170 .irq_mask_ack = starfive_irq_mask_ack, ··· 1309 1308 sfp->gc.ngpio = NR_GPIOS; 1310 1309 1311 1310 starfive_irq_chip.parent_device = dev; 1312 - starfive_irq_chip.name = sfp->gc.label; 1313 1311 1314 1312 sfp->gc.irq.chip = &starfive_irq_chip; 1315 1313 sfp->gc.irq.parent_handler = starfive_gpio_irq_handler;