AM6441: DMSS GPIO triggered with A53.

Part Number: AM6441


since I add below code  to the sciclient_default boardcfg_rm.c

        {
           .num_resource = 2,
           .type = TISCI_RESASG_UTYPE (TISCI_DEV_MAIN_GPIOMUX_INTROUTER0, TISCI_RESASG_SUBTYPE_IR_OUTPUT),
           .start_resource = 16,
           .host_id = TISCI_HOST_ID_ALL,

        },
and rebuild the board configuration.
and obviously, sciclient is taking the changes and return OK. 


gpio pin is GPIO1_7   (FROM ossiloscope we saw interrupt is comming correctly active low)
src_id = 3
src_index = 180,
dst_host_irq = 16    (AM64X_DEV_DMASS0_INTAGGR_0 )
dst_host_irq = 3  (AM64X_DEV_MAIN_GPIOMUX_INTROUTER0 )
global_event = 0xC418   (this is L2G global event)
Local_Event = 0x18    this is L2G BLAOCK


rSciclient_rmIrqSetRaw  with above config.
 

2. Next, convert the local GPIO event into a global event.

done previously

 

3.  regsiter the virtual interrupt

 

* global event range for R5 in the boardcfg starts from 16 for with a size of 256. results in the imap register 0x48100000+(8*16)= 0x48100080 */


global_event  based on board config for rm it is   16.  (this global event means the interrupt from gpio.)


in A53, it should be 
(in A53 virtual Num = 5   and will be triggered by interrupt number 69) not working 
AM64X_DEV_DMASS0_INTAGGR_0    28    5    AM64X_DEV_GICSS0    spi    69

 

(in R5F virtual Num is 44 , and will be triggered, by interrupt number 68   and all works fine under R5F

AM64X_DEV_DMASS0_INTAGGR_0    28    44    AM64X_DEV_R5FSS0_CORE0    intr    68
)

refer to 
https://software-dl.ti.com/tisci/esd/11_01_02/5_soc_doc/am64x/interrupt_cfg.html


I register the interrupt handler, 

in R5F, all works perfect. However in A53, it is not triggered interrupt at all. 

 

MY QUESTION:

what can be the problem?

How to debug step by step.    From GPIO to DMSS,  the configuration should be exactly the same right?

form DMSS virutal interrupt to R5F or A53, it is slightly different.   it should all work. 


* global event range for R5 in the boardcfg starts from 16 for with a size of 256. results in the imap register 0x48100000+(8*16)= 0x48100080 */

eg: this should be the same for both A53 and R5F.  

Basically, I should MAP VINT5 to IRQ69?

Thanks. 

image.png

  • Hi,

    The assigned expert is currently out of office until Jan 29th. Please expect some delay in the response.

    Thanks for understanding.

    Regards,
    Johnson

  • No problem, GOOD NEWS is that I saw the dmss is trigged by the gpio.

    however, after dmss comlete the event, it suppose to set

     0x48005000   status bit  (INTAGG_INTR_REGS)  STATUS_SET  to 1.  this is not happened. 
    //I am using virtual interrutp 5, that is why ti is  0x48005000

    Aso look at the global_event,  I am using 273

    48100888 is werid, it is 0, it supposed to be 0x0500.

    therefore  my step 

    Sciclient_rmIrqSetRaw  has problem, 

    <my code>

    struct tisci_msg_rm_irq_set_req rmIrqReq;
    struct tisci_msg_rm_irq_set_resp rmIrqResp;

    rmIrqReq.valid_params = 0U;
    rmIrqReq.valid_params = TISCI_MSG_VALUE_RM_GLOBAL_EVENT_VALID |
    TISCI_MSG_VALUE_RM_IA_ID_VALID |
    TISCI_MSG_VALUE_RM_VINT_VALID |
    TISCI_MSG_VALUE_RM_VINT_STATUS_BIT_INDEX_VALID;
    rmIrqReq.global_event = 273
    rmIrqReq.src_id = TISCI_DEV_DMASS0_INTAGGR_0;
    rmIrqReq.dst_id = 0;
    rmIrqReq.dst_host_irq = 0;
    rmIrqReq.vint = 5;
    rmIrqReq.ia_id = TISCI_DEV_DMASS0_INTAGGR_0;
    rmIrqReq.vint_status_bit_index = 0U; //only one event mapped to each VINT always
    rmIrqReq.secondary_host = TISCI_MSG_VALUE_RM_UNUSED_SECONDARY_HOST;


    rmIrqReq.src_index = BCDMA_BLKCPY_TR_IRQ_OFFSET + 12; // I am always using channel 12.


    *status = Sciclient_rmIrqSetRaw(&rmIrqReq, &rmIrqResp, SystemP_WAIT_FOREVER);


    </code>

    it suppose to build the connection.    once event is complete, write to this virutal number 5.  

    status bit  (INTAGG_INTR_REGS)  STATUS_SET  to 1

    also it supposed to write IMAP_regs   48100888  to be 0x0500. however it remain 0. do i missing something? thanks. 


    Sciclient_rmIrqSetRaw returns true.  by the way. 

  • Everything works fine. now I can see 48100098  is correctly mapping 0x0050

    yes, I swtich my global event to be 19.   19 * 8 bytes = 152 bytes (0x98)

    This ticket can be closed