SPI driver for spi_mpc83xx

Ben Warren bwarren at qstreams.com
Wed Nov 28 06:33:03 EST 2007


Fabio,

Note: I've changed the e-mail subject back to the original. In the 
future, please ensure that it remains intact.

fabio777 wrote:
> Thanks Ben,
>
> Here it is
>
> static struct fsl_spi_platform_data k_platform_data = {
> .initial_spmode = 0,
> .bus_num = 1,
Probably should be bus_num = 0
> .max_chipselect = 1,
> /* board specific information */
> .activate_cs = k_cs_activate,
> .deactivate_cs = k_cs_deactivate,
> .sysclk = 266,
> };
>
> static struct spi_board_info spi_board_info[] __initdata = { {
> .modalias = "kplus",
> .platform_data = &k_platform_data,
> .max_speed_hz = 120000,
> .bus_num = 1,
Again, bus_num probably should be 0
> .chip_select = 0,
> },
> };
>
>
> struct platform_device k_plus = {
> .name = "kplus",
name should be "mpc83xx_spi". At initialization, the SPI controller 
driver searches the registered platform devices (models of board 
hardware) for a match. Without a match, it gives up.

> .id = 1,
> .dev = {
> .platform_data = &k_platform_data,
> },
> };
>
> platform_device_register(&k_plus);
>
Do you add the SPI controller's resources (base address and IRQ?) You'll 
need to in order for this to work. On my board, I use 
'platform_device_register_simple()', passing the name and the two 
resources, then call 'platform_add_data()', passing in the platform data 
structure.
> spi_register_board_info(spi_board_info, ARRAY_SIZE(spi_board_info))
>
Good
> and then calls spi_register_driver(&k_driver);
I don't think this last call is needed.
>
> I can't get the into the *probe functions.
> Thanks
>
regards,
Ben


More information about the Linuxppc-embedded mailing list