Отображение дерева устройств Linux на оборудование - PullRequest
0 голосов
/ 27 ноября 2018

Мне было интересно, как некоторые конкретные детали в устройстве относятся к аппаратному обеспечению и где найти эту информацию (например, схему, таблицу данных и т. Д.).

Пример узла usb приведен ниже: enter image description here

На картинке выше мне было интересно, как найти CLK_BUS_OHCI2 или RST_BUS_EHCI2 на оборудовании.Если вы перейдете к включаемым файлам, вы получите значение (CLK_BUS_OHCI2 = 39), но я не уверен, как это относится к реальному оборудованию.Как какой регистр или какой пин и т. Д.

1 Ответ

0 голосов
/ 28 ноября 2018

Ну, насколько мне известно, в приведенной ниже структуре

ehci2: usb@01c1c000 {
            compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
            reg = <0x01c1c000 0x100>;
            interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&ccu CLK_BUS_EHCI2>, <&ccu CLK_BUS_OHCI2>;
            resets = <&ccu RST_BUS_EHCI2>, <&ccu RST_BUS_OHCI2>;
            phys = <&usbphy 2>;
            phy-names = "usb";
            status = "disabled";
        };

clocks = <&ccu CLK_BUS_EHCI2>, <&ccu CLK_BUS_OHCI2>; представляет часы потребителя, т. Е. Входные часы, и называется "парами спецификаторов Phandle + Clock".Как вы упомянули, CLK_BUS_OHCI2 имеет значение 39, это означает, что USB-контроллер будет получать входные часы с выхода 39 из ccu источника синхронизации.

В файле dtsi, где вы разместили приведенный выше снимок экрана, должно бытьструктура, которая определяет ccu, например, как это показано ниже:

ccu: clk@01c20060 {
            #clock-cells = <1>;
            compatible = "allwinner,sun7i-a20-ahb-gates-clk";
            reg = <0x01c20060 0x8>;
            clocks = <&ahb>;
            clock-output-names = "ahb_usb0", "ahb_ehci0",
                "ahb_ohci0", "ahb_ehci1", "ahb_ohci1",
                "ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
                "ahb_mmc1", "ahb_mmc2", "ahb_mmc3", "ahb_ms",
                "ahb_nand", "ahb_sdram", "ahb_ace",
                "ahb_emac", "ahb_ts", "ahb_spi0", "ahb_spi1",
                "ahb_spi2", "ahb_spi3", "ahb_sata",
                "ahb_hstimer", "ahb_ve", "ahb_tvd", "ahb_tve0",
                "ahb_tve1", "ahb_lcd0", "ahb_lcd1", "ahb_csi0",
                "ahb_csi1", "ahb_hdmi1", "ahb_hdmi0",
                "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0",
                "ahb_de_fe1", "ahb_gmac", "ahb_ehci2",
                "ahb_mali";
        };

В приведенной выше структуре есть несколько выходов источника синхронизации, поэтому источник 39 синхронизации должен использоваться вышеприведенным контроллером USB для приема входа синхронизации, обратите внимание, что #clock-cells = <1>; представляет выходной сигнал с несколькими тактовыми сигналами, а #clock-cells = <0>; - для выходного сигнала с одной тактовой частотой.
Структура ccu является лишь примером.

...