Цитата(des333 @ Feb 16 2016, 12:32)

Имеет значение то, какие драйвера сейчас загружены.
Есть ли среди них использующие эту I2C шину.
Что-то я не понял Вашу мысль...
Если не загружено ни одного драйвера, использующего нашу шину, каким образом пользовательская программа сможет обратиться к устройству на этой шине???
Вот, например, у меня в устройстве в ядре присутствует один из драйверов из
drivers/i2c/busses/. Пользовательские программы с его помощью (используя ioctl) обращаются к устройствам на шине. Если на момент обращения шина свободна, выполняется запрошенная операция. Если же на момент обращения шина занята (на шине присутствует другой мастер, который в данный момент выполняет операцию), наше устройство будет ждать освобождения шины, после чего начнет выполнять запрошенную операцию. Если другой мастер в этот момент захочет выполнить новую операцию, он будет ждать, когда завершится наша. Таким образом, несколько мастер-устройств вполне могут совместно использовать одну и ту же шину. И только в случае, если один из мастеров занял шину и не освобождает длительное время (например читает одной операцией большой объем данных или вообще завис), другой мастер получить доступ к шине не сможет. В этом случае ioctl вернет ошибку (timeout). Вот как-то так... Кстати, удерживать шину в занятом состоянии может и slave-устройство...
Цитата(Метценгерштейн @ Feb 16 2016, 14:30)

Вопрос в том, что если шина i2cdetect -y 0
UU на ней, то ioctl запись ругается- пишет, но читает опять старые значения
Не понял... ioctl при попытке записи возвращает -1? Что при этом в errno?