LINUX.ORG.RU

SPI на Cubieboard

 ,


0

3

Здравствуйте, господа.

Никак не получается поднять SPI на Cubieboard (нет /dev/spi*) и в dmesg ни слова о spi

ядро собирал из

 git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Кусок .config:

root@buildsrv:/usr/src/linux# cat .config | grep SPI | grep -v "#"
CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_BITBANG=m
CONFIG_SPI_GPIO=m
CONFIG_SPI_SUN4I=y
CONFIG_SPI_SUN6I=y
CONFIG_SPI_SPIDEV=m

В качестве дистрибутива использую дебиан.

Компилил вот так:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sunxi_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage dtbs
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/usr/src/kernel_modules make modules modules_install

Существует у меня подозрение, что дело в DTS, который идет в комплекте с ядром (и с u-boot тоже), но я совсем не имею опыта с редактированием dts. При гуглении наткнулся на http://www.cubieforums.com/index.php?topic=602.0 , но там в основном идет речь о FEX, и ни слова о DTS. С другой стороны:

pwd
/proc/device-tree/soc@01c00000
root@robot:/proc/device-tree/soc@01c00000# ls -1 | grep spi
spi@01c05000
spi@01c06000
spi@01c17000
spi@01c1f000

Вобщем, пожалуйста, помогите поднять SPI на Cubieboard!

Буду рад любой помощи, заранее спасибо

★★★

Ответ на: комментарий от Deleted

А шо сразу ncrmnt-то ;)

По теме - dts'ку глянь, там pinctrl задается для spi. В FEX'е/схематике найдешь пины, на которые оно выведено на плате, дальше это надо воткнуть будет в dts (и изучать оный по ходу дела).

Далее, чтобы юзать spidev в dts на борду должно быть что-то типа (Так у нас на МВ77.07):

&ssp1 {
        status = "okay";
        spidev@0 {
                compatible = "spidev";
                reg = <0>;
                spi-max-frequency = <25000000>;
                spi-cpha;
                pl022,hierarchy = <0>;
                pl022,interface = <0>;
                pl022,slave-tx-disable;
                pl022,com-mode = <0x1>; /* polling mode */
                pl022,rx-level-trig = <0>;
                pl022,tx-level-trig = <0>;
                pl022,ctrl-len = <0x11>;
                pl022,wait-state = <0>;
                pl022,duplex = <0>;
        };
};

При этом ядро ругнется, что указывать spidev в dts не кошер.

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

Ну, с полгода назад я на кубитраке пытался поднять. Чего только ни делал, весь тыртырнет ископал, а хрен. Поищу, может, новое ведро появилось — попробую обновиться. У меня там гента стоит, с утра запустил обновление, уже 15 из 44 накомпилялось.

Eddy_Em ☆☆☆☆☆
()

git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

Проконсультируйся в сообществе linux-sunxi о том, какое ядро тебе подойдёт. Там свои репы, много фишек ещё не в апстриме ядра.

Andrey_Utkin ★★
()
Ответ на: комментарий от ncrmnt

А шо сразу ncrmnt-то ;)

Да потому-что я больше никого не знаю твоей квалификации по подобным вещам :-)

Deleted
()
Ответ на: комментарий от ncrmnt

Сейчас вот смотрю в сторону dts.

cat arch/boot/arm/dts/sun4i-a10-cubieboard.dts
#include "sun4i-a10.dtsi"
#include "sunxi-common-regulators.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/sun4i-a10.h>

....
&spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_pins_a>,
                    <&spi0_cs0_pins_a>;
        status = "okay";
};
....

Заглянул в sun4i-a10.dtsi

{
...
   clocks {
               ahb_gates: clk@01c20060 {
                        #clock-cells = <1>;
                        compatible = "allwinner,sun4i-a10-ahb-gates-clk";
                        reg = <0x01c20060 0x8>;
                        .....
                        clock-output-names = "ahb_usb0", "ahb_ehci0",
                                             .......
                                             "ahb_emac", "ahb_ts", "ahb_spi0",
                                             "ahb_spi1", "ahb_spi2", "ahb_spi3",
                                             .......
                };
    }
.....
        spi0_clk: clk@01c200a0 {
                        #clock-cells = <0>;
                        compatible = "allwinner,sun4i-a10-mod0-clk";
                        reg = <0x01c200a0 0x4>;
                        clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
                        clock-output-names = "spi0";
                };
.....

        soc@01c00000 {
.....
                spi0: spi@01c05000 {
                        compatible = "allwinner,sun4i-a10-spi";
                        reg = <0x01c05000 0x1000>;
                        interrupts = <10>;
                        clocks = <&ahb_gates 20>, <&spi0_clk>;
                        clock-names = "ahb", "mod";
                        dmas = <&dma SUN4I_DMA_DEDICATED 27>,
                               <&dma SUN4I_DMA_DEDICATED 26>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                };
......
        }
......
}

