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.

[参考译文] Linux/DRA726:CAL Linux 驱动程序中 CAL_CSI2_VC_IRQENABLE 设置不正确?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/566292/linux-dra726-cal_csi2_vc_irqenable-incorrectly-set-in-cal-linux-driver

器件型号:DRA726

工具/软件:Linux

我正在查看 ti-linux-kernel、ti-linux-4.4.y 分支中的 ti-vpe/cal.c 驱动程序、我发现了一个对我来说没有意义的寄存器配置。

驱动程序设置一个"CAL context (CAL context)"(正确的术语?) 根据 PHY、使用器件树子器件中"REG"的虚拟通道 ID 配置每个 PHY。 这与 enable_IRQs()的第一部分匹配,其中 ctx->csi2_port 用于选择与 PHY 具有相同索引的 Write DMA。

但是、我对第593行的解释如下:为虚拟通道3 (!)上的所有事件启用 CAL 中断 (零索引)并将1s 写入为 PHY/CSI2-LL 1 (一索引)的保留位(!)。

如果我弄乱了字节顺序、我就已经思考了、但其他寄存器看起来会按照此顺序进行调整、因此看起来 VC 3的位是设置的。

我的解释是否不正确? 您能澄清第593行的影响吗?


此致、

Thomas Axlsson

Git 显示 a48dfc3:drivers/media/platform/ti-vpe/cal.c | cat -n | less

580静态空 enable_IRQ (struct cal_ctx * ctx)
581{
582 /*启用 IRQ_WDMA_END 0/1 */
583 REG_WRITE_FIELD (ctx->dev、
584 CAL_HL_IRQENABLE_SET (2)、
585 CAL_HL_IRQ_ENABLE、
586 CAL_HL_IRQ_MASK (ctx->csi2_port);
587 /*启用 IRQ_WDMA_START 0/1 */
588 reg_write_field (ctx->dev、
589 CAL_HL_IRQENABLE_SET (3)、
590 CAL_HL_IRQ_ENABLE、
591 CAL_HL_IRQ_MASK (ctx->csi2_port);
592 /*待办事项:添加 VC_IRQ 和 CSI2_COMPLEXIO_IRQ 处理*/
 593 REG_WRITE (ctx->dev、CAL_CSI2_VC_IRQENABLE (1)、0xFF000000);
594}

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

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

    此处通知 CAL Linux 驱动程序专家进行评论。

    此致、
    Mariya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Thomas:
    我认为第593行是为 PHY 1 (两个中的一个)启用虚拟通道3事件(包括为将来保留的事件)。
    保留标志的启用不应成为问题、因为它们当前不起作用。 也就是说、在这两个位置(30和31)的硬件中不启用任何功能。
    我不知道为什么这条线路如此"硬接线"-这是本主题中的主要问题。 实际上、PHY1始终通过 VC3启用... 我不知道其目的。
    我不是 CSI 专家、我刚刚查看了 TRM 文档、因此如果我引入任何混淆、我很抱歉。
    此致、
    STAN
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Stanislav、

    感谢您的检查! 因为我不明白这条线,我可以停止拉头发:)。

    我忘记在原始帖子中提到、驱动程序的其余部分仅使用 VC0和 VC1 (PHY1使用 VC0、PHY2使用 VC1)。 因此、它看起来像是一个错误。 也许这是一个与 TODO 注释相关的剩余操作("TODO:添加 VC_IRQ 和 CSI2_COMPLEXIO_IRQ 处理")。

    我要让问题保持开放状态、看看有人是否可以确认或否认这是一个错误。

    /Thomas
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哎呀、远离主题太长了。 VC 由设备树中的"reg"指定。 但奇怪的是、它在这条线路中硬接线至 VC3。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Thomas:

    如前所述、VC_ENABLE IRQ 正在启用 VC3、但从不使用 IRQ
    校准 IRQ 为两个水平。
    首先、驱动程序需要为 CAL_HL_IRQENABLE_SET (0)中的正确端口启用 IRQ_PPIx_VC 位
    在 IRQ 时、ISR 应读取 CAL_HL_IRQSTATUS (0)的状态、如果该位被置位、则应正确读取
    PHY 专用 CAL_CSI2_VC_ENABLEx 寄存器。

    现在我同意驱动程序随机启用 VC3、甚至不处理它的代码
    但是、只要 IRQ_PPIx_VC 位未启用、IP 就不会触发任何 IRQ
    因此、它是一个没有意义但不是缺陷的代码。

    此外、当前不支持虚拟通道。
    如果添加了该支持、则必须执行上述编程。

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

    感谢您指出两层的高度。 现在、我了解线路不会影响操作。

    此致、
    Thomas