openzaurus-pxa:ported APM fix from collie kernel
authorMarcin Juszkiewicz <hrw@openembedded.org>
Wed, 7 Sep 2005 09:47:15 +0000 (09:47 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Wed, 7 Sep 2005 09:47:15 +0000 (09:47 +0000)
- PR changed to r43 - Lineo kernels does not deserve 42
- second fix is not ported as I don't want to dig more in that crap

packages/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch [new file with mode: 0644]
packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc

diff --git a/packages/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch b/packages/linux/openzaurus-pxa-2.4.18-rmk7-pxa3-embedix20031107/unb0rk-apm.patch
new file mode 100644 (file)
index 0000000..6095ccb
--- /dev/null
@@ -0,0 +1,102 @@
+--- linux/arch/arm/mach-pxa/sharpsl_apm.c      2005-09-07 10:49:06.000000000 +0200
++++ /home/hrw//devel/diffs/sharpsl_apm.c       2005-09-07 10:46:57.000000000 +0200
+@@ -1876,10 +1876,11 @@
+               switch (event) {
+               case APM_SYS_STANDBY:
+               case APM_USER_STANDBY:
+-                      if (send_event(event)) {
+-                              queue_event(event, NULL);
+-                              if (standbys_pending <= 0)
++                      queue_event(event, NULL);
++                      if (standbys_pending <= 0) {
++                              if (send_event(event)) {
+                                       standby();
++                              }
+                       }
+                       break;
+@@ -1907,13 +1908,12 @@
+                        */
+                       if (waiting_for_resume)
+                               return;
+-                      if (send_event(event)) {
+-                              queue_event(event, NULL);
+-                              waiting_for_resume = 1;
+-                              if (suspends_pending <= 0){
++                      queue_event(event, NULL);
++                      waiting_for_resume = 1;
++                      if (suspends_pending <= 0)
++                              if (send_event(event)) {
+                                       (void) suspend();
+                               }
+-                      }
+                       break;
+               case APM_NORMAL_RESUME:
+@@ -2225,26 +2225,32 @@
+                       as->standbys_read--;
+                       as->standbys_pending--;
+                       standbys_pending--;
+-              } else if (!send_event(APM_USER_STANDBY))
+-                      return -EAGAIN;
+-              else
++              } else {
+                       queue_event(APM_USER_STANDBY, as);
+-              if (standbys_pending <= 0)
+-                      standby();
++              }
++              if (standbys_pending <= 0) {
++                      if (send_event(APM_USER_STANDBY)) {
++                              standby();
++                      } else {
++                              return -EAGAIN;
++                      }
++              }
+               break;
+       case APM_IOC_SUSPEND:
+               if (as->suspends_read > 0) {
+                       as->suspends_read--;
+                       as->suspends_pending--;
+                       suspends_pending--;
+-              } else if (!send_event(APM_USER_SUSPEND))
+-                      return -EAGAIN;
+-              else
++              } else {
+                       queue_event(APM_USER_SUSPEND, as);
++              }
+               if (suspends_pending <= 0) {
+-
+-                      if (suspend() != APM_SUCCESS)
+-                              return -EIO;
++                      if (send_event(APM_USER_SUSPEND)) {
++                              if (suspend() != APM_SUCCESS)
++                                      return -EIO;
++                      } else {
++                              return -EAGAIN;
++                      }
+               } else {
+                       as->suspend_wait = 1;
+                       add_wait_queue(&apm_suspend_waitqueue, &wait);
+@@ -2483,13 +2489,18 @@
+       lock_kernel();
+       if (as->standbys_pending > 0) {
+               standbys_pending -= as->standbys_pending;
+-              if (standbys_pending <= 0)
+-                      standby();
++              if (standbys_pending <= 0) {
++                      if (send_event(APM_USER_STANDBY)) {
++                              standby();
++                      }
++              }
+       }
+       if (as->suspends_pending > 0) {
+               suspends_pending -= as->suspends_pending;
+-              if (suspends_pending <= 0){
+-                      (void) suspend();
++              if (suspends_pending <= 0) {
++                      if (send_event(APM_USER_SUSPEND)) {
++                              (void) suspend();
++                      }
+               }
+       }
+       if (user_list == as)
index 548d87c..dfea2b5 100644 (file)
@@ -1,13 +1,15 @@
 DESCRIPTION = "Linux kernel for OpenZaurus PXA processor based devices."
 MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>"
 SECTION = "kernel"
-PV = "2.4.18-rmk7-pxa3-embedix"
 LICENSE = "GPL"
+PV = "2.4.18-rmk7-pxa3-embedix"
+PR = "r43"
+
 KV = "2.4.18"
 RMKV = "7"
 PXAV = "3"
 SHARPV = "20031107"
-PR = "r41"
+
 FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/openzaurus-pxa-${KV}-rmk${RMKV}-pxa${PXAV}-embedix${SHARPV}"
 
 SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2 \
@@ -49,6 +51,7 @@ SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2 \
            http://us1.samba.org/samba/ftp/cifs-cvs/cifs-1.20c-2.4.tar.gz \
            file://fix_tosa_apm.patch;patch=1 \
            file://dumb-hack-for-wlan-ng.patch;patch=1 \
+           file://unb0rk-apm.patch;patch=1 \
            file://defconfig-${MACHINE} "
 
 SRC_URI_append_poodle += " file://smallfonts.diff;patch=1"