GPIO для приостановки/возобновления?

Хотя я прочитал несколько документов по GPIOs, я все еще не могу понять мультиплексирование верхнего уровня GPIOs.

Из кода видно, что несколько GPIO (например, Int, Reset Pins) выделенного устройства мультиплексируются во время приостановки. /*возобновить* обратные вызовы этого конкретного драйвера. Я хочу знать, что именно делает это мультиплексирование gpio и как оно влияет на suspend/*resume* системы?


person Narain    schedule 06.03.2013    source источник
comment
Они, вероятно, закрывают этот вопрос, потому что мультиплексирование — это метод из области телекоммуникаций, а не программирования, поэтому мой ответ в качестве комментария: как это работает, например, на выделенной плате, такой как Beagle заключается в том, что отдельные выводы устанавливаются по-разному для разных целей. Вывод можно использовать, например, для I2C или для GPIO.   -  person Anne van Rossum    schedule 06.03.2013
comment
@ondervloei: я полагаю, я спрашивал о мультиплексировании контактов. Из документации ядра я понимаю, что это мультиплексирование связано с настройкой параметров gpio и включением всех подтягиваний или подтягиваний. Может быть, это то, что мне нужно было знать. Дайте мне знать, если есть что-то еще, чтобы знать?   -  person Narain    schedule 06.03.2013
comment
да, это то, что я, как встроенный парень, понимаю под мультиплексированием контактов, см. также lw.net, где они описывают подсистема управления контактами. Если конкретное устройство использует контакт для нескольких целей в зависимости от какого-либо режима устройства, я могу предположить, что задействовано дополнительное мультиплексирование, но маловероятно, что физическая плата переключается с тактовой линии, например, на управление светодиодом.   -  person Anne van Rossum    schedule 06.03.2013
comment
Вам нужно будет посмотреть в таблице данных конкретный процессор, который управляет этими GPIO. Выводы GPIO (ввод-вывод общего назначения) часто имеют альтернативные функции. Например, некоторые из них могут быть настроены для управления шиной I2C, SPI или USB или настроены как определенные прерывания.   -  person Peter L.    schedule 08.03.2013
comment
@ПитерЛ. Да, я знал, что GPIO настроены по-разному для разных целей, как вы сказали. Но я хочу знать о мультиплексировании GPIO. Скажите, если я использую один gpio (GPIO_XYZ_INT) в качестве вывода прерывания, должен ли я переконфигурировать этот gpio во время событий приостановки/возобновления, и если да, то как?   -  person Narain    schedule 08.03.2013
comment
@Narain, не уверен, как обрабатывать приостановку / возобновление, но подозреваю, что процессор сохранит эти настройки регистра. Возможно, вам придется настроить и другие регистры, чтобы включить правильное поведение прерывания. Вы смотрели, как другие драйверы обрабатывают прерывания GPIO? Ваш код реализован в Linux? Генерируются ли какие-либо прерывания для GPIO? (# cat /proc/interrupts в Linux)   -  person Peter L.    schedule 08.03.2013


Ответы (2)


Gpio TLMM Предоставляет один вывод GPIO, который можно использовать для нескольких функций, поэтому можно настроить этот вывод gpio для любой функции, указанной в таблице данных/схеме. когда система собирается приостановить работу, все gpio будут настроены в соответствии с их состоянием низкого энергопотребления, чтобы уменьшить ток утечки. и если gpio настроен как прерывание, которое можно активировать, когда система находится в спящем режиме, тогда этот мониторинг прерывания gpio переключится с обычного владельца gpio на всегда включенный блок управления питанием.

person user2361436    schedule 08.05.2013

Функция, о которой вы спрашиваете, обычно не называется мультиплексированием. Чтобы включить приостановку/возобновление работы GPIO, у вас должны быть interrupt возможности на GPIO. Затем вы можете пометить этот interrupt как способный к пробуждению. Вы делаете это с помощью irq_set_irq_wake(), а gpio_to_irq() помогает. Базовый gpio, а также драйвер Linux должны поддерживать это; На самом деле это не драйвер, а экземпляр подсистемы gpio для вашей платформы.

Если интересующий вас драйвер не использует эти функции, то это нестандартное использование Linux, и вам необходимо указать нам соответствующий источник драйвера.

См. также: LWN pinctrl, документ Linux gpio, привязки дерева устройств pinctrl+gpio

person artless noise    schedule 16.03.2013