Есть плата на основе 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 = <ðernet_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*/
};
};
но что то безрезультатно