All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] hda_intel: switch Intel chipsets to COMBO position_fix
@ 2012-06-12 23:30 Seth Heasley
  2012-06-13  6:40 ` Takashi Iwai
  0 siblings, 1 reply; 4+ messages in thread
From: Seth Heasley @ 2012-06-12 23:30 UTC (permalink / raw)
  To: Takashi Iwai, Jaroslav Kysela, David Henningsson
  Cc: alsa-devel, linux-kernel, James Ralston, Seth Heasley

This patch implements the COMBO position_fix for recent Intel client chipsets.

Signed-off-by: Seth Heasley <seth.heasley@intel.com>
---
 sound/pci/hda/hda_intel.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index 2b6392b..466a88c 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -535,6 +535,7 @@ enum {
 #define AZX_DCAPS_BUFSIZE	(1 << 21)	/* no buffer size alignment */
 #define AZX_DCAPS_ALIGN_BUFSIZE	(1 << 22)	/* buffer size alignment */
 #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23)	/* BDLE in 4k boundary */
+#define AZX_DCAPS_POSFIX_COMBO  (1 << 24)	/* Use COMBO as default */
 
 /* quirks for ATI SB / AMD Hudson */
 #define AZX_DCAPS_PRESET_ATI_SB \
@@ -2728,6 +2729,10 @@ static int __devinit check_position_fix(struct azx *chip, int fix)
 		snd_printd(SFX "Using LPIB position fix\n");
 		return POS_FIX_LPIB;
 	}
+	if (chip->driver_caps & AZX_DCAPS_POSFIX_COMBO) {
+		snd_printd(SFX "Using COMBO position fix\n");
+		return POS_FIX_COMBO;
+	}
 	return POS_FIX_AUTO;
 }
 
@@ -3240,7 +3245,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
 	/* CPT */
 	{ PCI_DEVICE(0x8086, 0x1c20),
 	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
-	  AZX_DCAPS_BUFSIZE },
+	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
 	/* PBG */
 	{ PCI_DEVICE(0x8086, 0x1d20),
 	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
@@ -3248,11 +3253,11 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
 	/* Panther Point */
 	{ PCI_DEVICE(0x8086, 0x1e20),
 	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
-	  AZX_DCAPS_BUFSIZE},
+	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
 	/* Lynx Point */
 	{ PCI_DEVICE(0x8086, 0x8c20),
 	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
-	  AZX_DCAPS_BUFSIZE},
+	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
 	/* SCH */
 	{ PCI_DEVICE(0x8086, 0x811b),
 	  .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP |
-- 
1.7.4.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] hda_intel: switch Intel chipsets to COMBO position_fix
  2012-06-12 23:30 [PATCH 1/1] hda_intel: switch Intel chipsets to COMBO position_fix Seth Heasley
@ 2012-06-13  6:40 ` Takashi Iwai
  2012-06-13 17:58   ` Heasley, Seth
  0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2012-06-13  6:40 UTC (permalink / raw)
  To: Seth Heasley
  Cc: Jaroslav Kysela, David Henningsson, alsa-devel, linux-kernel,
	James Ralston

At Tue, 12 Jun 2012 16:30:00 -0700,
Seth Heasley wrote:
> 
> This patch implements the COMBO position_fix for recent Intel client chipsets.
> 
> Signed-off-by: Seth Heasley <seth.heasley@intel.com>

Thanks for the patch.
But could you give a bit more context why this change is needed?


Takashi

> ---
>  sound/pci/hda/hda_intel.c |   11 ++++++++---
>  1 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index 2b6392b..466a88c 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -535,6 +535,7 @@ enum {
>  #define AZX_DCAPS_BUFSIZE	(1 << 21)	/* no buffer size alignment */
>  #define AZX_DCAPS_ALIGN_BUFSIZE	(1 << 22)	/* buffer size alignment */
>  #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23)	/* BDLE in 4k boundary */
> +#define AZX_DCAPS_POSFIX_COMBO  (1 << 24)	/* Use COMBO as default */
>  
>  /* quirks for ATI SB / AMD Hudson */
>  #define AZX_DCAPS_PRESET_ATI_SB \
> @@ -2728,6 +2729,10 @@ static int __devinit check_position_fix(struct azx *chip, int fix)
>  		snd_printd(SFX "Using LPIB position fix\n");
>  		return POS_FIX_LPIB;
>  	}
> +	if (chip->driver_caps & AZX_DCAPS_POSFIX_COMBO) {
> +		snd_printd(SFX "Using COMBO position fix\n");
> +		return POS_FIX_COMBO;
> +	}
>  	return POS_FIX_AUTO;
>  }
>  
> @@ -3240,7 +3245,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
>  	/* CPT */
>  	{ PCI_DEVICE(0x8086, 0x1c20),
>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
> -	  AZX_DCAPS_BUFSIZE },
> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>  	/* PBG */
>  	{ PCI_DEVICE(0x8086, 0x1d20),
>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
> @@ -3248,11 +3253,11 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
>  	/* Panther Point */
>  	{ PCI_DEVICE(0x8086, 0x1e20),
>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
> -	  AZX_DCAPS_BUFSIZE},
> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>  	/* Lynx Point */
>  	{ PCI_DEVICE(0x8086, 0x8c20),
>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
> -	  AZX_DCAPS_BUFSIZE},
> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>  	/* SCH */
>  	{ PCI_DEVICE(0x8086, 0x811b),
>  	  .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP |
> -- 
> 1.7.4.4
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [PATCH 1/1] hda_intel: switch Intel chipsets to COMBO position_fix
  2012-06-13  6:40 ` Takashi Iwai
