LINUX.ORG.RU

Не понимаю device tree

 


1

2

Есть плата на основе at91, а именно sk-9g45 от starterkit. На ней стоит ethernet phy ksz8721. Этот phy надо затактировать от at91. В u-boot это делается из кода и довольно просто:

writel(0, &pmc->pck[1]);
writel(0x100,    &pmc->pck[1]);
writel(AT91_PMC_PRES_16 | AT91_PMC_CSS_PLLA, &pmc->pck[1]);
writel(AT91_PMC_PCK1, &pmc->scer);
at91_set_b_periph(AT91_PIO_PORTE, 31, 1);

Но в линуксе решили, что board файлы это прошлый век и надо модно-молодежный device tree. И я вот что-то не могу понять, как надо делать это в device tree.

Я пробую сделать вот так:

macb0: ethernet@fffbc000 {
                                phy-mode = "mii";
                                status = "okay";
                                phy-handle = <&ethernet_phy0>;
                                mdio {
                                        ethernet_phy0: ethernet-phy@0 {
                                                reg = <1>;
                                                device_type = "ethernet-phy";
                                                clocks = <&pck1>;
                                                assigned-clocks = <&pck1>;
                                                assigned-clock-rates = <25000000>;
                                                pinctrl-names = "default";
                                                pinctrl-0 = <&pinctrl_pck1_as_phy_clk>;
                                        };
                                };
                        };

и далее

ethernet_phy0 {
                                        pinctrl_pck1_as_phy_clk: pck1_as_phy_clk-0 {
                                                atmel,pins = <AT91_PIOE 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;    /* PE31 periph B*/
                                        };
                                };

но что то безрезультатно

★★★★★

Начни с поиска в коде места где читаются эти значения. Что-то вроде …read_dt. Там нет ничего хитрого. В дтб пишешь свои значения в ноды, а в драйвере вычитываешь нужные тебе значения и распихиваешь по регистрам и переменным.

yax123 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.