<table cellspacing=3D'0' cellpadding=3D'0' border=3D'0' ><tr><td style=3D'f=
ont: inherit;'>Hi Pedro, i'm Angelo.<br><br>You just send me this mail:<br>=
start mail<br><br>As I told you, here is the configuration routine for the =
I2S module. <br>Please, notice that this module whas built to work on the o=
ld 2.6.16 <br>kernel and old dma driver:<br><br>static int I2S_setup(void) =
{<br> int i;<br>// u32 val32;<br> =
; // CDM<br> struct mpc52xx_cdm __iomem *cdm;=
<br>// <br>// /* GPIO Modification */<br> &nb=
sp; struct mpc52xx_gpio __iomem *gpio;<br><br>// /* END =
GPIO Modification */<br>// <br> cdm =3D ioremap(MPC52xx_P=
A(MPC52xx_CDM_OFFSET), MPC52xx_CDM_SIZE);<br> gpio =3D io=
remap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);<br>// <br> =
switch(psc_num) {<br> cas=
e
1:<br> initiator_t=
x =3D SDMA_INITIATOR_PSC1_TX;<br> &nbs=
p; initiator_rx =3D SDMA_INITIATOR_PSC1_RX;<br> &nbs=
p; break;<br>  =
; case 2:<br> =
initiator_tx =3D SDMA_INITIATOR_PSC2_TX;<br>  =
; initiator_rx =3D SDMA_INITIATOR_PSC2_RX;<b=
r> break;<br> =
default:<br> =
panic("snd-I2Smgt.o: invalid value for psc_num<br=(%i)\n",psc_num);<br> &nb=
sp; break;<br> };<br><br> /* 528MHz/(0x=
1f+1)=3D16.5 MHz */<br> cdm->mclken_div_psc2 =3D 0x800=
1; //
Mhz MCLK ( Khz * )<br> psc->command =3D (MPC52xx_PSC_=
TX_DISABLE | MPC52xx_PSC_RX_DISABLE);<br> /* PSC2 CODEC w=
ith Master Clock */<br> gpio->port_config |=3D 0x70;<b=
r> /* PSC2 clock enable */<br> cdm->=
clk_enables |=3D 0x40;<br><br> // PSC reset<br> &nbs=
p; psc->command =3D MPC52xx_PSC_RST_RX;<br> psc-=
>command =3D MPC52xx_PSC_RST_TX;<br> psc->com=
mand =3D MPC52xx_PSC_SEL_MODE_REG_1;<br> psc->co=
mmand =3D MPC52xx_PSC_RST_ERR_STAT;<br><br><br> // PSC se=
tup I2S<br> psc->mode =3D 0;<br> psc=
->rfalarm =3D RX_ALARM;<br> psc->tfalarm =3D =
TX_ALARM;<br> psc->rfcntl =3D RX_GRAN;<br> =
psc->tfcntl =3D TX_GRAN;<br> psc->mpc5=
2xx_psc_imr =3D
0x0000;<br><br> psc->sicr =3D 0x0FE00000;<br> &n=
bsp; psc->ctur =3D 0x1f; //Frame length 0x17<br><br> &n=
bsp; psc->ccr =3D 0x3f5D; //LRCK KHz, BitCLK MHz 0x3f0=
5!<br><br>// psc->sicr |=3D /* DELAY_TIME_SLOT |*/ MU=
LTIWD_ENABLE | CLK_POL_RISING;<br>// <br>// =
psc->sicr |=3D GEN_CLK_INT;<br><br> psc->com=
mand =3D MPC52xx_PSC_RST_RX;<br> psc->command =3D MPC5=
2xx_PSC_RST_TX;<br> psc->command =3D MPC52xx_PSC_SEL_M=
ODE_REG_1;<br> psc->command =3D MPC52xx_PSC_RST_ERR_ST=
AT;<br>// <br>// // setup the sdma tasks<br> =
tx_sdma =3D sdma_alloc(PERIODS_HW+1);<br> rx_sdma =
=3D sdma_alloc(PERIODS_HW+1);<br><br> if (!tx_sdma || !rx=
_sdma) {<br> printk("sdma_alloc
failed\n");<br> return -ENOMEM;<br>&n=
bsp; }<br>// <br>// sdma_gen_bd_rx_init(rx_s=
dma, (phys_addr_t)&(psc->rfdata),<br>PERIODSIZE_HW, initiator_rx, 6)=
;<br> sdma_gen_bd_rx_init(0, rx_sdma, (phys_addr_t)&(=
psc->rfdata),<br>initiator_rx, 6, PERIODSIZE_HW);<br>// &nbs=
p; sdma_gen_bd_tx_init(tx_sdma, (phys_addr_t)&(psc->tfdata),<br>PERI=
ODSIZE_HW, initiator_tx, 6);<br> sdma_gen_bd_tx_init(0, t=
x_sdma, (phys_addr_t)&(psc->tfdata),<br>initiator_tx, 6);<br><br>&nb=
sp; printk("txtask is %d rxtask is %d\n", tx_sdma->tasknum,<=
br>rx_sdma->tasknum);<br>// <br> // prepare the ring b=13 more lines
// <br> printk("Before activating the tasks\n");<br>// &=
nbsp; // activate the tasks<br>// sdma_enabl=
e(tx_sdma);<br>// sdma_enable(rx_sdma);<br>//
<br>// printk("about to enable SPI psc\n");<br> &n=
bsp; udelay(100);<br>// <br>// // enable transmitt=
er and receiver<br> psc->command =3D MPC52xx_PSC_TX_EN=
ABLE | MPC52xx_PSC_RX_ENABLE;<br>// // psc->command =
=3D MPC52xx_PSC_TX_ENABLE;<br>// <br>// <br>// // I2S_pr=
int(__FUNCTION__);<br>// <br>// // pcm1680_read();<br>//=
// pcm1680_configure(44100=
);<br>// // pcm1680_read();<br><br> re=
turn 0;<br>};<br>end mail<br><br>I solved my proplems of porting from 2.6.1=
7 to 2.16.22 kernel <br>version, but in the module static int I2S_setup(voi=
d) i found <br>the sequent problems.<br><br>In this piece of code:<br><br>s=
witch(psc_num) {<br> case 1:<br> =
initiator_tx =3D
SDMA_INITIATOR_PSC1_TX;<br> &nb=
sp; initiator_rx =3D SDMA_INITIATOR_PSC1_RX;<br> &n=
bsp; break;<br> &nbs=
p; case 2:<br>  =
; initiator_tx =3D SDMA_INITIATOR_PSC2_TX;<br> &nbs=
p; initiator_rx =3D SDMA_INITIATOR_PSC2_RX;<br>&nb=
sp; break;<br>  =
; default:<br>  =
; panic("snd-I2Smgt.o: invalid value for psc_num<br>(%i)=
\n",psc_num);<br> b=
reak;<br> };<br><br>This define are undeclared:<br>SDMA_I=
NITIATOR_PSC1_TX<br>SDMA_INITIATOR_PSC1_RX<br>SDMA_INITIATOR_PSC2_TX<br>SDM=
A_INITIATOR_PSC2_RX<br><br>so perhaps i don't have some header
files.<br><br>Also this variable are undefined:<br>psc_num, tx_sdma, rx_sd=
ma.<br><br>And where i can found this function:<br>- sdma_gen_bd_rx_init<br=- sdma_gen_bd_tx_init<br><br>However there are some other errors like:<br>=
// <br>// prepare the ring buffers<br> for(i=3D0;itasknum=
%d\n", sdma_irq(rx_sdma), MPC52xx_SDMA_IRQ_BASE +<br> rx_sdma->tas=
knum);<br> if (request_irq(sdma_irq(rx_sdma), I2S_rx_irq,=
0, "SPI rx dma", NULL))<br> {<br>.....<br>I think there are some mist=
akes in your copy and paste operation, so <br>i don't know how solve it.<br=<br>Thanks for help.<br></td></tr></table><br>=0A=0A=0A=0A=0A <hr siz=
e=3D1>=0AInviato da <a =0Ahref=3D"http://us.rd.yahoo.com/mailuk/taglines/i=
sp/control/*http://us.rd.yahoo.com/evt=3D52437/*http://it.docs.yahoo.com/ma=
il/overview/index.html" target=3D_blank>Yahoo! Mail</a>.=0A<br>=0AIl serviz=
io di posta con lo spazio illimitato.