Как использовать gpio_export_link и gpio_export () - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу экспортировать пин-код, чтобы его можно было переключать в пространстве пользователя.Вот как настраивается 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), true);

в том, что касается gpio_export_link (), я не уверен, что указывать в качестве первого аргумента.Что подразумевается под: "struct device * dev"?

В комментариях над замедлением метода указано: "@dev: устройство, под которым создается символическая ссылка", что подразумевается под устройством?

...