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:AM6442:IRQ:未找到 GPIO@601000的 IRQ 域

Guru**** 2550480 points
Other Parts Discussed in Thread: AM6442, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1204088/processor-sdk-am64x-am6442-irq-no-irq-domain-found-for-gpio-601000

器件型号:PROCESSOR-SDK-AM64X
主题中讨论的其他器件:AM6442SysConfig

我使用了 AM6442定制电路板。 我将 GPIO 配置为中断引脚、但无法成功获取其 IRQ 编号。 下面是我的 DTS 配置和获取 IRQ 的代码。

DTS:

gpioint_pins_default:gpiopoints-pins-default{
  PINCCTRL-SINGLE、PINS =<
    AM64X_IOPAD (0x0238、PIN_INPUT | PULL_DISABLE | INPUT_EN |(1<<21)、7)/*(B16) GPIO1_54*/
  >;
};

gpipoint: gpipoint {
  兼容="mytest、gpipoint";
  状态="可以";
  pinctrl-names ="默认";
  pinctrl-0 =<&gpiopoint_pins_default>;
  interrupt-parent =<&MAIN_GPIO1>;
  中断=<54 IRQ_TYPE_EDGE_FALLING>;
};

代码:

静态 int __init GPIO_int_init (void)

  struct device_node *np;

  np = of_find_node_by_name (NULL、"gpipoint");
  if (!np)
    printk(Kern_ERR"Can't find node gpioing\n");
  pfoirq = irq_of_parse_and_map (NP、0);

...

}

I got err: IRQ: No IRQ domain found for GPIO@601000!  

请帮助检查有什么问题?

此致

xixiguo.

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

    您好、Xixiguo、

      interrupt-parent =<&MAIN_GPIO1>;

    该操作错误、MAIN_GPIO1不是中断控制器。

    我建议您在驱动程序中使用内核 gpod 框架、而不创建自定义的 GPIO 驱动程序。 gpod 处理使用 GPIO 引脚的基本工作、例如解析器件树、初始化和处理 GPIO 中断。

    顺便说一下、

        AM64X_IOPAD (0x0238、PIN_INPUT | PULL_DISABLE | INPUT_EN |(1<<21)、7)/*(b16) GPIO1_54*/

    请使用 SysConfig 生成 pinmux。

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

    您好、Bin、

    感谢您的解释。

    在 k3-j721e-common-proc-board.dts 中、第639行也使用 main_gpio1作为中断父级。 这让我感到困惑。

    因此、您的意思是 GPIO1的 interrupt-parent 应为 MAIN_GPIO_intr?

    Br

    xixiguo.

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

    您好、Xixiguo、

    谢谢提供的信息、我没有注意到这种用法。 现在、我还在 k3-am62x-sk-common.dtsi 中的 exp1节点中看到了类似配置。 但我尚未查看 GPIO-pca953x.c 驱动程序以了解如何使用此中断。 我仍然建议您在驱动程序中使用内核 gpod 框架、它简化了 GPIO 处理中的驱动程序。

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

    您好、Bin、

    谢谢! 是否有使用包含 GPIO 中断的内核 gpod 框架驱动程序的示例?

    Br

    xixiguo.

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

    您好、Xixiguo、

    内核中有许多驱动程序使用 gpod 框架进行 GPIO 处理。 其中一个示例是 extcon GPIO 驱动程序- drivers/extcon/extcon-gpio.c 其对应的器件树绑定文档是 Documentation/devicetree/bindings/extcon/extcon-usb-gpio.txt

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

    您好、Bin、

    我有一些新发现。 我想是这个问题  IRQ:找不到 GPIO@601000的 IRQ 域  都是初始化顺序问题。 可能在创建 GPIO 中断控制器之前解析了它。 GPIO-Davinci.c 是 AM64的 GPIO 平台驱动程序。 如果我在创建 GPIO 平台驱动程序后安排 GPIO IRQ 请求、则 IRQ 请求可以返回成功。

    Br

    xixiguo.

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

    您好、Xixiguo、

    如果是这种情况、如果请求 GPIO IRQ 失败、您可以"返回-EPROBE_DEPR"。 那么内核将在稍后再次重新初始化您的驱动程序。