Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:4
Форум » starterkit.ru » Отладочные платы » Hola(Duo)-PC
И опять SPDIF
xaba
Добавлено 23.02.2014 14:10 Редактировалось 23.02.2014 16:50
0
Сообщение: 1
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
По мануалу SPDIF_IN1 можно вывести на несколько выводов

Input Select (DAISY) Field
Selecting Pads Involved in Daisy Chain.
00 EIM_DATA21_ALT7 — Selecting ALT7 mode of pad EIM_D21 for SPDIF_IN.
01 ENET_RX_ER_ALT3 — Selecting ALT3 mode of pad ENET_RX_ER for SPDIF_IN.
10 GPIO16_ALT4 — Selecting ALT4 mode of pad GPIO_16 for SPDIF_IN.
11 KEY_COL3_ALT6 — Selecting ALT6 mode of pad KEY_COL3 for SPDIF_IN.

GPIO16 занят AN8720A-CP-TR
KEY_COL3 занят HDMI_SCL
EIM_DATA21 настроен на SPI1_CLK

ENET_RX_ER не могу найти на схеме.
Что это и куда оно идет?

И второй вопрос, главный. Пытаюсь разобраться в ядре и не пойму.
Редактирую файл board-mx6q_sabrelite.c,
настроил SPDIF_IN1 на пин MX6DL_PAD_EIM_D21__SPDIF_IN1 и SPDIF_OUT на MX6DL_PAD_GPIO_17__SPDIF_OUT1 в структуре mx6dl_sabrelite_pads.
В ядре SPDIF включил.
В итоге никакого эффекта нет.

Может что ещё забыл настроить?

Хм... как оказалось пины пинами, но вот дальше нет инициализации нет структуры под SPDIF. Куда копать?

В общем добавил структуру:
.......
static struct mxc_spdif_platform_data mxc_spdif_data = {
.spdif_tx = 1, /* enable tx */
.spdif_rx = 1, /* enable rx */
.spdif_rx_clk = 0, /* rx clk from spdif stream */
.spdif_clk = NULL, /* spdif bus clk */
};
.......
и инициализацию:
.......
mxc_spdif_data.spdif_core_clk = clk_get_sys("mxc_spdif.0", NULL);
clk_put(mxc_spdif_data.spdif_core_clk);
imx6q_add_spdif(&mxc_spdif_data);
imx6q_add_spdif_dai();
imx6q_add_spdif_audio_device();
......

вывод dmesg

[ 1.539709] mxc_hdmi_soc mxc_hdmi_soc.0: MXC HDMI Audio
[ 1.544999] mxc_spdif mxc_spdif.0: MXC SPDIF Audio
[ 1.551254] asoc: mxc-spdif <-> imx-spdif-dai.0 mapping ok
[ 1.558542] asoc: mxc-hdmi-soc <-> imx-hdmi-soc-dai.0 mapping ok
[ 1.565391] ALSA device list:
[ 1.568433] #0: imx-spdif
[ 1.571228] #1: imx-hdmi-soc

Осталось только проверить, что и сделаю надеюсь скоро)
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.02.2014 19:19 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
ENET_RX_ER не могу найти на схеме.
Что это и куда оно идет?

по поводу RX_ER делаем поиск в Document Number: IMX6SDLCEC Data Sheet: Technical Data
читаем:
ENET_RX_ER W23 NVCC_ENET GPIO ALT5 ENET_RX_ER
т.е. шар W23
по остальному не вчитывался - а поиск по соседним файлам что-нить полезное дал?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.02.2014 19:34 Сообщение: 3
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
для проверки функционирования пинов можно попробовать завернуть входной сигнал на выход, согласно:
Код
The SPDIF receiver also provides a bypass option for direct
transfer of the SPDIF input signal to the SPDIF transmitter.

т.е. поискать в блоке регистров бит, после дерганья которого, поток со входа можно посмотреть осциллом на выходе, ну или послушать через усилитель..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 23.02.2014 22:10 Редактировалось 23.02.2014 22:18 Сообщение: 4
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Цитата
Цитата
ENET_RX_ER не могу найти на схеме.
Что это и куда оно идет?

по поводу RX_ER делаем поиск в Document Number: IMX6SDLCEC Data Sheet: Technical Data
читаем:
ENET_RX_ER W23 NVCC_ENET GPIO ALT5 ENET_RX_ER
т.е. шар W23
по остальному не вчитывался - а поиск по соседним файлам что-нить полезное дал?


