Armadilloフォーラム

CON3でのSPI使用について。

k_tomita

2021年6月17日 16時58分

CON3にてSPIを使用するため、menuconfig にてspidevを有効に設定。
armadillo-iotg-a6-expansion-interface.dtsiにspidevを追加。

上記をビルドし、uImageとdtbを更新、再起動を行う。

起動後、/devにspi3は作成されているが、dmesgにて下記TraceLogが出力されてる。

[ 1.072133] spi_imx 2014000.ecspi: dma setup error -19, use pio
[ 1.079137] ------------[ cut here ]------------
[ 1.083909] WARNING: CPU: 0 PID: 1 at drivers/spi/spidev.c:737 spidev_probe+0xe4/0x1a0
[ 1.091912] /soc/aips-bus@2000000/spba-bus@2000000/ecspi@2014000/spi@0: buggy DT: spidev listed directly in DT
[ 1.101992] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14-at33 #3
[ 1.108030] Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[ 1.114308] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
[ 1.122143] [] (show_stack) from [] (__warn+0xe0/0xfc)
[ 1.129072] [] (__warn) from [] (warn_slowpath_fmt+0x38/0x48)
[ 1.136650] [] (warn_slowpath_fmt) from [] (spidev_probe+0xe4/0x1a0)
[ 1.144827] [] (spidev_probe) from [] (spi_drv_probe+0x78/0xa8)
[ 1.152566] [] (spi_drv_probe) from [] (driver_probe_device+0x20c/0x2dc)
[ 1.161092] [] (driver_probe_device) from [] (bus_for_each_drv+0x70/0x94)
[ 1.169672] [] (bus_for_each_drv) from [] (__device_attach+0xb0/0x114)
[ 1.178014] [] (__device_attach) from [] (bus_probe_device+0x84/0x8c)
[ 1.186272] [] (bus_probe_device) from [] (device_add+0x354/0x5a4)
[ 1.194268] [] (device_add) from [] (spi_add_device+0x98/0x12c)
[ 1.202001] [] (spi_add_device) from [] (spi_register_controller+0x320/0xa00)
[ 1.210929] [] (spi_register_controller) from [] (spi_bitbang_start+0xb8/0x12c)
[ 1.220054] [] (spi_bitbang_start) from [] (spi_imx_probe+0x358/0x5d8)
[ 1.228403] [] (spi_imx_probe) from [] (platform_drv_probe+0x50/0xac)
[ 1.236660] [] (platform_drv_probe) from [] (driver_probe_device+0x20c/0x2dc)
[ 1.245605] [] (driver_probe_device) from [] (__driver_attach+0xb0/0xb4)
[ 1.254115] [] (__driver_attach) from [] (bus_for_each_dev+0x78/0x9c)
[ 1.262363] [] (bus_for_each_dev) from [] (bus_add_driver+0x1b0/0x1f4)
[ 1.270679] [] (bus_add_driver) from [] (driver_register+0x78/0xf4)
[ 1.278757] [] (driver_register) from [] (do_one_initcall+0xb0/0x158)
[ 1.287011] [] (do_one_initcall) from [] (kernel_init_freeable+0x128/0x1b4)
[ 1.295786] [] (kernel_init_freeable) from [] (kernel_init+0x8/0x10c)
[ 1.304047] [] (kernel_init) from [] (ret_from_fork+0x14/0x2c)
[ 1.311689] ---[ end trace 0e56670460480228 ]---
[ 1.316835] spi_imx 2014000.ecspi: probed

このメッセージは出力されていても良いのか教えて頂ければと思います。

使用カーネルは、linux-v4.14-at33
dtsiファイルを添付いたします。

コメント

at_mitsuhiro.yoshida

2021年6月17日 17時37分

吉田です。

buggy DT: spidev listed directly in DT
とありますので、 compatible に spidev を直接記載すると表示される warning です。
適切なものを記載すると消えると思われます。

https://github.com/atmark-techno/linux-4.14-at/tree/master/Documentatio…
以下のテキストファイルを参照ください。

sawadamasanori