Если я правильно понял, то в sun4i-a10.dtsi определен сам кристал и все его внутренние устройства, но по умолчанию они выключены, ибо не известно разведены ли они на плате или нет. а в sun4i-a10-cubieboard.dts уже определно что конкретно использоваться будет spi0 и для него статус указан okay.

Посмотрел на самой плате:

pwd
/proc/device-tree/soc@01c00000/spi@01c05000
root@robot:/proc/device-tree/soc@01c00000/spi@01c05000# cat status 
okay
т.е. вроде бы как он включен, но почему-то система все равно его не видет

Может вы своим глазом заметите что-то, что я упустил?

disee ★★★
() автор топика
Ответ на: комментарий от ncrmnt

и еще:

cat /proc/devices 
Character devices:
  1 mem
  2 pty
  3 ttyp
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  7 vcs
 10 misc
 13 input
 29 fb
 89 i2c
128 ptm
136 pts
153 spi
180 usb
189 usb_device
250 bsg
251 watchdog
252 ptp
253 pps
254 rtc

disee ★★★
() автор топика
Ответ на: комментарий от disee

В dtsi ничего не надо пихать, в dts где определен spi со status=«okay» добавить под-нодой устр-во, сидящее на этом spi с драйвером spidev. см. мой пример.

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

Рискну задать вопрос, который возможно покажется смешным: Если к spi шине не подключено ни одно устройство- должна ли шины показываться в /dev ?

disee ★★★
() автор топика
Ответ на: комментарий от disee

Автодетекта никакого нет. Если устр-во прописано в dts, к нему подцепляется драйвер, будь то spidev или что-то еще. см. сырцы. Если не прописано - то и в /dev/ ничего не будет.

ncrmnt ★★★★★
()
Ответ на: комментарий от anonymous

Пробовал и загружать, пробовал и вкомпилить в ядро. Бестолку..

disee ★★★
() автор топика

Так на iMX287 (linux-4.1.3), может быть поможет:

ssp2: ssp@80014000 {
    #address-cells = <1>;
    #size-cells = <0>;
    compatible = "fsl,imx28-spi";
    pinctrl-names = "default";
    pinctrl-0 = <&spi2_pins>;
    status = "okay";

    dm631@0 {
        reg = <1>;
        // патч на drivers/spi/spidev.c что бы избавиться от
        // spidev spi1.1: buggy DT: spidev listed directly in DT
        compatible = "silicon,dm631";
        spi-max-frequency = <10000000>;
    };
};

imb ★★
()
Ответ на: комментарий от ncrmnt

В общем вот какая ситуация:

Нашед cubieboard.fex, а в нем следующее содержание:

[spi0_para]
spi_used = 0
spi_cs_bitmap = 1
spi_cs0 = port:PI10<3><default><default><default>
spi_sclk = port:PI11<3><default><default><default>
spi_mosi = port:PI12<3><default><default><default>
spi_miso = port:PI13<3><default><default><default>
....
[spi_devices]
spi_dev_num = 0

[spi_board0]
modalias = "aaa"
max_speed_hz = 12000000
bus_num = 1
chip_select = 0
mode = 3
full_duplex = 0
manual_cs = 0

и вот тут http://linux-sunxi.org/Fex_Guide#.5Bspi0_para.5D нашел следующее описание:

For each external SPI device N, a board define [spi_boardM] with M = N - 1 needs to be created

Немного модернизировал ваш пример и вот что получилось:

&spi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&spi0_pins_a>,
                    <&spi0_cs0_pins_a>;
        status = "okay";
        spidev@0 {
                compatible = "spidev";
                reg = <0>;
                spi-max-frequency = <12000000>;
                spi-cpha;
                pl022,hierarchy = <0>;
                pl022,interface = <0>;
                pl022,slave-tx-disable;
                pl022,com-mode = <0x1>; /* polling mode */
                pl022,rx-level-trig = <0>;
                pl022,tx-level-trig = <0>;
                pl022,ctrl-len = <0x11>;
                pl022,wait-state = <0>;
                pl022,duplex = <0>;
        };
};

