Message ID | TYCP286MB253551BDCC83320C246BD494C40E2@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, Looking at the ACPI attached previously, this issue needs some more investigation. I don't think this patch is a good idea, since it is unknown what effects this patch will have on other laptops. Thanks, Stefan > -----Original Message----- > From: ArcticLampyrid <ArcticLampyrid@outlook.com> > Sent: Thursday, April 18, 2024 7:46 AM > To: james.schulman@cirrus.com; david.rhodes@cirrus.com; > rf@opensource.cirrus.com > Cc: patches@opensource.cirrus.com; linux-sound@vger.kernel.org; linux- > kernel@vger.kernel.org; ArcticLampyrid <ArcticLampyrid@outlook.com> > Subject: [PATCH v2 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 >
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(+)