On Fri, May 11, 2018 at 5:22 PM, Mark Jonas <mark.jonas@xxxxxxxxxxxx> wrote: > Add Rohm BU21029 resistive touch panel controller support with I2C > interface. > +#include <linux/of.h> This becomes redundant (see below). > +#define STOP_DELAY_US 50L > +#define START_DELAY_MS 2L > +#define BUF_LEN 8L No need to use L for such small numbers. Integer promotion is a part of C standard. > +#define SCALE_12BIT (1 << 12) > +#define MAX_12BIT ((1 << 12) - 1) BIT(12) GENMASK(11, 0) > +static int bu21029_touch_report(struct bu21029_ts_data *bu21029) > +{ > + struct i2c_client *i2c = bu21029->client; > + u8 buf[BUF_LEN]; > + int error = bu21029_touch_report(bu21029); > + Redundant empty line. > + if (error) { > + dev_err(&i2c->dev, "failed to report (error: %d)\n", error); Potential spamming case. > + return IRQ_NONE; > + } > +static void bu21029_stop_chip(struct input_dev *dev) > +{ > + struct bu21029_ts_data *bu21029 = input_get_drvdata(dev); > + > + disable_irq(bu21029->client->irq); > + del_timer_sync(&bu21029->timer); > + > + /* put chip into reset */ > + gpiod_set_value_cansleep(bu21029->reset_gpios, 1); > + udelay(STOP_DELAY_US); udelay() ?! > +} > + > +static int bu21029_start_chip(struct input_dev *dev) > +{ > + u16 hwid; > + > + /* take chip out of reset */ > + gpiod_set_value_cansleep(bu21029->reset_gpios, 0); > + mdelay(START_DELAY_MS); mdelay()?! > + > + error = i2c_smbus_read_i2c_block_data(i2c, > + BU21029_HWID_REG, > + 2, > + (u8 *)&hwid); > + if (error < 0) { > + dev_err(&i2c->dev, "failed to read HW ID\n"); > + goto out; > + } > + > + if (cpu_to_be16(hwid) != SUPPORTED_HWID) { Hmm... Why cpu_to_be16() is required? > + dev_err(&i2c->dev, "unsupported HW ID 0x%x\n", hwid); > + error = -ENODEV; > + goto out; > + } > +} > +static int bu21029_parse_dt(struct bu21029_ts_data *bu21029) You can get rid of DT requirement by... > +{ > + struct device *dev = &bu21029->client->dev; > + struct device_node *np = dev->of_node; > + u32 val32; > + int error; > + if (!np) { > + dev_err(dev, "no device tree data\n"); > + return -EINVAL; > + } (this becomes redundant) > + > + bu21029->reset_gpios = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); > + if (IS_ERR(bu21029->reset_gpios)) { > + error = PTR_ERR(bu21029->reset_gpios); > + if (error != -EPROBE_DEFER) > + dev_err(dev, "invalid 'reset-gpios':%d\n", error); > + return error; > + } > + > + if (of_property_read_u32(np, "rohm,x-plate-ohms", &val32)) { ...simple calling device_property_read_u32() instead. > + dev_err(dev, "invalid 'x-plate-ohms' supplied\n"); > + return -EINVAL; > + } > + bu21029->x_plate_ohms = val32; > + > + touchscreen_parse_properties(bu21029->in_dev, false, &bu21029->prop); > + > + return 0; > +} > +#ifdef CONFIG_PM_SLEEP Instead... > +static int bu21029_suspend(struct device *dev) ...use __maby_unused annotation. > +static int bu21029_resume(struct device *dev) Ditto. -- With Best Regards, Andy Shevchenko -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html