Да, действительно. Там, насколько я понял, 12МГц. А где в исходниках можно выставить другой divider, чтобы получить 24МГц? Я смотрел linux-custom/arch/arm/mach-imx/clk-imx6q.c, но не нашёл.
И после этого я всё ещё не понял, как задать частоту, не задавая для этого целый аудиокодек.
Просто кодек убираете из описания DTS и все - по умолчанию CLKO2 настроен на 24 МГц
/*
* Let's initially set up CLKO with OSC24M, since this configuration
* is widely used by imx6q board designs to clock audio codec.
*/ ret = clk_set_parent(clk[cko2_sel], clk[osc]);
И после этого я всё ещё не понял, как задать частоту, не задавая для этого целый аудиокодек.
Просто кодек убираете из описания DTS и все - по умолчанию CLKO2 настроен на 24 МГц
/*
* Let's initially set up CLKO with OSC24M, since this configuration
* is widely used by imx6q board designs to clock audio codec.
*/ ret = clk_set_parent(clk[cko2_sel], clk[osc]);
А вот это очень странно: как раз &codec у меня был убран, и осциллографом я видел ровную землю на контакте. Добавил &codec обратно и выставил в нём 24 МГц - увидел 24 МГц осциллографом
Так клок включить надо - в драйвере сенсора или CSI (надо смотреть и проверять) должен быть код для включения/отключения тактирования сенсора, а "на коленке" чтобы проверить - попробуйте в clk-imx6q включить после переключения частоты
ret = clk_set_parent(clk[cko2_sel], clk[osc]);
if (!ret)
ret = clk_set_parent(clk[cko], clk[cko2]);
if (ret)
pr_warn("failed to set up CLKO: %d\n", ret);