From: Ernst Schwab <[email protected]>

Added devicetree parsing for SPI bus number. If no bus number is specified,
a dynamically assigned bus number will be used (typically 32766).

Signed-off-by: Ernst Schwab <[email protected]>
---
diff -upr a/Documentation/powerpc/dts-bindings/fsl/spi.txt 
b/Documentation/powerpc/dts-bindings/fsl/spi.txt
--- a/Documentation/powerpc/dts-bindings/fsl/spi.txt
+++ b/Documentation/powerpc/dts-bindings/fsl/spi.txt
@@ -4,6 +4,8 @@ Required properties:
 - cell-index : SPI controller index.
 - compatible : should be "fsl,spi".
 - mode : the SPI operation mode, it can be "cpu" or "cpu-qe".
+- bus-number : number of the SPI bus. If unspecified, a dynamically
+  assigned bus number will be used.
 - reg : Offset and length of the register set for the device
 - interrupts : <a b> where a is the interrupt number and b is a
   field that represents an encoding of the sense and level
@@ -21,4 +23,5 @@ Example:
                interrupts = <82 0>;
                interrupt-parent = <700>;
                mode = "cpu";
+               bus-number = <0>;
        };
diff -upr a/drivers/spi/spi_mpc8xxx.c b/drivers/spi/spi_mpc8xxx.c
--- a/drivers/spi/spi_mpc8xxx.c
+++ b/drivers/spi/spi_mpc8xxx.c
@@ -1230,6 +1230,8 @@ static int __devinit of_mpc8xxx_spi_prob
        struct resource mem;
        struct resource irq;
        const void *prop;
+       const int *bus_num;
+       int len;
        int ret = -ENOMEM;
 
        pinfo = kzalloc(sizeof(*pinfo), GFP_KERNEL);
@@ -1239,8 +1241,16 @@ static int __devinit of_mpc8xxx_spi_prob
        pdata = &pinfo->pdata;
        dev->platform_data = pdata;
 
-       /* Allocate bus num dynamically. */
-       pdata->bus_num = -1;
+
+       bus_num = of_get_property(np, "bus-number", &len);
+       if (bus_num && len == sizeof(*bus_num)) {
+               /* bus number is specified in node */
+               pdata->bus_num = *bus_num;
+       } else {
+               /* Allocate bus num dynamically. */
+               pdata->bus_num = -1;
+       }
+
 
        /* SPI controller is either clocked from QE or SoC clock. */
        pdata->sysclk = get_brgfreq();


_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to