gpt4 book ai didi

linux - linux内核中的pin muxing

转载 作者:太空狗 更新时间:2023-10-29 12:12:31 26 4
gpt4 key购买 nike

我想做以下 pin muxing。即出于某种目的,USART Tx -> 到 GPIO -> 返回到 Linux 内核中的 USART Tx 引脚。

我尝试使用 gpio_request 和 gpio_direction_output 将 PIN 设为 GPIO,因此我能够将该 pin 设为 GPIO。但是当我想从 GPIO 切换回 USART Tx 引脚时,它不起作用,我尝试按照 at91_set_A_periph 到那个引脚,仍然没有成功。

在内核上工作:3.18 和 at91 atmel 板。

最佳答案

你可以看看i2c-imx driver .它正是这样做的。

您需要使用 pinctrl_lookup_state 来检索不同的 pinctrl 状态(其中一个是 USART Tx,另一个是 GPIO)。然后您可以使用 pinctrl_select_state 在两者之间切换。

总而言之,您的 uart 节点中会有类似的东西:

    usart3: serial@fc00c000 {
pinctrl-names = "default","gpio";
pinctrl-0 = <&pinctrl_usart3>;
pinctrl-1 = <&pinctrl_usart3_gpio>;
tx-gpio = <&pioE 4 GPIO_ACTIVE_LOW>;
status = "okay";
};

在驱动代码中:

pinctrl_pins_default = pinctrl_lookup_state(pinctrl, PINCTRL_STATE_DEFAULT);
pinctrl_pins_gpio = pinctrl_lookup_state(pinctrl, "gpio");
tx_gpio = of_get_named_gpio(pdev->dev.of_node, "tx-gpio", 0);

然后,您可以使用pinctrl_select_statepinctrl_pins_defaultpinctrl_pins_gpio之间来回切换。 tx_gpio 是您的 gpio。

关于linux - linux内核中的pin muxing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37390397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com