По поводу ENET_RX_ER не совсем ясно, но думаю понимание скоро придет))
Но не это главное. Важен второй вопрос.
В данный момент нет осциллографа. На работе завтра получится.
Пробовал так
madplay /etc/start.mp3
И молчание...в смысле виснет madplay (
У меня такое ощущение что я что то не доделал.

ЗЫ В других файлах я и взял этот код. А точнее из файла board-mx6q_sabreauto.c
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 23.02.2014 23:34 Сообщение: 5
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
По поводу ENET_RX_ER не совсем ясно, но думаю понимание скоро придет))

а какой момент непонятен? там вроде всё прозрачно о том, как привязать к номеру копыта АРМа имя базовой функции или альтернативной.. достаточно иметь два pdf с их сайта..

Цитата
Пробовал так
madplay /etc/start.mp3

не очень понял - а куда, собственно, должен играть madplay? возможно надо поискать программный ключ для вывода аудиопотока в нужный канал.. (теоретизирую, т.ч. могу и подвирать)

Цитата
И молчание...в смысле виснет madplay (
У меня такое ощущение что я что то не доделал.

у этих паразитов с фрискейла в куче мест стоит проверка на имя АРМа и то, что валидно для imx6q может тупо обходится на imx6s..
в моем понимании, если ножки указанны правильно, тактовая разрешена и узел правильно прописан, то всё должно работать..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 25.02.2014 19:21 Редактировалось 26.02.2014 07:00 Сообщение: 6
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
И так по пунктам.
1. Помните себя в первый раз или второй когда вы заглядываете в технический документ...уже не говорю про то что там по английски. Я стараюсь разобраться, но большая часть не понятна. вот поэтому я и говорю что понимание скоро придет. Именно этот документ мне сложно пока читать. Английский на 3-ку знаю)))

2. Madplay & aplay стал проигрывать файлы в imx-spdif, но я пока на слух не слышал и осциллограф на зло увезли.

3. Похоже я опять лапухнулся с SPDIF IN БЕДАААА
В мануале следующее...
The Sony/Philips Digital Interface (SPDIF) module is a stereo that allows the processor
transmit digital audio over it using the IEC60958 standard, consumer format. i.MX
6Solo/6DualLite provides one SPDIF transmitter with one output.

Может ошибся, надеюсь!!!
Я могу забыть про этот вход ?

4. Как все было...
Структура такая вышла. Предыдущая не полная.
static struct mxc_spdif_platform_data mxc_spdif_data = {
.spdif_tx = 1, /* enable tx */
.spdif_rx = 1, /* enable rx */
.spdif_clk_44100 = 1, /* tx clk from spdif0_clk_root */
.spdif_clk_48000 = 1, /* tx clk from spdif0_clk_root */
.spdif_div_44100 = 4, // sets spdif clock to 256 * FS
.spdif_div_48000 = 4, // sets spdif clock to 256 * FS
.spdif_div_32000 = 6, // sets spdif clock to 384 * FS
.spdif_rx_clk = 0, /* rx clk from spdif stream */
.spdif_clk_set_rate = _set_spdif_clk_rate,
.spdif_clk = NULL, /* spdif bus clk */
};

Функция _set_spdif_clk_rate
#define AUDIO_VIDEO_MIN_CLK_FREQ 650000000 ТУт не уверен

static int _set_spdif_clk_rate(struct clk *clk, unsigned long rate) {
struct clk *pll4_audio = clk_get_parent(clk);
int div;
unsigned long rate_actual;

if ( rate * 16 > AUDIO_VIDEO_MIN_CLK_FREQ) {
div = 16;
} else if (rate * 32 > AUDIO_VIDEO_MIN_CLK_FREQ) {
div = 32;
} else if (rate * 64 > AUDIO_VIDEO_MIN_CLK_FREQ) {
div = 64;
} else {
printk("error finding divider\n");
return 0;
}

// set pll4 first which alters the base frequency
clk_set_rate(pll4_audio, rate * div);

// then set spdif0 which only sets the divider
rate_actual = clk_round_rate(clk, rate);
clk_set_rate(clk, rate_actual);

printk("rate: %lu achieved: %lu div: %d\n", rate, rate_actual, div);

return 0;
}

и инициализация
// FIXME
struct clk *mxc_spdif0;
struct clk *pll4;

