linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] input:Add clk api support for w90p910 touchscreen
@ 2009-07-07 14:28 Wan ZongShun
  2009-07-07 17:19 ` Trilok Soni
  0 siblings, 1 reply; 9+ messages in thread
From: Wan ZongShun @ 2009-07-07 14:28 UTC (permalink / raw)
  To: linux-input, linux-arm-kernel, Dmitry Torokhov

Dear Dmitry,

Now,the w90p910 clock API has been submitted to "linux-arm-kernel",so using it for w90p910 touchscreen driver.Thanks!


Add clk api support for w90p910 touchscreen.

Signed-off-by: Wan ZongShun <mcuos.com@gmail.com>
---
 drivers/input/touchscreen/w90p910_ts.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
index 6071f58..4a42d66 100644
--- a/drivers/input/touchscreen/w90p910_ts.c
+++ b/drivers/input/touchscreen/w90p910_ts.c
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/clk.h>
 #include <linux/input.h>
 #include <linux/interrupt.h>
 
@@ -47,6 +48,7 @@ enum ts_state {
 struct w90p910_ts {
 	struct input_dev *input;
 	struct timer_list timer;
+	struct clk *clk;
 	int irq_num;
 	void __iomem *clocken;
 	void __iomem *ts_reg;
@@ -166,8 +168,7 @@ static int w90p910_open(struct input_dev *dev)
 	unsigned long val;
 
 	/* enable the ADC clock */
-	val = __raw_readl(w90p910_ts->clocken);
-	__raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
+	clk_enable(w90p910_ts->clk);
 
 	__raw_writel(ADC_RST1, w90p910_ts->ts_reg);
 	msleep(1);
@@ -211,8 +212,8 @@ static void w90p910_close(struct input_dev *dev)
 	del_timer_sync(&w90p910_ts->timer);
 
 	/* stop the ADC clock */
-	val = __raw_readl(w90p910_ts->clocken);
-	__raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
+	clk_disable(w90p910_ts->clk);
+	clk_put(w90p910_ts->clk);
 }
 
 static int __devinit w90x900ts_probe(struct platform_device *pdev)
@@ -253,9 +254,9 @@ static int __devinit w90x900ts_probe(struct platform_device *pdev)
 		goto fail2;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	if (!res) {
-		err = -ENXIO;
+	w90p910_ts->clk = clk_get(&pdev->dev, pdev->name);
+	if (IS_ERR(w90p910_ts->clk)) {
+		err = PTR_ERR(w90p910_ts->clk);
 		goto fail3;
 	}
 
@@ -283,18 +284,19 @@ static int __devinit w90x900ts_probe(struct platform_device *pdev)
 	if (request_irq(w90p910_ts->irq_num, w90p910_ts_interrupt,
 			IRQF_DISABLED, "w90p910ts", w90p910_ts)) {
 		err = -EBUSY;
-		goto fail3;
+		goto fail4;
 	}
 
 	err = input_register_device(w90p910_ts->input);
 	if (err)
-		goto fail4;
+		goto fail5;
 
 	platform_set_drvdata(pdev, w90p910_ts);
 
 	return 0;
 
-fail4:	free_irq(w90p910_ts->irq_num, w90p910_ts);
+fail5:	free_irq(w90p910_ts->irq_num, w90p910_ts);
+fail4:	clk_put(w90p910_ts->clk);
 fail3:	iounmap(w90p910_ts->ts_reg);
 fail2:	release_mem_region(res->start, res->end - res->start + 1);
 fail1:	input_free_device(input_dev);
-- 
1.5.6.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-07 14:28 [PATCH] input:Add clk api support for w90p910 touchscreen Wan ZongShun
@ 2009-07-07 17:19 ` Trilok Soni
  2009-07-08  5:22   ` Wan ZongShun
  0 siblings, 1 reply; 9+ messages in thread
From: Trilok Soni @ 2009-07-07 17:19 UTC (permalink / raw)
  To: Wan ZongShun; +Cc: linux-input, linux-arm-kernel, Dmitry Torokhov

Hi,

> +       w90p910_ts->clk = clk_get(&pdev->dev, pdev->name);

Having clk_name coming from pdev->name looks strange to me. I feel it
should either  "NULL" or const string.

> +       if (IS_ERR(w90p910_ts->clk)) {
> +               err = PTR_ERR(w90p910_ts->clk);
>                goto fail3;
>        }
>


-- 
---Trilok Soni
http://triloksoni.wordpress.com
http://www.linkedin.com/in/triloksoni
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-07 17:19 ` Trilok Soni
@ 2009-07-08  5:22   ` Wan ZongShun
  2009-07-08  6:51     ` Dmitry Torokhov
  0 siblings, 1 reply; 9+ messages in thread
