Hi Bryan,

On Mon, Feb 04, 2008 at 05:52:38PM +0800, Bryan Wu wrote:
 +
> +     spi_message_add_tail(&req->xfer[0], &req->msg);
> +     spi_message_add_tail(&req->xfer[1], &req->msg);
> +
> +     status = spi_sync(spi, &req->msg);
> +
> +     if (req->msg.status)
> +             status = req->msg.status;
> +

I think the "new way" for spi is to just check return value of
spi_sync and not bother with req->msg.status, but even using
old style spi_sycn I'd expect something like:

        status = spi_sync(spi, &req->msg);
        if (status == 0)
                status = req->msg.status;

> +
> +static ssize_t ad7877_gpio3_store(struct device *dev,
> +                                  struct device_attribute *attr,
> +                                  const char *buf, size_t count)
> +{
> +     struct ad7877 *ts = dev_get_drvdata(dev);
> +     char *endp;
> +     int i;
> +
> +     i = simple_strtoul(buf, &endp, 10);
> +
> +     if (i)
> +             ts->gpio3=1;
> +     else
> +             ts->gpio3=0;
> +

I am tempted to change the above to ts->gpio3 = !!i;

> +
> +     if (likely(x && z1 && !device_suspended(&ts->spi->dev))) {
> +             /* compute touch pressure resistance using equation #2 */
> +             Rt = z2;
> +             Rt -= z1;
> +             Rt *= x;
> +             Rt *= ts->x_plate_ohms;
> +             Rt /= z1;
> +             Rt = (Rt + 2047) >> 12;
> +     } else
> +             Rt = 0;
> +
> +     if (Rt) {
> +             input_report_abs(input_dev, ABS_X, x);
> +             input_report_abs(input_dev, ABS_Y, y);
> +             input_report_abs(input_dev, ABS_PRESSURE, Rt);
> +             input_sync(input_dev);
> +     }
> +
> +#ifdef       VERBOSE
> +     if (Rt)
> +             pr_debug("%s: %d/%d/%d%s\n", ts->spi->dev.bus_id,
> +                     x, y, Rt, Rt ? "" : " UP");

We check the same condition 3 times in a row. The compiler might
combine them but why not help it?

> +
> +static int ad7877_suspend(struct spi_device *spi, pm_message_t message)
> +{
> +     struct ad7877 *ts = dev_get_drvdata(&spi->dev);
> +
> +     spi->dev.power.power_state = message;

I think they are trying to get rid of power_state...

> +     ad7877_disable(ts);
> +
> +     return 0;
> +
> +}
> +
> +static int ad7877_resume(struct spi_device *spi)
> +{
> +     struct ad7877 *ts = dev_get_drvdata(&spi->dev);
> +
> +     spi->dev.power.power_state = PMSG_ON;

Same here.

> +
> +     err = input_register_device(input_dev);
> +     if (err)
> +             goto err_idev;
> +
> +     ts->intr_flag = 0;
> +
> +     return 0;
> +
> +err_idev:
> +     input_dev = NULL; /* so we don't try to free it later */

But we _do_ need to free it if input_register_device() fails.

Thanks.

-- 
Dmitry
-
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to