diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-11 10:09:45 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-11 10:09:45 -0700 | 
| commit | 7cc4e87f912bbefa440a51856b8d076e5d1f554a (patch) | |
| tree | 1b8df8683f3de37d2e8211ffa8d151f60d59af62 /sound | |
| parent | 5ba2f67afb02c5302b2898949ed6fc3b3d37dcf1 (diff) | |
| parent | 69fc7eed5f56bce15b239e5110de2575a6970df4 (diff) | |
| download | kernel_samsung_tuna-7cc4e87f912bbefa440a51856b8d076e5d1f554a.zip kernel_samsung_tuna-7cc4e87f912bbefa440a51856b8d076e5d1f554a.tar.gz kernel_samsung_tuna-7cc4e87f912bbefa440a51856b8d076e5d1f554a.tar.bz2  | |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (236 commits)
  [ARM] 5300/1: fixup spitz reset during boot
  [ARM] 5295/1: make ZONE_DMA optional
  [ARM] 5239/1: Palm Zire 72 power management support
  [ARM] 5298/1: Drop desc_handle_irq()
  [ARM] 5297/1: [KS8695] Fix two compile-time warnings
  [ARM] 5296/1: [KS8695] Replace macro's with trailing underscores.
  [ARM] pxa: allow multi-machine PCMCIA builds
  [ARM] pxa: add preliminary CPUFREQ support for PXA3xx
  [ARM] pxa: add missing ACCR bit definitions to pxa3xx-regs.h
  [ARM] pxa: rename cpu-pxa.c to cpufreq-pxa2xx.c
  [ARM] pxa/zylonite: add support for USB OHCI
  [ARM] ohci-pxa27x: use ioremap() and offset for register access
  [ARM] ohci-pxa27x: introduce pxa27x_clear_otgph()
  [ARM] ohci-pxa27x: use platform_get_{irq,resource} for the resource
  [ARM] ohci-pxa27x: move OHCI controller specific registers into the driver
  [ARM] ohci-pxa27x: introduce flags to avoid direct access to OHCI registers
  [ARM] pxa: move I2S register and bit definitions into pxa2xx-i2s.c
  [ARM] pxa: simplify DMA register definitions
  [ARM] pxa: make additional DCSR bits valid for PXA3xx
  [ARM] pxa: move i2c register and bit definitions into i2c-pxa.c
  ...
Fixed up conflicts in
	arch/arm/mach-versatile/core.c
	sound/soc/pxa/pxa2xx-ac97.c
	sound/soc/pxa/pxa2xx-i2s.c
