Доброго времени суток!
Пытаюсь адаптировать linux 3.6 под выпускаемый starterkit-ом dev board.
Ядро беру от суда - https://github.com/Freescale/linux-mainline
Там вроде есть адаптация под mxs ms-23 это dev board типа olinuxino или что-то вроде.
Задача заключается в том, чтобы переключить ssp1 на ssp2.
При компиляции нативного исходника после загрузки ядра на pin 90 define MX23_PAD_SSP1_SCK__SSP1_SCK выдается частота 400KHz .... Я попытался подправить исходник match-mx23.c так, чтобы ssp1 переключился на ssp2. Однако после всех моих попыток частота с pin 33 define MX23_PAD_GPMI_WRN__SSP2_SCK так и не пошла...
Прилагаю к теме мой исправленный архив с файлами match-mx23.c, config, а так же log загрузки ядра. http://zalil.ru/33871168
Помогите дельным советом, куда копать? Что нужно в ядре править еще, чтоб mmc начала работать через ssp2?
если в системе могут быть несколько интерфейсов, то обычно пины к ним, инициализация и блоки регистров прописывает в однотипных структурах..
посмотрите в соседних файлах с бордами, может где есть готовый пример - копипастите оттуда нужные блоки, проверяете пины и пробуете вызовы.. что-то типа
register_platform_device(&указатель на структуру)..
или
register_platform_device_ssp(&указатель на структуру)..
Почему-то не смог найти нужные примеры для копипаста. Пытаюсь разобраться сам, почему же не генерится CLK на выход. По ДШ клок на ssp1 и ssp2 поступает один и тот же, а далее уже все зависит от настройки регистров самого ssp.
Инициализация интерфейса происходит в файле mxs-mmc.c. Так вот, в связи с этим вопрос = Как можно посмотреть содержимое регистров настройки ssp2 после инициализации (загрузки драйвера в ядре)?
не смотрел как организована раздатка тактовой в Imx233, но предполагаю типовую..
внутренний клок подается на узел sspX через бит разрешения в регистре блока синхронизации, далее интятся пины и разрешается работа узла ssp через бит в регистре соответствующего ssp..
если из ядра смотреть, то проще всего в файле борды и теле функции xx_probe драйвера ssp*.c выводить дамп регистров в консоль. потом смотреть в мануале на АРМ - все ли правильно..
если из юзерспейса, то пишете прожку на 10 строк в Си - mmap нужный блок регистров и вывод на консоль - в качестве образца можно взять сорц из темы о ногодрыгание АРМов и поправить адреса блоков регистров и доступ под свой АРМ..
Кто-нибудь пробовал запустить USB на imx233 для ядра 3.6?
Там есть драйвер mxs-phy.c...в папке /drivers/usb/otg/ ... пытаюсь его вкомпилить в ядро, но при загрузке среди сообщений от usbcore нет сообщения о том, что он подгрузил "mxs_phy".
И вообще в ядре как-то не видно, чтобы использовались функции этого драйвера, а ведь там как раз конфигурация физики usb происходит...как-то странно все это.
Может кто-нибудь мне объяснит, как такое может быть? может я чего-то не понимаю?
Хм...я вообще-то брал 3.6 от Freescale...конечно оно может отличаться от ванильного...но суть не в этом.
С kernel.org взял ванильное ядро 3.7-rc2 ... после сборки в консоль вываливает такое
Т.е. в регистре записана правильная информация про ID платы...и она соответствует #define MACH_TYPE_MX23EVK 2629 в файле /include/generated/mach-types.h