From: Wan ZongShun @ 2009-07-08  5:22 UTC (permalink / raw)
  To: Trilok Soni; +Cc: linux-input, linux-arm-kernel, Dmitry Torokhov

Dear Trilok,

You are right, here should be put "NULL",thanks for your help.
Now, I fixed up my patch.

Add clk api support for w90p910 touchscreen.

Signed-off-by: Wan ZongShun <mcuos.com@gmail.com>

---
 drivers/input/touchscreen/w90p910_ts.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
index 6071f58..bf8dd52 100644
--- a/drivers/input/touchscreen/w90p910_ts.c
+++ b/drivers/input/touchscreen/w90p910_ts.c
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/clk.h>
 #include <linux/input.h>
 #include <linux/interrupt.h>
 
@@ -47,6 +48,7 @@ enum ts_state {
 struct w90p910_ts {
 	struct input_dev *input;
 	struct timer_list timer;
+	struct clk *clk;
 	int irq_num;
 	void __iomem *clocken;
 	void __iomem *ts_reg;
@@ -166,8 +168,7 @@ static int w90p910_open(struct input_dev *dev)
 	unsigned long val;
 
 	/* enable the ADC clock */
-	val = __raw_readl(w90p910_ts->clocken);
-	__raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
+	clk_enable(w90p910_ts->clk);
 
 	__raw_writel(ADC_RST1, w90p910_ts->ts_reg);
 	msleep(1);
@@ -211,8 +212,8 @@ static void w90p910_close(struct input_dev *dev)
 	del_timer_sync(&w90p910_ts->timer);
 
 	/* stop the ADC clock */
-	val = __raw_readl(w90p910_ts->clocken);
-	__raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
+	clk_disable(w90p910_ts->clk);
+	clk_put(w90p910_ts->clk);
 }
 
 static int __devinit w90x900ts_probe(struct platform_device *pdev)
@@ -253,9 +254,9 @@ static int __devinit w90x900ts_probe(struct platform_device *pdev)
 		goto fail2;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	if (!res) {
-		err = -ENXIO;
+	w90p910_ts->clk = clk_get(&pdev->dev, NULL);
+	if (IS_ERR(w90p910_ts->clk)) {
+		err = PTR_ERR(w90p910_ts->clk);
 		goto fail3;
 	}
 
@@ -283,18 +284,19 @@ static int __devinit w90x900ts_probe(struct platform_device *pdev)
 	if (request_irq(w90p910_ts->irq_num, w90p910_ts_interrupt,
 			IRQF_DISABLED, "w90p910ts", w90p910_ts)) {
 		err = -EBUSY;
-		goto fail3;
+		goto fail4;
 	}
 
 	err = input_register_device(w90p910_ts->input);
 	if (err)
-		goto fail4;
+		goto fail5;
 
 	platform_set_drvdata(pdev, w90p910_ts);
 
 	return 0;
 
-fail4:	free_irq(w90p910_ts->irq_num, w90p910_ts);
+fail5:	free_irq(w90p910_ts->irq_num, w90p910_ts);
+fail4:	clk_put(w90p910_ts->clk);
 fail3:	iounmap(w90p910_ts->ts_reg);
 fail2:	release_mem_region(res->start, res->end - res->start + 1);
 fail1:	input_free_device(input_dev);
-- 
1.5.6.3

B&R
Wan.


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-08  5:22   ` Wan ZongShun
@ 2009-07-08  6:51     ` Dmitry Torokhov
  2009-07-08  7:10       ` Wan ZongShun
  0 siblings, 1 reply; 9+ messages in thread
From: Dmitry Torokhov @ 2009-07-08  6:51 UTC (permalink / raw)
  To: Wan ZongShun; +Cc: Trilok Soni, linux-input, linux-arm-kernel

On Wed, Jul 08, 2009 at 01:22:56PM +0800, Wan ZongShun wrote:
> Dear Trilok,
> 
> You are right, here should be put "NULL",thanks for your help.
> Now, I fixed up my patch.
> 

It looks like clocken can be removed as well?

-- 
Dmitry

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-08  6:51     ` Dmitry Torokhov
@ 2009-07-08  7:10       ` Wan ZongShun
  2009-07-08 10:34         ` Trilok Soni
  0 siblings, 1 reply; 9+ messages in thread
From: Wan ZongShun @ 2009-07-08  7:10 UTC (permalink / raw)
  To: Dmitry Torokhov; +Cc: Trilok Soni, linux-input, linux-arm-kernel

Dear Dmitry,

Okay, this clocken should be removed here.
I fixed up my patch and re-submitted it.
thanks a lot for your help.

Add clk api support for w90p910 touchscreen.

Signed-off-by: Wan ZongShun <mcuos.com@gmail.com>

---
 drivers/input/touchscreen/w90p910_ts.c |   25 ++++++++++++-------------
 1 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
index 6071f58..7bef19e 100644
--- a/drivers/input/touchscreen/w90p910_ts.c
+++ b/drivers/input/touchscreen/w90p910_ts.c
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/clk.h>
 #include <linux/input.h>
 #include <linux/interrupt.h>
 
@@ -47,8 +48,8 @@ enum ts_state {
 struct w90p910_ts {
 	struct input_dev *input;
 	struct timer_list timer;
+	struct clk *clk;
 	int irq_num;
-	void __iomem *clocken;
 	void __iomem *ts_reg;
 	spinlock_t lock;
 	enum ts_state state;
@@ -166,8 +167,7 @@ static int w90p910_open(struct input_dev *dev)
 	unsigned long val;
 
 	/* enable the ADC clock */
-	val = __raw_readl(w90p910_ts->clocken);
-	__raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
+	clk_enable(w90p910_ts->clk);
 
 	__raw_writel(ADC_RST1, w90p910_ts->ts_reg);
 	msleep(1);
@@ -211,8 +211,8 @@ static void w90p910_close(struct input_dev *dev)
 	del_timer_sync(&w90p910_ts->timer);
 
 	/* stop the ADC clock */
-	val = __raw_readl(w90p910_ts->clocken);
-	__raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
+	clk_disable(w90p910_ts->clk);
+	clk_put(w90p910_ts->clk);
 }
 
 static int __devinit w90x900ts_probe(struct platform_device *pdev)
@@ -253,14 +253,12 @@ static int __devinit w90x900ts_probe(struct platform_device *pdev)
 		goto fail2;
 	}
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	if (!res) {
-		err = -ENXIO;
+	w90p910_ts->clk = clk_get(&pdev->dev, NULL);
+	if (IS_ERR(w90p910_ts->clk)) {
+		err = PTR_ERR(w90p910_ts->clk);
 		goto fail3;
 	}
 
-	w90p910_ts->clocken = (void __iomem *)res->start;
-
 	input_dev->name = "W90P910 TouchScreen";
 	input_dev->phys = "w90p910ts/event0";
 	input_dev->id.bustype = BUS_HOST;
@@ -283,18 +281,19 @@ static int __devinit w90x900ts_probe(struct platform_device *pdev)
 	if (request_irq(w90p910_ts->irq_num, w90p910_ts_interrupt,
 			IRQF_DISABLED, "w90p910ts", w90p910_ts)) {
 		err = -EBUSY;
-		goto fail3;
+		goto fail4;
 	}
 
 	err = input_register_device(w90p910_ts->input);
 	if (err)
-		goto fail4;
+		goto fail5;
 
 	platform_set_drvdata(pdev, w90p910_ts);
 
 	return 0;
 
-fail4:	free_irq(w90p910_ts->irq_num, w90p910_ts);
+fail5:	free_irq(w90p910_ts->irq_num, w90p910_ts);
+fail4:	clk_put(w90p910_ts->clk);
 fail3:	iounmap(w90p910_ts->ts_reg);
 fail2:	release_mem_region(res->start, res->end - res->start + 1);
 fail1:	input_free_device(input_dev);
-- 
1.5.6.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-08  7:10       ` Wan ZongShun
@ 2009-07-08 10:34         ` Trilok Soni
  2009-07-08 14:06           ` Wan ZongShun
  0 siblings, 1 reply; 9+ messages in thread
From: Trilok Soni @ 2009-07-08 10:34 UTC (permalink / raw)
  To: Wan ZongShun; +Cc: Dmitry Torokhov, linux-input, linux-arm-kernel

Hi Wan ZongShun,

>
> ---
>  drivers/input/touchscreen/w90p910_ts.c |   25 ++++++++++++-------------
>  1 files changed, 12 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
> index 6071f58..7bef19e 100644
> --- a/drivers/input/touchscreen/w90p910_ts.c
> +++ b/drivers/input/touchscreen/w90p910_ts.c
> @@ -13,6 +13,7 @@
>  #include <linux/module.h>
>  #include <linux/platform_device.h>
>  #include <linux/io.h>
> +#include <linux/clk.h>
>  #include <linux/input.h>
>  #include <linux/interrupt.h>
>
> @@ -47,8 +48,8 @@ enum ts_state {
>  struct w90p910_ts {
>        struct input_dev *input;
>        struct timer_list timer;
> +       struct clk *clk;
>        int irq_num;
> -       void __iomem *clocken;
>        void __iomem *ts_reg;
>        spinlock_t lock;
>        enum ts_state state;
> @@ -166,8 +167,7 @@ static int w90p910_open(struct input_dev *dev)
>        unsigned long val;
>
>        /* enable the ADC clock */
> -       val = __raw_readl(w90p910_ts->clocken);
> -       __raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
> +       clk_enable(w90p910_ts->clk);
>
>        __raw_writel(ADC_RST1, w90p910_ts->ts_reg);
>        msleep(1);
> @@ -211,8 +211,8 @@ static void w90p910_close(struct input_dev *dev)
>        del_timer_sync(&w90p910_ts->timer);
>
>        /* stop the ADC clock */
> -       val = __raw_readl(w90p910_ts->clocken);
> -       __raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
> +       clk_disable(w90p910_ts->clk);
> +       clk_put(w90p910_ts->clk);


why you are doing clk_put on _close? I think you are calling clk_get
only on _probe, so there is a mismatch here. Also I don't see
clk_disable/clk_put in driver remove function.

-- 
---Trilok Soni
http://triloksoni.wordpress.com
http://www.linkedin.com/in/triloksoni
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-08 10:34         ` Trilok Soni
@ 2009-07-08 14:06           ` Wan ZongShun
  2009-07-08 14:21             ` Trilok Soni
  0 siblings, 1 reply; 9+ messages in thread
From: Wan ZongShun @ 2009-07-08 14:06 UTC (permalink / raw)
  To: Trilok Soni, Eric miao; +Cc: Dmitry Torokhov, linux-input, linux-arm-kernel

Dear  Trilok ,


2009/7/8 Trilok Soni <soni.trilok@gmail.com>:
> Hi Wan ZongShun,
>
>>
>> ---
>>  drivers/input/touchscreen/w90p910_ts.c |   25 ++++++++++++-------------
>>  1 files changed, 12 insertions(+), 13 deletions(-)
>>
>> diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
>> index 6071f58..7bef19e 100644
>> --- a/drivers/input/touchscreen/w90p910_ts.c
>> +++ b/drivers/input/touchscreen/w90p910_ts.c
>> @@ -13,6 +13,7 @@
>>  #include <linux/module.h>
>>  #include <linux/platform_device.h>
>>  #include <linux/io.h>
>> +#include <linux/clk.h>
>>  #include <linux/input.h>
>>  #include <linux/interrupt.h>
>>
>> @@ -47,8 +48,8 @@ enum ts_state {
>>  struct w90p910_ts {
>>        struct input_dev *input;
>>        struct timer_list timer;
>> +       struct clk *clk;
>>        int irq_num;
>> -       void __iomem *clocken;
>>        void __iomem *ts_reg;
>>        spinlock_t lock;
>>        enum ts_state state;
>> @@ -166,8 +167,7 @@ static int w90p910_open(struct input_dev *dev)
>>        unsigned long val;
>>
>>        /* enable the ADC clock */
>> -       val = __raw_readl(w90p910_ts->clocken);
>> -       __raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
>> +       clk_enable(w90p910_ts->clk);
>>
>>        __raw_writel(ADC_RST1, w90p910_ts->ts_reg);
>>        msleep(1);
>> @@ -211,8 +211,8 @@ static void w90p910_close(struct input_dev *dev)
>>        del_timer_sync(&w90p910_ts->timer);
>>
>>        /* stop the ADC clock */
>> -       val = __raw_readl(w90p910_ts->clocken);
>> -       __raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
>> +       clk_disable(w90p910_ts->clk);
>> +       clk_put(w90p910_ts->clk);
>
>
> why you are doing clk_put on _close? I think you are calling clk_get
> only on _probe, so there is a mismatch here. Also I don't see
> clk_disable/clk_put in driver remove function.

Just imitate the method from pxa27x_keypad.c.
Do you mean  there is no need to free the clock source here?

> --
> ---Trilok Soni
> http://triloksoni.wordpress.com
> http://www.linkedin.com/in/triloksoni
>



-- 
Wan z.s
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-08 14:06           ` Wan ZongShun
@ 2009-07-08 14:21             ` Trilok Soni
  2009-07-08 14:31               ` Wan ZongShun
  0 siblings, 1 reply; 9+ messages in thread
From: Trilok Soni @ 2009-07-08 14:21 UTC (permalink / raw)
  To: Wan ZongShun; +Cc: Eric miao, Dmitry Torokhov, linux-input, linux-arm-kernel

Hi Wan ZongShun,

On Wed, Jul 8, 2009 at 7:36 PM, Wan ZongShun<mcuos.com@gmail.com> wrote:
> Dear  Trilok ,
>
>
> 2009/7/8 Trilok Soni <soni.trilok@gmail.com>:
>> Hi Wan ZongShun,
>>
>>>
>>> ---
>>>  drivers/input/touchscreen/w90p910_ts.c |   25 ++++++++++++-------------
>>>  1 files changed, 12 insertions(+), 13 deletions(-)
>>>
>>> diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
>>> index 6071f58..7bef19e 100644
>>> --- a/drivers/input/touchscreen/w90p910_ts.c
>>> +++ b/drivers/input/touchscreen/w90p910_ts.c
>>> @@ -13,6 +13,7 @@
>>>  #include <linux/module.h>
>>>  #include <linux/platform_device.h>
>>>  #include <linux/io.h>
>>> +#include <linux/clk.h>
>>>  #include <linux/input.h>
>>>  #include <linux/interrupt.h>
>>>
>>> @@ -47,8 +48,8 @@ enum ts_state {
>>>  struct w90p910_ts {
>>>        struct input_dev *input;
>>>        struct timer_list timer;
>>> +       struct clk *clk;
>>>        int irq_num;
>>> -       void __iomem *clocken;
>>>        void __iomem *ts_reg;
>>>        spinlock_t lock;
>>>        enum ts_state state;
>>> @@ -166,8 +167,7 @@ static int w90p910_open(struct input_dev *dev)
>>>        unsigned long val;
>>>
>>>        /* enable the ADC clock */
>>> -       val = __raw_readl(w90p910_ts->clocken);
>>> -       __raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
>>> +       clk_enable(w90p910_ts->clk);
>>>
>>>        __raw_writel(ADC_RST1, w90p910_ts->ts_reg);
>>>        msleep(1);
>>> @@ -211,8 +211,8 @@ static void w90p910_close(struct input_dev *dev)
>>>        del_timer_sync(&w90p910_ts->timer);
>>>
>>>        /* stop the ADC clock */
>>> -       val = __raw_readl(w90p910_ts->clocken);
>>> -       __raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
>>> +       clk_disable(w90p910_ts->clk);
>>> +       clk_put(w90p910_ts->clk);
>>
>>
>> why you are doing clk_put on _close? I think you are calling clk_get
>> only on _probe, so there is a mismatch here. Also I don't see
>> clk_disable/clk_put in driver remove function.
>
> Just imitate the method from pxa27x_keypad.c.
> Do you mean  there is no need to free the clock source here?
>

I don't see clk_put in pxa27x_keypad.c _close function, which driver
you are referring too?

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/input/keyboard/pxa27x_keypad.c;h=0d2fc64a5e1cead895be0a0c22cd96a500faf1c0;hb=HEAD

clk_put is not needed in _close function. You should instead update
_remove method of your driver with clk_disable + clk_put.

-- 
---Trilok Soni
http://triloksoni.wordpress.com
http://www.linkedin.com/in/triloksoni
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] input:Add clk api support for w90p910 touchscreen
  2009-07-08 14:21             ` Trilok Soni
@ 2009-07-08 14:31               ` Wan ZongShun
  0 siblings, 0 replies; 9+ messages in thread
From: Wan ZongShun @ 2009-07-08 14:31 UTC (permalink / raw)
  To: Trilok Soni; +Cc: Eric miao, Dmitry Torokhov, linux-input, linux-arm-kernel

Dear Trilok,



2009/7/8 Trilok Soni <soni.trilok@gmail.com>:
> Hi Wan ZongShun,
>
> On Wed, Jul 8, 2009 at 7:36 PM, Wan ZongShun<mcuos.com@gmail.com> wrote:
>> Dear  Trilok ,
>>
>>
>> 2009/7/8 Trilok Soni <soni.trilok@gmail.com>:
>>> Hi Wan ZongShun,
>>>
>>>>
>>>> ---
>>>>  drivers/input/touchscreen/w90p910_ts.c |   25 ++++++++++++-------------
>>>>  1 files changed, 12 insertions(+), 13 deletions(-)
>>>>
>>>> diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
>>>> index 6071f58..7bef19e 100644
>>>> --- a/drivers/input/touchscreen/w90p910_ts.c
>>>> +++ b/drivers/input/touchscreen/w90p910_ts.c
>>>> @@ -13,6 +13,7 @@
>>>>  #include <linux/module.h>
>>>>  #include <linux/platform_device.h>
>>>>  #include <linux/io.h>
>>>> +#include <linux/clk.h>
>>>>  #include <linux/input.h>
>>>>  #include <linux/interrupt.h>
>>>>
>>>> @@ -47,8 +48,8 @@ enum ts_state {
>>>>  struct w90p910_ts {
>>>>        struct input_dev *input;
>>>>        struct timer_list timer;
>>>> +       struct clk *clk;
>>>>        int irq_num;
>>>> -       void __iomem *clocken;
>>>>        void __iomem *ts_reg;
>>>>        spinlock_t lock;
>>>>        enum ts_state state;
>>>> @@ -166,8 +167,7 @@ static int w90p910_open(struct input_dev *dev)
>>>>        unsigned long val;
>>>>
>>>>        /* enable the ADC clock */
>>>> -       val = __raw_readl(w90p910_ts->clocken);
>>>> -       __raw_writel(val | ADC_CLK_EN, w90p910_ts->clocken);
>>>> +       clk_enable(w90p910_ts->clk);
>>>>
>>>>        __raw_writel(ADC_RST1, w90p910_ts->ts_reg);
>>>>        msleep(1);
>>>> @@ -211,8 +211,8 @@ static void w90p910_close(struct input_dev *dev)
>>>>        del_timer_sync(&w90p910_ts->timer);
>>>>
>>>>        /* stop the ADC clock */
>>>> -       val = __raw_readl(w90p910_ts->clocken);
>>>> -       __raw_writel(val & ~ADC_CLK_EN, w90p910_ts->clocken);
>>>> +       clk_disable(w90p910_ts->clk);
>>>> +       clk_put(w90p910_ts->clk);
>>>
>>>
>>> why you are doing clk_put on _close? I think you are calling clk_get
>>> only on _probe, so there is a mismatch here. Also I don't see
>>> clk_disable/clk_put in driver remove function.
>>
>> Just imitate the method from pxa27x_keypad.c.
>> Do you mean  there is no need to free the clock source here?
>>
>
> I don't see clk_put in pxa27x_keypad.c _close function, which driver
> you are referring too?

Okay, got it ,I should put  clk_disable + clk_put  in _remove rather
than  in _close.
thanks for your help.

> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/input/keyboard/pxa27x_keypad.c;h=0d2fc64a5e1cead895be0a0c22cd96a500faf1c0;hb=HEAD
>
> clk_put is not needed in _close function. You should instead update
> _remove method of your driver with clk_disable + clk_put.
>
> --
> ---Trilok Soni
> http://triloksoni.wordpress.com
> http://www.linkedin.com/in/triloksoni
>



-- 
Wan z.s
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-07-08 14:31 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-07 14:28 [PATCH] input:Add clk api support for w90p910 touchscreen Wan ZongShun
2009-07-07 17:19 ` Trilok Soni
2009-07-08  5:22   ` Wan ZongShun
2009-07-08  6:51     ` Dmitry Torokhov
2009-07-08  7:10       ` Wan ZongShun
2009-07-08 10:34         ` Trilok Soni
2009-07-08 14:06           ` Wan ZongShun
2009-07-08 14:21             ` Trilok Soni
2009-07-08 14:31               ` Wan ZongShun

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).