I'm busy adding support for slave deviced behind mpc52xx-psc-spi. One complication I have is that my SPI slave device has an interrupt output to the CPU. My idea is to add it as a gpios property in the slave device's configuration:
s...@2400 { // PSC3 (SPI IF to the IO-controller ) device_type = "spi"; #address-cells = <1>; #size-cells = <0>; compatible = "fsl,mpc5200-psc-spi","fsl,mpc5200b-psc-spi"; cell-index = <2>; reg = <0x2400 0x100>; interrupts = <2 3 0>; interrupt-parent = <&mpc5200_pic>; gpios = <&gpt4 0 0>; io-control...@0 { compatible = "microkey,smc4000io"; spi-max-frequency = <1000000>; reg = <0>; // gpios: first is IRQ to cpu gpios = <&gpt6 0 0>; }; }; Are there better/easier ways to do this? How should I then register my spi slave driver? My smc4000io_probe function gets called correctly by of_spi support but when I register as follows: static struct spi_driver smc4000io_driver = { .driver = { .name = "smc4000io", .bus = &spi_bus_type, .owner = THIS_MODULE, }, .probe = smc4000io_probe, .remove = __devexit_p(smc4000io_remove), }; static int __init smc4000io_init(void) { return spi_register_driver(&smc4000io_driver); } static void __exit smc4000io_exit(void) { spi_unregister_driver(&smc4000io_driver); } module_init(smc4000io_init); But when I do: static struct of_platform_driver smc4000_spi_of_driver = { .name = "smc4000io", .match_table = smc4000io_of_match, .probe = smc4000io_of_probe, .remove = __devexit_p(smc4000io_of_remove), }; static int __init smc4000io_init(void) { return of_register_platform_driver(&smc4000_spi_of_driver); } module_init(smc4000io_init); Then my smc4000io_of_probe function never gets called. Thanks in advance, Henk. On Wed, Oct 29, 2008 at 3:45 PM, Grant Likely <grant.lik...@secretlab.ca>wrote: > On Wed, Oct 29, 2008 at 7:43 AM, Henk Stegeman <henk.stege...@gmail.com> > wrote: > > .. > > .. > > In my dts > > > > I have my chipselect defined as follows: > > > > gpt4: ti...@640 { // General Purpose Timer GPT4 in GPIO mode > for > > SMC4000IO chip select. > > compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio"; > > cell-index = <4>; > > reg = <0x640 0x10>; > > interrupts = <1 13 0>; > > interrupt-parent = <&mpc5200_pic>; > > gpio-controller; > > #gpio-cells = <2>; > > }; > > > > I found the gpio in > > # cat /sys/class/gpio/gpiochip215/label > > /soc5...@f0000000/ti...@640 > > > > The spi controller is defined like this: > > > > s...@2400 { > > device_type = "spi"; > > #address-cells = <1>; > > #size-cells = <0>; > > compatible = "fsl,mpc5200-psc-spi","fsl,mpc5200b-psc-spi"; > > cell-index = <2>; > > reg = <2400 100>; > > interrupts = <2 3 0>; > > interrupt-parent = <&mpc5200_pic>; > > gpios = <&gpt4 0 0>; > > > > io-control...@0 { > > compatible = "microkey,smc4000io"; > > spi-max-frequency = <1000000>; > > reg = <0>; > > }; > > }; > > > > At bootup linux (2.6.27) reports: > > > > mpc52xx-psc-spi f0000960.spi: probe called without platform data, no > > (de)activate_cs function will be called. > > > > Is my assumption wrong that the gpios property is the way to map > chipselects > > to the spi driver? > > Yes, that is the way you should work specify the chip selects, but the > driver hasn't been updated to support it yet. > > g. > > -- > Grant Likely, B.Sc., P.Eng. > Secret Lab Technologies Ltd. >
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev