linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Henk Stegeman <henk.stegeman@gmail.com>
To: linuxppc-dev@ozlabs.org
Subject: Re: Chipselect in SPI binding with mpc5200-psc-spi
Date: Fri, 13 Feb 2009 11:40:31 +0100	[thread overview]
Message-ID: <ae4f76fd0902130240g72b3cdf1l21b8f7ec8ad17e76@mail.gmail.com> (raw)
In-Reply-To: <fa686aa40810290745k5c34c5e1m835351837e39248e@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3952 bytes --]

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:

        spi@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-controller@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.likely@secretlab.ca>wrote:

> On Wed, Oct 29, 2008 at 7:43 AM, Henk Stegeman <henk.stegeman@gmail.com>
> wrote:
> > ..
> > ..
> > In my dts
> >
> > I have my chipselect defined as follows:
> >
> >         gpt4: timer@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
> > /soc5200@f0000000/timer@640
> >
> > The spi controller is defined like this:
> >
> >         spi@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-controller@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.
>

[-- Attachment #2: Type: text/html, Size: 7559 bytes --]

  reply	other threads:[~2009-02-13 10:48 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-29 13:43 Chipselect in SPI binding with mpc5200-psc-spi Henk Stegeman
2008-10-29 14:45 ` Grant Likely
2009-02-13 10:40   ` Henk Stegeman [this message]
2009-02-13 15:19     ` Grant Likely
2009-02-13 15:52       ` Henk Stegeman
2009-06-15 16:36       ` Kári Davíðsson
2009-06-15 17:31         ` Grant Likely
2009-06-16 10:41           ` Kári Davíðsson
2009-07-07 14:31       ` Henk Stegeman
2009-07-07 15:57         ` Grant Likely
2009-07-08 13:07           ` Henk Stegeman
  -- strict thread matches above, loose matches on Subject: below --
2009-03-27 21:14 Yann Pelletier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ae4f76fd0902130240g72b3cdf1l21b8f7ec8ad17e76@mail.gmail.com \
    --to=henk.stegeman@gmail.com \
    --cc=linuxppc-dev@ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).