Nathan French wrote:
Hi, I am trying to add support for the 405EX's SPI controller on a Kilauea 
board.  I've added the below to the device tree (under plb/opb/):

[nfre...@nfrench-laptop linux-2.6-denx]$ diff -C2 
arch/powerpc/boot/dts/kilauea.dts spi.dts
*** arch/powerpc/boot/dts/kilauea.dts   2009-05-05 15:56:16.000000000 -0700
--- spi.dts     2009-08-06 08:42:19.000000000 -0700
***************
*** 207,210 ****
--- 207,221 ----
                                #size-cells = <0>;
                        };
+ + SPI0: s...@ef600600 {
+                 cell-index = <0>;
+                 compatible = "ibm,spi-405ex", "ibm,spi";
+                 reg = <ef600600 6>;
+                 interrupts = <8 4>;
+                 interrupt-parent = <&UIC0>;
+                 mode = "cpu";
+             };
RGMII0: emac-rg...@ef600b00 {


That entry within the device tree will generally make the spi-"bus" known to Linux, that's ok so far.

I've also compiled my kernel with the following enabled:

        CONFIG_SPI=y
        CONFIG_SPI_MASTER=y
        CONFIG_SPI_SPIDEV=y

I see this make it into the device tree after boot:

        [r...@10.2.3.28 /]$ find /proc/device-tree/ | grep spi
        /proc/device-tree/plb/opb/s...@ef600600
        /proc/device-tree/plb/opb/s...@ef600600/name
        /proc/device-tree/plb/opb/s...@ef600600/mode
        /proc/device-tree/plb/opb/s...@ef600600/interrupt-parent
        /proc/device-tree/plb/opb/s...@ef600600/interrupts
        /proc/device-tree/plb/opb/s...@ef600600/reg
        /proc/device-tree/plb/opb/s...@ef600600/compatible
        /proc/device-tree/plb/opb/s...@ef600600/cell-index

But I don't see any /dev/spidev* devices created or any mention of SPI
at boot time.  I'm starting to suspect that I don't have the kernel
configured right, otherwise I would see at least the SPI driver
complaining about something, right?

For getting spidev devices you have to add entries for an spidev device to your newly created spi-"bus". So what you are currently missing are the spidev child-nodes in the device tree. As I'm currently cut off from some device to test, no guaranty that it will work, but your dts entry should look something like:

             SPI0: s...@ef600600 {
                 cell-index = <0>;
                 compatible = "ibm,spi-405ex", "ibm,spi";
                 reg = <ef600600 6>;
                 interrupts = <8 4>;
                 interrupt-parent = <&UIC0>;
                 mode = "cpu";

                 yourdev...@0 {
                     compatible = "spidev";
spi-max-frequency = <1000000>; /* what ever your max-freq. is */
                     reg = <0>; /* Chipselect-address */
                 };
             };


Thanks,

Nathan French

At least something similar worked for me some months ago (before we switched to a "real" driver for some custom peripheral).

Regards,

Lorenz

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to