Сейчас попробую это все дело скопилировать, но я почти уверен что сходу оно в таком виде не заработает.

Немогли бы вы, пожалуйста, рассказать, что означают поля, которые указаны в spidev@0? Ну т.е. compatible и spi-max-frequency это понятно, а остальное?

disee ★★★
() автор топика
Ответ на: комментарий от ncrmnt

Действительно, после пересборки ядра и dtb я сначала был поражен что в lsmod увидел самоподгруженный spidev. так же:

dmesg | grep spi
[    4.810289] spidev spi32766.0: buggy DT: spidev listed directly in DT
[    4.821535] WARNING: CPU: 0 PID: 90 at drivers/spi/spidev.c:719 spidev_probe+0x17c/0x1b0 [spidev]()
[    4.830615] Modules linked in: spidev(+)
[    4.880034] [<c0021f48>] (warn_slowpath_null) from [<bf0002d0>] (spidev_probe+0x17c/0x1b0 [spidev])
[    4.889102] [<bf0002d0>] (spidev_probe [spidev]) from [<c02c4088>] (spi_drv_probe+0x80/0xa0)
[    4.897559] [<c02c4088>] (spi_drv_probe) from [<c027a6cc>] (driver_probe_device+0x1e4/0x2a4)
[    4.938950] [<c027aff4>] (driver_register) from [<bf003078>] (spidev_init+0x78/0xc0 [spidev])
[    4.947493] [<bf003078>] (spidev_init [spidev]) from [<c0009728>] (do_one_initcall+0x84/0x1d4)

ls /dev/spi*
/dev/spidev32766.0

Однако понятно,что практически подчистую скопированый ваш конфиг имеет очень малый шанс *магически* заработать.

Буду смотреть ваш мануал и, если вы не против, периодически вас пинговать.

В моем случае основная проблема заключается в отсутствии экспертизы в данной области (но слава богу читать умею). Т.к. если сразу пробовать работать с mcp2515 существует очень много точек отказа (промежуток межту cubieboard и mcp2515, промежуток межу mcp2515 и конечным can устройством, само can устройство). поэтому, как мне посоветовали тут куплю какой-нибудь spi модуль памяти (может можете какой-нибудь посоветовать?) и для начала буду пытаться с ним настроить контакт.

Возможно, основываясь на своем опыте, можете посоветовать какие-нибудь подходы, которые помогли бы в дебаге spi?

Спасибо за вашу помощь, СА

disee ★★★
() автор топика
Ответ на: комментарий от disee

MCP2515

Но зачем? can4linux умеет Allwinner A10. Оно, конечно, костыльно, но не более костыльно чем вот это всё тут описываемое. Ну и нужен только трансивер подключённый к нужным выводам борды.

Stanson ★★★★★
()
Ответ на: комментарий от disee

к сожалению, насколько мне известно, в кубика кан не разведен

Насчёт кубика не скажу, но посмотри доки - там на самом деле 2 варианта конфигурации CAN_TX и CAN_RX - на PH20 и PH21 и на PA16 и PA17

Stanson ★★★★★
()
Ответ на: комментарий от ncrmnt

Здравствуйте.

Поразмыслив, я пришел к выводу, что мне не нужно использовать spidev, т.к. мне не нужен raw доступ к spi устройству. Т.к. я использую mcp2515 мне нужно использовать модуль mcp251x. Усиленное гугление по различным паттернам привело меня сюда https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=7027&start=594

Используя этот пример и после десятков попыток и пересборок я получил вот такой файл sun4i-a10-cubieboard.dts (прошу меня извинить за полотно, мои изменения отмечены звездочками):


/dts-v1/;
#include "sun4i-a10.dtsi"
#include "sunxi-common-regulators.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/sun4i-a10.h>

/ {
	model = "Cubietech Cubieboard";
	compatible = "cubietech,a10-cubieboard", "allwinner,sun4i-a10";

/* ************************************************** */
	can0_oscillator =   <&can0_osc>,"oscillator-frequency";
        can0_speed =      <&can0>,"spi-max-frequency:0";
        can0_interrupt =   <&can0_pins>,"allwinner,pins:PB11",<&can0>,"interrupts:0";
/* ************************************************** */

	aliases {
		serial0 = &uart0;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins_cubieboard>;

		blue {
			label = "cubieboard:blue:usr";
			gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>; /* LED1 */
		};

		green {
			label = "cubieboard:green:usr";
			gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>; /* LED2 */
			linux,default-trigger = "heartbeat";
		};
	};

/* ************************************************** */
	clocks {
        	can0_osc: can0_osc {
        	        compatible = "fixed-clock";
        	        #clock-cells = <0>;
        	        clock-frequency  = <16000000>;
        	 };
	};

/* ************************************************* */

};