@ 2012-06-13 17:58   ` Heasley, Seth
  2012-06-14  9:42     ` Takashi Iwai
  0 siblings, 1 reply; 4+ messages in thread
From: Heasley, Seth @ 2012-06-13 17:58 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jaroslav Kysela, David Henningsson, alsa-devel, linux-kernel,
	Ralston, James D

>> This patch implements the COMBO position_fix for recent Intel client
>chipsets.
>>
>> Signed-off-by: Seth Heasley <seth.heasley@intel.com>
>
>Thanks for the patch.
>But could you give a bit more context why this change is needed?

The COMBO method was recommended for Intel chipsets by a certain audio maintainer. ;)  It was also tested on the most recent Intel chips because we were seeing warning messages when using DMA positioning ("Invalid position buffer, using LPIB read method instead.").

>> ---
>>  sound/pci/hda/hda_intel.c |   11 ++++++++---
>>  1 files changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
>> index 2b6392b..466a88c 100644
>> --- a/sound/pci/hda/hda_intel.c
>> +++ b/sound/pci/hda/hda_intel.c
>> @@ -535,6 +535,7 @@ enum {
>>  #define AZX_DCAPS_BUFSIZE	(1 << 21)	/* no buffer size
>alignment */
>>  #define AZX_DCAPS_ALIGN_BUFSIZE	(1 << 22)	/* buffer size
>alignment */
>>  #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23)	/* BDLE in 4k boundary
>*/
>> +#define AZX_DCAPS_POSFIX_COMBO  (1 << 24)	/* Use COMBO as
>default */
>>
>>  /* quirks for ATI SB / AMD Hudson */
>>  #define AZX_DCAPS_PRESET_ATI_SB \
>> @@ -2728,6 +2729,10 @@ static int __devinit check_position_fix(struct azx
>*chip, int fix)
>>  		snd_printd(SFX "Using LPIB position fix\n");
>>  		return POS_FIX_LPIB;
>>  	}
>> +	if (chip->driver_caps & AZX_DCAPS_POSFIX_COMBO) {
>> +		snd_printd(SFX "Using COMBO position fix\n");
>> +		return POS_FIX_COMBO;
>> +	}
>>  	return POS_FIX_AUTO;
>>  }
>>
>> @@ -3240,7 +3245,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
>>  	/* CPT */
>>  	{ PCI_DEVICE(0x8086, 0x1c20),
>>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
>> -	  AZX_DCAPS_BUFSIZE },
>> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>>  	/* PBG */
>>  	{ PCI_DEVICE(0x8086, 0x1d20),
>>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | @@ -
>3248,11
>> +3253,11 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
>>  	/* Panther Point */
>>  	{ PCI_DEVICE(0x8086, 0x1e20),
>>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
>> -	  AZX_DCAPS_BUFSIZE},
>> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>>  	/* Lynx Point */
>>  	{ PCI_DEVICE(0x8086, 0x8c20),
>>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
>> -	  AZX_DCAPS_BUFSIZE},
>> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
>>  	/* SCH */
>>  	{ PCI_DEVICE(0x8086, 0x811b),
>>  	  .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP |
>> --
>> 1.7.4.4
>>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] hda_intel: switch Intel chipsets to COMBO position_fix
  2012-06-13 17:58   ` Heasley, Seth
@ 2012-06-14  9:42     ` Takashi Iwai
  0 siblings, 0 replies; 4+ messages in thread
From: Takashi Iwai @ 2012-06-14  9:42 UTC (permalink / raw)
  To: Heasley, Seth
  Cc: Jaroslav Kysela, David Henningsson, alsa-devel, linux-kernel,
	Ralston, James D

At Wed, 13 Jun 2012 17:58:57 +0000,
Heasley, Seth wrote:
> 
> >> This patch implements the COMBO position_fix for recent Intel client
> >chipsets.
> >>
> >> Signed-off-by: Seth Heasley <seth.heasley@intel.com>
> >
> >Thanks for the patch.
> >But could you give a bit more context why this change is needed?
> 
> The COMBO method was recommended for Intel chipsets by a certain audio maintainer. ;)  It was also tested on the most recent Intel chips because we were seeing warning messages when using DMA positioning ("Invalid position buffer, using LPIB read method instead.").

