blindman писал(а):Легко. Ядро держит буфер только при чтении, и только для повторяющего регистра. При записи и при смене регистра для чтения буфер сбрасывается, и драйверу передается флаг, получив который он сбрасывает свой буфер. На каждый драйвер нужно держать небольшой буфер (в самом драйвере) - это мы уже решили. Буфер нужен только один, при смене регистра из которого читаем он все равно сбросится
Всё бы ок, если бы опять не этот злосчастный повторяющийся регистр

blindman писал(а):Еще раз : как драйвер узнает к какому регистру обращение, если ему передано FF?
А зачем ему знать? У него в буфере инфа, он её выдаёт.
blindman писал(а):Я предлагаю передавать номер регистра с установленным старшим битом, если это новый запрос, и сброшенным - если продолжение
Это значит регистров сразу в 2 раза меньше себе сделали, при том что реально это нужно будет в единичных случаях и реально в 90% драйверов не надо будет длинные ответы возвращать, всё будет умещаться в 20 байтный буфер.
Добавлено спустя 40 секунд:Vooon писал(а):Мне вот только остается не ясным как формировать NAck в конце чтения будешь?
Может не нужно придумывать все это шаманство с буферами?
Нужно, но в разумных пределах

я предлагаю продолжать чтение только если не было обращения к этому же контроллеру по другим или этому же регистру.