【问题标题】:Linux Device Tree Help (GPIO controller/interrupts)Linux 设备树帮助(GPIO 控制器/中断)
【发布时间】:2014-06-23 01:39:57
【问题描述】:

我一直在学习 linux 设备树,并且我们一直在尝试开始移植一些旧代码以使用它们。我在使用 gpio 控制器节点时遇到了一点问题:

gpio1: gpio-controller@c00 {
    #gpio-cells = <2>;
    compatible = "cavium,octeon-3860-gpio";
    reg = <0xc00 0x100>;
    gpio-controller;
    /* Interrupts are specified by two parts:
     * 1) GPIO pin number (0..15)
     * 2) Triggering (1 - edge rising
     *                2 - edge falling
     *                4 - level active high
     *                8 - level active low)
     */
    interrupt-controller;
    interrupt-cells = <2>;
    interrupts = <0 24>, <1 25>, <2 26>, <3 27>;

};

我正在尝试将某些 IRQ 映射到 GPIO 引脚,但是,它似乎只将第一个 IRQ 24 映射到 gpio 引脚 0。我查看了源代码,看起来不像尽管设备树绑定文本文件似乎暗示它会(devicetree/bindings/gpio/cavium-octeon-gpio.txt),但将永远交互“中断”。有谁知道我如何将一些中断映射到不同的 gpio 引脚?

【问题讨论】:

    标签: linux linux-kernel linux-device-driver gpio device-tree


    【解决方案1】:

    我不熟悉你的机器,但如果你看这里:

    https://elinux.org/Device_Tree_Usage#How_Interrupts_Work

    您将看到中断说明符是针对定义它们的节点的中断控制器(即父中断控制器),而不是针对节点本身。

    由于您甚至没有显示实际启用中断(引脚、触发器)的位置和位置, 我想你不知道这一点。

    那么gpio1的中断控制器节点是什么样子的呢?

    它真的期望以 (pin, irq) 形式从同一个源接收多个中断吗?

    例如,在 am335x 上,gpio1 上的所有中断都映射到 OMAP35 INTC 控制器上的特定索引,这意味着在 gpio1 节点中只定义了 1 个中断,通知 INTC 是否在 gpio1 上发生了中断。

    【讨论】:

      【解决方案2】:

      gpio 处理在平台之间仍然不是 100% 相同,所以我将给你它的要点,你可能需要适应你的平台(找到使用相同或相似 SoC 的 dts)。 我的平台是飞思卡尔imx.6 这是它的要点:

      首先: 不理会 gpio1 节点。 (它可能在您从上游供应商处获得的 dtsi 中设置正确)

      第二: 如果你想要。 gpio 1 15 为中断,高电平有效 在要消耗gpio中断的设备节点中,添加

      interrupt-parent = <&gpio1>;
      interrupts = <15 IRQ_TYPE_LEVEL_HIGH>;
      

      例如:来自 arch/arm/boot/dts/imx6qdl-gw52xx.dtsi

      touchscreen: egalax_ts@04 {
              compatible = "eeti,egalax_ts";
              reg = <0x04>;
              interrupt-parent = <&gpio7>;
              interrupts = <12 2>;
              wakeup-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
      };
      

      【讨论】:

        猜你喜欢
        • 2015-07-19
        • 1970-01-01
        • 1970-01-01
        • 2021-03-14
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多