]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/unb0rk-apm.patch
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / linux / openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509 / unb0rk-apm.patch
1 --- linux/arch/arm/mach-sa1100/collie_apm.c     2005-06-25 23:37:32.000000000 +0200
2 +++ linux/arch/arm/mach-sa1100/collie_apm.c     2005-06-27 20:42:00.000000000 +0200
3 @@ -1228,10 +1228,11 @@
4                 switch (event) {
5                 case APM_SYS_STANDBY:
6                 case APM_USER_STANDBY:
7 -                       if (send_event(event)) {
8 -                               queue_event(event, NULL);
9 -                               if (standbys_pending <= 0)
10 +                       queue_event(event, NULL);
11 +                       if (standbys_pending <= 0) {
12 +                               if (send_event(event)) {
13                                         standby();
14 +                               }
15                         }
16                         break;
17  
18 @@ -1257,10 +1258,10 @@
19                          */
20                         if (waiting_for_resume)
21                                 return;
22 -                       if (send_event(event)) {
23 -                               queue_event(event, NULL);
24 -                               waiting_for_resume = 1;
25 -                               if (suspends_pending <= 0)
26 +                       queue_event(event, NULL);
27 +                       waiting_for_resume = 1;
28 +                       if (suspends_pending <= 0)
29 +                               if (send_event(event)) {
30                                         (void) suspend();
31                         }
32                         break;
33 @@ -1468,25 +1469,32 @@
34                         as->standbys_read--;
35                         as->standbys_pending--;
36                         standbys_pending--;
37 -               } else if (!send_event(APM_USER_STANDBY))
38 -                       return -EAGAIN;
39 -               else
40 +               } else {
41                         queue_event(APM_USER_STANDBY, as);
42 -               if (standbys_pending <= 0)
43 -                       standby();
44 +               }
45 +               if (standbys_pending <= 0) {
46 +                       if (send_event(APM_USER_STANDBY)) {
47 +                               standby();
48 +                       } else {
49 +                               return -EAGAIN;
50 +                       }
51 +               }
52                 break;
53         case APM_IOC_SUSPEND:
54                 if (as->suspends_read > 0) {
55                         as->suspends_read--;
56                         as->suspends_pending--;
57                         suspends_pending--;
58 -               } else if (!send_event(APM_USER_SUSPEND))
59 -                       return -EAGAIN;
60 -               else
61 +               } else {
62                         queue_event(APM_USER_SUSPEND, as);
63 +               }
64                 if (suspends_pending <= 0) {
65 -                       if (suspend() != APM_SUCCESS)
66 -                               return -EIO;
67 +                       if (send_event(APM_USER_SUSPEND)) {
68 +                               if (suspend() != APM_SUCCESS)
69 +                                       return -EIO;
70 +                       } else {
71 +                               return -EAGAIN;
72 +                       }
73                 } else {
74                         as->suspend_wait = 1;
75                         add_wait_queue(&apm_suspend_waitqueue, &wait);
76 @@ -1637,13 +1645,19 @@
77         lock_kernel();
78         if (as->standbys_pending > 0) {
79                 standbys_pending -= as->standbys_pending;
80 -               if (standbys_pending <= 0)
81 -                       standby();
82 +               if (standbys_pending <= 0) {
83 +                       if (send_event(APM_USER_STANDBY)) {
84 +                               standby();
85 +                       }
86 +               }
87         }
88         if (as->suspends_pending > 0) {
89                 suspends_pending -= as->suspends_pending;
90 -               if (suspends_pending <= 0)
91 -                       (void) suspend();
92 +               if (suspends_pending <= 0) {
93 +                       if (send_event(APM_USER_SUSPEND)) {
94 +                               (void) suspend();
95 +                       }
96 +               }
97         }
98         if (user_list == as)
99                 user_list = as->next;