]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/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-pxa-2.4.18-rmk7-pxa3-embedix20031107 / unb0rk-apm.patch
1 --- linux/arch/arm/mach-pxa/sharpsl_apm.c       2005-09-07 10:49:06.000000000 +0200
2 +++ /home/hrw//devel/diffs/sharpsl_apm.c        2005-09-07 10:46:57.000000000 +0200
3 @@ -1876,10 +1876,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 @@ -1907,13 +1908,12 @@
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 -                       }
33                         break;
34  
35                 case APM_NORMAL_RESUME:
36 @@ -2225,26 +2225,32 @@
37                         as->standbys_read--;
38                         as->standbys_pending--;
39                         standbys_pending--;
40 -               } else if (!send_event(APM_USER_STANDBY))
41 -                       return -EAGAIN;
42 -               else
43 +               } else {
44                         queue_event(APM_USER_STANDBY, as);
45 -               if (standbys_pending <= 0)
46 -                       standby();
47 +               }
48 +               if (standbys_pending <= 0) {
49 +                       if (send_event(APM_USER_STANDBY)) {
50 +                               standby();
51 +                       } else {
52 +                               return -EAGAIN;
53 +                       }
54 +               }
55                 break;
56         case APM_IOC_SUSPEND:
57                 if (as->suspends_read > 0) {
58                         as->suspends_read--;
59                         as->suspends_pending--;
60                         suspends_pending--;
61 -               } else if (!send_event(APM_USER_SUSPEND))
62 -                       return -EAGAIN;
63 -               else
64 +               } else {
65                         queue_event(APM_USER_SUSPEND, as);
66 +               }
67                 if (suspends_pending <= 0) {
68 -
69 -                       if (suspend() != APM_SUCCESS)
70 -                               return -EIO;
71 +                       if (send_event(APM_USER_SUSPEND)) {
72 +                               if (suspend() != APM_SUCCESS)
73 +                                       return -EIO;
74 +                       } else {
75 +                               return -EAGAIN;
76 +                       }
77                 } else {
78                         as->suspend_wait = 1;
79                         add_wait_queue(&apm_suspend_waitqueue, &wait);
80 @@ -2483,13 +2489,18 @@
81         lock_kernel();
82         if (as->standbys_pending > 0) {
83                 standbys_pending -= as->standbys_pending;
84 -               if (standbys_pending <= 0)
85 -                       standby();
86 +               if (standbys_pending <= 0) {
87 +                       if (send_event(APM_USER_STANDBY)) {
88 +                               standby();
89 +                       }
90 +               }
91         }
92         if (as->suspends_pending > 0) {
93                 suspends_pending -= as->suspends_pending;
94 -               if (suspends_pending <= 0){
95 -                       (void) suspend();
96 +               if (suspends_pending <= 0) {
97 +                       if (send_event(APM_USER_SUSPEND)) {
98 +                               (void) suspend();
99 +                       }
100                 }
101         }
102         if (user_list == as)