From: "Giuseppe Lippolis" <giu.lippolis-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: <linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: problem with spidev on RT5350
Date: Sun, 15 Jan 2017 21:16:02 +0100 [thread overview]
Message-ID: <001001d26f6c$32022c40$960684c0$@gmail.com> (raw)
Dear All,
I have a problem with the spidev driver.
My platform is a MIPS rt5350 (board dlink dwr-512).
The board have two spi channel:
on the first is located the flash device
&spi0 {
status = "okay";
mx25l6405d@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <30000000>;
m25p,fast-read;
on the second the si3210 (driver spidev)
&spi1 {
status = "okay";
spidev@1 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "siliconlabs,si3210";
I'm running a LEDE distribution
Reboot (SNAPSHOT, r2961+5-3e56748)
based on linux 4.4.42
root@lede:/tmp# uname -a
Linux lede 4.4.42 #0 Sat Jan 14 22:47:43 2017 mips GNU/Linux
As expected I'm able to see the /dev/spidev1.0 to address the second spi
channel.
root@lede:/tmp# spi-config -d /dev/spidev1.0 -q
/dev/spidev1.0: mode=3, lsb=0, bits=8, speed=1000000
Unfortunatly when I try to run the spidev_test I get an error:
root@lede:/tmp# spidev_test -D /dev/spidev1.0 -v -s 1000000 -p
"1234\xde\xad"
spi mode: 0x3
bits per word: 8
max speed: 1000000 Hz (1000 KHz)
can't send spi message: Invalid argument
Aborted
Running strace on the spidev_test:
root@lede:/tmp# strace spidev_test -D /dev/spidev1.0 -v -s 1000000
-p "1234\xde\xad"
execve("/sbin/spidev_test", ["spidev_test", "-D", "/dev/spidev1.0",
"-v", "-s", "1000000", "-p", "1234\\xde\\xad"], [/* 14 vars */]) = 0
set_thread_area(0x770f1e50) = 0
set_tid_address(0x770ead90) = 1130
open("/etc/ld-musl-mipsel-sf.path", O_RDONLY|O_LARGEFILE|O_CLOEXEC)
= -1 ENOENT (No such file or directory)
open("/lib/libgcc_s.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=76975, ...}) = 0
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\10\0\1\0\0\0\20(\0\0004\0\0\0"..., 936)
= 936
mmap2(NULL, 143360, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x77023000
mmap2(0x77045000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
3, 0x12000) = 0x77045000
close(3) = 0
mprotect(0x411000, 4096, PROT_READ) = 0
open("/dev/spidev1.0", O_RDWR|O_LARGEFILE) = 3
ioctl(3, SPI_IOC_WR_MODE32, 0x4120a8) = 0
ioctl(3, SPI_IOC_RD_MODE32, 0x4120a8) = 0
ioctl(3, SPI_IOC_WR_BITS_PER_WORD, 0x412024) = 0
ioctl(3, SPI_IOC_RD_BITS_PER_WORD, 0x412024) = 0
ioctl(3, SPI_IOC_WR_MAX_SPEED_HZ, 0x412020) = 0
ioctl(3, SPI_IOC_RD_MAX_SPEED_HZ, 0x412020) = 0
ioctl(1, TIOCGWINSZ, 0x7f9b1720) = 0
writev(1, [{iov_base="spi mode: 0x3", iov_len=13}, {iov_base="\n",
iov_len=1}], 2spi mode: 0x3 ) = 14
writev(1, [{iov_base="bits per word: 8", iov_len=16},
{iov_base="\n", iov_len=1}], 2bits per word: 8 ) = 17
writev(1, [{iov_base="max speed: 1000000 Hz (1000", iov_len=27},
{iov_base=" KHz)\n", iov_len=6}], 2max speed: 1000000 Hz (1000 KHz) ) = 33
ioctl(3, SPI_IOC_MESSAGE(32), 0x7f9b1ba0) = -1 EINVAL (Invalid
argument)
writev(2, [{iov_base="", iov_len=0}, {iov_base="can't send spi
message", iov_len=22}], 2can't send spi message) = 22
writev(2, [{iov_base="", iov_len=0}, {iov_base=":", iov_len=1}], 2:)
= 1
writev(2, [{iov_base="", iov_len=0}, {iov_base=" ", iov_len=1}], 2 )
= 1
writev(2, [{iov_base="", iov_len=0}, {iov_base="Invalid argument",
iov_len=16}], 2Invalid argument) = 16
writev(2, [{iov_base="", iov_len=0}, {iov_base="\n", iov_len=1}], 2
) = 1
rt_sigprocmask(SIG_BLOCK, ~[RTMIN RT_1 RT_2], [], 16) = 0
gettid() = 1130
tkill(1130, SIGIOT) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 16) = 0
--- SIGIOT {si_signo=SIGIOT, si_code=SI_TKILL, si_pid=1130,
si_uid=0} ---
+++ killed by SIGIOT +++
Aborted
report an ioctl error:
ioctl(3, SPI_IOC_MESSAGE(32), 0x7f9b1ba0) = -1 EINVAL (Invalid
argument)
I enabled the debug info on the spidev module and added some logging to
trace the called functions:
this is the results:
[ 467.136250] spidev printk spidev_open function
[ 467.156910] spidev printk spidev_ioctl function
[ 467.156987] spidev spi1.0: spidev_ioctl function
[ 467.157031] spidev spi1.0: force spi mode3
[ 467.165372] spidev spi1.0: spi mode 0
[ 467.165408] spidev spi1.0: ioctl spi_dev_put
[ 467.187424] spidev printk spidev_ioctl function
[ 467.187500] spidev spi1.0: spidev_ioctl function
[ 467.187538] spidev spi1.0: ioctl spi_dev_put
[ 467.199564] spidev printk spidev_ioctl function
[ 467.199642] spidev spi1.0: spidev_ioctl function
[ 467.199692] spidev spi1.0: 8 bits per word
[ 467.199717] spidev spi1.0: ioctl spi_dev_put
[ 467.206843] spidev printk spidev_ioctl function
[ 467.206919] spidev spi1.0: spidev_ioctl function
[ 467.206956] spidev spi1.0: ioctl spi_dev_put
[ 467.210687] spidev printk spidev_ioctl function
[ 467.210761] spidev spi1.0: spidev_ioctl function
[ 467.210809] spidev spi1.0: ioctl spi_dev_put
[ 467.213595] spidev printk spidev_ioctl function
[ 467.213671] spidev spi1.0: spidev_ioctl function
[ 467.213707] spidev spi1.0: ioctl spi_dev_put
[ 467.227711] spidev printk spidev_ioctl function
[ 467.227787] spidev spi1.0: spidev_ioctl function
[ 467.227824] spidev spi1.0: ioctl default switch
[ 467.227858] spidev spi1.0: ioctl default switch spidev_message
[ 467.227883] spidev spi1.0: spidev_message function
[ 467.227927] spidev spi1.0: xfer len 6 rx tx 8bits 0 usec
1000000Hz
[ 467.227955] spidev spi1.0: spidev_sync function
[ 467.227984] spidev spi1.0: ioctl spi_dev_put
[ 467.276286] spidev printk spidev_release function
It seems that the spidev_ioctl run up to the end, where I add:
mutex_unlock(&spidev->buf_lock);
dev_dbg(&spi->dev, "ioctl spi_dev_put\n");
spi_dev_put(spi);
return retval;
Do someone have any help for me?
Thanks,
Bye.
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
reply other threads:[~2017-01-15 20:16 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='001001d26f6c$32022c40$960684c0$@gmail.com' \
--to=giu.lippolis-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).