Date: Sun, 25 Aug 2013 15:12:41 +0100 From: fabiodive <fabiodive@gmail.com> To: Luiz Otavio O Souza <loos.br@gmail.com> Cc: freebsd-arm@freebsd.org Subject: Re: SPI driver for RPi Message-ID: <DFC3F00E-BEEB-4BB2-92F4-9C9246933144@gmail.com> In-Reply-To: <126AAEEA-1F99-42E4-9620-9CB4F3610671@gmail.com>
index | next in thread | previous in thread | raw e-mail
Hello Luiz, after applying the patches, should I compile the kernel with the "device api" written into the kernel config file? thank you, f. On Aug 22, 2013, at 2:57 PM, Luiz Otavio O Souza <loos.br@gmail.com> wrote: > Hello, > > Here is a SPI driver for RPi. > > It has been tested with a hardware loopback (MOSI wired to MISO) and with a s25fl032 spansion flash (removed from a wr941nd router). > > I've tested the reading from the flash up to 10Mhz of clock and surprisingly my (simple) wiring support it without any fail. > > At boot the SPI clock is set to 500Khz, not fast and not too slow (as the 3.814Khz default): > > # dd if=/dev/flash/spi0 of=flash-wr941nd-2 bs=64k > 64+0 records in > 64+0 records out > 4194304 bytes transferred in 75.632316 secs (55457 bytes/sec) > # diff flash-wr941nd flash-wr941nd-2 > # sysctl dev.spi.0.clock=1000000 > dev.spi.0.clock: 500000 -> 1000000 > # dd if=/dev/flash/spi0 of=flash-wr941nd-2 bs=64k > 64+0 records in > 64+0 records out > 4194304 bytes transferred in 37.896805 secs (110677 bytes/sec) > # diff flash-wr941nd flash-wr941nd-2 > # sysctl dev.spi.0.clock=2000000 > dev.spi.0.clock: 1000000 -> 2016129 > # dd if=/dev/flash/spi0 of=flash-wr941nd-2 bs=64k > 64+0 records in > 64+0 records out > 4194304 bytes transferred in 18.879980 secs (222156 bytes/sec) > # diff flash-wr941nd flash-wr941nd-2 > # sysctl dev.spi.0.clock=4000000 > dev.spi.0.clock: 2016129 -> 4032258 > # dd if=/dev/flash/spi0 of=flash-wr941nd-2 bs=64k > 64+0 records in > 64+0 records out > 4194304 bytes transferred in 9.642490 secs (434981 bytes/sec) > # diff flash-wr941nd flash-wr941nd-2 > # sysctl dev.spi.0.clock=10000000 > dev.spi.0.clock: 4032258 -> 10416666 > # dd if=/dev/flash/spi0 of=flash-wr941nd-2 bs=64k > 64+0 records in > 64+0 records out > 4194304 bytes transferred in 4.317743 secs (971411 bytes/sec) > # diff flash-wr941nd flash-wr941nd-2 > > > It export a few handy sysctl knobs: > > # sysctl dev.spi > dev.spi.0.%desc: BCM2708/2835 SPI controller > dev.spi.0.%driver: spi > dev.spi.0.%parent: simplebus0 > dev.spi.0.clock: 500000 > dev.spi.0.cpol: 0 > dev.spi.0.cpha: 0 > dev.spi.0.cspol0: 0 > dev.spi.0.cspol1: 0 > > > About the patches: > > - bcm2835_spi.diff implements the SPI driver, the dts and kernel changes; > > - ofw_spibus.diff adds the OFW SPI bus glue to attach the SPI children as described in the FDT. > > - mx25l-fdt-intr.diff adds the support for FDT and configure a intr hook so the device identification runs only when the interrupts are active (the SPI driver is interrupt based); > > - rpi-mx25l-dts.diff the change i did to add my mx25l on the rpi dts (only as reference). > > > Luiz > > > > > <bcm2835_spi.diff><ofw_spibus.diff><mx25l-fdt-intr.diff><rpi-mx25l-dts.diff>_______________________________________________ > freebsd-arm@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-arm > To unsubscribe, send any mail to "freebsd-arm-unsubscribe@freebsd.org"help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DFC3F00E-BEEB-4BB2-92F4-9C9246933144>
