diff options
author | Ike Panhc <ike.pan@canonical.com> | 2010-12-13 05:01:01 -0500 |
---|---|---|
committer | Matthew Garrett <mjg@redhat.com> | 2011-01-07 17:03:47 -0500 |
commit | 8693ae846cad00e6c2c40e116ec1fc50c145b559 (patch) | |
tree | ba9cbd50fe81ff249db931559ca04afee5676e3a /drivers/platform/x86/ideapad-laptop.c | |
parent | a4b5a2794a27da870c2e16db390778a4683f95f8 (diff) |
ideapad: pass ideapad_priv as argument (part 1)
Passing ideapad_priv as argument and try not to using too much global variable.
This is part 1 for platform driver and input device.
Signed-off-by: Ike Panhc <ike.pan@canonical.com>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
Diffstat (limited to 'drivers/platform/x86/ideapad-laptop.c')
-rw-r--r-- | drivers/platform/x86/ideapad-laptop.c | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c index 3c6c5b5e1d53..37fe0d0448c9 100644 --- a/drivers/platform/x86/ideapad-laptop.c +++ b/drivers/platform/x86/ideapad-laptop.c | |||
@@ -301,37 +301,37 @@ static struct attribute_group ideapad_attribute_group = { | |||
301 | .attrs = ideapad_attributes | 301 | .attrs = ideapad_attributes |
302 | }; | 302 | }; |
303 | 303 | ||
304 | static int __devinit ideapad_platform_init(void) | 304 | static int __devinit ideapad_platform_init(struct ideapad_private *priv) |
305 | { | 305 | { |
306 | int result; | 306 | int result; |
307 | 307 | ||
308 | ideapad_priv->platform_device = platform_device_alloc("ideapad", -1); | 308 | priv->platform_device = platform_device_alloc("ideapad", -1); |
309 | if (!ideapad_priv->platform_device) | 309 | if (!priv->platform_device) |
310 | return -ENOMEM; | 310 | return -ENOMEM; |
311 | platform_set_drvdata(ideapad_priv->platform_device, ideapad_priv); | 311 | platform_set_drvdata(priv->platform_device, priv); |
312 | 312 | ||
313 | result = platform_device_add(ideapad_priv->platform_device); | 313 | result = platform_device_add(priv->platform_device); |
314 | if (result) | 314 | if (result) |
315 | goto fail_platform_device; | 315 | goto fail_platform_device; |
316 | 316 | ||
317 | result = sysfs_create_group(&ideapad_priv->platform_device->dev.kobj, | 317 | result = sysfs_create_group(&priv->platform_device->dev.kobj, |
318 | &ideapad_attribute_group); | 318 | &ideapad_attribute_group); |
319 | if (result) | 319 | if (result) |
320 | goto fail_sysfs; | 320 | goto fail_sysfs; |
321 | return 0; | 321 | return 0; |
322 | 322 | ||
323 | fail_sysfs: | 323 | fail_sysfs: |
324 | platform_device_del(ideapad_priv->platform_device); | 324 | platform_device_del(priv->platform_device); |
325 | fail_platform_device: | 325 | fail_platform_device: |
326 | platform_device_put(ideapad_priv->platform_device); | 326 | platform_device_put(priv->platform_device); |
327 | return result; | 327 | return result; |
328 | } | 328 | } |
329 | 329 | ||
330 | static void ideapad_platform_exit(void) | 330 | static void ideapad_platform_exit(struct ideapad_private *priv) |
331 | { | 331 | { |
332 | sysfs_remove_group(&ideapad_priv->platform_device->dev.kobj, | 332 | sysfs_remove_group(&priv->platform_device->dev.kobj, |
333 | &ideapad_attribute_group); | 333 | &ideapad_attribute_group); |
334 | platform_device_unregister(ideapad_priv->platform_device); | 334 | platform_device_unregister(priv->platform_device); |
335 | } | 335 | } |
336 | 336 | ||
337 | /* | 337 | /* |
@@ -343,7 +343,7 @@ static const struct key_entry ideapad_keymap[] = { | |||
343 | { KE_END, 0 }, | 343 | { KE_END, 0 }, |
344 | }; | 344 | }; |
345 | 345 | ||
346 | static int __devinit ideapad_input_init(void) | 346 | static int __devinit ideapad_input_init(struct ideapad_private *priv) |
347 | { | 347 | { |
348 | struct input_dev *inputdev; | 348 | struct input_dev *inputdev; |
349 | int error; | 349 | int error; |
@@ -357,7 +357,7 @@ static int __devinit ideapad_input_init(void) | |||
357 | inputdev->name = "Ideapad extra buttons"; | 357 | inputdev->name = "Ideapad extra buttons"; |
358 | inputdev->phys = "ideapad/input0"; | 358 | inputdev->phys = "ideapad/input0"; |
359 | inputdev->id.bustype = BUS_HOST; | 359 | inputdev->id.bustype = BUS_HOST; |
360 | inputdev->dev.parent = &ideapad_priv->platform_device->dev; | 360 | inputdev->dev.parent = &priv->platform_device->dev; |
361 | 361 | ||
362 | error = sparse_keymap_setup(inputdev, ideapad_keymap, NULL); | 362 | error = sparse_keymap_setup(inputdev, ideapad_keymap, NULL); |
363 | if (error) { | 363 | if (error) { |
@@ -371,7 +371,7 @@ static int __devinit ideapad_input_init(void) | |||
371 | goto err_free_keymap; | 371 | goto err_free_keymap; |
372 | } | 372 | } |
373 | 373 | ||
374 | ideapad_priv->inputdev = inputdev; | 374 | priv->inputdev = inputdev; |
375 | return 0; | 375 | return 0; |
376 | 376 | ||
377 | err_free_keymap: | 377 | err_free_keymap: |
@@ -381,16 +381,17 @@ err_free_dev: | |||
381 | return error; | 381 | return error; |
382 | } | 382 | } |
383 | 383 | ||
384 | static void __devexit ideapad_input_exit(void) | 384 | static void __devexit ideapad_input_exit(struct ideapad_private *priv) |
385 | { | 385 | { |
386 | sparse_keymap_free(ideapad_priv->inputdev); | 386 | sparse_keymap_free(priv->inputdev); |
387 | input_unregister_device(ideapad_priv->inputdev); | 387 | input_unregister_device(priv->inputdev); |
388 | ideapad_priv->inputdev = NULL; | 388 | priv->inputdev = NULL; |
389 | } | 389 | } |
390 | 390 | ||
391 | static void ideapad_input_report(unsigned long scancode) | 391 | static void ideapad_input_report(struct ideapad_private *priv, |
392 | unsigned long scancode) | ||
392 | { | 393 | { |
393 | sparse_keymap_report_event(ideapad_priv->inputdev, scancode, 1, true); | 394 | sparse_keymap_report_event(priv->inputdev, scancode, 1, true); |
394 | } | 395 | } |
395 | 396 | ||
396 | /* | 397 | /* |
@@ -417,11 +418,11 @@ static int __devinit ideapad_acpi_add(struct acpi_device *adevice) | |||
417 | priv->handle = adevice->handle; | 418 | priv->handle = adevice->handle; |
418 | dev_set_drvdata(&adevice->dev, priv); | 419 | dev_set_drvdata(&adevice->dev, priv); |
419 | 420 | ||
420 | ret = ideapad_platform_init(); | 421 | ret = ideapad_platform_init(priv); |
421 | if (ret) | 422 | if (ret) |
422 | goto platform_failed; | 423 | goto platform_failed; |
423 | 424 | ||
424 | ret = ideapad_input_init(); | 425 | ret = ideapad_input_init(priv); |
425 | if (ret) | 426 | if (ret) |
426 | goto input_failed; | 427 | goto input_failed; |
427 | 428 | ||
@@ -434,7 +435,7 @@ static int __devinit ideapad_acpi_add(struct acpi_device *adevice) | |||
434 | return 0; | 435 | return 0; |
435 | 436 | ||
436 | input_failed: | 437 | input_failed: |
437 | ideapad_platform_exit(); | 438 | ideapad_platform_exit(priv); |
438 | platform_failed: | 439 | platform_failed: |
439 | kfree(priv); | 440 | kfree(priv); |
440 | return ret; | 441 | return ret; |
@@ -447,8 +448,8 @@ static int __devexit ideapad_acpi_remove(struct acpi_device *adevice, int type) | |||
447 | 448 | ||
448 | for (i = IDEAPAD_DEV_WLAN; i < IDEAPAD_DEV_KILLSW; i++) | 449 | for (i = IDEAPAD_DEV_WLAN; i < IDEAPAD_DEV_KILLSW; i++) |
449 | ideapad_unregister_rfkill(adevice, i); | 450 | ideapad_unregister_rfkill(adevice, i); |
450 | ideapad_input_exit(); | 451 | ideapad_input_exit(priv); |
451 | ideapad_platform_exit(); | 452 | ideapad_platform_exit(priv); |
452 | dev_set_drvdata(&adevice->dev, NULL); | 453 | dev_set_drvdata(&adevice->dev, NULL); |
453 | kfree(priv); | 454 | kfree(priv); |
454 | 455 | ||
@@ -457,6 +458,7 @@ static int __devexit ideapad_acpi_remove(struct acpi_device *adevice, int type) | |||
457 | 458 | ||
458 | static void ideapad_acpi_notify(struct acpi_device *adevice, u32 event) | 459 | static void ideapad_acpi_notify(struct acpi_device *adevice, u32 event) |
459 | { | 460 | { |
461 | struct ideapad_private *priv = dev_get_drvdata(&adevice->dev); | ||
460 | acpi_handle handle = adevice->handle; | 462 | acpi_handle handle = adevice->handle; |
461 | unsigned long vpc1, vpc2, vpc_bit; | 463 | unsigned long vpc1, vpc2, vpc_bit; |
462 | 464 | ||
@@ -471,7 +473,7 @@ static void ideapad_acpi_notify(struct acpi_device *adevice, u32 event) | |||
471 | if (vpc_bit == 9) | 473 | if (vpc_bit == 9) |
472 | ideapad_sync_rfk_state(adevice); | 474 | ideapad_sync_rfk_state(adevice); |
473 | else | 475 | else |
474 | ideapad_input_report(vpc_bit); | 476 | ideapad_input_report(priv, vpc_bit); |
475 | } | 477 | } |
476 | } | 478 | } |
477 | } | 479 | } |