Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Embedded Linux
Проблемы с MCI в 3.10
berg
Добавлено 01.01.2014 20:24
0
Сообщение: 1
berg
0

Пункты: 161
Регистрация: 30.12.2013
Доброго нового года всем!

Решил поковырять запылившуюся K-MAT91SAM9XE512 с новыми ядрами и натолкнулся на стенку в
виде неработающего MCI с SD или MMC картами. Сам драйвер работает, но определить ни одну карту не может.


лог dmesg

лог дебага с извлечением/вставкой карты

Сразу напрягли сообщения типа:
Код

[ 438.340000] mmc0: mmc_rescan_try_freq: trying to init card at 400000 Hz
[ 438.430000] mmc0: mmc_rescan_try_freq: trying to init card at 300000 Hz
[ 438.520000] mmc0: mmc_rescan_try_freq: trying to init card at 200000 Hz
[ 438.630000] mmc0: mmc_rescan_try_freq: trying to init card at 195313 Hz

начал ковырять в эту сторону и что только не менял и предопределение массива частот в /drivers/mmc/core/core.c
и вычисление делителя от мастер клока (смущала последняя частота в 195313 Hz), все безуспешно.
Все, что гуглилось так или иначе было связано с частотой опроса при инициилизации карты (SD/MMC), но ничего
конкретного так и не нашлось.

Конфиг по части MMC/SD оригинальностью не отличается:

Код

CONFIG_MMC_ATMELMCI=y
CONFIG_MMC=y
CONFIG_MMC_DEBUG=y
CONFIG_MMC_CLKGATE=y
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_ATMELMCI=y


Может кто-то уже пытался справиться с этим?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 01.01.2014 23:52 Редактировалось 01.01.2014 23:54 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
у меня есть 9260 (брат xe512) на 3.6.0, в логе:
Код
root@arm9260:~# zcat /proc/config.gz |grep MMC
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
CONFIG_MMC_CLKGATE=y
# MMC/SD/SDIO Card Drivers
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_MINORS=8
CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_MMC_TEST is not set
# MMC/SD/SDIO Host Controller Drivers
# CONFIG_MMC_SDHCI is not set
# CONFIG_MMC_SDHCI_PXAV3 is not set
# CONFIG_MMC_SDHCI_PXAV2 is not set
CONFIG_MMC_AT91=y
# CONFIG_MMC_ATMELMCI is not set
# CONFIG_MMC_DW is not set
# CONFIG_MMC_VUB300 is not set
# CONFIG_MMC_USHC is not set


Код
root@arm9260:~# dmesg |grep mmc
Kernel command line: mem=64M console=ttyS0,115200 rw rootwait root=/dev/mmcblk0p2
Waiting for root device /dev/mmcblk0p2...
mmc0: SD Status: Invalid Allocation Unit size.
mmc0: card lacks mandatory switch function, performance might suffer.
mmc0: host does not support reading read-only switch. assuming write-enable.
mmc0: new SD card at address b368
mmcblk0: mmc0:b368 SDC 976 MiB
mmcblk0: p1 p2 p3
EXT3-fs (mmcblk0p2): warning: maximal mount count reached, running e2fsck is recommended
EXT3-fs (mmcblk0p2): using internal journal
EXT3-fs (mmcblk0p2): recovery complete
EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
Adding 92732k swap on /dev/mmcblk0p3. Priority:-1 extents:1 across:92732k SS


если убрать опцию:
Код
CONFIG_MMC_ATMELMCI=y

и взвести
Код
CONFIG_MMC_AT91=y

не поможет, то смотрите настройку для mmc в файле борды - там есть отличие от оригинальной -EK..
и карточку, если в стандарте sdhc, то лучше попроще поискать и поставить..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
berg
Добавлено 02.01.2014 06:08 Редактировалось 02.01.2014 06:20 Сообщение: 3
berg
0

Пункты: 161
Регистрация: 30.12.2013
Привет.

Опцию CONFIG_MMC_ATMELMCI не убрать, т.к. в 3.10 ветке она заменяет CONFIG_MMC_AT91 и все прочие, но проблема, как выяснилось, не в ней. Вы задали верное направление для
поиска.

В итоге, чуть подправил файл борды:
- вырезал инициализацию кнопок и диодов, которых нет, но которые занимают нужные для MCI ноги
- и самое главное, поправил в arch/arm/mach-at91/board-sam9260ek.c .slot[1] на .slot[0]
Код

static struct mci_platform_data __initdata ek_mci0_data = {
.slot[0] = {
.bus_width = 4,
.detect_pin = AT91_PIN_PA4,
},
};

до этого там был слот 1, который распинован по схеме на датафлэш (по описанию в at91sam9260_devices.c).
По этому при инициализации MCI тупил и не мог ничего найти, т.к. пытался дергать не то, что нужно. Теперь все заработало.

board файл
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux