[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <5A5FF9D8-25B6-4AE0-B7A0-449BB6E40D98@canonical.com>
Date: Tue, 27 Oct 2020 15:42:52 +0800
From: Kai-Heng Feng <kai.heng.feng@...onical.com>
To: Takashi Iwai <tiwai@...e.de>
Cc: tiwai@...e.com, Jaroslav Kysela <perex@...ex.cz>,
Hui Wang <hui.wang@...onical.com>,
Kai Vehmanen <kai.vehmanen@...ux.intel.com>,
alsa-devel@...a-project.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 2/4] ALSA: hda: Stop mangling PCI IRQ
> On Oct 27, 2020, at 15:36, Takashi Iwai <tiwai@...e.de> wrote:
>
> On Tue, 27 Oct 2020 06:39:59 +0100,
> Kai-Heng Feng wrote:
>>
>> The code predates 2005, it should be unnecessary now as PCI core handles
>> IRQ much better nowadays.
>>
>> So stop PCI IRQ mangling in suspend/resume callbacks.
>>
>> Takashi Iwai mentioned that IRQ number can change after S3 on some
>> really old hardwares. We should use quirks to handle those platforms, as
>> most modern systems won't have that issue.
>
> I believe it was S4. And this pretty much depends on BIOS, hence it's
> hard to apply the quirk, honestly speaking.
Ok, S4 is indeed hard to handle.
>
> And, if we know that we need a quirk, dropping the code completely now
> is a bad move. If any, this should be applied conditionally to the
> "known to be modern" platforms, but this will make the code rather
> messier, OTOH.
>
> Do we need this change inevitably? Otherwise I'd skip this one.
Ok, please drop this one.
Kai-Heng
>
>
> thanks,
>
> Takashi
>
>
>>
>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@...onical.com>
>> ---
>> v2:
>> - Wording.
>> - Add info on IRQ # can change on old hardwares.
>>
>> sound/pci/hda/hda_intel.c | 15 ---------------
>> 1 file changed, 15 deletions(-)
>>
>> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
>> index 749b88090970..b4aa1dcf1aae 100644
>> --- a/sound/pci/hda/hda_intel.c
>> +++ b/sound/pci/hda/hda_intel.c
>> @@ -1022,13 +1022,11 @@ static int azx_suspend(struct device *dev)
>> {
>> struct snd_card *card = dev_get_drvdata(dev);
>> struct azx *chip;
>> - struct hdac_bus *bus;
>>
>> if (!azx_is_pm_ready(card))
>> return 0;
>>
>> chip = card->private_data;
>> - bus = azx_bus(chip);
>> snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
>> /* An ugly workaround: direct call of __azx_runtime_suspend() and
>> * __azx_runtime_resume() for old Intel platforms that suffer from
>> @@ -1038,14 +1036,6 @@ static int azx_suspend(struct device *dev)
>> __azx_runtime_suspend(chip);
>> else
>> pm_runtime_force_suspend(dev);
>> - if (bus->irq >= 0) {
>> - free_irq(bus->irq, chip);
>> - bus->irq = -1;
>> - chip->card->sync_irq = -1;
>> - }
>> -
>> - if (chip->msi)
>> - pci_disable_msi(chip->pci);
>>
>> trace_azx_suspend(chip);
>> return 0;
>> @@ -1060,11 +1050,6 @@ static int azx_resume(struct device *dev)
>> return 0;
>>
>> chip = card->private_data;
>> - if (chip->msi)
>> - if (pci_enable_msi(chip->pci) < 0)
>> - chip->msi = 0;
>> - if (azx_acquire_irq(chip, 1) < 0)
>> - return -EIO;
>>
>> if (chip->driver_caps & AZX_DCAPS_SUSPEND_SPURIOUS_WAKEUP)
>> __azx_runtime_resume(chip, false);
>> --
>> 2.17.1
>>
Powered by blists - more mailing lists