Уточните пожалуйста о каком контроллере идёт речь.
По спецификации на системный контроллер проверьте еще раз внимательно базовый адрес регистров GPIO. (Указывается либо полный адрес, либо это может быть смещение от начала области регистров контроллера.) Проверьте состояние регистров мультиплексирования (MUX или т.п.) и направление регистров (GPIO Direction), установлены-ли они на чтение.
По получению доступа к регистрам - при чтении подставляете в функцию in32 адрес, полученный от mmap()?
base_addr = mmap_device_io(<4K>, <GPIO address>);
value = in32(base_addr+offset);
Да, подставляю в функцию in32 адрес, полученный от mmap(). В примере, не совсем точно это описал, виноват. Вопрос смог решить тем, что просмотрев код для watchdog timer увидел использование функции mmap_device_memory(). При замене на указанную функцию и использовании GPIO3, а не GPIO0 смогли заметить изменение значение регистра. За помощь спасибо.