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