Hi, On Tue, Dec 11, 2012 at 03:23:48PM +0000, Jack Mitchell wrote: > On 11/12/12 14:27, Felipe Balbi wrote: > >Hi again, > > > >On Tue, Dec 11, 2012 at 01:48:10PM +0200, Felipe Balbi wrote: > >>On Tue, Dec 11, 2012 at 10:38:58AM +0000, Jack Mitchell wrote: > >>>On 11/12/12 10:20, Felipe Balbi wrote: > >>>>Hi, > >>>> > >>>>On Tue, Dec 11, 2012 at 10:17:42AM +0000, Jack Mitchell wrote: > >>>> > >>>><big snip> > >>>> > >>>>>Shubhro, Felipe, > >>>>> > >>>>>Thank you, the reordering dma patch fixed the dma issue I was having! > >>>>>However, the bad news, I now get the same results for the dma and > >>>>>non-dma spidev test. While the scope shows the SPI clk and data is > >>>>>fine, the reading from the program still shows 0x00 for all words. > >>>><removed spidev_test output> > >>>> > >>>>>dmesg shows nothing of interest apart from the spi bus setting up. > >>>>>Any ideas? > >>>>> > >>>>>To iterate for my own sanity; I have bridged pins 18 and 21 on the P9 > >>>>>header which should be the d0 and d1 spi data pins for spi0. This > >>>>>result of 0x00 usually comes from a result of not joining the pins, > >>>>>but I can assure you they are joined! > >>>>> > >>>>>Thank you for the help so far. > >>>>according to the schematics [1], those pins are muxed as UART2_TXD and > >>>>I2C1_SDA, have you remuxed them properly ? Can you try with pins 29 and > >>>>30 on the same header ? That's SPI1, so you will have to add DT data for > >>>>spidev on that bus too. > >>>> > >>>>[1] http://beagleboard.org/static/beaglebone/latest/Docs/Hardware/BONE_SCH.pdf > >>>> > >>>No change unfortunately: > >>> > >>>root@beaglebone:~# ./spidev > >>>spi mode: 0 > >>>bits per word: 16 > >>>max speed: 24000000 Hz (24000 KHz) > >>> > >>>00 00 00 00 00 00 > >>>00 00 00 00 00 00 > >>>00 00 00 00 00 00 > >>>00 00 00 00 00 00 > >>>00 00 00 00 00 00 > >>>00 00 00 00 00 00 > >>>00 00 > >>> > >>>root@beaglebone:~# ./spidev -D /dev/s > >>>shm/ spidev1.0 spidev2.0 stderr stdin stdout > >>>root@beaglebone:~# ./spidev -D /dev/spidev2.0 > >one thing caught my attention, shouldn't you be passing '-l' argument > >here for loopback testing ? That would mean you need to make sure your > >"spi->mode" has SPI_LOOP flag set. Currently there is no way to do that > >via DeviceTree (AFAICT), so please apply ths patch to your tree and set > >spi-loopback; property for your spidev entry: > > > >diff --git a/Documentation/devicetree/bindings/spi/spi-bus.txt b/Documentation/devicetree/bindings/spi/spi-bus.txt > >index 296015e..1949586 100644 > >--- a/Documentation/devicetree/bindings/spi/spi-bus.txt > >+++ b/Documentation/devicetree/bindings/spi/spi-bus.txt > >@@ -55,6 +55,8 @@ contain the following properties. > > chip select active high > > - spi-3wire - (optional) Empty property indicating device requires > > 3-wire mode. > >+- spi-loopback - (optional) Empty property indicating device requires > >+ loopback mode. > > If a gpio chipselect is used for the SPI slave the gpio number will be passed > > via the cs_gpio > >diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c > >index 3f1b9ee..6bcdc03 100644 > >--- a/drivers/spi/spi.c > >+++ b/drivers/spi/spi.c > >@@ -868,6 +868,8 @@ static void of_register_spi_devices(struct spi_master *master) > > spi->mode |= SPI_CS_HIGH; > > if (of_find_property(nc, "spi-3wire", NULL)) > > spi->mode |= SPI_3WIRE; > >+ if (of_find_property(nc, "spi-loopback", NULL)) > >+ spi->mode |= SPI_LOOP; > > /* Device speed */ > > prop = of_get_property(nc, "spi-max-frequency", &len); > > > > I get the following error when I apply this patch and add spi-loopback. > > &spi0 { > status = "okay"; > pinctrl-names = "default"; > pinctrl-0 = <&spi0_pins>; > > spidev0: spidev@0 { > compatible = "linux,spidev"; > reg = <0>; > spi-max-frequency = <24000000>; > spi-loopback; > }; > > }; > > [ 1.093565] omap2_mcspi 48030000.spi: registered master spi1 > [ 1.094491] spi spi1.0: setup: unsupported mode bits 20 > [ 1.100035] omap2_mcspi 48030000.spi: can't setup spi1.0, status -22 > [ 1.106715] spi_master spi1: spi_device register error > /ocp/spi@48030000/spidev@0 > [ 1.115030] omap2_mcspi 481a0000.spi: registered master spi2 > [ 1.115710] spi spi2.0: setup: unsupported mode bits 20 > [ 1.121225] omap2_mcspi 481a0000.spi: can't setup spi2.0, status -22 > [ 1.127903] spi_master spi2: spi_device register error > /ocp/spi@481a0000/spidev@0 > > I have run this test many times before and have never needed to use a > loopback... I finally managed to test with my pandaboard and I have same results as yourself (btw you need to SPI_LOOP to mode_bits on drivers/spi/spi-omap2-mcspi.c for this to probe fine, my bad). I have looked at the pins over and over again and I'm sure I'm shorting the correct pins... Oh well, time to debug :-p -- balbi
Attachment:
signature.asc
Description: Digital signature