Could you resend the patch with such some reasonable comments in the
changelog?


thanks,

Takashi

> >> ---
> >>  sound/pci/hda/hda_intel.c |   11 ++++++++---
> >>  1 files changed, 8 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> >> index 2b6392b..466a88c 100644
> >> --- a/sound/pci/hda/hda_intel.c
> >> +++ b/sound/pci/hda/hda_intel.c
> >> @@ -535,6 +535,7 @@ enum {
> >>  #define AZX_DCAPS_BUFSIZE	(1 << 21)	/* no buffer size
> >alignment */
> >>  #define AZX_DCAPS_ALIGN_BUFSIZE	(1 << 22)	/* buffer size
> >alignment */
> >>  #define AZX_DCAPS_4K_BDLE_BOUNDARY (1 << 23)	/* BDLE in 4k boundary
> >*/
> >> +#define AZX_DCAPS_POSFIX_COMBO  (1 << 24)	/* Use COMBO as
> >default */
> >>
> >>  /* quirks for ATI SB / AMD Hudson */
> >>  #define AZX_DCAPS_PRESET_ATI_SB \
> >> @@ -2728,6 +2729,10 @@ static int __devinit check_position_fix(struct azx
> >*chip, int fix)
> >>  		snd_printd(SFX "Using LPIB position fix\n");
> >>  		return POS_FIX_LPIB;
> >>  	}
> >> +	if (chip->driver_caps & AZX_DCAPS_POSFIX_COMBO) {
> >> +		snd_printd(SFX "Using COMBO position fix\n");
> >> +		return POS_FIX_COMBO;
> >> +	}
> >>  	return POS_FIX_AUTO;
> >>  }
> >>
> >> @@ -3240,7 +3245,7 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
> >>  	/* CPT */
> >>  	{ PCI_DEVICE(0x8086, 0x1c20),
> >>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
> >> -	  AZX_DCAPS_BUFSIZE },
> >> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
> >>  	/* PBG */
> >>  	{ PCI_DEVICE(0x8086, 0x1d20),
> >>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | @@ -
> >3248,11
> >> +3253,11 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
> >>  	/* Panther Point */
> >>  	{ PCI_DEVICE(0x8086, 0x1e20),
> >>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
> >> -	  AZX_DCAPS_BUFSIZE},
> >> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
> >>  	/* Lynx Point */
> >>  	{ PCI_DEVICE(0x8086, 0x8c20),
> >>  	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP |
> >> -	  AZX_DCAPS_BUFSIZE},
> >> +	  AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_COMBO },
> >>  	/* SCH */
> >>  	{ PCI_DEVICE(0x8086, 0x811b),
> >>  	  .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP |
> >> --
> >> 1.7.4.4
> >>
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-06-14  9:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-12 23:30 [PATCH 1/1] hda_intel: switch Intel chipsets to COMBO position_fix Seth Heasley
2012-06-13  6:40 ` Takashi Iwai
2012-06-13 17:58   ` Heasley, Seth
2012-06-14  9:42     ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.