Pin control fixes for the v7.2 series:

- Wakeup nits on the Qualcomm SC8280XP.
 
 - Double-free issues on the device tree parsing error path.
 
 - Fixup of the S4 sleep state handling on AMD pin control.
 
 - Missing Kconfig select REGMAP_MMIO for the Microchip
   driver leading to compile stalls.
 
 - Missing Kconfig select GENERIC_PINCONF for the Bitmain
   BM1880 leading to compile stalls.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmpnIncACgkQQRCzN7AZ
 XXPYww/6A9lTia3eOzmtjGCJZpKtIjQQ1S6E9/Fm8zSkWJGEDykcPRu2TE4cj12L
 6ciGxdfUOhcRS+Trjezz9QntwF1QXQCFx+BuDHMUOVqHOSwmzsX2qCEr1w056nk5
 6DcMDvF11/k9axkZfSI9SQtUacI0eCRXVGJ3y1TVkgm6KS3fhrzDl0dUmlhSbj5H
 bzNWyzJT9CdNAZEXily3phfKbPB8C+j7cy7MHX/T7QVt/GMGYR9VxZUkrqBknQXc
 Bnv+TkNrmrOcOlFgEVJ1iwjXi19yvf+E/9xSTgSO/K7piTLNjPJebV0g4OOc3iNF
 Lu6DxMVkj3To+LoknmatSK0Dnns97qngZalxmKwo0ptzccXNuae6rgsAAeHQLGvZ
 iZ33xYOkWj2deMPH5H2su1YPxIN6YwOdT9dmvO52nZ4mG5khqp23idgyzLK/VCo/
 yglJ158QTFa1oH9Vk8qvNTG5c4gQsoLIj1e8vGHUdZtswTDoJrYu3qTo9OkX98yc
 97hxits+kw31ZH65w9bXfneHV1hc53BqTr8FKqkjHTQV8NPBe5rVehitRWYoTGn0
 wfhkgOcvtYzGRII6QbBqMm4BW+0GnIddXFp8EUEm+tDF9Uh9sviJigjvLYjPt2VA
 QalF6hDrSwZE/IQLccG1YaxdQxq+ddUaIEMn++vP1uFOly56pys=
 =GI5s
 -----END PGP SIGNATURE-----

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

Pull pin control fixes from Linus Walleij:
 "The most interesting commit is the S4 fix for AMD, which probably is
  helpful to a whole bunch of important machines.

   - Wakeup nits on the Qualcomm SC8280XP

   - Double-free issues on the device tree parsing error path

   - Fixup of the S4 sleep state handling on AMD pin control

   - Missing Kconfig select REGMAP_MMIO for the Microchip driver leading
     to compile stalls

   - Missing Kconfig select GENERIC_PINCONF for the Bitmain BM1880
     leading to compile stalls"

* tag 'pinctrl-v7.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  pinctrl: bm1880: add missing select GENERIC_PINCONF
  pinctrl-amd: Don't clear S4 wake bits at probe
  pinctrl: microchip-sgpio: add missing select REGMAP_MMIO
  pinctrl: devicetree: don't free uninitialized dev_name on error path
  pinctrl: qcom: sc8280xp: Add missing wakeup entries for GPIO143/151
  pinctrl: qcom: Unconditionally mark gpio as wakeup enable
This commit is contained in:
Linus Torvalds 2026-07-27 08:48:48 -07:00
commit e63c75f72f
5 changed files with 22 additions and 16 deletions

View File

@ -166,6 +166,7 @@ config PINCTRL_BM1880
depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
default ARCH_BITMAIN
select PINMUX
select GENERIC_PINCONF
help
Pinctrl driver for Bitmain BM1880 SoC.
@ -426,6 +427,7 @@ config PINCTRL_MICROCHIP_SGPIO
select GENERIC_PINCONF
select GENERIC_PINCTRL_GROUPS
select GENERIC_PINMUX_FUNCTIONS
select REGMAP_MMIO
help
Support for the serial GPIO interface used on Microsemi and
Microchip SoCs. By using a serial interface, the SIO

View File

