[PATCH -mm][POWERPC] mpc8xxx : allow SPI without cs.
Kumar Gala
galak at kernel.crashing.org
Thu Jun 18 22:42:23 EST 2009
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 <rini at arvoo.nl>
> ---
> 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:rini at arvoo.com> Rini van Zetten
>
> Web : www.arvoo.com
>
>
More information about the Linuxppc-dev
mailing list