LINUX.ORG.RU

pcf8574 ошибка драйвера

 , , pcf8574,


0

1

cast ncrmnt

ядро с сайта модуля, 3.10.28, подключен pcf8574,

делаю

# modprobe gpio-pcf857x
# cd /sys/bus/i2c/devices/i2c-2/
# echo "pcf8574 0x23" > new_device

и получаю

[34413.850000] gpiochip_find_base: cannot find free range
[34413.860000] gpiochip_add: gpios -1..6 (pcf8574) failed to register
[34413.870000] pcf857x: probe of 2-0023 failed with error -28
[34413.880000] i2c i2c-2: new_device: Instantiated device pcf8574 at 0x23

с подобным сталкивались на форуме rpi, есть даже ссылка на патч, но она 404.

через i2cset микросхема управляется нормально

upd: насколько я понял, дело в ARCH_NR_GPIOS = 64. Но нельзя ли ее как-то менять динамически, а не перекомпилировать каждый раз?

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 2)

Угу. Дело в том, что подсистема GPIO аллоцирует GPIO с ARCH_NR_GPIOs и вниз. Если увеличить - то все номера GPIO «поплывут» вверх. NR_GPIOs чтобы не было самолетных чисел там выставлен равным количеству GPIO на чипе.

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

Это просто напрашивается на рефакторинг. Надо только понять, как это сделать, чтобы затронуло как можно меньше кода.

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Это я учту, скоро будет доступна капитально отрефакторенная 3.19.х ветка, с замахом на LKML. В принципе, выложить потыкать можно и сейчас, но там нет многих драйверов, в т.ч. NAND

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

А как в новых ядрах, эта проблема пофикшена? Или по прежнему статический массив структур gpio?

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

В апстрим добавить попытаетесь?

Да, будет время - постараюсь заслать. Не все, т.к. easynmc, например, едва ли получится протащить быстро. Но хотя бы базовую систему.

А как в новых ядрах, эта проблема пофикшена? Или по прежнему статический массив структур gpio?

ЕМНИП там так оно и осталось.

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

ЕМНИП там так оно и осталось.

надо будет как-нибудь на досуге поковырять

cvs-255 ★★★★★
() автор топика
18 января 2016 г.

Может быть не в тему, но у меня вопрос тоже про I2C устройства.

Вот на разъёме платы 29,30 пины это SCL3 и SDA3. В /dev есть i2c-0 i2c-1. Чтобы подключить rtc DS1302 к SCL3 и SDA3 надо создать i2c-3 ? А далее

echo ds1338 0x68 > /sys/bus/i2c/devices/i2c-1/new_device

???

edward
()
Ответ на: комментарий от cvs-255

У меня в dts-файле определены только &i2c0 и &i2c2. Непонятно их соответствие i2c-0 i2c-1 находящимся в /dev. В dtsi-файле есть i2c0,i2c1,i2c2,i2c3. Это целых 4 шины i2c.

Для SDA3,SCL3 мне нужно использовать i2c3?

В dts-файле i2c3 обозначить как &i2c3?

Не совсем понял соответствия номеров.

edward
()
Ответ на: комментарий от edward

Копипасти те 2 что есть, поменяй номера только.

cvs-255 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.