Will,
>>We have a very small DM6446 low power device (2 inches by 1/2 inch) where the ARM needs to be running most of the time. My thought was to turn off the DSP clock when it was not needed and only turn on the DSP >>for decoding of streaming data. this would save on power and reduce the heat issues we are seeing. DSP/BIOS Link does not provide features as what you are describing above. However, if you are looking for reference code on how to 1) Turn on the DSP: Please look at $dsplink\gpp\src\ldrv\HAL\Davinci\hal_psc.c Functions HAL_PscEnable: Enables PSC for GEM module Functions HAL_PscDisable: Disables PSC for GEM module 2) Program the ARM2DSP interrupts Please look at the functions in $dsplink\gpp\src\ldrv\HAL\Davinci\hal_intgen.c I hope this helps. Regards, Deepali ________________________________ From: Will Tucker [mailto:[EMAIL PROTECTED] Sent: Wednesday, November 14, 2007 8:52 PM To: Uppal, Deepali Cc: Kamoolkar, Mugdha Subject: Re: SV: turn on/off the DSP Hi Deepali, We have a very small DM6446 low power device (2 inches by 1/2 inch) where the ARM needs to be running most of the time. My thought was to turn off the DSP clock when it was not needed and only turn on the DSP for decoding of streaming data. this would save on power and reduce the heat issues we are seeing. Any ideas are greatly appreciated, Thanks, Will T. ----- Original Message ---- From: "Uppal, Deepali" <[EMAIL PROTECTED]> To: Will Tucker <[EMAIL PROTECTED]> Cc: "Kamoolkar, Mugdha" <[EMAIL PROTECTED]> Sent: Tuesday, November 13, 2007 10:38:20 PM Subject: RE: SV: turn on/off the DSP Will, Out of curiosity, why are you looking for features like turning on the DSP, programming the ARM2DSP interrupts etc? Are you looking for Inter Processor communication software? We have a product DSP/BIOS Link which might be useful for you. * Feature: GPP boot-loads the DSP - After setting up the DSPLink driver, GPP process attaches to the DSP: Sets up the system to allow access to DSP(including powering up the DSP) resources from GPP - GPP loads the DSP with DSP executable present in GPP file system - GPP starts the DSP - GPP stops the DSP execution - GPP process detaches from the DSP and finalizes the DSPLink driver * Inter-Processor Communication mechanisms - MSGQ: Message Queue - CHNL: SIO/streaming based on issue-reclaim model - RingIO: Circular ring buffer - POOL: Memory Manager: shared/non-shared - NOTIFY: Interrupt abstraction and de-multiplexing (This notification is built over the ARM2DSP and DSP2ARM events) - MPCS: Multi-processor critical section - MPLIST: Multi-processor doubly linked circular list - PROC_read/PROC_write: Read from or write to DSP memory DSP/BIOS Link is available as a standalone product as well as part of Codec Engine. It can be downloaded from https://www-a.ti.com/downloads/sds_support/targetcontent/link/index.html Regards, Deepali ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Will Tucker Sent: Tuesday, November 13, 2007 1:10 AM To: Griffis, Brad; Hunter, Jon; [email protected] Subject: Re: SV: turn on/off the DSP Hi, I'm looking at SPRUE14A section 13.5.3.2 "DSP Module Clock Off" and cross referencing it to SPRUEN8. 1) I don't see any reference to GOSTAT[1] just GOSTAT[0] are they the same? 2) How do you Enable one of the ARM2DSP interrupts, Like ARM2DSP0? 3) Does this look right for an IDLE command? REG(_dsp_L2_pReg) = DSP_BRANCH_INST; _dsp_L2_pReg++; REG(_dsp_L2_pReg) = DSP_NOP_INST; _dsp_L2_pReg++; REG(_dsp_L2_pReg) = DSP_NOP_INST; _dsp_L2_pReg++; REG(_dsp_L2_pReg) = DSP_NOP_INST; _dsp_L2_pReg++; REG(_dsp_L2_pReg) = DSP_NOP_INST; _dsp_L2_pReg++; REG(_dsp_L2_pReg) = DSP_NOP_INST; Thanks, Will T. ----- Original Message ---- From: "Griffis, Brad" <[EMAIL PROTECTED]> To: Will Tucker <[EMAIL PROTECTED]>; "Hunter, Jon" <[EMAIL PROTECTED]>; [email protected] Sent: Thursday, November 8, 2007 2:31:48 PM Subject: RE: SV: turn on/off the DSP SPRU871H Chapter 9 ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Will Tucker Sent: Thursday, November 08, 2007 3:22 PM To: Hunter, Jon ; [email protected] Subject: Re: SV: turn on/off the DSP Hi, I'm following the SPRUE14A doc section 13.5.3.2 and I cant find a PDCMD register. The closest document that even give me registers is SPRUEN8. Any Ideas where I could find a better document or find the definition to PDCMD? Thanks, Will T. ----- Original Message ---- From: " Hunter, Jon " <[EMAIL PROTECTED]> To: [email protected] Sent: Thursday, November 8, 2007 1:11:17 PM Subject: Re: SV: turn on/off the DSP >> Does anyone have sample code to turn off/on the DSP clock? Yes here is some code from the DaVinci GEL file for CCS that is used to turn on the DSP. Cheers Jon /* ------------------------------------------------------------------------ * * * * turn_on_dsp( ) * * * * ------------------------------------------------------------------------ */ turn_on_dsp( ) { unsigned int *addr; unsigned int domainbit = 0x0002; #define PSC_BASE 0x01C41000 #define PSC_EPCPR *( unsigned int* )( 0x01C41070 ) #define PSC_PTCMD *( unsigned int* )( 0x01C41120 ) #define PSC_PTSTAT *( unsigned int* )( 0x01C41128 ) #define PSC_PDSTAT0 *( unsigned int* )( 0x01C41200 ) #define PSC_PDSTAT1 *( unsigned int* )( 0x01C41204 ) #define PSC_PDCTL0 *( unsigned int* )( 0x01C41300 ) #define PSC_PDCTL1 *( unsigned int* )( 0x01C41304 ) #define PSC_EPCCR *( unsigned int* )( 0x01C41078 ) #define PSC_MDSTAT_BASE ( 0x01C41800 ) #define PSC_MDCTL_BASE ( 0x01C41A00 ) #define PSC_MDSTAT_DSP *( unsigned int* )( PSC_MDSTAT_BASE + 4 * 39 ) #define PSC_MDCTL_DSP *( unsigned int* )( PSC_MDCTL_BASE + 4 * 39 ) #define PSC_MDSTAT_IMCOP *( unsigned int* )( PSC_MDSTAT_BASE + 4 * 40 ) #define PSC_MDCTL_IMCOP *( unsigned int* )( PSC_MDCTL_BASE + 4 * 40 ) #define DSPBOOTADDR *( unsigned int* )( 0x01C40008 ) #define DSP_L2_ADDR 0x11800000 #define DSP_BRANCH_INST 0x00000120 #define DSP_NOP_INST 0x00000000 if ( ( PSC_MDSTAT_DSP & 0x001F ) != 0x0003 ) { while( ( PSC_PTSTAT & domainbit ) != 0 ); // Wait for state transtion to finish PSC_PDCTL1 |= 0x0001; // Turn ON power domain PSC_MDCTL_DSP |= 0x0003; // Set DSP module state to enable PSC_MDCTL_IMCOP |= 0x003; // Set IMCOP module state to enable PSC_PTCMD = domainbit; // Start state transition while( ( PSC_EPCPR & domainbit ) == 0 ); // Wait for external power request /* * Apply External Power if needed. */ PSC_PDCTL1 |= 0x0100; // Turn ON external power while( ( PSC_PTSTAT & domainbit ) != 0 ); // Wait for state transtion to finish } // Set DSP boot address DSPBOOTADDR = DSP_L2_ADDR; // Write DSP self-loop addr = (unsigned int *)DSP_L2_ADDR; *addr++ = DSP_BRANCH_INST; *addr++ = DSP_NOP_INST; *addr++ = DSP_NOP_INST; *addr++ = DSP_NOP_INST; *addr++ = DSP_NOP_INST; *addr++ = DSP_NOP_INST; // Release DSP from reset PSC_MDCTL_DSP |= 0x100; // Wait for reset to be released while((PSC_MDSTAT_DSP & 0x100) == 0); GEL_TextOut( "DSP is On\n" ); } _______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com ________________________________ Be a better sports nut! Let your teams follow you with Yahoo Mobile. Try it now. <http://us.rd.yahoo.com/evt=51731/*http:/mobile.yahoo.com/sports;_ylt=At 9_qDKvtAbMuh1G1SQtBI7ntAcJ%0a>
_______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
