LINUX.ORG.RU

Отключить устройство i2c устройство в device tree

 ,


0

1

Здравствуйте.

Есть устройство. К i2c подключено три gpio контролера mcp23017 . Они прописанный в device tree .

Нужно отключить два из трех контролеров mcp23017. Разобрался, что можно внести изменения в dtb файл с помощью fdtput.

Подскажите что лучше поправить в dtb что бы отключить . Сейчас выглядит так:

                mcp23017@20 {
                        compatible = "microchip,mcp23017";
                        gpio-controller;
                        #interrupt-cells = <0x2>;
                        interrupt-parent = <0xe>;
                        interrupts = <0xb 0x2>;
                        microchip,irq-mirror;
                        reg = <0x20>;
                        #gpio-cells = <0x2>;
                        interrupt-controller;
                };

                mcp23017@21 {
                        compatible = "microchip,mcp23017";
                        gpio-controller;
                        #interrupt-cells = <0x2>;
                        interrupt-parent = <0xe>;
                        interrupts = <0xc 0x2>;
                        microchip,irq-mirror;
                        reg = <0x21>;
                        #gpio-cells = <0x2>;
                        interrupt-controller;
                };

изменить compatible или есть какие варианты получше ?

можно при загрузке модуля (modprobe gpio_mcp23s08) указать что бы только определенные mcp23017 добавились а не все которые в device tree ?


Ответ на: комментарий от psm666

status="okay" и status="disabled" пробовали? Первое включает, второе отключает.

Но это имеет смысл до загрузки модуля, конечно.

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

спасибо. как раз то что нужно.

еще пробовал через udev (т.к. dtb файл править плохо и можно окирпичить устройство), добавлял такое правило:

SUBSYSTEM==«gpio», ENV{OF_FULLNAME}==«/i2c@0/mcp23017@22», OPTIONS==«ignore_device»

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

psm666
() автор топика

по идее должно быть прописано что то вроде

 status = okay или disable 
, попробуй пропиши, перекомпилируй dtc и проверь

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

dtb файл не правится, он сначала в dts перекомпиляется

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

Udev решает, какие модули загружать, но не решает, к каким устройствам сбиндится драйвер, содержащийся в модуле.

Анбиндить драйвер от устройства можно вручную

cd /sys/bus/i2c/drivers/mcp23017
ls -l
echo mcp23017@22 > unbind

Cd перейдёт в каталог управления драйвером. Ls покажет список устройств, к которым сбинден драйвер. Echo отвяжет драйвер от указанного устройства. В названиях шины, драйвера и устройства я мог конечно ошибиться, не надо копипастить тупо.

iliyap ★★★★★
()
Последнее исправление: iliyap (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.