&ahci {
	target-supply = <&reg_ahci_5v>;
	status = "okay";
};

&codec {
	status = "okay";
};

&cpu0 {
	cpu-supply = <&reg_dcdc2>;
};

&ehci0 {
	status = "okay";
};

&ehci1 {
	status = "okay";
};

&emac {
	pinctrl-names = "default";
	pinctrl-0 = <&emac_pins_a>;
	phy = <&phy1>;
	status = "okay";
};

&emac_sram {
	status = "okay";
};

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins_a>;
	status = "okay";

	axp209: pmic@34 {
		reg = <0x34>;
		interrupts = <0>;
	};
};

&i2c1 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins_a>;
	status = "okay";
};

&ir0 {
	pinctrl-names = "default";
	pinctrl-0 = <&ir0_rx_pins_a>;
	status = "okay";
};

&mdio {
	status = "okay";

	phy1: ethernet-phy@1 {
		reg = <1>;
	};
};

&mmc0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
	vmmc-supply = <&reg_vcc3v3>;
	bus-width = <4>;
	cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
	cd-inverted;
	status = "okay";
};

&ohci0 {
	status = "okay";
};

&ohci1 {
	status = "okay";
};

&otg_sram {
	status = "okay";
};

&pio {
	led_pins_cubieboard: led_pins@0 {
		allwinner,pins = "PH20", "PH21";
		allwinner,function = "gpio_out";
		allwinner,drive = <SUN4I_PINCTRL_20_MA>;
		allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
	};

	usb0_id_detect_pin: usb0_id_detect_pin@0 {
		allwinner,pins = "PH4";
		allwinner,function = "gpio_in";
		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
	};
	
/* ****************************************************** */
	
	can0_pins: can0_pins {
        	allwinner,pins = <25>;
		allwinner,function = <0>; /* input */
	};

/* ****************************************************** */
};

&reg_ahci_5v {
	status = "okay";
};

#include "axp209.dtsi"

&reg_dcdc2 {
	regulator-always-on;
	regulator-min-microvolt = <1000000>;
	regulator-max-microvolt = <1450000>;
	regulator-name = "vdd-cpu";
};

&reg_dcdc3 {
	regulator-always-on;
	regulator-min-microvolt = <1000000>;
	regulator-max-microvolt = <1400000>;
	regulator-name = "vdd-int-dll";
};

&reg_ldo1 {
	regulator-name = "vdd-rtc";
};

&reg_ldo2 {
	regulator-always-on;
	regulator-min-microvolt = <3000000>;
	regulator-max-microvolt = <3000000>;
	regulator-name = "avcc";
};

&reg_usb1_vbus {
	status = "okay";
};

&reg_usb2_vbus {
	status = "okay";
};

/* ***************************************** */

&spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi0_pins_a>,
		    <&spi0_cs0_pins_a>;
	status = "okay";
	can0: mcp2515@0 {
		reg= <0>;
                compatible = "microchip,mcp2515";
		pinctrl-names = "default";
                pinctrl-0 = <&can0_pins>;
		spi-max-frequency = <10000000>;
			interrupt-parent = <&pio>;
			interrupts = <25 0x2>;
		clocks = <&can0_osc>;
        };
};

/* **************************************** */

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_pins_a>;
	status = "okay";
};

&usb_otg {
	dr_mode = "otg";
	status = "okay";
};

&usbphy {
	pinctrl-names = "default";
	pinctrl-0 = <&usb0_id_detect_pin>;
	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
	usb1_vbus-supply = <&reg_usb1_vbus>;
	usb2_vbus-supply = <&reg_usb2_vbus>;
	status = "okay";
};

После пересборки, и загрузки я имею следующее:

# lsmod
Module                  Size  Used by
mcp251x                 8819  0 
can_dev                 8739  1 mcp251x


#dmesg 
......
[    3.970506] CAN device driver interface
[    3.999208] sun4i-pinctrl 1c20800.pinctrl: missing allwinner,pins property in node can0_pins
[    4.172267] mcp251x spi32766.0: CANCTRL 0x87
[    4.172790] mcp251x spi32766.0 can0: set_features() failed (-1); wanted 0x0000000000004008, left 0x0000000000004808
.....