manually.
Diffstat (limited to 'sound')
| -rw-r--r-- | sound/arm/pxa2xx-ac97.c | 4 | ||||
| -rw-r--r-- | sound/soc/pxa/corgi.c | 34 | ||||
| -rw-r--r-- | sound/soc/pxa/pxa2xx-ac97.c | 10 | ||||
| -rw-r--r-- | sound/soc/pxa/pxa2xx-i2s.c | 43 | ||||
| -rw-r--r-- | sound/soc/pxa/spitz.c | 46 | 
5 files changed, 79 insertions, 58 deletions
diff --git a/sound/arm/pxa2xx-ac97.c b/sound/arm/pxa2xx-ac97.c index cba71d8..c2635be 100644 --- a/sound/arm/pxa2xx-ac97.c +++ b/sound/arm/pxa2xx-ac97.c @@ -44,7 +44,7 @@ static struct snd_ac97_bus_ops pxa2xx_ac97_ops = {  static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_out = {  	.name			= "AC97 PCM out",  	.dev_addr		= __PREG(PCDR), -	.drcmr			= &DRCMRTXPCDR, +	.drcmr			= &DRCMR(12),  	.dcmd			= DCMD_INCSRCADDR | DCMD_FLOWTRG |  				  DCMD_BURST32 | DCMD_WIDTH4,  }; @@ -52,7 +52,7 @@ static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_out = {  static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_in = {  	.name			= "AC97 PCM in",  	.dev_addr		= __PREG(PCDR), -	.drcmr			= &DRCMRRXPCDR, +	.drcmr			= &DRCMR(11),  	.dcmd			= DCMD_INCTRGADDR | DCMD_FLOWSRC |  				  DCMD_BURST32 | DCMD_WIDTH4,  }; diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c index 72b7a51..1a8373d 100644 --- a/sound/soc/pxa/corgi.c +++ b/sound/soc/pxa/corgi.c @@ -18,13 +18,13 @@  #include <linux/timer.h>  #include <linux/interrupt.h>  #include <linux/platform_device.h> +#include <linux/gpio.h>  #include <sound/core.h>  #include <sound/pcm.h>  #include <sound/soc.h>  #include <sound/soc-dapm.h>  #include <asm/mach-types.h> -#include <asm/hardware/scoop.h>  #include <mach/pxa-regs.h>  #include <mach/hardware.h>  #include <mach/corgi.h> @@ -54,8 +54,8 @@ static void corgi_ext_control(struct snd_soc_codec *codec)  	switch (corgi_jack_func) {  	case CORGI_HP:  		/* set = unmute headphone */ -		set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L); -		set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R); +		gpio_set_value(CORGI_GPIO_MUTE_L, 1); +		gpio_set_value(CORGI_GPIO_MUTE_R, 1);  		snd_soc_dapm_disable_pin(codec, "Mic Jack");  		snd_soc_dapm_disable_pin(codec, "Line Jack");  		snd_soc_dapm_enable_pin(codec, "Headphone Jack"); @@ -63,24 +63,24 @@ static void corgi_ext_control(struct snd_soc_codec *codec)  		break;  	case CORGI_MIC:  		/* reset = mute headphone */ -		reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L); -		reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R); +		gpio_set_value(CORGI_GPIO_MUTE_L, 0); +		gpio_set_value(CORGI_GPIO_MUTE_R, 0);  		snd_soc_dapm_enable_pin(codec, "Mic Jack");  		snd_soc_dapm_disable_pin(codec, "Line Jack");  		snd_soc_dapm_disable_pin(codec, "Headphone Jack");  		snd_soc_dapm_disable_pin(codec, "Headset Jack");  		break;  	case CORGI_LINE: -		reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L); -		reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R); +		gpio_set_value(CORGI_GPIO_MUTE_L, 0); +		gpio_set_value(CORGI_GPIO_MUTE_R, 0);  		snd_soc_dapm_disable_pin(codec, "Mic Jack");  		snd_soc_dapm_enable_pin(codec, "Line Jack");  		snd_soc_dapm_disable_pin(codec, "Headphone Jack");  		snd_soc_dapm_disable_pin(codec, "Headset Jack");  		break;  	case CORGI_HEADSET: -		reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L); -		set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R); +		gpio_set_value(CORGI_GPIO_MUTE_L, 0); +		gpio_set_value(CORGI_GPIO_MUTE_R, 1);  		snd_soc_dapm_enable_pin(codec, "Mic Jack");  		snd_soc_dapm_disable_pin(codec, "Line Jack");  		snd_soc_dapm_disable_pin(codec, "Headphone Jack"); @@ -114,8 +114,8 @@ static int corgi_shutdown(struct snd_pcm_substream *substream)  	struct snd_soc_codec *codec = rtd->socdev->codec;  	/* set = unmute headphone */ -	set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L); -	set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R); +	gpio_set_value(CORGI_GPIO_MUTE_L, 1); +	gpio_set_value(CORGI_GPIO_MUTE_R, 1);  	return 0;  } @@ -218,22 +218,14 @@ static int corgi_set_spk(struct snd_kcontrol *kcontrol,  static int corgi_amp_event(struct snd_soc_dapm_widget *w,  	struct snd_kcontrol *k, int event)  { -	if (SND_SOC_DAPM_EVENT_ON(event)) -		set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON); -	else -		reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_APM_ON); - +	gpio_set_value(CORGI_GPIO_APM_ON, SND_SOC_DAPM_EVENT_ON(event));  	return 0;  }  static int corgi_mic_event(struct snd_soc_dapm_widget *w,  	struct snd_kcontrol *k, int event)  { -	if (SND_SOC_DAPM_EVENT_ON(event)) -		set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS); -	else -		reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MIC_BIAS); - +	gpio_set_value(CORGI_GPIO_MIC_BIAS, SND_SOC_DAPM_EVENT_ON(event));  	return 0;  } diff --git a/sound/soc/pxa/pxa2xx-ac97.c b/sound/soc/pxa/pxa2xx-ac97.c index a80ae07..a7a3a9c 100644 --- a/sound/soc/pxa/pxa2xx-ac97.c +++ b/sound/soc/pxa/pxa2xx-ac97.c @@ -49,7 +49,7 @@ struct snd_ac97_bus_ops soc_ac97_ops = {  static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_out = {  	.name			= "AC97 PCM Stereo out",  	.dev_addr		= __PREG(PCDR), -	.drcmr			= &DRCMRTXPCDR, +	.drcmr			= &DRCMR(12),  	.dcmd			= DCMD_INCSRCADDR | DCMD_FLOWTRG |  				  DCMD_BURST32 | DCMD_WIDTH4,  }; @@ -57,7 +57,7 @@ static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_out = {  static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_in = {  	.name			= "AC97 PCM Stereo in",  	.dev_addr		= __PREG(PCDR), -	.drcmr			= &DRCMRRXPCDR, +	.drcmr			= &DRCMR(11),  	.dcmd			= DCMD_INCTRGADDR | DCMD_FLOWSRC |  				  DCMD_BURST32 | DCMD_WIDTH4,  }; @@ -65,7 +65,7 @@ static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_stereo_in = {  static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_out = {  	.name			= "AC97 Aux PCM (Slot 5) Mono out",  	.dev_addr		= __PREG(MODR), -	.drcmr			= &DRCMRTXMODR, +	.drcmr			= &DRCMR(10),  	.dcmd			= DCMD_INCSRCADDR | DCMD_FLOWTRG |  				  DCMD_BURST16 | DCMD_WIDTH2,  }; @@ -73,7 +73,7 @@ static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_out = {  static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_in = {  	.name			= "AC97 Aux PCM (Slot 5) Mono in",  	.dev_addr		= __PREG(MODR), -	.drcmr			= &DRCMRRXMODR, +	.drcmr			= &DRCMR(9),  	.dcmd			= DCMD_INCTRGADDR | DCMD_FLOWSRC |  				  DCMD_BURST16 | DCMD_WIDTH2,  }; @@ -81,7 +81,7 @@ static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_aux_mono_in = {  static struct pxa2xx_pcm_dma_params pxa2xx_ac97_pcm_mic_mono_in = {  	.name			= "AC97 Mic PCM (Slot 6) Mono in",  	.dev_addr		= __PREG(MCDR), -	.drcmr			= &DRCMRRXMCDR, +	.drcmr			= &DRCMR(8),  	.dcmd			= DCMD_INCTRGADDR | DCMD_FLOWSRC |  				  DCMD_BURST16 | DCMD_WIDTH2,  }; diff --git a/sound/soc/pxa/pxa2xx-i2s.c b/sound/soc/pxa/pxa2xx-i2s.c index 39d1921..2fb5829 100644 --- a/sound/soc/pxa/pxa2xx-i2s.c +++ b/sound/soc/pxa/pxa2xx-i2s.c @@ -39,6 +39,45 @@ struct pxa2xx_gpio {  	u32 frm;  }; +/* + * I2S Controller Register and Bit Definitions + */ +#define SACR0		__REG(0x40400000)  /* Global Control Register */ +#define SACR1		__REG(0x40400004)  /* Serial Audio I 2 S/MSB-Justified Control Register */ +#define SASR0		__REG(0x4040000C)  /* Serial Audio I 2 S/MSB-Justified Interface and FIFO Status Register */ +#define SAIMR		__REG(0x40400014)  /* Serial Audio Interrupt Mask Register */ +#define SAICR		__REG(0x40400018)  /* Serial Audio Interrupt Clear Register */ +#define SADIV		__REG(0x40400060)  /* Audio Clock Divider Register. */ +#define SADR		__REG(0x40400080)  /* Serial Audio Data Register (TX and RX FIFO access Register). */ + +#define SACR0_RFTH(x)	((x) << 12)	/* Rx FIFO Interrupt or DMA Trigger Threshold */ +#define SACR0_TFTH(x)	((x) << 8)	/* Tx FIFO Interrupt or DMA Trigger Threshold */ +#define SACR0_STRF	(1 << 5)	/* FIFO Select for EFWR Special Function */ +#define SACR0_EFWR	(1 << 4)	/* Enable EFWR Function  */ +#define SACR0_RST	(1 << 3)	/* FIFO, i2s Register Reset */ +#define SACR0_BCKD	(1 << 2) 	/* Bit Clock Direction */ +#define SACR0_ENB	(1 << 0)	/* Enable I2S Link */ +#define SACR1_ENLBF	(1 << 5)	/* Enable Loopback */ +#define SACR1_DRPL	(1 << 4) 	/* Disable Replaying Function */ +#define SACR1_DREC	(1 << 3)	/* Disable Recording Function */ +#define SACR1_AMSL	(1 << 0)	/* Specify Alternate Mode */ + +#define SASR0_I2SOFF	(1 << 7)	/* Controller Status */ +#define SASR0_ROR	(1 << 6)	/* Rx FIFO Overrun */ +#define SASR0_TUR	(1 << 5)	/* Tx FIFO Underrun */ +#define SASR0_RFS	(1 << 4)	/* Rx FIFO Service Request */ +#define SASR0_TFS	(1 << 3)	/* Tx FIFO Service Request */ +#define SASR0_BSY	(1 << 2)	/* I2S Busy */ +#define SASR0_RNE	(1 << 1)	/* Rx FIFO Not Empty */ +#define SASR0_TNF	(1 << 0) 	/* Tx FIFO Not Empty */ + +#define SAICR_ROR	(1 << 6)	/* Clear Rx FIFO Overrun Interrupt */ +#define SAICR_TUR	(1 << 5)	/* Clear Tx FIFO Underrun Interrupt */ + +#define SAIMR_ROR	(1 << 6)	/* Enable Rx FIFO Overrun Condition Interrupt */ +#define SAIMR_TUR	(1 << 5)	/* Enable Tx FIFO Underrun Condition Interrupt */ +#define SAIMR_RFS	(1 << 4)	/* Enable Rx FIFO Service Interrupt */ +#define SAIMR_TFS	(1 << 3)	/* Enable Tx FIFO Service Interrupt */  struct pxa_i2s_port {  	u32 sadiv; @@ -54,7 +93,7 @@ static struct clk *clk_i2s;  static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_out = {  	.name			= "I2S PCM Stereo out",  	.dev_addr		= __PREG(SADR), -	.drcmr			= &DRCMRTXSADR, +	.drcmr			= &DRCMR(3),  	.dcmd			= DCMD_INCSRCADDR | DCMD_FLOWTRG |  				  DCMD_BURST32 | DCMD_WIDTH4,  }; @@ -62,7 +101,7 @@ static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_out = {  static struct pxa2xx_pcm_dma_params pxa2xx_i2s_pcm_stereo_in = {  	.name			= "I2S PCM Stereo in",  	.dev_addr		= __PREG(SADR), -	.drcmr			= &DRCMRRXSADR, +	.drcmr			= &DRCMR(2),  	.dcmd			= DCMD_INCTRGADDR | DCMD_FLOWSRC |  				  DCMD_BURST32 | DCMD_WIDTH4,  }; diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c index 3d4738c..9a70b00 100644 --- a/sound/soc/pxa/spitz.c +++ b/sound/soc/pxa/spitz.c @@ -19,16 +19,15 @@  #include <linux/timer.h>  #include <linux/interrupt.h>  #include <linux/platform_device.h> +#include <linux/gpio.h>  #include <sound/core.h>  #include <sound/pcm.h>  #include <sound/soc.h>  #include <sound/soc-dapm.h>  #include <asm/mach-types.h> -#include <asm/hardware/scoop.h>  #include <mach/pxa-regs.h>  #include <mach/hardware.h> -#include <mach/akita.h>  #include <mach/spitz.h>  #include "../codecs/wm8750.h"  #include "pxa2xx-pcm.h" @@ -63,8 +62,8 @@ static void spitz_ext_control(struct snd_soc_codec *codec)  		snd_soc_dapm_disable_pin(codec, "Mic Jack");  		snd_soc_dapm_disable_pin(codec, "Line Jack");  		snd_soc_dapm_enable_pin(codec, "Headphone Jack"); -		set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L); -		set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R); +		gpio_set_value(SPITZ_GPIO_MUTE_L, 1); +		gpio_set_value(SPITZ_GPIO_MUTE_R, 1);  		break;  	case SPITZ_MIC:  		/* enable mic jack and bias, mute hp */ @@ -72,8 +71,8 @@ static void spitz_ext_control(struct snd_soc_codec *codec)  		snd_soc_dapm_disable_pin(codec, "Headset Jack");  		snd_soc_dapm_disable_pin(codec, "Line Jack");  		snd_soc_dapm_enable_pin(codec, "Mic Jack"); -		reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L); -		reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R); +		gpio_set_value(SPITZ_GPIO_MUTE_L, 0); +		gpio_set_value(SPITZ_GPIO_MUTE_R, 0);  		break;  	case SPITZ_LINE:  		/* enable line jack, disable mic bias and mute hp */ @@ -81,8 +80,8 @@ static void spitz_ext_control(struct snd_soc_codec *codec)  		snd_soc_dapm_disable_pin(codec, "Headset Jack");  		snd_soc_dapm_disable_pin(codec, "Mic Jack");  		snd_soc_dapm_enable_pin(codec, "Line Jack"); -		reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L); -		reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R); +		gpio_set_value(SPITZ_GPIO_MUTE_L, 0); +		gpio_set_value(SPITZ_GPIO_MUTE_R, 0);  		break;  	case SPITZ_HEADSET:  		/* enable and unmute headset jack enable mic bias, mute L hp */ @@ -90,8 +89,8 @@ static void spitz_ext_control(struct snd_soc_codec *codec)  		snd_soc_dapm_enable_pin(codec, "Mic Jack");  		snd_soc_dapm_disable_pin(codec, "Line Jack");  		snd_soc_dapm_enable_pin(codec, "Headset Jack"); -		reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L); -		set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R); +		gpio_set_value(SPITZ_GPIO_MUTE_L, 0); +		gpio_set_value(SPITZ_GPIO_MUTE_R, 1);  		break;  	case SPITZ_HP_OFF: @@ -100,8 +99,8 @@ static void spitz_ext_control(struct snd_soc_codec *codec)  		snd_soc_dapm_disable_pin(codec, "Headset Jack");  		snd_soc_dapm_disable_pin(codec, "Mic Jack");  		snd_soc_dapm_disable_pin(codec, "Line Jack"); -		reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L); -		reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R); +		gpio_set_value(SPITZ_GPIO_MUTE_L, 0); +		gpio_set_value(SPITZ_GPIO_MUTE_R, 0);  		break;  	}  	snd_soc_dapm_sync(codec); @@ -215,23 +214,14 @@ static int spitz_set_spk(struct snd_kcontrol *kcontrol,  static int spitz_mic_bias(struct snd_soc_dapm_widget *w,  	struct snd_kcontrol *k, int event)  { -	if (machine_is_borzoi() || machine_is_spitz()) { -		if (SND_SOC_DAPM_EVENT_ON(event)) -			set_scoop_gpio(&spitzscoop2_device.dev, -				SPITZ_SCP2_MIC_BIAS); -		else -			reset_scoop_gpio(&spitzscoop2_device.dev, -				SPITZ_SCP2_MIC_BIAS); -	} +	if (machine_is_borzoi() || machine_is_spitz()) +		gpio_set_value(SPITZ_GPIO_MIC_BIAS, +				SND_SOC_DAPM_EVENT_ON(event)); + +	if (machine_is_akita()) +		gpio_set_value(AKITA_GPIO_MIC_BIAS, +				SND_SOC_DAPM_EVENT_ON(event)); -	if (machine_is_akita()) { -		if (SND_SOC_DAPM_EVENT_ON(event)) -			akita_set_ioexp(&akitaioexp_device.dev, -				AKITA_IOEXP_MIC_BIAS); -		else -			akita_reset_ioexp(&akitaioexp_device.dev, -				AKITA_IOEXP_MIC_BIAS); -	}  	return 0;  }  | 
