如何使用gpio_export_link和gpio_export()

时间:2019-02-13 20:50:41

标签: linux-kernel gpio

我想导出一个图钉,以便可以在用户空间内切换它。设置GPIO的方法如下:

int value = 0;

    mxc_request_iomux(MX51_PIN_EIM_A24, IOMUX_CONFIG_ALT1);
    mxc_request_iomux(MX51_PIN_EIM_A26, IOMUX_CONFIG_ALT1);

    mxc_iomux_set_pad(MX51_PIN_EIM_A24, PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_PULL | PAD_CTL_100K_PU);
    mxc_iomux_set_pad(MX51_PIN_EIM_A26, PAD_CTL_PKE_ENABLE | PAD_CTL_PUE_PULL | PAD_CTL_100K_PU);

    gpio_request(IOMUX_TO_GPIO(MX51_PIN_EIM_A24), "gpio2_18");
    gpio_request(IOMUX_TO_GPIO(MX51_PIN_EIM_A26), "gpio2_20");

    gpio_direction_input(IOMUX_TO_GPIO(MX51_PIN_EIM_A24));
    gpio_direction_input(IOMUX_TO_GPIO(MX51_PIN_EIM_A26));

    value |= gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_EIM_A24)) ? 0 : 1;
    value |= gpio_get_value(IOMUX_TO_GPIO(MX51_PIN_EIM_A26)) ? 0 : 2;

    gpio_free(IOMUX_TO_GPIO(MX51_PIN_EIM_A24));
    gpio_free(IOMUX_TO_GPIO(MX51_PIN_EIM_A26));

根据gpio.text,这两个函数的用例是:

/* export the GPIO to userspace */
int gpio_export(unsigned gpio, bool direction_may_change);

/* create a sysfs link to an exported GPIO node */
int gpio_export_link(struct device *dev, const char *name,
    unsigned gpio)

我计划首先通过导出来切换图钉:

echo x > /sys/class/gpio/export

,然后设置其值:

echo 0 > /sys/class/gpio/gpiox/value

我相信这就是我使用gpio_export()的方式:

gpio_export(IOMUX_TO_GPIO(MX51_PIN_EIM_A24),是),

就gpio_export_link()而言,我不确定要把什么作为第一个参数。什么是:“结构设备* dev”?

方法减速上方的注释说:“ @dev:要在其下创建符号链接的设备” device是什么意思?

0 个答案:

没有答案