Subject: Re: [PATCH] [spi_mpc83xx] Always enable legacy support.

From: Anton Vorontsov <[email-masked]>
Date: Thu, 2 Jul 2009 01:12:12 +0400

On Wed, Jul 01, 2009 at 09:16:12PM +0200, Joakim Tjernlund wrote:
> There are out of tree boards that need this legacy support too.

Heh.

> Signed-off-by: Joakim Tjernlund <[email-masked]>
> ---
> I hope this is OK. I just discovered that spi didn't work for
> me in 2.6.30 and I have no time to work on coverting my boards.

I'd convert them for you if they were in-tree. :-) But I don't
think that moving the kernel backwards because of out-of-tree
boards is a good thing.

> I don't have a clue either on how to do that, any pointers
> how to add a few spidev devices via OF?

Something like this will work:

		spi@4c0 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl,spi";
			reg = <0x4c0 0x40>;
			interrupts = <2>;
			interrupt-parent = <&qeic>;
			/* provide chip-selects here */
			gpios = <&qe_pio_d 13 0   /* CS0 */
				 &qe_pio_d 14 0>; /* CS1 */
			mode = "cpu-qe";

			device@0 {
				compatible = "spidev";
				reg = <0>; /* CS0*/
				spi-max-frequency = <50000000>;
			};

			device@0 {
				compatible = "spidev";
				reg = <1>; /* CS1 */
				spi-max-frequency = <50000000>;
			};
		};

You can look at arch/powerpc/boot/dts/mpc832x_rdb.dts as an
example.

Note that "spidev" isn't correct compatible entry to use,
but it's quick and dirty solution. A proper solution is to
add a proper compatible entry into the device-tree, and
add "spidev" alias into drivers/of/base.c:of_modalias_table.

>  drivers/spi/spi_mpc83xx.c |    5 -----
>  1 files changed, 0 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc83xx.c
> index f4573a9..d167577 100644
> --- a/drivers/spi/spi_mpc83xx.c
> +++ b/drivers/spi/spi_mpc83xx.c
> @@ -882,7 +882,6 @@ static struct of_platform_driver of_mpc83xx_spi_driver = {
>  	.remove		= __devexit_p(of_mpc83xx_spi_remove),
>  };
>  
> -#ifdef CONFIG_MPC832x_RDB
>  /*
>   * 				XXX XXX XXX
>   * This is "legacy" platform driver, was used by the MPC8323E-RDB boards
> @@ -941,10 +940,6 @@ static void __exit legacy_driver_unregister(void)
>  		return;
>  	platform_driver_unregister(&mpc83xx_spi_driver);
>  }
> -#else
> -static void __init legacy_driver_register(void) {}
> -static void __exit legacy_driver_unregister(void) {}
> -#endif /* CONFIG_MPC832x_RDB */
>  
>  static int __init mpc83xx_spi_init(void)
>  {
> -- 
> 1.6.2.3
> 

-- 
Anton Vorontsov
email: [email-masked]
irc://irc.freenode.net/bd2