This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CPPI RNDIS mode in the OMAP-L138 Starterware?

Other Parts Discussed in Thread: OMAP-L138

I am trying to alter the OMAP-L138 Starterware to cppi-dma large blocks of data (< 4 Megabytes) in RNDIS mode

I have several questions:

1) Has anyone accomplished this?  (Or is this a new attempt? The TI search engine is not finding anything in this regard.)

2) Does CPPI  RNDIS mode work in OMAP-L138 Starterware? That is, some Starterware API functions, have a note saying:

"This API will work in both transparent mode and GRNDIS mode."  
[in file cppi41dma.c, the functions doDmaTxTransfer() and doDmaRxTransfer()]

That note seems to imply that these API functions will not work in RNDIS mode.  Is that correct?  (Yet RNDIS mode is exceedingly similar to Generic RNDIS mode, which does work. For example, they behave identically so long as the total transfer size is not an integer multiple of the maximum USB packet size.)

3) What would be required for modifying those functions to work in RNDIS mode?

Thanks for your help.

-- Walter Snafu

  • After further studying the Starterware code, I will attempt to answer my own question.

    It seems that converting Starterware to also operate in RNDIS mode (at least for the OMAP-L138) would be quite easy.  Because RNDIS and GRNDIS modes are nearly identical. 

    The major change would occur in the file cppi41dma.c

    For transmitting, change the following line in the function doDmaTxTransfer():

        else if( usbInstance->txEndPoint[endpoint ].mode == CPDMA_MODE_SET_GRNDIS)

    to this:

        else if( usbInstance->txEndPoint[endpoint ].mode
                      == (CPDMA_MODE_SET_GRNDIS | CPDMA_MODE_SET_RNDIS))

    The above OR makes the transmitting code identical for the two modes:  GRNDIS and RNDIS. 

    ******

    Of course, we must initialize the endpoint(s) to use RNDIS mode.  And we must allocate buffers of appropriate length for RNDIS mode.  But it all seems pretty straightforward. 

    Other than the above, no change is required for RNDIS receiving.

    Will this change work?  Can anyone verify this?  Or, has anyone gotten RNDIS to work in (OMAP-L138) Starterware?

    -- Walter Snafu