2021年6月17日 21時11分

 澤田と申します。度々恐縮です。

 私もA6でSPIバスを使用するので、Linuxカーネルをビルドするときに、「.config」に「CONFIG_SPI_SPIDEV=y」と設定してビルドし、作成した「uImage」ファイルを用いてSDブート用のSDカードに書き込み、A6を起動しました。

 無事起動し、「/dev/spidev3.0」も確認できましたが、「dmesg」コマンドの結果、全く同じ文字列が見られました。

 pythonなどでSPIバスを利用するにあたり、このままでも特に支障が無ければ有り難いのですが、もしユーザー側で何かやるべきことが残っていて、この状態のままではSPIバスが使用できない場合は、もし宜しかったら、その旨御教授頂けますと大変有り難く存じます。

 私自身も、この状態でSPI通信ができるかどうかテストするなど、独自にトラブルシューティングを進めさせて頂きます。
 ご案内頂きました、

https://github.com/atmark-techno/linux-4.14-at/tree/master/Documentatio…

 についても、中から参考になるテキストファイルを何とか探していきたいと思います。
 何卒よろしくお願い申し上げます。

k_tomita

2021年6月24日 11時29分

> 吉田です。
>
> buggy DT: spidev listed directly in DT
> とありますので、 compatible に spidev を直接記載すると表示される warning です。
> 適切なものを記載すると消えると思われます。
>
> https://github.com/atmark-techno/linux-4.14-at/tree/master/Documentatio…
> 以下のテキストファイルを参照ください。

k_tomita

2021年6月24日 12時04分

spidevの直接記載をやめ、別名(iota6_spidev)をspidevに追加、pythonにてSPIの動作を確認しました。
(Cでうまく動作してないため、現在解析中ですが)

> 吉田です。
>
> buggy DT: spidev listed directly in DT
> とありますので、 compatible に spidev を直接記載すると表示される warning です。
> 適切なものを記載すると消えると思われます。
>
> https://github.com/atmark-techno/linux-4.14-at/tree/master/Documentatio…
> 以下のテキストファイルを参照ください。

sawadamasanori

2021年6月24日 16時03分

皆様 各位

 澤田です。度々恐縮です。貴重な情報を本当に有難うございます。
 Linuxカーネルの arch/arm/boot/dts/armadillo-iotg-a6-expansion-interface.dtsi ファイルにおける、 &ecspi4 { ...... } の中にある、次の行、

compatible = "spidev"

 のままではあまり良くなくて、

compatible = "iota6_spidev"

 と書き換えてからLinuxカーネルをビルドした方が良いという御指南かと思うのですが、この解釈で正しいでしょうか?
 もし宜しかったら御教授頂けますと幸いです。皆様から教えて頂くばかりで、本当に申し訳ございません。

k_tomita

2021年6月24日 16時53分

澤田 様

冨田と申します。

spidevのままでもSPIは動作すると思います。
単純にトレースログの表示が気になったため、linux-v4.14-at33/drivers/spi/spidev.cのspidev_dt_idsの下記を追加修正しただけです。

#ifdef CONFIG_OF
static const struct of_device_id spidev_dt_ids[] = {
{ .compatible = "rohm,dh2228fv" },
{ .compatible = "lineartechnology,ltc2488" },
{ .compatible = "ge,achc" },
{ .compatible = "semtech,sx1301" },
{ .compatible = "atmark,iota6-spidev" }, <------追加
{},
};
MODULE_DEVICE_TABLE(of, spidev_dt_ids);
#endif

さらに、dtsiファイルのcompatible = "spidev"をcompatible = "atmark,iota6-spidev"に修正。

uImageとdtbを再ビルドしシステムを更新。

参考になりましたら幸いです。

> 皆様 各位
>
>  澤田です。度々恐縮です。貴重な情報を本当に有難うございます。
>  Linuxカーネルの arch/arm/boot/dts/armadillo-iotg-a6-expansion-interface.dtsi ファイルにおける、 &ecspi4 { ...... } の中にある、次の行、
>
> compatible = "spidev"
>
>  のままではあまり良くなくて、
>
> compatible = "iota6_spidev"
>
>  と書き換えてからLinuxカーネルをビルドした方が良いという御指南かと思うのですが、この解釈で正しいでしょうか?
>  もし宜しかったら御教授頂けますと幸いです。皆様から教えて頂くばかりで、本当に申し訳ございません。

sawadamasanori

2021年7月20日 11時28分

富田様

 澤田です。御指南頂き、有難うございました。
 御教授頂いた追加修正の方法を試させて頂きます。
 御礼が遅れてしまい恐縮です。心より感謝申し上げます。