Input: spear-keyboard - add clk_{un}prepare() support
authorVipul Kumar Samar <vipulkumar.samar@st.com>
Mon, 26 Nov 2012 16:50:08 +0000 (08:50 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 28 Nov 2012 06:38:32 +0000 (22:38 -0800)
clk_{un}prepare is mandatory for platforms using common clock framework.
Because for SPEAr we don't do anything in clk_{un}prepare() calls, just
call them once in probe/remove.

Signed-off-by: Vipul Kumar Samar <vipulkumar.samar@st.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/spear-keyboard.c

index d70093bef740c27c8ba402902ad8400965ee9c19..695d237417d68029b7aa544b76837b2a31fd8f61 100644 (file)
@@ -267,9 +267,14 @@ static int spear_kbd_probe(struct platform_device *pdev)
                return error;
        }
 
+       error = clk_prepare(kbd->clk);
+       if (error)
+               return error;
+
        error = input_register_device(input_dev);
        if (error) {
                dev_err(&pdev->dev, "Unable to register keyboard device\n");
+               clk_unprepare(kbd->clk);
                return error;
        }
 
@@ -281,6 +286,11 @@ static int spear_kbd_probe(struct platform_device *pdev)
 
 static int spear_kbd_remove(struct platform_device *pdev)
 {
+       struct spear_kbd *kbd = platform_get_drvdata(pdev);
+
+       input_unregister_device(kbd->input);
+       clk_unprepare(kbd->clk);
+
        device_init_wakeup(&pdev->dev, 0);
        platform_set_drvdata(pdev, NULL);