On Jun 18, 2009, at 1:19 AM, Rini van Zetten wrote:

> This patch adds the possibility to have a spi device without a cs.
>
> For example, the dts file should look something like this:
>
> spi-controller {
>       gpios = <&pio1 1 0      /* cs0 */
>                0              /* cs1, no GPIO */
>                &pio2 2 0>;    /* cs2 */
>
>
>
> Signed-off-by: Rini van Zetten <[email protected]>
> ---
> Changes :
>       patch against 2.6.30-rc8-mm1

Anton,

Can you review and ack this if you are ok with it.

- k

>
>
> --- drivers/spi/spi_mpc8xxx.c.org     2009-06-12 10:45:21.000000000 +0200
> +++ drivers/spi/spi_mpc8xxx.c 2009-06-12 10:54:48.000000000 +0200
> @@ -666,9 +666,10 @@ static void mpc8xxx_spi_cs_control(struc
>       struct mpc8xxx_spi_probe_info *pinfo = to_of_pinfo(dev- 
> >platform_data);
>       u16 cs = spi->chip_select;
>       int gpio = pinfo->gpios[cs];
> -     bool alow = pinfo->alow_flags[cs];
> -
> -     gpio_set_value(gpio, on ^ alow);
> +     if (gpio != -EEXIST) {
> +             bool alow = pinfo->alow_flags[cs];
> +             gpio_set_value(gpio, on ^ alow);
> +     }
> }
>
> static int of_mpc8xxx_spi_get_chipselects(struct device *dev)
> @@ -707,27 +708,29 @@ static int of_mpc8xxx_spi_get_chipselect
>               enum of_gpio_flags flags;
>
>               gpio = of_get_gpio_flags(np, i, &flags);
> -             if (!gpio_is_valid(gpio)) {
> +             if (gpio_is_valid(gpio)) {
> +                     ret = gpio_request(gpio, dev_name(dev));
> +                     if (ret) {
> +                             dev_err(dev, "can't request gpio #%d: %d\n", i, 
> ret);
> +                             goto err_loop;
> +                     }
> +
> +                     pinfo->gpios[i] = gpio;
> +                     pinfo->alow_flags[i] = flags & OF_GPIO_ACTIVE_LOW;
> +
> +                     ret = gpio_direction_output(pinfo->gpios[i],
> +                                     pinfo->alow_flags[i]);
> +                     if (ret) {
> +                             dev_err(dev, "can't set output direction for 
> gpio "
> +                                             "#%d: %d\n", i, ret);
> +                             goto err_loop;
> +                     }
> +             } else if (gpio == -EEXIST) {
> +                     pinfo->gpios[i] = -EEXIST;
> +             } else {
>                       dev_err(dev, "invalid gpio #%d: %d\n", i, gpio);
>                       goto err_loop;
>               }
> -
> -             ret = gpio_request(gpio, dev_name(dev));
> -             if (ret) {
> -                     dev_err(dev, "can't request gpio #%d: %d\n", i, ret);
> -                     goto err_loop;
> -             }
> -
> -             pinfo->gpios[i] = gpio;
> -             pinfo->alow_flags[i] = flags & OF_GPIO_ACTIVE_LOW;
> -
> -             ret = gpio_direction_output(pinfo->gpios[i],
> -                                         pinfo->alow_flags[i]);
> -             if (ret) {
> -                     dev_err(dev, "can't set output direction for gpio "
> -                             "#%d: %d\n", i, ret);
> -                     goto err_loop;
> -             }
>       }
>
>       pdata->max_chipselect = ngpios;
> --
>
>
> -- 
> Rini van Zetten
> Senior Software Engineer
>
> -------------------------
> ARVOO Engineering B.V.
> Tasveld 13
> 3417 XS Montfoort
> The Netherlands
>
> E-mail : <mailto:[email protected]> Rini van Zetten
>
> Web : www.arvoo.com
>
>


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
spi-devel-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spi-devel-general

Reply via email to