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

Reply via email to