Message ID | TYCP286MB253538FE76C93C032DB55212C40E2@TYCP286MB2535.JPNP286.PROD.OUTLOOK.COM (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ALSA: hda/realtek: Fix internal speakers for Legion Y9000X 2022 IAH7 | expand |
Hi, We are still investigating this issue, but I do not think this solution is the correct one. Configuring the interrupt in this way does not fix the interrupt, just hides the issue. We are still looking into what we can do to try and fix this. Thanks, Stefan > -----Original Message----- > From: ArcticLampyrid <ArcticLampyrid@outlook.com> > Sent: Thursday, April 18, 2024 2:20 PM > To: sbinding@opensource.cirrus.com > Cc: david.rhodes@cirrus.com; james.schulman@cirrus.com; linux- > kernel@vger.kernel.org; linux-sound@vger.kernel.org; > patches@opensource.cirrus.com; rf@opensource.cirrus.com; > ArcticLampyrid <ArcticLampyrid@outlook.com> > Subject: [PATCH v3 1/2] ALSA: cs35l41: obey the trigger type from DSDT > > On some models, CSC3551's interrupt pin connected to > APIC. We need to obey the trigger type from DSDT in this case. > > Signed-off-by: ArcticLampyrid <ArcticLampyrid@outlook.com> > --- > sound/pci/hda/cs35l41_hda.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c > index d3fa6e136744..d9c7b4034684 100644 > --- a/sound/pci/hda/cs35l41_hda.c > +++ b/sound/pci/hda/cs35l41_hda.c > @@ -10,6 +10,7 @@ > #include <linux/module.h> > #include <linux/moduleparam.h> > #include <sound/hda_codec.h> > +#include <linux/irq.h> > #include <sound/soc.h> > #include <linux/pm_runtime.h> > #include <linux/spi/spi.h> > @@ -1511,6 +1512,14 @@ static int cs35l41_hda_apply_properties(struct > cs35l41_hda *cs35l41) > irq_pol = cs35l41_gpio_config(cs35l41->regmap, hw_cfg); > > if (cs35l41->irq && using_irq) { > + struct irq_data *irq_data; > + > + irq_data = irq_get_irq_data(cs35l41->irq); > + if (irq_data && irqd_trigger_type_was_set(irq_data)) { > + irq_pol = irqd_get_trigger_type(irq_data); > + dev_info(cs35l41->dev, "Using configured IRQ > Polarity: %d\n", irq_pol); > + } > + > ret = devm_regmap_add_irq_chip(cs35l41->dev, cs35l41- > >regmap, cs35l41->irq, > IRQF_ONESHOT | > IRQF_SHARED | irq_pol, > 0, > &cs35l41_regmap_irq_chip, &cs35l41->irq_data); > -- > 2.44.0 >
I believe we should obey the type declared in DSDT table if it exists, in general case. Could you please explain why it did not solve the interrupt? Is it a misleading item in DSDT? Thanks for your reply.
diff --git a/sound/pci/hda/cs35l41_hda.c b/sound/pci/hda/cs35l41_hda.c index d3fa6e136744..d9c7b4034684 100644 --- a/sound/pci/hda/cs35l41_hda.c +++ b/sound/pci/hda/cs35l41_hda.c @@ -10,6 +10,7 @@ #include <linux/module.h> #include <linux/moduleparam.h> #include <sound/hda_codec.h> +#include <linux/irq.h> #include <sound/soc.h> #include <linux/pm_runtime.h> #include <linux/spi/spi.h> @@ -1511,6 +1512,14 @@ static int cs35l41_hda_apply_properties(struct cs35l41_hda *cs35l41) irq_pol = cs35l41_gpio_config(cs35l41->regmap, hw_cfg); if (cs35l41->irq && using_irq) { + struct irq_data *irq_data; + + irq_data = irq_get_irq_data(cs35l41->irq); + if (irq_data && irqd_trigger_type_was_set(irq_data)) { + irq_pol = irqd_get_trigger_type(irq_data); + dev_info(cs35l41->dev, "Using configured IRQ Polarity: %d\n", irq_pol); + } + ret = devm_regmap_add_irq_chip(cs35l41->dev, cs35l41->regmap, cs35l41->irq, IRQF_ONESHOT | IRQF_SHARED | irq_pol, 0, &cs35l41_regmap_irq_chip, &cs35l41->irq_data);
On some models, CSC3551's interrupt pin connected to APIC. We need to obey the trigger type from DSDT in this case. Signed-off-by: ArcticLampyrid <ArcticLampyrid@outlook.com> --- sound/pci/hda/cs35l41_hda.c | 9 +++++++++ 1 file changed, 9 insertions(+)