diff options
| -rw-r--r-- | drivers/input/keyboard/spear-keyboard.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/input/keyboard/spear-keyboard.c b/drivers/input/keyboard/spear-keyboard.c index d70093bef740..695d237417d6 100644 --- a/drivers/input/keyboard/spear-keyboard.c +++ b/drivers/input/keyboard/spear-keyboard.c | |||
| @@ -267,9 +267,14 @@ static int spear_kbd_probe(struct platform_device *pdev) | |||
| 267 | return error; | 267 | return error; |
| 268 | } | 268 | } |
| 269 | 269 | ||
| 270 | error = clk_prepare(kbd->clk); | ||
| 271 | if (error) | ||
| 272 | return error; | ||
| 273 | |||
| 270 | error = input_register_device(input_dev); | 274 | error = input_register_device(input_dev); |
| 271 | if (error) { | 275 | if (error) { |
| 272 | dev_err(&pdev->dev, "Unable to register keyboard device\n"); | 276 | dev_err(&pdev->dev, "Unable to register keyboard device\n"); |
| 277 | clk_unprepare(kbd->clk); | ||
| 273 | return error; | 278 | return error; |
| 274 | } | 279 | } |
| 275 | 280 | ||
| @@ -281,6 +286,11 @@ static int spear_kbd_probe(struct platform_device *pdev) | |||
| 281 | 286 | ||
| 282 | static int spear_kbd_remove(struct platform_device *pdev) | 287 | static int spear_kbd_remove(struct platform_device *pdev) |
| 283 | { | 288 | { |
| 289 | struct spear_kbd *kbd = platform_get_drvdata(pdev); | ||
| 290 | |||
| 291 | input_unregister_device(kbd->input); | ||
| 292 | clk_unprepare(kbd->clk); | ||
| 293 | |||
| 284 | device_init_wakeup(&pdev->dev, 0); | 294 | device_init_wakeup(&pdev->dev, 0); |
| 285 | platform_set_drvdata(pdev, NULL); | 295 | platform_set_drvdata(pdev, NULL); |
| 286 | 296 | ||
