Subject: SPI devices and OF

From: Sascha Hauer <[email-masked]>
Date: Wed, 4 Apr 2007 13:09:16 +0200

Hi,

I'm currently writing a driver for the mpc5200 spi controller (the
dedicated one, not the PSC ones).
The driver has the form of a of_platform_driver. My problem is that I
don't know how to define the spi devices on the spi bus. My current
approach is having something like this in the OF tree:

	spi@f00 {
		device_type = "spi";
		compatible = "mpc5200b-spi\0mpc5200-spi";
		reg = <f00 20>;
		interrupts = <2 d 0 2 e 0>;
		interrupt-parent = <500>;
		mmc@0 {
			device_type = "mmc_spi";
			compatible = "mmc_spi";
		};
	};

I can then parse the children in my spi driver with

	while( (child = of_get_next_child(odev->node, child))) {
		struct spi_board_info info;

		info.max_speed_hz = 
		info.bus_num = 
		info.chip_select = 
		...
		spi_register_board_info(&info, 1);
	}

I think it will work this way but I found no way getting the
platform_data for the spi devices.

I could also define the spi devices in a board specific c file but there
I would not know which spi bus is which if there is more than one.

Any thoughts on this or am I completely on the wrong track?

Sascha