Beaglebone black изменить дерево устройств am335x-boneblack.dts по умолчанию

Мне нужно изменить стандартную конфигурацию pinmuxing на BBB. Для этого я пытаюсь модифицировать am335x-boneblack.dts перед перекомпиляцией ядра. Но этот файл очень неудобный. Я нашел только информацию о наложении, но мне нужно, чтобы это было по умолчанию, а не наложение.

Это, например, pinmuxing, который я использую для определения ввода-вывода TOR с наложением DT:

    pinctrl_test: pinctrl_test_0_pins {
    pinctrl-single,pins = <
        0x078 0x07 /* P9_12 OUTPUT | MODE7 | PULLDOWN */
        0x048 0x07 /* P9_14 OUTPUT | MODE7 | PULLDOWN */
        0x040 0x07 /* P9_15 OUTPUT | MODE7 | PULLDOWN */
        0x04c 0x07 /* P9_16 OUTPUT | MODE7 | PULLDOWN */
        0x15c 0x07 /* P9_17 OUTPUT | MODE7 | PULLDOWN */
        0x158 0x07 /* P9_18 OUTPUT | MODE7 | PULLDOWN */
        0x044 0x07 /* P9_23 OUTPUT | MODE7 | PULLDOWN */
        0x1ac 0x07 /* P9_25 OUTPUT | MODE7 | PULLDOWN */


        0x030 0x27 /* P8_12 INPUT | MODE7 | PULLDOWN */
        0x024 0x27 /* P8_13 INPUT | MODE7 | PULLDOWN */
        0x028 0x27 /* P8_14 INPUT | MODE7 | PULLDOWN */
        0x03c 0x27 /* P8_15 INPUT | MODE7 | PULLDOWN */
        0x038 0x27 /* P8_16 INPUT | MODE7 | PULLDOWN */
        0x02c 0x27 /* P8_17 INPUT | MODE7 | PULLDOWN */
        0x08c 0x27 /* P8_18 INPUT | MODE7 | PULLDOWN */
        0x020 0x27 /* P8_19 INPUT | MODE7 | PULLDOWN */
    >;
};

Каков правильный синтаксис для редактирования основного DT и вывода регистрации для TOR I/O, ANA... После этого цель состоит в том, чтобы разработать драйвер, способный читать/записывать на высокой скорости (используя регистр) на разных входах/выходах. выход.

Спасибо.


person Eklypse    schedule 17.08.2015    source источник
comment
Зачем вам нужно редактировать это для драйвера? AFAIU, вы просто запрашиваете линию GPIO в своем драйвере и используете ее исключительно.   -  person 0andriy    schedule 17.08.2015
comment
Спасибо за ваш ответ, что вы подразумеваете под запросом GPIO, можете ли вы привести пример синтаксиса? #include <linux/gpio.h> gpio_request(gpioLED, "LED"); Но, например, если вывод уже используется HDMI, я не могу запросить его в моем драйвере, не так ли? Мне нужно переназначить большинство контактов.   -  person Eklypse    schedule 18.08.2015
comment
После 2 часов чтения документов и страниц схем, поэтому для HDMI нет проблем, он не запускается при загрузке, если HDMI не подключен, единственный контакт, который может вызвать проблемы, - это GPIO3_21 (часы для HDMI). Мне нужно отключить осциллятор для использования вывода (mcasp0)   -  person Eklypse    schedule 18.08.2015


Ответы (1)


Я попытался написать свой am335x-boneblack.dts, удалил все, что связано с HDMI, изменил включение на am335x-bone-common-no-capemgr.dtsi:

/*
 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
/dts-v1/;

#include "am33xx.dtsi"
#include "am335x-bone-common-no-capemgr.dtsi"

/ {
    model = "TI AM335x BeagleBone Black";
    compatible = "ti,am335x-bone-black", "ti,am335x-bone", "ti,am33xx";
};

&ldo3_reg {
    regulator-min-microvolt = <1800000>;
    regulator-max-microvolt = <1800000>;
    regulator-always-on;
};

&mmc1 {
    vmmc-supply = <&vmmcsd_fixed>;
};

&mmc2 {
    vmmc-supply = <&vmmcsd_fixed>;
    pinctrl-names = "default";
    pinctrl-0 = <&emmc_pins>;
    bus-width = <8>;
    status = "okay";
};

&am33xx_pinmux {

    tor_output_pins: tor_output_pins {
        pinctrl-single,pins = <
            0x078 0x07 /* P9_12 OUTPUT | MODE7 | PULLDOWN */
            0x048 0x07 /* P9_14 OUTPUT | MODE7 | PULLDOWN */
            0x040 0x07 /* P9_15 OUTPUT | MODE7 | PULLDOWN */
            0x04c 0x07 /* P9_16 OUTPUT | MODE7 | PULLDOWN */
            0x15c 0x07 /* P9_17 OUTPUT | MODE7 | PULLDOWN */
            0x158 0x07 /* P9_18 OUTPUT | MODE7 | PULLDOWN */
            0x044 0x07 /* P9_23 OUTPUT | MODE7 | PULLDOWN */
            0x1ac 0x07 /* P9_25 OUTPUT | MODE7 | PULLDOWN */
        >;
    };

    tor_input: tor_input {
        pinctrl-single,pins = <
            0x030 0x27 /* P8_12 INPUT | MODE7 | PULLDOWN */
            0x024 0x27 /* P8_13 INPUT | MODE7 | PULLDOWN */
            0x028 0x27 /* P8_14 INPUT | MODE7 | PULLDOWN */
            0x03c 0x27 /* P8_15 INPUT | MODE7 | PULLDOWN */
            0x038 0x27 /* P8_16 INPUT | MODE7 | PULLDOWN */
            0x02c 0x27 /* P8_17 INPUT | MODE7 | PULLDOWN */
            0x08c 0x27 /* P8_18 INPUT | MODE7 | PULLDOWN */
            0x020 0x27 /* P8_19 INPUT | MODE7 | PULLDOWN */
        >;
    }; 

};

&ocp{
    torout: torout  {
        pinctrl-names = "default";
        pinctrl-0 = <&tor_output_pins>;
        status = "okay";
    };

    torin: torin    {
        pinctrl-names = "default";
        pinctrl-0 = <&tor_input_pins>;
        status = "okay";
    };
};

Загрузка с uboot через TFTP:

tftpboot 0x80F80000 am335x-bone-custom.dtb
tftpboot 0x80007FC0 uImage-BBB

Затем посмотрите на конфигурацию контактов:

root@arm:~# cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins|grep 95c
pin 87 (44e1095c.0) 00000062 pinctrl-single

Должен выводиться:

pin 87 (44e1095c.0) 00000007 pinctrl-single

Почему изменения не вступили в силу? Я что-то пропустил?

person Eklypse    schedule 18.08.2015
comment
Замена части &ocp{..} на: &gpio3 { torout0 { gpio-hog; gpios = <107 0>; output-low; line-name = "TOR input"; }; }; Все еще не работает... никаких изменений в конфигурации по умолчанию pinctrl... i2c2 отключен, но MODE7 OUTPUT/INPUT неправильно настроен в pinmux... - person Eklypse; 18.08.2015