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.

[参考译文] TDA4VH-Q1:TDA4VH:mcu1-0和 Linux a72主域之间 WKUP 域 GPIO&#39的中断分配

Guru**** 2546020 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1418941/tda4vh-q1-tda4vh-interrupt-distribution-of-wkup-domain-gpio-s-between-mcu1-0-and-the-linux-a72-main-domain

器件型号:TDA4VH-Q1

工具与软件:

您好!

我对 GPIO 中断的分配有疑问、一次在固件 mcu1_0中、一次在 mpu1 (A72 Linux)上。

电路板:J784s4定制电路板
PDK:09.02.00.30
Linux
SPL 引导

在‘的‘m中、我们已经借助器件树将两个 GPIO 组"wkup_GPIO0"和"main_GPIO0"添加到 Linux。
因为使用了一些 WKUP 引脚

&main_gpio0 {
	status = "okay";
	pinctrl-names = "default";
	gpio-line-names = MAIN_GPIO0_LINE_NAMES;
};

&wkup_gpio0 {
	status = "okay";
	pinctrl-names = "default";
	gpio-line-names = WKUP_GPIO0_LINE_NAMES;
};


我们还在 mcu1-0固件中配置了 GPIO 驱动器、使其可以对引脚上的上升沿做出反应、当前按预期工作。



在 Mcu1_0中用于触发中断处理程序的引脚是 WKUP_GPIO0_0 -> H38。
根据参考手册、我已经看到16个 GPIO 引脚总是共享一个 ISR 矢量、在我们的案例中为 ISR 矢量103
受影响。



问题:
现在我有问题"GPIO-Davinic.c"Linux 驱动程序抱怨 IRQ 103的错误
无法请求、并且探测器失败、因为中断资源已在使用中(中断向量103)

elixir.bootlin.com/.../gpio-davinci.c


在"wkup_GPIO0"器件树节点上、中断向量
Interrupts =<103>、<104>、<105>、<106>、<107> <108>被确定为
设备。

wkup_gpio0: gpio@42110000 {
	compatible = "ti,j721e-gpio", "ti,keystone-gpio";
	reg = <0x00 0x42110000 0x00 0x100>;
	gpio-controller;
	#gpio-cells = <2>;
	interrupt-parent = <&wkup_gpio_intr>;
	interrupts = <103>, <104>, <105>, <106>, <107>, <108>;
	interrupt-controller;
	#interrupt-cells = <2>;
	ti,ngpio = <89>;
	ti,davinci-gpio-unbanked = <0>;
	power-domains = <&k3_pds 167 TI_SCI_PD_EXCLUSIVE>;
	clocks = <&k3_clks 167 0>;
	clock-names = "gpio";
	status = "disabled";
};


我能够通过从节点中删除 ISR Vector 103来解决原型问题
并将可用 GPIO 的数量减少16个。



我的问题:

1;在两个不同的域(main a72和 wakup mcu1-0)之间将 GPIO 控制器中的中断矢量拆分是否真的好?

2;TI 首选的避免此类分发问题(如中断)的方法是什么?

3;假设 MCU-1-0域中的任何 GPIO 中断是必需的、并且正在与 A72 Linux 上的另一个引脚共享相同的中断矢量。
中断分配的原型设计所描述的方法不起作用?
在 Linux 中、还使用了等待事件的 libgpiod 功能。



此致
Thomas

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

    Thomas

    [报价 userid="573262" url="~/support/processors-group/processors/f/processors-forum/1418941/tda4vh-q1-tda4vh-interrupt-distribution-of-wkup-domain-gpio-s-between-mcu1-0-and-the-linux-a72-main-domain ]1;在不同域(main a72和 wakup mcu1-0)之间将 GPIO 控制器中的中断矢量拆分是否真的好?
    [报价]

    Davinci_GPIO 驱动器将 wkup_GPIO0或 MAIN_GPIO0视为一个模块。 向寄存器中所有与模块相关的分组 GPIO 中断。
    最好在两个或更多主器件之间共享一个模块来控制它们。 一个模块应由1个主器件拥有。

    Unknown 说:
    TI 避免此类分发问题的首选方法是什么(如中断)?

    拆分为不同的模块。 因此、有多个实例。

    [报价 userid="573262" url="~/support/processors-group/processors/f/processors-forum/1418941/tda4vh-q1-tda4vh-interrupt-distribution-of-wkup-domain-gpio-s-between-mcu1-0-and-the-linux-a72-main-domain ]3;假设我们有这样的情况: 需要 MCU-1-0域中的任何 GPIO 中断并且正在与 a72 Linux 上的另一个引脚共享同一中断矢量。
    中断分配的原型设计所描述的方法不起作用?
    在 Linux 中、还使用了等待事件的 libgpiod 功能。[/QUOT]

    您是否从 A72/Linux 控制一个 GPIO 并等待状态来捕获来自 mcu1_0的中断?

    -基尔西