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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to