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.

RTOS/AM5728: How to reduce the delay from PC(RootComple) to negate INTA for PCI Express of AM5728

Guru 10235 points
Part Number: AM5728

Tool/software: TI-RTOS

Hello, TI Experts,

 

Our customer sent us questions about "INTA function" of PCIE by using PROCESSOR-SDK-RTOS-AM57X.

They are using AM5728 as EP(Endpoint) for their product which is connected to Windows-PC via PCIE-slot.

They try to realize "Assert INTA" and "Deassert INTA" function to design their software.

So, they understand how to realize "INTA function" by using below registers.

   SPRUHZ6K.pdf : "24.9.4.6.2.1.2 Legacy PCI Interrupt Transmission (EP mode only)"

 

But they need to reduce the delay from PC to negate INTA.

(Please refer attached pdf in detail.)

 

Question:

   Could tell us how to reduce this delay from PC to negate INTA?

     - Are there any special pin to set the deassert INT register without software interrupt handling?

 

If there are any recommended way or successful implementation for faster negating INTA by AM572x, please tell us.

 

Best regards,

pcie.pdf

  • Hi,

    From AM5728 TRM:
    24.9.4.6.2.1.2 Legacy PCI Interrupt Transmission (EP mode only)
    Writing 0b1 to TI wrapper register PCIECTRL_TI_CONF_INTX_ASSERT[0] ASSERT_F0 bit sends an
    ASSERT message on the “interrupt pin” specified in the config header space.
    Writing 0b1 to TI wrapper register PCIECTRL_TI_CONF_INTX_DEASSERT[0] DEASSERT_F0 bit will
    send a DEASSERT message on the “interrupt pin” specified in the config header space.
    A status of the virtual “interrupt line” is available by reading out either bitfield.
    NOTE: This status is just a local record of the last message sent, it is not the result of any feedback
    from the PCIe fabric, since messages are posted, no response is generated. For that reason,
    the PCIe protocol does not guarantee the coherence between assertion and deassertion
    INTx messages, that means that it’s up to the application to ensure that the INTx assertion
    has been seen by the RC before sending the deassertion, and vice versa.

    This talks about the PCIE EP with AM5728. The same rule applies to PCIE RC using a Windows PC. From your diagram,
    4: Assert INTA, your PC's CPU gets the INTA from EP and starts the ISR

    Your ISR seems do the following:
    - GPMC writes over PCIE (steps 5, 6, 7)
    - EP negate INTA (step 8), does step 8 depending on GPMC write finishing in step 7
    - Deassert INTA all the way to RC (steps 9, 10, 11)

    My suggestion, once you entered ISR in the RC side, can you first deassert INTA without waiting for the GPMC write, EP side deassert, all the way back to RC? Certainly in this order, the RC de-asserted INTA, then EP de-assert INTA after a while. But you don't need to keep them in sync.

    Regards, Eric
  • Hi,

    Thank you very much for your kindness.

    I really appreciate your help.

    I'd like to send the answer to the customer.

     

    So, could you answer the below question?

      - Are there any special pin to set the deassert INT register without software interrupt handling?

     

    Best regards,

  • HI,

    In old PCI, there are dedicated pin/lines for INTA/B/C/D.

    In PCIE, there is NO interrupt pins/lines, the INTA/B/C/D are in-band signals to emulate the PCI interrupt pin for backward compatibility.

    Regards, Eric
  • Hi,

    Thank you very much for your kindness.
    I really appreciate your help.
    I will send the answer to the customer.

    Best regards,