Beaglebone черно редактиране по подразбиране am335x-boneblack.dts дърво на устройството

Трябва да променя конфигурацията по подразбиране на pinmuxing на BBB. За целта се опитвам да модифицирам am335x-boneblack.dts преди да компилирам отново ядрото. Но този файл е много неудобен. Намерих информация само за наслагване, но трябва това да е по подразбиране, а не наслагване.

Това е например pinmuxing, който използвам, за да дефинирам TOR I/O с наслагване 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