Sean,
Thanks for sending this. One thing that I’m not really sure of is the macros or functions SPI_REG. Where were these defined? Also the registers SPIPC0 and others. Did you define all of these yourself? Also this might seem like a stupid question but is this an actual linux character driver or is this code that you wrote in code composer studio for the DSP? Thanks, I plan on getting something going and giving back to the community since I tried searching the archives and I could not find anything other than other peoples questions. Josh From: Sean [mailto:[EMAIL PROTECTED] Sent: Tuesday, December 18, 2007 1:34 AM To: Joshua Hintze; davinci-linux-open-source@linux.davincidsp.com Subject: Re: SPI on Davinci. Dear Joshua OK, I give you a simple program segment. You need to see the document about SPI of DM644x. ========================================== // -------------------------------- // Reset SPI // -------------------------------- control=0x00000000; SPI_REG(SPIGCR0)=control; mdelay(1); control=0x00000001; SPI_REG(SPIGCR0)=control; // -------------------------------- // Enable SPI CLK & Master // -------------------------------- control=0x00000003; SPI_REG(SPIGCR1)=control; // -------------------------------- // Enable pins : DI、DO、CLK、EN0 // -------------------------------- control=0x00000FFF; SPI_REG(SPIPC0)=control; /* -------------------------------- // Set data format in SPIFMT0 // SHIFTDIR in bit 20 set to 1 : LSB // POLARITY and PHASE in bit 17, 16 set to 0, 1 // PRESCALE in bit 15-8 set to 0, SPI_CLK = SYSCLK5 / (Prescale + 1) // CHARLEN in bit 4-0 set to 08 : 8 bit -------------------------------- */ control=0x0012FF08; SPI_REG(SPIFMT0)=control; // -------------------------------- // Set data format for used -> SPIFMT0 // -------------------------------- control=0x00000000 | 0x00 << 24; SPI_REG(SPIDAT1)=control; // -------------------------------- // Set hold time and setup time // -------------------------------- control=0x0000 | 0x03 << 16 | 0x02 << 24; SPI_REG(SPIDELAY)=control; // -------------------------------- // Out of reset for SPI // -------------------------------- control=0x00000001; SPI_REG(SPIGCR0)=control; // -------------------------------- // Set Chip Select Default // CSHOLD -> 1 -> hold SPI_EN0 state -> bit 28 // CSNR -> 3 -> disable all // -------------------------------- control=SPI_REG(SPIDAT1); control|=0x3 << 16; SPI_REG(SPIDAT1)=control; // -------------------------------- // Enable for transforing // -------------------------------- control=SPI_REG(SPIGCR1); control=control | 1 << 24; // enable SPIENA SPI_REG(SPIGCR1)=control; ============================================= Send data control=csnr << 16 | cshold << 28; control|=buf; SPI_REG(SPIDAT1)=control; Read data control=SPI_REG(SPIBUF); MSG("SPIBUF = %08X",control); if(control & (1 << 31)) MSG("!! No Data received "); else{ while(1){ control=SPI_REG(SPIBUF); if(control & (1 << 29)) continue; else break; MSG("wait for data receive ..."); } MSG("receive data : %04X", (control & 0xFFFF)); } ================================ just for reference. If it has any questions, please let me know , and help me to fix them. Best Regards, Sean On Dec 18, 2007 11:52 AM, Joshua Hintze <[EMAIL PROTECTED]> wrote: Thanks Sean, Do you still have the code that I might take a look at? Josh On Dec 17, 2007, at 8:45 PM, Sean < [EMAIL PROTECTED]> wrote: Dear I write the SPI driver by myself. Just to write the corresponding registers. There is no interface driver about SPI, I felt so sad too. Best Regards, Sean On Dec 18, 2007 2:09 AM, Joshua Hintze < [EMAIL PROTECTED]> wrote: Since nobody answered yet, I'm curious has anybody done SPI interfacing on the Davinci? Thanks, Josh ---------------------------------------------------------------------------- ----------- Hey guys, Have any of you interfaced to the SPI port on the Davinci 6446. I got the i2c working pretty easy using the i2c-dev character driver but there is no such thing as spidev until linux kernel 2.6.22. So I'm wondering how others are doing it. Are you writing your own kernel drivers or is there still a way to do it from user space? Thanks in advance, Josh _______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
_______________________________________________ Davinci-linux-open-source mailing list Davinci-linux-open-source@linux.davincidsp.com http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source