This is just a revert of the AMD fix, because the fix fixed
broken some laptops. We are working on a proper solution. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEElDRnuGcz/wPCXQWMQRCzN7AZXXMFAmQ4YHcACgkQQRCzN7AZ XXO3QRAAlEE9OIeq6yhrnmQyhXTysZNCjMigkppIWAjY96twBifKo2PyaALb5v9O VPlbLDUB250RInrakOjjY3AFGiXP/UEYBsMk7L5UGS3bloyrBLyFEKoXccAO0qO6 pPlVlLN+iszsO+vx2fSiE65o6ZMZTU9FWcroTbvDfO228e9xeq1mjH4d4H88sr90 /PUhK/CT13zdTYX/eB8rF9IwlqAGRbuoNPr70M8cpJckVBs/BDt/EQLdBNzScY2l 5zcaYcpxQlLI+uiBjf3kHKXVcOZwSKYMFK04306blgWhSAxEqMsM3aiwk3C612Ri fc70ONHl7OXSnIREcobIEq22Ehd3L/TEI0br76DkWkurQB29YT4WyEWAj1lmlzCY afHhX5d+ipVybOW3rQfCTdf/U23jVLrvA+n1bwsJqEpACsEXHyfHA+0oidBeiW2O 62wmP9wxjUiO2AkIfNJuMdf12BdK+r0Rvk/5mRIZTUKOkx7B1T/zVHCnt9Qir2BT 0O/3wUTz23onrR/1OnLiSOYQfmlly0/jZu2jyFYoIFxlB2imeqKfFnB0QHjzXOxe BeBTXPa1Y7r4ESNjt5z78MvlGIZLXf+PLx7nfxfVgClu3SUauNPFTFVkv45RJLWU AcL33B5OpmDT1EFxToPNto/kFTa4SzPm1dxEHpNcdURNEaq2KfQ= =FCMQ -----END PGP SIGNATURE----- Merge tag 'pinctrl-v6.3-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl Pull pin control fix from Linus Walleij: "This is just a revert of the AMD fix, because the fix broke some laptops. We are working on a proper solution" * tag 'pinctrl-v6.3-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: Revert "pinctrl: amd: Disable and mask interrupts on resume"
This commit is contained in:
commit
531f27ad5e
|
@ -872,34 +872,32 @@ static const struct pinconf_ops amd_pinconf_ops = {
|
||||||
.pin_config_group_set = amd_pinconf_group_set,
|
.pin_config_group_set = amd_pinconf_group_set,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void amd_gpio_irq_init_pin(struct amd_gpio *gpio_dev, int pin)
|
static void amd_gpio_irq_init(struct amd_gpio *gpio_dev)
|
||||||
{
|
{
|
||||||
const struct pin_desc *pd;
|
struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
u32 pin_reg, mask;
|
u32 pin_reg, mask;
|
||||||
|
int i;
|
||||||
|
|
||||||
mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3) |
|
mask = BIT(WAKE_CNTRL_OFF_S0I3) | BIT(WAKE_CNTRL_OFF_S3) |
|
||||||
BIT(INTERRUPT_MASK_OFF) | BIT(INTERRUPT_ENABLE_OFF) |
|
BIT(INTERRUPT_MASK_OFF) | BIT(INTERRUPT_ENABLE_OFF) |
|
||||||
BIT(WAKE_CNTRL_OFF_S4);
|
BIT(WAKE_CNTRL_OFF_S4);
|
||||||
|
|
||||||
pd = pin_desc_get(gpio_dev->pctrl, pin);
|
for (i = 0; i < desc->npins; i++) {
|
||||||
if (!pd)
|
int pin = desc->pins[i].number;
|
||||||
return;
|
const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin);
|
||||||
|
|
||||||
raw_spin_lock_irqsave(&gpio_dev->lock, flags);
|
if (!pd)
|
||||||
pin_reg = readl(gpio_dev->base + pin * 4);
|
continue;
|
||||||
pin_reg &= ~mask;
|
|
||||||
writel(pin_reg, gpio_dev->base + pin * 4);
|
|
||||||
raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void amd_gpio_irq_init(struct amd_gpio *gpio_dev)
|
raw_spin_lock_irqsave(&gpio_dev->lock, flags);
|
||||||
{
|
|
||||||
struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < desc->npins; i++)
|
pin_reg = readl(gpio_dev->base + i * 4);
|
||||||
amd_gpio_irq_init_pin(gpio_dev, i);
|
pin_reg &= ~mask;
|
||||||
|
writel(pin_reg, gpio_dev->base + i * 4);
|
||||||
|
|
||||||
|
raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
|
@ -952,10 +950,8 @@ static int amd_gpio_resume(struct device *dev)
|
||||||
for (i = 0; i < desc->npins; i++) {
|
for (i = 0; i < desc->npins; i++) {
|
||||||
int pin = desc->pins[i].number;
|
int pin = desc->pins[i].number;
|
||||||
|
|
||||||
if (!amd_gpio_should_save(gpio_dev, pin)) {
|
if (!amd_gpio_should_save(gpio_dev, pin))
|
||||||
amd_gpio_irq_init_pin(gpio_dev, pin);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
raw_spin_lock_irqsave(&gpio_dev->lock, flags);
|
raw_spin_lock_irqsave(&gpio_dev->lock, flags);
|
||||||
gpio_dev->saved_regs[i] |= readl(gpio_dev->base + pin * 4) & PIN_IRQ_PENDING;
|
gpio_dev->saved_regs[i] |= readl(gpio_dev->base + pin * 4) & PIN_IRQ_PENDING;
|
||||||
|
|
Loading…
Reference in New Issue