#  ip -s -d link show can0
3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0 
    can state STOPPED restart-ms 0 
	  bitrate 500000 sample-point 0.875 
	  tq 125 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
	  mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
	  clock 8000000
	  re-started bus-errors arbit-lost error-warn error-pass bus-off
	  0          0          0          0          0          0         
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0     

Уважаемый, ncrmnt, если вам не сложно, пожалуйста, уделите 15 минут и помогите, пожалуйста, понять в чем же косяк? Я всю голову уже сломал.
Во первых мне не понятно, почему идет ругонь про «missing allwinner,pins property in node can0_pins», ведь у меня же описано:

	can0_pins: can0_pins {
        	allwinner,pins = <25>;
		allwinner,function = <0>; /* input */
	};
И честно говоря я так и не смог придумать какое правильное значение должно быть подставленно в allwinner,pins. Не думаю, что нужно подставлять пины SPI (а если и нужно то в каком порядке?). А во вторых, почему, черт возьми, STOPPED?

В общем, взываю! Буду крайне признателен любой помощи!

disee ★★★
() автор топика
Ответ на: комментарий от ncrmnt

и при попытке

#ifconfig can0 up
SIOCSIFFLAGS: Invalid argument
# dmesg | tail -n 1
[ 1506.392962] mcp251x spi32766.0: failed to acquire irq 0

disee ★★★
() автор топика
Ответ на: комментарий от disee

allwinner-pins - это как раз настройки pinctrl для аллвиннера. Указаны они совершенно не верно. См. в Вашем же примере:

	usb0_id_detect_pin: usb0_id_detect_pin@0 {
		allwinner,pins = "PH4";
		allwinner,function = "gpio_in";
		allwinner,drive = <SUN4I_PINCTRL_10_MA>;
		allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
	};

Без них работать не будет. Там SPI может быть выведен на разные пины и надо указать в настройках на какие именно. Это специфично для аллвиннеровского pinctrl драйвера. Номер пина можно подсмотреть в схематике борды, функцию spi - в исходниках pinctrl драйвера или в Documentation/devicetree/bindings/pinctrl/ оно там должно быть все документировано.

ncrmnt ★★★★★
()
Ответ на: комментарий от ncrmnt

Добрый день, отредактировал свой файл и внес вот такие изменения:

        can0_pins: can0_pins {
                allwinner,pins = "PI10", "PI11", "PI12", "PI13"; /* SPI0 */
                allwinner,function = "gpio_in"; /* input */
        };

Однако, все же имею вот такие проблемы:

[    4.099782] pinconfig core: failed to register map default (1): no configs given
[    4.258037] mcp251x spi32766.0: CANCTRL 0x87
[    4.258558] mcp251x spi32766.0 can0: set_features() failed (-1); wanted 0x0000000000004008, left 0x0000000000004808
[    5.941760] mcp251x spi32766.0: failed to acquire irq 0

А так же:

# /sbin/ip link set can0 type can bitrate 500000
#  ip -s -d link show can0
3: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN mode DEFAULT group default qlen 10
    link/can  promiscuity 0 
    can <TRIPLE-SAMPLING> state STOPPED restart-ms 0 
	  bitrate 500000 sample-point 0.875 
	  tq 125 prop-seg 6 phase-seg1 7 phase-seg2 2 sjw 1
	  mcp251x: tseg1 3..16 tseg2 2..8 sjw 1..4 brp 1..64 brp-inc 1
	  clock 8000000
	  re-started bus-errors arbit-lost error-warn error-pass bus-off
	  0          0          0          0          0          0         
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0      
# ifconfig can0 up
SIOCSIFFLAGS: Invalid argument

disee ★★★
() автор топика
Ответ на: комментарий от ncrmnt

Подскажите, пожалуйста, что именно туда нужно поставить?

Уже настолько устал возиться с DTS'ами

Буду вам невероятно благодарен!!

disee ★★★
() автор топика
Последнее исправление: disee (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Очень, очень печальненько. На текущий момент эта проблема переросла из критикал в воркстопедж. А решение пока так и не нашлось...

disee ★★★
() автор топика
14 июля 2016 г.
Ответ на: комментарий от disee

извиняюсь за некротред, но..

Не удалось ли поднять SPI? Я тут мучаюсь пытаясь поднять всё это через DTS/DTB - не получается.

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