On Sun, 2015-04-05 at 20:06 +0300, Priit Laes wrote: > On Sun, 2015-04-05 at 18:04 +0200, Bastien Nocera wrote: > > On Sun, 2015-04-05 at 00:08 +0300, Priit Laes wrote: > > > This patch implements GT801x2 touchscreen support. > > > Unfortunately, there is a big difference between GT801 and GT9xx > > > series > > > chips, therefore some advice is needed on how to proceed. > > > > > > Differences between GT801x2 and GT9xx series: > > > > > > 1. I2C registers: 1 byte (GT801x2) vs 2 bytes (GT9xx) > > > 2. Different configuration layout and version info > > > 3. Different touch report protocol > > > > That doesn't seem like an awful lot of differences. Approximately > > 80 > > line changes for 500 lines of driver code. You could add an enum > > for > > the 8xx and 9xx types near the top, add that as driver data in the > > match arrays (both the ACPI and OF ones). Then have if statements > > choose the correct init, read and report functions. > > How should I handle the version readout? > > Currently the driver has following info in its registers (starting > from 0xf0): > > f0: 47 54 38 30 31 4e 49 5f 33 52 31 35 5f 31 41 56 > GT801NI_3R15_1AV Version info is only used for debug anyway, so you'd have a goodix_read_version() call for gt8xx devices. .driver_data = GT9XX for the existing code or .driver_data = GT8XX for the new one And do: if (driver_data == GT9XX) goodix_read_version_9xx(); else goodix_read_version_8xx(); etc. Cheers -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html