Pedro just send me this routine:
static int I2S_setup(){
int i;
//     u32 val32;
// CDM
    struct mpc52xx_cdm __iomem *cdm;
//
//     /* GPIO Modification */
    struct mpc52xx_gpio __iomem *gpio;

//     /* END GPIO Modification */
//
    cdm = ioremap(MPC52xx_PA(MPC52xx_CDM_OFFSET), MPC52xx_CDM_SIZE);
    gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
//
    switch(psc_num) {
        case 1:
            initiator_tx = SDMA_INITIATOR_PSC1_TX;
            initiator_rx = SDMA_INITIATOR_PSC1_RX;
            break;
        case 2:
            initiator_tx = SDMA_INITIATOR_PSC2_TX;
            initiator_rx = SDMA_INITIATOR_PSC2_RX;
            break;
        default:
            panic("snd-I2Smgt.o: invalid value for psc_num (%i)\n",psc_num);
            break;
    };

    /* 528MHz/(0x1f+1)=16.5 MHz */
    cdm->mclken_div_psc2 = 0x8001; // Mhz MCLK ( Khz * )
    psc->command = (MPC52xx_PSC_TX_DISABLE | MPC52xx_PSC_RX_DISABLE);
    /* PSC2 CODEC with Master Clock */
    gpio->port_config |= 0x70;
    /* PSC2 clock enable */
    cdm->clk_enables |= 0x40;

    // PSC reset
    psc->command = MPC52xx_PSC_RST_RX;
    psc->command = MPC52xx_PSC_RST_TX;
     psc->command = MPC52xx_PSC_SEL_MODE_REG_1;
     psc->command = MPC52xx_PSC_RST_ERR_STAT;


    // PSC setup I2S
    psc->mode = 0;
    psc->rfalarm = RX_ALARM;
     psc->tfalarm = TX_ALARM;
    psc->rfcntl = RX_GRAN;
     psc->tfcntl = TX_GRAN;
    psc->mpc52xx_psc_imr = 0x0000;

    psc->sicr = 0x0FE00000;
    psc->ctur = 0x1f; //Frame length 0x17

    psc->ccr = 0x3f5D; //LRCK  KHz, BitCLK  MHz  0x3f05!

//     psc->sicr |= /* DELAY_TIME_SLOT |*/ MULTIWD_ENABLE | CLK_POL_RISING;
//    
//     psc->sicr |= GEN_CLK_INT;

    psc->command = MPC52xx_PSC_RST_RX;
    psc->command = MPC52xx_PSC_RST_TX;
    psc->command = MPC52xx_PSC_SEL_MODE_REG_1;
    psc->command = MPC52xx_PSC_RST_ERR_STAT;
//
//     // setup the sdma tasks
    tx_sdma = sdma_alloc(PERIODS_HW+1);
    rx_sdma = sdma_alloc(PERIODS_HW+1);

    if (!tx_sdma || !rx_sdma) {
        printk("sdma_alloc failed\n");
        return -ENOMEM;
    }
//    asimmini
//     sdma_gen_bd_rx_init(rx_sdma, (phys_addr_t)&(psc->rfdata), PERIODSIZE_HW, initiator_rx, 6);
    sdma_gen_bd_rx_init(0, rx_sdma, (phys_addr_t)&(psc->rfdata), initiator_rx, 6,PERIODSIZE_HW);
//     sdma_gen_bd_tx_init(tx_sdma, (phys_addr_t)&(psc->tfdata), PERIODSIZE_HW, initiator_tx, 6);
    sdma_gen_bd_tx_init(0, tx_sdma, (phys_addr_t)&(psc->tfdata), initiator_tx, 6);

    printk("txtask is %d rxtask is %d\n", tx_sdma->tasknum, rx_sdma->tasknum);
//
    // prepare the ring buffers    ASIMMINI
    //for(i=0;i
    //    tasknum %d\n", sdma_irq(rx_sdma), MPC52xx_SDMA_IRQ_BASE + rx_sdma->tasknum);
    if (request_irq(sdma_irq(rx_sdma), I2S_rx_irq, 0, "SPI rx dma", NULL)){
        printk(KERN_ERR "SPI: SDMA rx irq allocation failed\n");
        return -EINVAL;
    }
    else
        printk("SPI: SDA rx irq allocation succeded\n");
    if (request_irq(sdma_irq(tx_sdma), I2S_tx_irq, 0, "SPI tx dma", NULL)){
        printk(KERN_ERR "SPI: SDMA tx irq allocation failed\n");
        return -EINVAL;
    }
    else
        printk("SPI: SDA tx irq allocation succeded\n");
   
//
//     // clear any pending interrupts
    sdma_clear_irq(tx_sdma);
    sdma_clear_irq(rx_sdma);
//
    printk("Before activating the tasks\n");
//     // activate the tasks
//     sdma_enable(tx_sdma);
//     sdma_enable(rx_sdma);
//
//     printk("about to enable SPI psc\n");
    udelay(100);
//
//     // enable transmitter and receiver
    psc->command = MPC52xx_PSC_TX_ENABLE | MPC52xx_PSC_RX_ENABLE;
// //    psc->command = MPC52xx_PSC_TX_ENABLE;
//
//
// //     I2S_print(__FUNCTION__);
//
// //     pcm1680_read();
// //         pcm1680_configure(44100);
// //     pcm1680_read();
    return 0;
}

But i have some problems.

i don't have any of thiese functions:

sdma_alloc
rx_sdma
sdma_gen_bd_rx_init
sdma_gen_bd_tx_init
sdma_irq
sdma_clear_irq

and some define:
I2S_rx_irq
I2S_tx_irq




Inviato da Yahoo! Mail.
Il servizio di posta con lo spazio illimitato.
_______________________________________________
Linuxppc-embedded mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Reply via email to