Re: [PATCH 0/7] A few patches to cyttsp

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 16, 2011 at 08:17:02PM +0100, Javier Martinez Canillas wrote:
> On Mon, Nov 14, 2011 at 9:15 AM, Dmitry Torokhov
> <dmitry.torokhov@xxxxxxxxx> wrote:
> > Hi Javier,
> >
> > I am sending a few patches that I made while trying to understand the
> > Cypress TTSP driver. I am still not quite happy with the SPI read method
> > and I am also wondering if cyttsp_power_on could be made less messy.
> >
> 
> Hi Dmitry,
> 
> Thank you very much for the review and the patches. One question, when
> sending new versions of the patch-set, do you want me to keep the
> history of your patches or should I merge all of them and submit just
> three patches (core, i2c, spi) to make easier future revisions?

You may merge them, I think it will be easier.

> 
> Sure, Kevin will cleanup the SPI read method and I will make
> cyttsp_power_on more cleaner.

Thanks.

> 
> > Current open/close methods seem to be not very useful: even though we
> > stop interrupts we do not put the chip into low power mode. Is there a
> > way to do so?
> >
> 
> Yes, the controller can be put to sleep (low power mode). I will add
> that to the close function for the next version of the patch-set.

Excellent.

> 
> > Regarding PM methods - why do we have conditional 'use sleep' and what
> > exactly wakeup() method is supposed to do? Why is it a platform method?
> >
> 
> It was meant to let each board to decide if it wants to go sleep and
> to define a specific handler for wakeup.

Why would a board not want to go to sleep? Normally boards want to
specify whether they want to have device as a wakeup source and such
devices, instead of shutting down in suspend method, just configure
their IRQ as a wakeup IRQ and that is it.

> This is for example the board
> file of the OMAP Encore machine type (B & N Nook's color)
> 
> static struct cyttsp_platform_data cyttsp_i2c_platform_data = {
>         .wakeup = cyttsp_i2c_wakeup,

OK, so in this particular case what does cyttsp_i2c_wakeup actually
does?

>         .init = cyttsp_i2c_init,
> .....
> }
> 
> In the same way it exists an init board specific function that gets
> called from cyttsp_core_init() if the board has defined one:
> 
> void *cyttsp_core_init(struct cyttsp_bus_ops *bus_ops,
> 		       struct device *dev, int irq)
> {
> ....
> 	if (ts->platform_data->init) {
> 		if (ts->platform_data->init()) {
> 			dev_dbg(ts->dev, "%s: Error, platform init failed!\n",
> 				__func__);
> 			goto error_init;
> 		}
> 	}
> ....
> }
> 
> This is necessary because each board may need to configure differently
> the connection with the chip. For example, OMAP boards will have to
> configure the mux pins and so on.
> 
> Is this correct? or the driver should not have these handlers and
> trust that the platform specific code did all the set up before?

I think it depends on the kind of set up is happening. Static setup
(such as registering memory regsions, configuring IRQ type, etc) is
probably done upfront; if you need to talk to the hardware then custom
method is fine.

Thanks.

-- 
Dmitry
--
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


[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux