RE: [PATCH] s3c/s3c24xx: arm: leds: Make s3c24xx LEDS driver usegpiolib

From: Stephen Warren
Date: Fri Nov 18 2011 - 16:59:36 EST


Denis Kuzmenko wrote at Friday, November 18, 2011 2:45 PM:
> Make s3c24xx LEDS driver use gpiolib. Disable using pull-resistor when not
> using S3C24XX_LEDF_TRISTATE and enble it when in opposite case.
>
> Signed-off-by: Denis Kuzmenko <linux@xxxxxxxxxxxxxx>

> if (pdata->flags & S3C24XX_LEDF_TRISTATE) {
> - s3c2410_gpio_setpin(pdata->gpio, 0);
> - s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_INPUT);
> + /*
> + * pull is needed here to protect pin from being left
> + * floating
> + */
> + ret = s3c_gpio_setpull(pdata->gpio, S3C_GPIO_PULL_UP);
> + if (ret)
> + s3c_gpio_setpull(pdata->gpio, S3C_GPIO_PULL_DOWN);

Sorry, could you explain why it's appropriate to configure a pull here
at all, let alone why it's OK to have a random pull on the line?

> + /* initially turn off led */
> + ret = gpio_direction_input(pdata->gpio);
> } else {
> - s3c2410_gpio_pullup(pdata->gpio, 0);
> - s3c2410_gpio_setpin(pdata->gpio, 0);
> - s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_OUTPUT);
> + /* no point in having a pull-up as we are always driving */
> + s3c_gpio_setpull(pdata->gpio, S3C_GPIO_PULL_NONE);
> + ret = gpio_request_one(pdata->gpio, GPIOF_OUT_INIT_LOW,
> + pdata->name);
> + /* initially turn off led */
> + ret = gpio_direction_output(pdata->gpio,
> + !!(pdata->flags & S3C24XX_LEDF_ACTLOW));

Wouldn't it be better to pass GPIOF_OUT_INIT_HIGH or GPIOF_OUT_INIT_LOW
to gpio_request_one() based on S3C24XX_LEDF_ACTLOW, and avoid the call to
gpio_direction_output; that will avoid glitching the line for a short time.

I'm fine with the rest of the code.

--
nvpublic

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/