0

カーネル ドライバーで GPIO コントローラーを接続しようとしていますが、すべてが正しく行われているかどうかわかりません。

これは私のデバイスツリーコードです:

gpio_screen1:gpio1@20 {
            compatible = "nxp,pca9535";
            gpio-controller;
            #gpio-cells = <2>;
            reg = <0x20>;
//          pinctrl-names = "default";
//          pinctrl-0 = <&pinctrl_pca9505>;
            };

    screen: screen@0x02000 {
        compatible = "myscreen,myscreen";
        #address-cells = <1>;
        #size-cells = <0>;
        reg = < 0x04000 0xF00 >;                    
        interrupts = <1 2>;
        reset-gpios     = <&gpio_screen1 15 0>;
        sleep-gpios     = <&gpio_screen1 14 0>;
        clk_sel1-gpios  = <&gpio_screen1 10 0>;
        lane_sel-gpios  = <&gpio_screen1 9 0>;
    };

そして、これはGPIOを登録する私のドライバーコードです

gpio = of_get_named_gpio(pdev->dev.of_node, "reset-gpios", 0);
if (!gpio_is_valid(gpio)) {
        dev_err(&pdev->dev, "failed to parse reset gpio\n");
        return gpio;
}
dev->reset = gpio;

この初期化は正しいですか?

この GPIO コントローラーのドキュメントを見てきましたが、あまり役に立ちません。

4

1 に答える 1

0

ドライバー側からの gpio の初期化に問題はありません。とても簡単です。次のステップは、初期化された gpio の要求です。

ret = devm_gpio_request_one(&pdev->dev, dev->reset, GPIOF_OUT_INIT_HIGH, "gpio-reset");
if (ret) {
    dev_err(&pdev->dev, "failed to request gpio %d: %d\n", dev->reset, ret);
    return -EINVAL;
}

ここのdevicetreeの部分に関しては、gpio-pcf857x.txtなどを元にやっているとのことでした。これらの gpios で割り込みを使用しませんか?

そして主な質問、それは機能しますか? ;)

于 2015-05-08T21:44:05.780 に答える