MPC83xx SDMR setup error

Kumar Gala galak at kernel.crashing.org
Fri Mar 23 03:13:52 EST 2007


On Mar 22, 2007, at 9:30 AM, Chuck Meade wrote:

> There appears to be an error in the MPC83xx SDMR setup in
> arch/powerpc/sysdev/qe_lib/qe.c line 259.  Since 0x1 shifted right  
> 13 bits
> (QE_SDMR_CEN_SHIFT) will always be zero, the CEN field will be set to
> zero.  This means the SDMR buffer size will always be 512, rather than
> the intended (and allocated) 1024 bytes.

What does this effect?  I agree the code is wrong.

> In addition, and not shown in the patch below, there is a conflict  
> in the
> alignment requirement for the value to be written to the SDEBCR  
> register.
> The SDEBCR holds the address in MURAM of the buffer to be used by  
> the SDMA
> controller.  In the MPC8323ERM.pdf section 18.1.7 titled "SDMA  
> Internal
> Resource", it states that "the base address must be aligned to a  
> 4KByte
> boundary."  However, later in the description of the SDEBCR in section
> 18.1.8.9, it states that the address must be "64 bytes aligned".   
> The code
> in arch/powerpc/sysdev/qe_lib/qe.c (line 254) that allocates this  
> buffer
> aligns it to a 64-byte boundary.  This is only correct if the  
> manual section
> 18.1.7, which requires a 4KByte alignment, is wrong.  Which manual  
> section
> is correct?

Hopefully someone at freescale will know.  I'd suggest possibly  
posting a support request to them to see if you can get a  
clarification since their UM is not self-consistent on the details.

> Chuck
>
> --- a/linux-2.6/arch/powerpc/sysdev/qe_lib/qe.c	2007-01-13  
> 09:37:03.000000000 -0500
> +++ b/linux-2.6/arch/powerpc/sysdev/qe_lib/qe.c	2007-03-22  
> 09:48:46.000000000 -0400
> @@ -256,7 +256,7 @@ static int qe_sdma_init(void)
>   		return -ENOMEM;
>
>   	out_be32(&sdma->sdebcr, sdma_buf_offset & QE_SDEBCR_BA_MASK);
> -	out_be32(&sdma->sdmr, (QE_SDMR_GLB_1_MSK | (0x1 >>
> +	out_be32(&sdma->sdmr, (QE_SDMR_GLB_1_MSK | (0x1 <<
>   					QE_SDMR_CEN_SHIFT)));
>
>   	return 0;
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-dev




More information about the Linuxppc-dev mailing list