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.

DM36x IPIPEIF,IPIPE, RSZ, RZA,RZB Enable bit Check

Hello all,

i would like to know how to guarantee the IPIPEIF , Resizer, Resizer A and Resizer B enable bits toggeling from 0 to 1 and viceversa after each resizing operation.

If the enable bits are not getting disable by any chance , then how to ensure them to make disable ?

Is there any proper mechanism to verify the same every time.

I would request some one from TI to provide some API to make  the same.

from some of the forum posts i found some suggestions to check the enable bits before starting the next resizing operation to make sure that the previous resizing operation has been completed, but i don't know how to do it.

Kindly provide some API function to check the same.

  • Following changes has been done for the same in dm365_ipipe.c file suggested by Kedar from TI.

    static void ipipe_enable(unsigned char en, void *config)

    {

     static int count=0;
     unsigned char val = 0, value=0;
     struct ipipe_params *param = (struct ipipe_params *)config;

     print_ipipe_enable_status("BEFORE IPIPE ENABLE",count );

     poll_ipipe_disable();

     print_ipipe_enable_status("AFTER IPIPE POLL",count );
     
     if (en)
      val = 1;

    ........

    ........

    }

    static void poll_ipipe_disable()
    {
     poll_enable_bit(0x01c71200);
     poll_enable_bit(0x01c70800);
     poll_enable_bit(0x01c70400);
     poll_enable_bit(0x01c70458);
     poll_enable_bit(0x01c704e8);
    }

    static void poll_enable_bit(volatile unsigned int addr)
    {
     volatile int value;
     volatile int timeout = 10000;

     davinci_writel(0, addr);
     
     do {
      value = davinci_readl(addr); 
      timeout--;
      if(timeout==0)
       break;
     } while(value);
    }

    Thanks

    Sujit

  • Hi sujit,

                 Could you tell me the reason why you are keen on checking the ipipe enable, rsz a, rsz b, and rsz  enable bits ?  I'm facing the resizer hang problem when  resizer and previewer are used in single shot mode. I've gone through several posts on resizer hanging in single shot mode. I made changes in  the dm365_ipipe.c file as suggested by you and verifying whether it solves the problem ?

                 Did you also face the hang in resizer because of which you applied the above code in dm365_ipipe.c file and got it resolved ?

            

    regards

    pradeep

  • Hi Pradeep,

    Some times on Dm36x hw this problem was observed in SS Mode. I don't remember exactly wether in continuous mode also same problem was there or not, due to which no Interrupt were generated after some time.

    So we fixed the issue by the code i had posted. By doing that there is no harm, only thing is your are checking all the enable bits and if not the you are toggling.

  • Hi sujith

             My application gets hung even after applying the above code in dm365_ipipe.c and vpss.c file. I applied the same patch in vpss.c file  dm365_dma_complete_interrupt function (i,,e function called when interrupt occurs). so the same check is performed 2 times once when interrupt is generated and other before using the ipipe

    1) disabling the ipipe,ipipe_if, rsz a, rsz b and rsz components when interrupt is raised

                      and when

    2.  enabling ipipe to do previewer +resize or just resizer operation.

    Is the there any thing which i need to modify to fix the problem ? I've not changed any clock division values to the resizer i,,e the default values are used.

    regards

    pradeep