wacom_sys.c (2612e3bbc0386368a850140a6c9b990cd496a5ec) | wacom_sys.c (9ac6678b95b0dd9458a7a6869f46e51cd55a1d84) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * USB Wacom tablet support - system specific code 4 */ 5 6#include "wacom_wac.h" 7#include "wacom.h" 8#include <linux/input/mt.h> --- 2509 unchanged lines hidden (view full) --- 2518 return; 2519 2520fail: 2521 wacom_release_resources(wacom1); 2522 wacom_release_resources(wacom2); 2523 return; 2524} 2525 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * USB Wacom tablet support - system specific code 4 */ 5 6#include "wacom_wac.h" 7#include "wacom.h" 8#include <linux/input/mt.h> --- 2509 unchanged lines hidden (view full) --- 2518 return; 2519 2520fail: 2521 wacom_release_resources(wacom1); 2522 wacom_release_resources(wacom2); 2523 return; 2524} 2525 |
2526static void wacom_remote_destroy_battery(struct wacom *wacom, int index) 2527{ 2528 struct wacom_remote *remote = wacom->remote; 2529 2530 if (remote->remotes[index].battery.battery) { 2531 devres_release_group(&wacom->hdev->dev, 2532 &remote->remotes[index].battery.bat_desc); 2533 remote->remotes[index].battery.battery = NULL; 2534 remote->remotes[index].active_time = 0; 2535 } 2536} 2537 |
|
2526static void wacom_remote_destroy_one(struct wacom *wacom, unsigned int index) 2527{ 2528 struct wacom_remote *remote = wacom->remote; 2529 u32 serial = remote->remotes[index].serial; 2530 int i; 2531 unsigned long flags; 2532 2533 for (i = 0; i < WACOM_MAX_REMOTES; i++) { 2534 if (remote->remotes[i].serial == serial) { 2535 2536 spin_lock_irqsave(&remote->remote_lock, flags); 2537 remote->remotes[i].registered = false; 2538 spin_unlock_irqrestore(&remote->remote_lock, flags); 2539 | 2538static void wacom_remote_destroy_one(struct wacom *wacom, unsigned int index) 2539{ 2540 struct wacom_remote *remote = wacom->remote; 2541 u32 serial = remote->remotes[index].serial; 2542 int i; 2543 unsigned long flags; 2544 2545 for (i = 0; i < WACOM_MAX_REMOTES; i++) { 2546 if (remote->remotes[i].serial == serial) { 2547 2548 spin_lock_irqsave(&remote->remote_lock, flags); 2549 remote->remotes[i].registered = false; 2550 spin_unlock_irqrestore(&remote->remote_lock, flags); 2551 |
2540 if (remote->remotes[i].battery.battery) 2541 devres_release_group(&wacom->hdev->dev, 2542 &remote->remotes[i].battery.bat_desc); | 2552 wacom_remote_destroy_battery(wacom, i); |
2543 2544 if (remote->remotes[i].group.name) 2545 devres_release_group(&wacom->hdev->dev, 2546 &remote->remotes[i]); 2547 2548 remote->remotes[i].serial = 0; 2549 remote->remotes[i].group.name = NULL; | 2553 2554 if (remote->remotes[i].group.name) 2555 devres_release_group(&wacom->hdev->dev, 2556 &remote->remotes[i]); 2557 2558 remote->remotes[i].serial = 0; 2559 remote->remotes[i].group.name = NULL; |
2550 remote->remotes[i].battery.battery = NULL; | |
2551 wacom->led.groups[i].select = WACOM_STATUS_UNKNOWN; 2552 } 2553 } 2554} 2555 2556static int wacom_remote_create_one(struct wacom *wacom, u32 serial, 2557 unsigned int index) 2558{ --- 68 unchanged lines hidden (view full) --- 2627 int error; 2628 2629 if (!remote->remotes[index].registered) 2630 return 0; 2631 2632 if (remote->remotes[index].battery.battery) 2633 return 0; 2634 | 2560 wacom->led.groups[i].select = WACOM_STATUS_UNKNOWN; 2561 } 2562 } 2563} 2564 2565static int wacom_remote_create_one(struct wacom *wacom, u32 serial, 2566 unsigned int index) 2567{ --- 68 unchanged lines hidden (view full) --- 2636 int error; 2637 2638 if (!remote->remotes[index].registered) 2639 return 0; 2640 2641 if (remote->remotes[index].battery.battery) 2642 return 0; 2643 |
2644 if (!remote->remotes[index].active_time) 2645 return 0; 2646 |
|
2635 if (wacom->led.groups[index].select == WACOM_STATUS_UNKNOWN) 2636 return 0; 2637 2638 error = __wacom_initialize_battery(wacom, 2639 &wacom->remote->remotes[index].battery); 2640 if (error) 2641 return error; 2642 2643 return 0; 2644} 2645 2646static void wacom_remote_work(struct work_struct *work) 2647{ 2648 struct wacom *wacom = container_of(work, struct wacom, remote_work); 2649 struct wacom_remote *remote = wacom->remote; | 2647 if (wacom->led.groups[index].select == WACOM_STATUS_UNKNOWN) 2648 return 0; 2649 2650 error = __wacom_initialize_battery(wacom, 2651 &wacom->remote->remotes[index].battery); 2652 if (error) 2653 return error; 2654 2655 return 0; 2656} 2657 2658static void wacom_remote_work(struct work_struct *work) 2659{ 2660 struct wacom *wacom = container_of(work, struct wacom, remote_work); 2661 struct wacom_remote *remote = wacom->remote; |
2662 ktime_t kt = ktime_get(); |
|
2650 struct wacom_remote_data data; 2651 unsigned long flags; 2652 unsigned int count; 2653 u32 serial; 2654 int i; 2655 2656 spin_lock_irqsave(&remote->remote_lock, flags); 2657 --- 10 unchanged lines hidden (view full) --- 2668 wacom_schedule_work(&wacom->wacom_wac, WACOM_WORKER_REMOTE); 2669 2670 spin_unlock_irqrestore(&remote->remote_lock, flags); 2671 2672 for (i = 0; i < WACOM_MAX_REMOTES; i++) { 2673 serial = data.remote[i].serial; 2674 if (data.remote[i].connected) { 2675 | 2663 struct wacom_remote_data data; 2664 unsigned long flags; 2665 unsigned int count; 2666 u32 serial; 2667 int i; 2668 2669 spin_lock_irqsave(&remote->remote_lock, flags); 2670 --- 10 unchanged lines hidden (view full) --- 2681 wacom_schedule_work(&wacom->wacom_wac, WACOM_WORKER_REMOTE); 2682 2683 spin_unlock_irqrestore(&remote->remote_lock, flags); 2684 2685 for (i = 0; i < WACOM_MAX_REMOTES; i++) { 2686 serial = data.remote[i].serial; 2687 if (data.remote[i].connected) { 2688 |
2689 if (kt - remote->remotes[i].active_time > WACOM_REMOTE_BATTERY_TIMEOUT 2690 && remote->remotes[i].active_time != 0) 2691 wacom_remote_destroy_battery(wacom, i); 2692 |
|
2676 if (remote->remotes[i].serial == serial) { 2677 wacom_remote_attach_battery(wacom, i); 2678 continue; 2679 } 2680 2681 if (remote->remotes[i].serial) 2682 wacom_remote_destroy_one(wacom, i); 2683 --- 196 unchanged lines hidden --- | 2693 if (remote->remotes[i].serial == serial) { 2694 wacom_remote_attach_battery(wacom, i); 2695 continue; 2696 } 2697 2698 if (remote->remotes[i].serial) 2699 wacom_remote_destroy_one(wacom, i); 2700 --- 196 unchanged lines hidden --- |