mxc_spdif0 = clk_get_sys("mxc_spdif.0", NULL);
pll4 = clk_get(NULL, "pll4");
if (IS_ERR(pll4))
printk("error SPDIF clk_get pll4\n");
clk_set_parent(mxc_spdif0, pll4);
mxc_spdif_data.spdif_core_clk = mxc_spdif0;
clk_put(mxc_spdif_data.spdif_core_clk);
imx6q_add_spdif(&mxc_spdif_data);
imx6q_add_spdif_dai();
imx6q_add_spdif_audio_device();
//

Это все на сегодня. Послушаю скажу что да как.

Знающие люди помогите с параметрами и значениями разобраться, нафтыкал что было))

Спасибо за помощь.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.02.2014 20:22 Редактировалось 25.02.2014 21:44 Сообщение: 7
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Я стараюсь разобраться, но большая часть не понятна. вот поэтому я и говорю что понимание скоро придет. Именно этот документ мне сложно пока читать. Английский на 3-ку знаю)))

дак всё придет со временем, английский технический запоминается достаточно просто..
было бы желание, а тут еще и мотивация есть поизучать..

Цитата
6Solo/6DualLite provides one SPDIF transmitter with one output.
Понимаете о чем я?

если честно, то не понимаю.. а что не так?

title

4 пина на вход и 4 на выход - имхо, любую пару можно задействовать.. в чем беда то?


Цитата
#define AUDIO_VIDEO_MIN_CLK_FREQ 650000000
ТУт не уверен

надо смотреть, куда идет это значение.. может все же 65МГц вроде цифра поприятнее и менее страшная..

Цитата
Знающие люди помогите с параметрами и значениями разобраться, нафтыкал что было))

я бы помог, т.б. все исходное железо у меня есть, но к сожалению плотно занят чуть другими направлениями, да и Холой овладел не полностью, а без консоли там "как без рук", да еще добрая душа заблокировала возможность его остановки..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 25.02.2014 22:57 Редактировалось 25.02.2014 23:01 Сообщение: 8
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
А Вы художник)))

Цитата
4 пина на вход и 4 на выход - имхо, любую пару можно задействовать.. в беда то?


И точно, извиняюсь, невнимательный был.

Цитата
надо смотреть, куда идет это значение.. может все же 65МГц вроде цифра поприятнее и менее страшная..


И опять точно НОЛИКОМ ошибся. А хотя...внимательно с лупой вчитываюсь..
Я использую Clock Generation PLL4. clk_get(NULL, "pll4");
18.5.1.3.4
Audio / Video PLL
The audio PLL and video PLL each synthesize a low jitter clock from a 24 MHz
reference clock. The clock output frequency range for this PLL is from 650 MHz to 1.3
GHz. It has a Fractional-N synthesizer.

PLL4 это Audio PLL исходя из этого я могу судить что я прав был изначально?
В функции _set_spdif_clk_rate идет проверка на эту минимальную частоту 650MHz, те ниже частота не может быть для этого PLL4.

Еще нужно разобраться с этими закорючками))
.spdif_div_44100 = 4, // sets spdif clock to 256 * FS
.spdif_div_48000 = 4, // sets spdif clock to 256 * FS
.spdif_div_32000 = 6, // sets spdif clock to 384 * FS
И мооожет быть и получится настроить.

Цитата
я бы помог, т.б. все исходное железо у меня есть, но к сожалению плотно занят чуть другими направлениями, да и Холой овладел не полностью, а без консоли там "как без рук", да еще добрая душа заблокировала возможность его остановки..


Может и когда нибудь доберетесь, а к тому времени скорее всего я и сам пойму что да ка. Все равно спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 26.02.2014 09:57 Редактировалось 26.02.2014 10:53 Сообщение: 9
sasamy
4.70

Пункты: 77331
Регистрация: 14.08.2009
Не пойму - что мешает посмотреть как сделано в других референсах, например тут

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/mach-mx6/board-mx6q_arm2.c?h=imx_3.0.35_4.1.0#n2010

только не берите в качестве примера референсы с solo lite (sl в названии бордфайлов есть) - там немного по-другому инициализация
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 26.02.2014 12:12 Сообщение: 10
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Цитата
Не пойму - что мешает посмотреть как сделано в других референсах, например тут

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/mach-mx6/board-mx6q_arm2.c?h=imx_3.0.35_4.1.0#n2010


В общем так и сделал, только не сразу. Надо же еще дискуссию устроить.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » Hola(Duo)-PC