Re: [PATCH] ARM: OMAP3: Initialize XCCR and RCCR McBSP registers for McBSP DAI driver

2008-12-18 Thread Tony Lindgren
* Jarkko Nikula  [081218 15:49]:
> On Thu, 18 Dec 2008 15:41:37 +0200
> "ext Tony Lindgren"  wrote:
> 
> > Hi,
> > 
> > * Lopez Cruz, Misael  [081218 12:16]:
> > > This patch enables XCCR and RCCR McBSP register writing in OMAP 24xx/34xx
> > > platforms. It also explicitly initializes those registers to their default
> > > values in ASoC McBSP DAI driver.
> > 
> > Can you please describe a bit what these registers do? It's impossible
> > for anybody to decipher without looking at the TRM right now.
> > 
> Agree.
> 
> > You can do the above with cpu_class_is_omap2() instead. Might be worth
> > checking that these registers are available on 2420 too.
> > 
> No they are not. These are new registers found in 2430 and OMAP3.

OK, so then it needs to be cpu_is_omap2430().. instead.

> > I agree with Jarkko's comment, the ASoC change should go via alsa list
> > as a separate patch.
> > 
> Probably -mm tree would speed up this since it requires change both in
> plat-omap and sound subsystems?

Well sounds like we should be able to get the plat-omap change merged
during the -rc cycle via omap-fixes branch.

Regards,

Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ARM: OMAP3: Initialize XCCR and RCCR McBSP registers for McBSP DAI driver

2008-12-18 Thread Jarkko Nikula
On Thu, 18 Dec 2008 15:41:37 +0200
"ext Tony Lindgren"  wrote:

> Hi,
> 
> * Lopez Cruz, Misael  [081218 12:16]:
> > This patch enables XCCR and RCCR McBSP register writing in OMAP 24xx/34xx
> > platforms. It also explicitly initializes those registers to their default
> > values in ASoC McBSP DAI driver.
> 
> Can you please describe a bit what these registers do? It's impossible
> for anybody to decipher without looking at the TRM right now.
> 
Agree.

> You can do the above with cpu_class_is_omap2() instead. Might be worth
> checking that these registers are available on 2420 too.
> 
No they are not. These are new registers found in 2430 and OMAP3.

> I agree with Jarkko's comment, the ASoC change should go via alsa list
> as a separate patch.
> 
Probably -mm tree would speed up this since it requires change both in
plat-omap and sound subsystems?


Jarkko
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ARM: OMAP3: Initialize XCCR and RCCR McBSP registers for McBSP DAI driver

2008-12-18 Thread Tony Lindgren
Hi,

* Lopez Cruz, Misael  [081218 12:16]:
> This patch enables XCCR and RCCR McBSP register writing in OMAP 24xx/34xx
> platforms. It also explicitly initializes those registers to their default
> values in ASoC McBSP DAI driver.

Can you please describe a bit what these registers do? It's impossible
for anybody to decipher without looking at the TRM right now.

> Signed-off-by: Misael Lopez Cruz 
> ---
>  arch/arm/plat-omap/include/mach/mcbsp.h |6 ++
>  arch/arm/plat-omap/mcbsp.c  |4 
>  sound/soc/omap/omap-mcbsp.c |4 
>  3 files changed, 14 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/include/mach/mcbsp.h 
> b/arch/arm/plat-omap/include/mach/mcbsp.h
> index 6a0d1a0..5885f3a 100644
> --- a/arch/arm/plat-omap/include/mach/mcbsp.h
> +++ b/arch/arm/plat-omap/include/mach/mcbsp.h
> @@ -231,11 +231,16 @@
>  #define XPBBLK(value)((value)<<7)/* Bits 7:8 */
>  
>  /*** McBSP XCCR bit definitions 
> */
> +#define EXTCLKGATE   0x8000
> +#define PPCONNECT0x4000
> +#define DXENDLY(value)   ((value)<<12)   /* Bits 12:13 */
> +#define XFULL_CYCLE  0x0800
>  #define DILB 0x0020
>  #define XDMAEN   0x0008
>  #define XDISABLE 0x0001
> 
>  /** McBSP RCCR bit definitions */
> +#define RFULL_CYCLE  0x0800
>  #define RDMAEN   0x0008
>  #define RDISABLE 0x0001
> 
> @@ -267,6 +271,8 @@ struct omap_mcbsp_reg_cfg {
>   u16 rcerh;
>   u16 xcerg;
>   u16 xcerh;
> + u16 xccr;
> + u16 rccr;
>  };
>  
>  typedef enum {
> diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
> index af33fc7..d71b30b 100644
> --- a/arch/arm/plat-omap/mcbsp.c
> +++ b/arch/arm/plat-omap/mcbsp.c
> @@ -173,6 +173,10 @@ void omap_mcbsp_config(unsigned int id, const struct 
> omap_mcbsp_reg_cfg *config)
>   OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2);
>   OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1);
>   OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0);
> + if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
> + OMAP_MCBSP_WRITE(io_base, XCCR, config->xccr);
> + OMAP_MCBSP_WRITE(io_base, RCCR, config->rccr);
> + }
>  }
>  EXPORT_SYMBOL(omap_mcbsp_config);
>  

You can do the above with cpu_class_is_omap2() instead. Might be worth
checking that these registers are available on 2420 too.

> diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
> index 8485a8a..2e7000d 100644
> --- a/sound/soc/omap/omap-mcbsp.c
> +++ b/sound/soc/omap/omap-mcbsp.c
> @@ -295,6 +295,10 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai 
> *cpu_dai,
>   regs->spcr1 |= RINTM(3);
>   regs->rcr2  |= RFIG;
>   regs->xcr2  |= XFIG;
> + if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
> + regs->xccr = DXENDLY(1) | XDMAEN;
> + regs->rccr = RFULL_CYCLE | RDMAEN;
> + }
>  
>   switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
>   case SND_SOC_DAIFMT_I2S:
> -- 

I agree with Jarkko's comment, the ASoC change should go via alsa list
as a separate patch.

Regards,

Tony

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ARM: OMAP3: Initialize XCCR and RCCR McBSP registers for McBSP DAI driver

2008-12-18 Thread Jarkko Nikula
On Thu, 18 Dec 2008 04:15:09 -0600
"ext Lopez Cruz, Misael"  wrote:

> diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
> index 8485a8a..2e7000d 100644
> --- a/sound/soc/omap/omap-mcbsp.c
> +++ b/sound/soc/omap/omap-mcbsp.c
> @@ -295,6 +295,10 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai 
> *cpu_dai,
>   regs->spcr1 |= RINTM(3);
>   regs->rcr2  |= RFIG;
>   regs->xcr2  |= XFIG;
> + if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
> + regs->xccr = DXENDLY(1) | XDMAEN;
> + regs->rccr = RFULL_CYCLE | RDMAEN;
> + }
>  
This part should go as a separate patch and via alsa-devel when omap
part is in upstream. Probably easier to handle via LKML? So two
patches: plat-omap and sound part.


Jarkko
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] ARM: OMAP3: Initialize XCCR and RCCR McBSP registers for McBSP DAI driver

2008-12-18 Thread Lopez Cruz, Misael
This patch enables XCCR and RCCR McBSP register writing in OMAP 24xx/34xx
platforms. It also explicitly initializes those registers to their default
values in ASoC McBSP DAI driver.

Signed-off-by: Misael Lopez Cruz 
---
 arch/arm/plat-omap/include/mach/mcbsp.h |6 ++
 arch/arm/plat-omap/mcbsp.c  |4 
 sound/soc/omap/omap-mcbsp.c |4 
 3 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-omap/include/mach/mcbsp.h 
b/arch/arm/plat-omap/include/mach/mcbsp.h
index 6a0d1a0..5885f3a 100644
--- a/arch/arm/plat-omap/include/mach/mcbsp.h
+++ b/arch/arm/plat-omap/include/mach/mcbsp.h
@@ -231,11 +231,16 @@
 #define XPBBLK(value)  ((value)<<7)/* Bits 7:8 */
 
 /*** McBSP XCCR bit definitions */
+#define EXTCLKGATE 0x8000
+#define PPCONNECT  0x4000
+#define DXENDLY(value) ((value)<<12)   /* Bits 12:13 */
+#define XFULL_CYCLE0x0800
 #define DILB   0x0020
 #define XDMAEN 0x0008
 #define XDISABLE   0x0001

 /** McBSP RCCR bit definitions */
+#define RFULL_CYCLE0x0800
 #define RDMAEN 0x0008
 #define RDISABLE   0x0001

@@ -267,6 +271,8 @@ struct omap_mcbsp_reg_cfg {
u16 rcerh;
u16 xcerg;
u16 xcerh;
+   u16 xccr;
+   u16 rccr;
 };
 
 typedef enum {
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index af33fc7..d71b30b 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -173,6 +173,10 @@ void omap_mcbsp_config(unsigned int id, const struct 
omap_mcbsp_reg_cfg *config)
OMAP_MCBSP_WRITE(io_base, MCR2, config->mcr2);
OMAP_MCBSP_WRITE(io_base, MCR1, config->mcr1);
OMAP_MCBSP_WRITE(io_base, PCR0, config->pcr0);
+   if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
+   OMAP_MCBSP_WRITE(io_base, XCCR, config->xccr);
+   OMAP_MCBSP_WRITE(io_base, RCCR, config->rccr);
+   }
 }
 EXPORT_SYMBOL(omap_mcbsp_config);
 
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
index 8485a8a..2e7000d 100644
--- a/sound/soc/omap/omap-mcbsp.c
+++ b/sound/soc/omap/omap-mcbsp.c
@@ -295,6 +295,10 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai 
*cpu_dai,
regs->spcr1 |= RINTM(3);
regs->rcr2  |= RFIG;
regs->xcr2  |= XFIG;
+   if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
+   regs->xccr = DXENDLY(1) | XDMAEN;
+   regs->rccr = RFULL_CYCLE | RDMAEN;
+   }
 
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S:
-- 
1.5.4.3
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html