[alsa-devel] [PATCH] ALSA: hda - set intel audio clock to a properly value
Yang, Libin
libin.yang at intel.com
Thu Mar 30 09:58:12 CEST 2017
Hi Jeeja,
>-----Original Message-----
>From: Kp, Jeeja
>Sent: Thursday, March 23, 2017 9:11 PM
>To: Yang, Libin <libin.yang at intel.com>; alsa-devel at alsa-project.org;
>tiwai at suse.de
>Cc: Lin, Mengdong <mengdong.lin at intel.com>; infernix at infernix.net
>Subject: RE: [alsa-devel] [PATCH] ALSA: hda - set intel audio clock to a properly
>value
>
>> -----Original Message-----
>> From: alsa-devel-bounces at alsa-project.org [mailto:alsa-devel-
>> bounces at alsa-project.org] On Behalf Of Yang, Libin
>> Sent: Tuesday, March 7, 2017 11:50 AM
>> To: alsa-devel at alsa-project.org; tiwai at suse.de
>> Cc: Yang, Libin <libin.yang at intel.com>; Lin, Mengdong
>> <mengdong.lin at intel.com>; infernix at infernix.net
>> Subject: [alsa-devel] [PATCH] ALSA: hda - set intel audio clock to a
>> properly value
>>
>> From: Libin Yang <libin.yang at intel.com>
>>
>> On some Intel platforms, the audio clock may not be set correctly with
>> initial setting. This will cause the audio playback/capture rates wrong.
>>
>> This patch checks the audio clock setting and will set it to a
>> properly value if it is not set correct.
>>
>> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188411
>>
>> Signed-off-by: Libin Yang <libin.yang at intel.com>
>> ---
>> include/sound/hda_register.h | 12 +++--
>> sound/hda/ext/hdac_ext_controller.c | 6 +--
>> sound/pci/hda/hda_intel.c | 91
>> +++++++++++++++++++++++++++++++++++++
>> 3 files changed, 103 insertions(+), 6 deletions(-)
>>
>> diff --git a/include/sound/hda_register.h
>> b/include/sound/hda_register.h index 0013063..7ea16cb 100644
>> --- a/include/sound/hda_register.h
>> +++ b/include/sound/hda_register.h
>> @@ -227,6 +227,8 @@ enum { SDI0, SDI1, SDI2, SDI3, SDO0, SDO1, SDO2,
>> SDO3 };
>> #define AZX_REG_PPLCLLPU 0xC
>>
>> /* registers for Multiple Links Capability Structure */
>> +/* Multiple Links Capability */
>> +#define AZX_REG_ML_CAP_BASE 0xc00
>Base is already available as part of bus, use bus->mlcap
>
>
>> +#define AZX_REG_ML_LCAPx(x) (AZX_REG_ML_CAP_BASE + (0x40 +
>> 0x40 * x))
>> +#define AZX_REG_ML_LCTLx(x) (AZX_REG_ML_CAP_BASE + (0x44 +
>> 0x40 * x))
>This is specific to the had legacy driver as only link0 is used, I think this can be
>moved to driver As define. If it required to use all the link, then need to use
>ext functions to initialize the address per link.
I'm not very sure what's your meaning. Do you mean using
+#define AZX_REG_ML_LCAP0 (AZX_REG_ML_CAP_BASE + 0x40)
>
>> +#define ML_LCTL_SCF_MASK 0xF
>> +#define AZX_MLCTL_SPA (0x1 << 16)
>> +#define AZX_MLCTL_CPA (0x1 << 23)
>> +#define AZX_MLCTL_SPA_SHIFT 16
>> +#define AZX_MLCTL_CPA_SHIFT 23
>>
>> +
>> static void hda_intel_init_chip(struct azx *chip, bool full_reset) {
>> struct hdac_bus *bus = azx_bus(chip); @@ -564,6 +652,9 @@ static
>> void hda_intel_init_chip(struct azx *chip, bool
>> full_reset)
>> +
>> + if (IS_SKL_PLUS(pci))
>> + intel_init_lctl(chip);
>Use bus->mlcap to check for multilink capability is present.
Get it.
Thanks,
Libin
More information about the Alsa-devel
mailing list