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ファイルを添付いたします。
コメント
sawadamasanori
澤田と申します。度々恐縮です。
私も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
> 吉田です。
>
> buggy DT: spidev listed directly in DT
> とありますので、 compatible に spidev を直接記載すると表示される warning です。
> 適切なものを記載すると消えると思われます。
>
> https://github.com/atmark-techno/linux-4.14-at/tree/master/Documentatio…
> 以下のテキストファイルを参照ください。
k_tomita
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
皆様 各位
澤田です。度々恐縮です。貴重な情報を本当に有難うございます。
Linuxカーネルの arch/arm/boot/dts/armadillo-iotg-a6-expansion-interface.dtsi ファイルにおける、 &ecspi4 { ...... } の中にある、次の行、
compatible = "spidev"
のままではあまり良くなくて、
compatible = "iota6_spidev"
と書き換えてからLinuxカーネルをビルドした方が良いという御指南かと思うのですが、この解釈で正しいでしょうか?
もし宜しかったら御教授頂けますと幸いです。皆様から教えて頂くばかりで、本当に申し訳ございません。
k_tomita
澤田 様
冨田と申します。
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
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…
以下のテキストファイルを参照ください。