[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <a530e70a-2491-4270-b582-cd493d1512b1@linux.intel.com>
Date: Tue, 5 Dec 2023 10:01:08 -0600
From: Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>
To: Gergo Koteles <soyer@....hu>, Shenghao Ding <shenghao-ding@...com>,
Kevin Lu <kevin-lu@...com>, Baojun Xu <baojun.xu@...com>,
Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>,
Liam Girdwood <lgirdwood@...il.com>,
Mark Brown <broonie@...nel.org>
Cc: linux-kernel@...r.kernel.org, alsa-devel@...a-project.org
Subject: Re: [PATCH 2/2] ALSA: hda/tas2563: Add tas2563 HDA driver
>>> +
>>> +static void tas2563_fixup_i2c(struct hda_codec *cdc,
>>> + const struct hda_fixup *fix, int action)
>>> +{
>>> + tas2xxx_generic_fixup(cdc, action, "i2c", "INT8866");
>>
>> Any specific reason to use an Intel ACPI identifier? Why not use
>> "TIAS2563" ?
>>
> INT8866 is in the ACPI.
> I don't know why Lenovo uses this name.
> I think it's more internal than intel.
>
> Scope (_SB.I2CD)
> {
> Device (TAS)
> {
> Name (_HID, "INT8866") // _HID: Hardware ID
Ouch, I hope they checked with Intel that this isn't an HID already in
use...
> Name (_UID, Zero) // _UID: Unique ID
> Method (_CRS, 0, NotSerialized) // _CRS: Current Resource
> Settings
> {
> Name (RBUF, ResourceTemplate ()
> {
> I2cSerialBusV2 (0x004C, ControllerInitiated,
> 0x00061A80,
> AddressingMode7Bit, "\\_SB.I2CD",
> 0x00, ResourceConsumer, , Exclusive,
> )
> I2cSerialBusV2 (0x004D, ControllerInitiated,
> 0x00061A80,
> AddressingMode7Bit, "\\_SB.I2CD",
> 0x00, ResourceConsumer, , Exclusive,
> )
> GpioInt (Edge, ActiveLow, SharedAndWake, PullNone,
> 0x0000,
> "\\_SB.GPIO", 0x00, ResourceConsumer, ,
> )
> { // Pin list
> 0x0020
> }
> })
> Return (RBUF) /* \_SB_.I2CD.TAS_._CRS.RBUF */
> }
>
> Method (_STA, 0, NotSerialized) // _STA: Status
> {
> Return (0x0F)
> }
> }
> }
>>> +static int tas2563_system_resume(struct device *dev)
>>> +{
>>> + int ret;
>>> + struct tas2563_data *tas2563 = dev_get_drvdata(dev);
>>> +
>>> + dev_dbg(tas2563->dev, "System Resume\n");
>>> +
>>> + ret = pm_runtime_force_resume(dev);
>>> + if (ret)
>>> + return ret;
>>> +
>>> + for (int i = 0; i < tas2563->ndev; ++i)
>>> + tas2563_tasdev_setup(tas2563, &tas2563->tasdevs[i]);
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +static const struct dev_pm_ops tas2563_hda_pm_ops = {
>>> + SYSTEM_SLEEP_PM_OPS(tas2563_system_suspend, tas2563_system_resume)
>>
>> where's the pm_runtime stuff?
>>
>
> The amp stores its state in software shutdown mode.
> The tas2563_hda_playback_hook wakes/shutdowns the amp, not the
> pm_runtime.
My point was that you have all these pm_runtime_ calls in the code, but
nothing that provides pm_runtime suspend-resume functions so not sure
what exactly the result is?
Powered by blists - more mailing lists