@ -69,6 +69,10 @@ static int dt_remember_or_free_map(struct pinctrl *p, const char *statename,
int i;
struct pinctrl_dt_map *dt_map;
/* Initialize dev_name before any allocation can fail */
for (i = 0; i < num_maps; i++)
map[i].dev_name = NULL;
/* Initialize common mapping table entry fields */
for (i = 0; i < num_maps; i++) {
const char *devname;

View File

@ -884,8 +884,7 @@ static void amd_gpio_irq_init(struct amd_gpio *gpio_dev)
u32 pin_reg, mask;
int i;
mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3) |
BIT(WAKE_CNTRL_OFF_S4);
mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3);
for (i = 0; i < desc->npins; i++) {
int pin = desc->pins[i].number;

View File

@ -1240,12 +1240,12 @@ static int msm_gpio_irq_reqres(struct irq_data *d)
/*
* If the wakeup_enable bit is present and marked as available for the
* requested GPIO, it should be enabled when the GPIO is marked as
* wake irq in order to allow the interrupt event to be transfered to
* the PDC HW.
* wake irq in order to allow the interrupt event to be transferred to
* the PDC/MPM HW.
* While the name implies only the wakeup event, it's also required for
* the interrupt event.
*/
if (test_bit(d->hwirq, pctrl->skip_wake_irqs) && g->intr_wakeup_present_bit) {
if (g->intr_wakeup_present_bit) {
u32 intr_cfg;
raw_spin_lock_irqsave(&pctrl->lock, flags);
@ -1273,7 +1273,7 @@ static void msm_gpio_irq_relres(struct irq_data *d)
unsigned long flags;
/* Disable the wakeup_enable bit if it has been set in msm_gpio_irq_reqres() */
if (test_bit(d->hwirq, pctrl->skip_wake_irqs) && g->intr_wakeup_present_bit) {
if (g->intr_wakeup_present_bit) {
u32 intr_cfg;
raw_spin_lock_irqsave(&pctrl->lock, flags);

View File

@ -1881,16 +1881,17 @@ static const struct msm_gpio_wakeirq_map sc8280xp_pdc_map[] = {
{ 126, 200 }, { 127, 225 }, { 128, 262 }, { 129, 201 },
{ 130, 209 }, { 131, 173 }, { 132, 202 }, { 136, 210 },
{ 138, 171 }, { 139, 226 }, { 140, 227 }, { 142, 228 },
{ 144, 229 }, { 145, 230 }, { 146, 231 }, { 148, 232 },
{ 149, 233 }, { 150, 234 }, { 152, 235 }, { 154, 212 },
{ 157, 213 }, { 161, 219 }, { 170, 236 }, { 171, 221 },
{ 174, 222 }, { 175, 237 }, { 176, 223 }, { 177, 170 },
{ 180, 238 }, { 181, 239 }, { 182, 240 }, { 183, 241 },
{ 184, 242 }, { 185, 243 }, { 190, 178 }, { 193, 184 },
{ 196, 185 }, { 198, 186 }, { 200, 174 }, { 201, 175 },
{ 205, 176 }, { 206, 177 }, { 208, 187 }, { 210, 198 },
{ 211, 199 }, { 212, 204 }, { 215, 205 }, { 220, 188 },
{ 221, 194 }, { 223, 195 }, { 225, 196 }, { 227, 197 },
{ 143, 261 }, { 144, 229 }, { 145, 230 }, { 146, 231 },
{ 148, 232 }, { 149, 233 }, { 150, 234 }, { 151, 264 },
{ 152, 235 }, { 154, 212 }, { 157, 213 }, { 161, 219 },
{ 170, 236 }, { 171, 221 }, { 174, 222 }, { 175, 237 },
{ 176, 223 }, { 177, 170 }, { 180, 238 }, { 181, 239 },
{ 182, 240 }, { 183, 241 }, { 184, 242 }, { 185, 243 },
{ 190, 178 }, { 193, 184 }, { 196, 185 }, { 198, 186 },
{ 200, 174 }, { 201, 175 }, { 205, 176 }, { 206, 177 },
{ 208, 187 }, { 210, 198 }, { 211, 199 }, { 212, 204 },
{ 215, 205 }, { 220, 188 }, { 221, 194 }, { 223, 195 },
{ 225, 196 }, { 227, 197 },
};
static struct msm_pinctrl_soc_data sc8280xp_pinctrl = {