Здравствуйте!
Столкнулся с непонятной ситуацией. Не могу понять, где ошибаюсь.
Мы используем модули SK-iMX6S-OEM. C GPIO работаем через mmap.
Конфигурация следующая:
ecspi1 {
pinctrl_ecspi1_oem: ecspi1-oem {
fsl,pins = <
/*GPIO 5.14*/
MX6QDL_PAD_DISP0_DAT20__ECSPI1_SCLK 0x100b1
/*GPIO 5.15*/
MX6QDL_PAD_DISP0_DAT21__ECSPI1_MOSI 0x100b1
/*GPIO 5.16*/
MX6QDL_PAD_DISP0_DAT22__ECSPI1_MISO 0x100b1
>;
};
};
/* ECSPI1 CS0 */
MX6QDL_PAD_DISP0_DAT23__GPIO5_IO17 0x80000000
/*MY LEDS*/
MX6QDL_PAD_CSI0_MCLK__GPIO5_IO19 0x80000000
MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20 0x80000000
Если выставить в 1 любой из выходов /*MY LEDS*/ , на выходах выставляется уровень 3.3В. Если после этого произвести операцию записи по SPI1, то это напряжение с выходов /*MY LEDS*/ будет сброшено в 0В.
Происходит это только в том случае, когда на выходах /*MY LEDS*/ присутствует нагрузка(эквивалентна сопротивлению на 2 кОм), если нагрузку убрать(у нас остается подтяжка к GND на 100кОм), то все работает как положено и на выходе сохраняется уровень 3.3В.
Пробовал на плате sk-iMX6/53/50-MB с «чистым» buildroot 2016-11. Ситуация воспроизводится.
Файл dts, тестовую программу, которой через mmap выставляю выходы и ее исходники можно посмотреть по ссылке
https://drive.google.com/file/d/1Linzby4LzLkqAeW2IID2tUpkDln1zlVE/view
Точно такая же ситуация у меня происходит и с SPI3(GPIO 4.21, 4.22,4.23,4.24,4.25,4.26,4.27) и GPIO 4.15.
Ну и еще: когда работаешь с GPIO через sysfs, такого эффекта не наблюдается.
Заранее спасибо за помощь!