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.

[参考译文] PROCESSOR-SDK-AM64X:AM64x PCIe 处于 EC 和 EP 模式

Guru**** 2393445 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1520641/processor-sdk-am64x-am64x-pcie-in-ec-and-ep-mode

器件型号:PROCESSOR-SDK-AM64X

工具/软件:

您好团队

我已将 TI AM64x 电路板配置 为 RC、将另一个 TI AM64x 电路板配置为 EP。 这两个电路板通过 PCIe 接口相互连接。  TI AM64x RC mode <-- > TI AM64x EP 模式。

我希望 RC 向 EP 发送中断。 我介绍了以下来自 TI AM64x 参考手册的说明

说明如下。 我想知道这个  VENDOR_SPECIFIC_CONTROL_REG 在哪里。 将值写入寄存器。

12.2.2.4.4.3.1 PCIe 内核下游中断 PCIe 内核的供应商特定功能信号 F0_VSEC_INTERRUPT_OUT 用于从 RP 生成向 EP 的中断。 F0_VSEC_INTERRUPT_OUT 表示 EP 物理功能0的中断。 该信号用于向本地主机生成 pcie_download_pulse 中断。 RP 可以写入供应商特定控制寄存器(PCIE_CORE_PFN_I_VENDOR_SPECIFIC_CONTROL_REG)来在 EP 上置位此信号、这会触发 EP 主机的 PCIE_INDUSTRIAL_PULSE 中断。  

有人能告诉我  VENDOR_SPECIFIC_CONTROL_REG 的位置吗?

此致

Mahantsh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否从这个 e2e 主题获得了解答?   https://e2e.ti.com/support/processors-group/processors/f/processors-forum/960871/tda4vm-pcie-sending-interrupt-from-ep-to-rc-via-pcie-core-downstream-interrupts 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我对 AM64x 进行了以下更改。 不过、我没有从 RC 到 EP 收到 Downstream 中断

    @@-566、11 +566、13 @@&mailbox0_cluster7{
    };

    &pcie0_rc{
    +//状态="正常";
    STATUS ="已禁用";
    };

    &pcie0_ep{
    - status ="disabled";
    +//状态="已禁用";
    +状态="正常";
    };

    diff -git a/drivers/pci/controllers/cadence/PCI-j721e.c b/drivers/pci/controllers/cadence/PCI-j721e.c
    索引40256815e8..7cd246859f 100644
    ---a/drivers/pci/controllers/cadence/pci-j721e.c
    ++ b/drivers/pci/控制器/cadence/PCI-j721e.c
    @@-134、6 +134、12 @@ static irqreturn_t j721e_pcie_link_irq_handler (int irq、void *priv)
    返回 IRQ_HANDLED;
    }

    +static irqreturn_t j721e_pcie_download_irq_handler (int irq、void *priv)
    +{
    + printk ("调试:已处理 MAHA 下游 IRQ ");
    +返回 IRQ_HANDLED;
    +}
    +
    静态 void j721e_pcie_config_link_irq (结构 j721e_pcie *pcie)

    u32寄存器;
    @@-507、7 +513、8 @@ static int j721e_pcie_probe (struct platform_device *pdev)
    U32模式;
    内部 ret;
    内部 IRQ;
    -
    + int down_irq;
    + printk ("DBG1000 Maha in j721e_pcie_probe2 \n");
    DATA =(结构 j721e_pcie_data *) of_device_get_match_data (dev);
    if (!data)
    return -EINVAL;
    @@-545、6 +552、9 @@ static int j721e_pcie_probe (结构 platform_device *pdev)
    IF (IRQ < 0)
    返回 IRQ;

    + DOWN_IRQ = platform_get_irq_byname (pdev、"download_pulse");
    + IF (DOWN_IRQ < 0)
    + RETURN DOWN_IRQ;
    dev_set_drvdata (dev、pcie);
    PM_runtime_enable (dev);
    RET = pm_runtime_get_sync (dev);
    @@-566、6 +576、15 @@ static int j721e_pcie_probe (struct platform_device *pdev)
    转到 err_get_sync;
    }

    + ret = devm_request_irq (dev、down_irq、j721e_pcie_download_irq_handler、0、
    +"j721e-PCIe-Downstream-IRQ"、PCIe);
    + if (ret < 0){
    + dev_err (dev、"未能请求下游脉冲 IRQ %d\n"、ret);
    +返回 ret;
    +}
    +
    + printk("******* DBG500 DOWN_IRQ ==%d\n"、DOWN_IRQ);
    +
    j721e_pcie_config_link_IRQ (PCIe);

    开关(MODE){