diff options
author | Stefan Schmidt <stefan@datenfreihafen.org> | 2009-10-22 19:16:57 +0200 |
---|---|---|
committer | Stefan Schmidt <stefan@datenfreihafen.org> | 2009-10-22 19:16:57 +0200 |
commit | 328eab49db19349da207a964a276f602c246ed1c (patch) | |
tree | f6e11b51e3914bd1493a7612ef6e574b12475a88 | |
parent | 8bd6b6a8d125b2b256038b0be0fb06660657d379 (diff) | |
parent | 5f88338d6abc562f6e034186e7c6897f22ec7ba1 (diff) |
Merge branch 'org.openembedded.dev' of git.openembedded.org:openembedded into org.openembedded.dev
161 files changed, 15581 insertions, 1456 deletions
diff --git a/conf/checksums.ini b/conf/checksums.ini index 427688d6b4..80d227e3c9 100644 --- a/conf/checksums.ini +++ b/conf/checksums.ini @@ -54,6 +54,10 @@ sha256=f09d4ae3365b876da9f40f49178ab7241bb7e4c1d67db9e2f310f9c76d5834a6 md5=333b0e9328194f28af83c26d3717e4ac sha256=8930ebfdc8a606d8cb26f073d4700460c3289fb79e943e12948329e17336ca47 +[http://maxim.org.za/AT91RM9200/2.6/2.6.21-at91.patch.gz] +md5=779472ae02c2a99937879a8d1d4b9b25 +sha256=cfb98e7635c985733dba0fb9c3cadee22ab70fb3b0db7eac8eacaebc65c92a59 + [http://maxim.org.za/AT91RM9200/2.6/2.6.25-at91.patch.gz] md5=4469d6336f9659f1725fedd4a52261ad sha256=7a960180e7873b1bdb522e76b0423b5c2c1b8efe1d30d7ca80c41eb97d822b2d @@ -682,6 +686,10 @@ sha256=36d48a11957e1c4f53a685b0fcc7d060e8972b435501c92b10737bb844dd95e2 md5=64f780e7f95c252eaaed0201c3d9a4ca sha256=281234116b99b4c4b45fde038a435a0d26b7ee55beac0c351186b3f12c301659 +[http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.7/NetworkManager-0.7.1.997.tar.bz2] +md5=12f12b2586043c21c3508b05e7994ba2 +sha256=a62a0f45d156cb190dd2ee3176aa3af4bf7b35c23a09ac65a309c9dc5af87826 + [http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.7/NetworkManager-0.7.1.tar.bz2] md5=954742cfd47191204d62d8d57f2bc6dd sha256=7526a31de615a662cb09e915f26e5b151eda364240d983df6232aac8b9333f3a @@ -3270,6 +3278,10 @@ sha256=4e329b19c810d2a8dd5b9e98e56cfc5d6389798947e400e5fe541dbc1307278f md5=d7c7cdab692fb2edc5cf5ebb554f20a1 sha256=9b20c37f2ae2247354b580e080bf0c3b650d3e63bf39c3d5573ef3b9c75fe0f0 +[http://www.boundarydevices.com/boundary-2.6.22-2007-07-22.patch.bz2] +md5=7dac7a5cf401070ecccf42666a30fc0a +sha256=da8a360035464defd133a4ba604aa7ae9ee077747511b98384862b4cbdde5906 + [http://dl.boxee.tv/boxee-0.9.7.4826-sources.tar.bz2] md5=f49cb4f9769c0a8fe2965724aa8f285b sha256=4103be6f8ca38a90c48b55172c7bdaab2205a1dad2bfcee877adb23bbdc6cfc1 @@ -3578,6 +3590,14 @@ sha256=5268faa116a48a68dd74abb245b26b20f1729d3bd56a8414e429904eb1bae124 md5=4ea70ea87b47e92d318d4e7f5b940f47 sha256=827acee89ba3e8e762fbb23165cf8d455e7d95e1e50984e6882b2070a7f3abae +[http://cairographics.org/releases/cairo-1.8.8.tar.gz] +md5=d3e1a1035ae563812d4dd44a74fb0dd0 +sha256=3c51d3de5dc4596e01a6675acd3c86c2c99c00f02e8fad5493758a29fe451c90 + +[http://cairographics.org/snapshots/cairo-1.9.4.tar.gz] +md5=872f460cda044c36c2b55e6307a8cc29 +sha256=5093fe09889ab2505b91ea4b73ddee06f8dbc998f354a6fba1f9417f7d7a15f7 + [http://cairographics.org/releases/cairomm-1.2.4.tar.gz] md5=5d862facfbd0098c9bae618b61f7c8e6 sha256=a137ccd4a6cde6c9e9553966534702d2e7f6f44c755dfe128d9fb26ed2697fe7 @@ -6498,6 +6518,10 @@ sha256=61ba89c0deaaf324485b2bf480fdb90941b74e2c47b4810e34f530b77005bb8c md5=08f2e21c9fd02f4be2bd53a62592afa4 sha256=e1b92e97fe27efcbd150212d0d287ac907bd2fef0af32e16284fef5d1c1c26bf +[http://www.fftw.org/fftw-3.2.2.tar.gz] +md5=b616e5c91218cc778b5aa735fefb61ae +sha256=6aa7ae65ee49eb99004f15899f9bb77f54759122f1a350041e81e096157d768f + [http://www.fftw.org/fftw-3.2.tar.gz] md5=280960ddbad368ebb96c073a2b642f5d sha256=205a021a87cae27146741d15bff260353497d219332a97718c0c649ab81483d0 @@ -8610,6 +8634,10 @@ sha256=39ef812217a76982947a7ac3b4a97e8303466a3dd93709366d1559e0a7ec8a46 md5=9f254eb989e0506243da6fde7f164998 sha256=d5420eef50372d24eaecde93ea4c8ec55f5bf24c9e0f6abbded76e5dbd6a2d76 +[http://ftp.gnome.org/pub/GNOME/sources/gmime/2.4/gmime-2.4.10.tar.bz2] +md5=f0700515d5d715ae6b34289fdca90451 +sha256=59c71aa8d0f06c66f863bc0462868237a770ce30d1402af2515235fa41db51ca + [http://ftp.acc.umu.se/pub/GNOME/sources/gmime/2.4/gmime-2.4.7.tar.bz2] md5=0fb23dbb1ed6934ab577e90269cd901f sha256=bf75214018bb1ae82c797e79d52db2c37a8d3d9f002a737f12960fa2b1022dbd @@ -10894,6 +10922,10 @@ sha256=92ddd976721e26377eaa59fea07707a0caa85eb874500868c1e6fdd9a21fe0dd md5=ea30aecfbd55ebf40c6cf5a0f254f9ba sha256=bf4c6285683a70addedd3ae6b9d4b450d928be497834272c4cd705471333f1ec +[http://ftp.gnome.org/pub/GNOME/sources/gtksourceview/2.9/gtksourceview-2.9.1.tar.bz2] +md5=1e3a378af5f6319d53413394620c4e4a +sha256=b5ebdc5e7d33b99790c6dda14a717711963039f8ea6242c889f540b24ed6678f + [http://downloads.sourceforge.net/gtkterm/gtkterm2-0.2.3.tar.gz] md5=a49f93d15909dbd2e7011428ae01f0f0 sha256=fb68b18d752ae2379f144186b94743be991af1a42c88bc1e6f0685e45cb1d573 @@ -12498,6 +12530,10 @@ sha256=f3bc6747dba7d1a35cd125ca0bd4649f88704be211cf7e47d36b43c7f44ce803 md5=6092cdb0a1225f95356ddbe6c2abaad5 sha256=7000005ebbd07a28a71477d72bcb76c47064e043a4ead26fcf4d5af394ce19df +[http://xorg.freedesktop.org/releases/individual/proto/kbproto-1.0.4.tar.bz2] +md5=7f439166a9b2bf81471a33951883019f +sha256=1baa29931313d0c3eb81dffd42662768cc76ce49ce94024d5fe32ef5a4e8603c + [http://xorg.freedesktop.org/releases/X11R7.0/src/proto/kbproto-X11R7.0-1.0.2.tar.bz2] md5=403f56d717b3fefe465ddd03d9c7bc81 sha256=abfea195d72a6355dddacaf1ca37187ba9e8ca271af4bf6c38efaba4023b36a4 @@ -13238,6 +13274,10 @@ sha256=6171e6bca4bd6333611bd9c63cccc8e8e412d876c72097f0dddc490a9df51d5a md5=3a8e06b25912ef339d70a8ba003da9b5 sha256=eafff0157f2c7172214449d4b6b0c72328cad7026ecace226189b511791c5f75 +[http://xorg.freedesktop.org/releases/individual/lib/libXfont-1.4.1.tar.bz2] +md5=4f2bed2a2be82e90a51a24bb3a22cdf0 +sha256=112bfc30820b98deec4c9914536c5aa2f8b5162bd2b0bdb342343168e06f7679 + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXfont-X11R7.0-1.0.0.tar.bz2] md5=955c41694772c9fd214e3e206f5d2178 sha256=47d4de6986f6ca85bc48ecd76188d7f3f009e1aeb640008cab12ac5ca5896622 @@ -13270,6 +13310,10 @@ sha256=68b46f85caaf0b30c876bd983abe144c25755bee7532e8738ab7ebe29a428986 md5=bc8881851f3bd8dcc625fac37350a1c6 sha256=ce7688258af34c14af421bcfb306d4310245b727d2417ac968b7f6b2facfde8c +[http://xorg.freedesktop.org/releases/individual/lib/libXft-2.1.14.tar.bz2] +md5=254e62a233491e0e1251636536163e20 +sha256=700e9d594b81cad3dfd5fac4a5cfd0c4cf7780c812507ef04eb40139ebf5175e + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXft-X11R7.0-2.1.8.2.tar.bz2] md5=c42292b35325a9eeb24eb0f8d3a6ec52 sha256=0473d1db21968f05b39ff9832b18545ba6b93be76d2e61b04a14208c515680f3 @@ -13362,6 +13406,10 @@ sha256=2d5c5242b8417db6aa758e5be387de33385d9960ff21c801af7d6a4730b4fd0d md5=cd15ee542d9f515538b4462a6f79d977 sha256=64701ae67ce5b0797307b75d8255bec3a0d371d0c50715ea618f5a68bcc92baa +[http://xorg.freedesktop.org/releases/individual/lib/libXpm-3.5.8.tar.bz2] +md5=38e58e72d476a74298a59052fde185a3 +sha256=02a77aaa32e6e335e1ee04aeb9ad1008045d98274d64ed33bc5fc6c3a3542c4c + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXpm-X11R7.0-3.5.4.2.tar.bz2] md5=f3b3b6e687f567bbff7688d60edc81ba sha256=58bb490a8c97e8b7e57525f105378a65dc5f7571765aea6a8f473d93e8713807 @@ -13438,6 +13486,10 @@ sha256=0ddcb6f9dcffd4c4c896012bf82da350ff6f1550fb53a99327f21e483c39c8a2 md5=de66ffb657aba64c9d6dbdeabb757f3e sha256=a6d5ba7573f5ec0f091095f01b51d1e671dd0f14acb5b8559cdf366e398a0230 +[http://xorg.freedesktop.org/releases/individual/lib/libXres-1.0.4.tar.bz2] +md5=4daf91f93d924e693f6f6ed276791be2 +sha256=457f567a70ef8798cfb32f897ffa52c3f010923b07414b3a42277f56877572df + [http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXres-X11R7.0-1.0.0.tar.bz2] md5=cc5c4f130c9305e5bd973fbb7c56a254 sha256=b8f68d40797e1baadb77053f7834428894696cb345591f732c8c8c7e1ff1f3b8 @@ -14198,6 +14250,10 @@ sha256=14d457c3ed1d4751664f7196cbcd20e7db82532025f35634812f0cb7470fc43e md5=555488ddfc81a6e0df1fb5112e7eee13 sha256=7562042a6210947363bd6a9bbcdd03f8d02470c0347970b507f689d25a907844 +[http://ftp.gnome.org/pub/GNOME/sources/libgdata/0.4/libgdata-0.4.0.tar.bz2] +md5=06b14f1cd96432b0717ed03fe013ca4d +sha256=55c616b0761faaa9fb028434de97b02d5145dfc52b1db632671ebc6cc6905575 + [http://geda.seul.org/release/v1.4/1.4.1/libgeda-1.4.1.tar.gz] md5=16f2e3176eb489838bad57c8728c7388 sha256=c0598428fc25e79b7ac1da35d44133e3fc50763b32fcdfffd5e6654f2f94682d @@ -16570,6 +16626,10 @@ sha256=455f352e2ec707e4abf02091c4c49ffa5611294eb75959c25d77967a02636577 md5=a75c264f90b07b4f3ba05febc7386f4b sha256=384c0e97100170b4566a0b335a18246c42c76df682377cae6ed1c72be8aadc0e +[http://downloads.myigep.com/sources/kernel/linux-omap-2.6.28.10-igep0020b-0.tar.gz] +md5=c50ae11485ca9b2ee1612d531c5321d9 +sha256=f7a944bab388ed87d5535e21af52054917eb55999a654e1b2c160cbf0c1a8d5a + [ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.1-pre26.tar.bz2] md5=fff64e543e094b2007d614697f505344 sha256=0dd50d400ab39619b20e50183ec7d357ad4b96bdebd64eca916e764542616e1a @@ -16870,6 +16930,10 @@ sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739 md5=89c0ebdd0a27bc7f68726100f4bb079b sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739 +[ftp://ftp.us.debian.org/debian/pool/main/l/ltrace/ltrace_0.4-1.diff.gz] +md5=89c0ebdd0a27bc7f68726100f4bb079b +sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739 + [ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.4.orig.tar.gz] md5=8dbadad76ee360c2ed2caa915f5b1c8e sha256=28bbab4a69a3c78539b2588d2219327009d93cafc74fb59b9a4ea5f5b794f8db @@ -18730,6 +18794,10 @@ sha256=9cca3e34e23f00c82bc5e7237aa81639874e90d43a689e26fbfd938279ca31c9 md5=856fc7c4cf43c8614445d9fcf78177d1 sha256=7c9fcb0b18c72071ad42316ff5e0369a418f92d05ef419874a67826fd9d8406a +[http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.7/network-manager-applet-0.7.1.997.tar.bz2] +md5=3183f5ae3553da0ce9c381dadbcc19e0 +sha256=34316707a323b883f347b2566fd2dc7a3134b2bf432fb3a8b31d88829b0947e3 + [http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.7/network-manager-applet-0.7.1.tar.bz2] md5=d90a997e3e2051ce8866fe24f765141f sha256=b22a90e6252d798b3889843910a016d185f9e87dd23e203003b1072013f670a6 @@ -19986,6 +20054,10 @@ sha256=f85096df0acc179f676497e75b9ba8d9b8685b92b0b2b8b1d6871619ed879fbd md5=08b2c1e9759ca409a0d2ca49db1bbedb sha256=0417fc3609f5746bce6016862e7f83e83e98e17e5ae77887bf66b37748ab261c +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.21.bz2] +md5=10319d634fa66ae8a758e03a227ff79f +sha256=1e0b8c7c5c923b396dcd0a0a1aa3108676f6ad67b35132d0c068ee59fd48408f + [http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.6.bz2] md5=a42300de8720552d70470dd3e4afc75f sha256=808ca62a66d7cfe40123301c2f51fc0dcd817ee3bb0df96d1e9e97cc3bad6a9c @@ -19994,6 +20066,10 @@ sha256=808ca62a66d7cfe40123301c2f51fc0dcd817ee3bb0df96d1e9e97cc3bad6a9c md5=b9c8734471a454806c77f040fcf9869b sha256=5ee24e1c5636bcffed155b1c01d7d09fedb135fa2458c190a0da03a82c8c2f60 +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.19.bz2] +md5=066cc3bdd2783dcd01f6ff466e449ec0 +sha256=829c48b49c71d89468f2a5a05587714811197545eeba31e9643cabacf344d33a + [http://kernel.org//pub/linux/kernel/v2.6/patch-2.6.22.5.bz2] md5=27544a58763bbd4ce497a77658af744a sha256=0f96188e8d1c6e0934f8e8dc2455e1f94a47c10cb17268364bcd77df68c83c2a @@ -20026,6 +20102,10 @@ sha256=55e811b4d4b0cbfde500bdd5455b7180d3def3dbdc52314520b7327d32b23f42 md5=5932b5043abe8ca1ac7ee1ed73fa5e91 sha256=bd83c501ff86103f054421496de31e6bc86d40d6bec6eafd2712bb0fb9da9d07 +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.23.17.bz2] +md5=7d2dbdf18868b496548d4375d8c67d3a +sha256=04dfd3f22dc3abce7d7509c0836350540b60cadd19292be70a2a2900c5fbe7b8 + [http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.24-rc1.bz2] md5=4f5daa28c871d9edd6d61f712f4b358d sha256=2512a51923318bde6175e073b3eec0e58ae07123bcdc49afa11f286b0d4bd06d @@ -20086,6 +20166,10 @@ sha256=45994ebcdd4ed30b37c6fc0569ee69aee4f2ef9ed75857d0a3784ce3bfe92ffc md5=2bceb4747e65394d34066f3db778fd0f sha256=ea4a8fcab04cdb08e5bba9589c3ecc1370d4a68d32bb83bd54032c03cb450d6b +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.26.8.bz2] +md5=e27c07bb82e02532e874758980141281 +sha256=611f7e118b5b09898493eab4c3071771742f2f3826b5733fa2f47284a38fbcf3 + [http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.27-rc1.bz2] md5=948b25bab0082d1db5bd8c9fac824891 sha256=2b35a35a0ab3b82b77bb2996782ef70ec15a13b9331b15bac814b891ae8f4867 @@ -20094,6 +20178,10 @@ sha256=2b35a35a0ab3b82b77bb2996782ef70ec15a13b9331b15bac814b891ae8f4867 md5=b87c962be07875486a6b57f81f35ca82 sha256=7fc735b85225850dae3c3acfe4bf0fe59f4c884d7c37f89395867dc73bf8f8af +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.37.bz2] +md5=e75d87c11065955871b2e005d0242c99 +sha256=0e5e633e81f1dcc0dcd2372494fbd2d6a72b28bb177a3285c4766a9659b454bd + [http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.8.bz2] md5=ec23e3dce22b23ca681199fe515f10fb sha256=31c35db09289c6e0436a258745d7180e0cd8f567949f27b3dab5a57a3664ed2f @@ -20102,6 +20190,10 @@ sha256=31c35db09289c6e0436a258745d7180e0cd8f567949f27b3dab5a57a3664ed2f md5=4550a418f0480b39e839735a7e0e8d82 sha256=fbb5ee21210a4e4e1fe25941c6e16ec0fe8634817e6c96145128f376ba0c640b +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.28.10.bz2] +md5=64e6b226f1dc469755d82d0d8b677feb +sha256=f4a2f97f59d272571a4977916392628642a8e4388f94417a723dc4bdb0e47dc2 + [http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.28.4.gz] md5=464f663266e2c18371e213adab3c0077 sha256=4862e7bf53553f645d9d730d3657bbec79f7c03482a984259b38e10e25b54382 @@ -20114,6 +20206,10 @@ sha256=e5ad0ec9b0facaab5982a0d48534292e6d3a6a3e6dca60e798e8b8eeda2f8a8e md5=26f67d99666834cc579094619821d3c8 sha256=035bbd4c1ac9c5b3a42e58777446e0370ca66d9258dc30a9f4c5ad48ebfacd65 +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.29.6.bz2] +md5=0317760b52c9ac7a11de997da19a366e +sha256=0294d475cbbc6cf43db25e64b92616309086cad6be4ee463f7f4b1d16d285c27 + [http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.30-rc1.bz2] md5=05daeda25430fd13bbdb47b3481f7320 sha256=5ed217591fefb043f4deb7b66a9b6351195dfb9405c0d2f5ec0f4d43a30aa9b2 @@ -20150,6 +20246,10 @@ sha256=34586de4c7d1517842dfe32a8621f945cd6b8ee55096f8f053a66accd3d17a41 md5=24d60ad6645211e2c08dc1c1c578b249 sha256=ed167dcbdf52c2563a30e7c81a0f2b3d79eb04acc5728e6d484166a4fe8a39e4 +[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.31.4.bz2] +md5=02078f4231baee4f0004212f2875df2b +sha256=bc670682ed9b81d5d3859130c600601bd72053fd738b51b2daf8ddf3f4614a66 + [http://www.muru.com/linux/omap/patches/patch-2.6.9-omap1.bz2] md5=d6249654087f0bcafaa860ac573316a4 sha256=91806347cb386002a8bfd20ee66e536e4a7dfb01f207dd751341f2971090d9ac @@ -20494,6 +20594,10 @@ sha256=45d491879791140dc1f20287e6489f32dc59ae37628038d991d9511abede3fc2 md5=fe922698df46b21d7e19f28ded4ca100 sha256=3438437c131c9847b34106225a728c11e522776ac454bb8740a9bc7aea409f22 +[http://cairographics.org/releases/pixman-0.16.2.tar.gz] +md5=02bd3669f53c404c19980d5efb6f86fb +sha256=05f78c2fd3a5f054c0d716e8ba1b67a0c04a7a7e642d6946828ec383b389d185 + [http://xorg.freedesktop.org/releases/individual/lib/pixman-0.9.4.tar.bz2] md5=c354ab5b0da10227226d3ef604254875 sha256=261d239e9e3070a0a81e5b3eab92e6236c6295979bdae0a1ded05cbef93f67aa @@ -20650,6 +20754,10 @@ sha256=3238cc3553f721c110822bdc7fbfe7c57f33f59a05e406a19e956e71a1712aa8 md5=28f9dbdc74e9aadbf27aff16d06f4990 sha256=2ec40a8d9d9b80ebebea594c407c31962845376287c19e37345371236ed180d5 +[http://poppler.freedesktop.org/poppler-0.12.1.tar.gz] +md5=3432046ee111efa5b85e5f2cdde8af5c +sha256=6316a3618efd411e34a48a102a1949b1fdcc562f6e69c4d28f0669913451bbb6 + [http://poppler.freedesktop.org/poppler-0.5.4.tar.gz] md5=053fdfd70533ecce1a06353fa945f061 sha256=ca0f880a4ff07391e99b443f0e7c9860241df6a6aaa327b9d811b358d94a29c9 @@ -22750,6 +22858,10 @@ sha256=7e7fb53d6ff05993dcb8b871e3c3016bd4d161d72ded8f8760a4439e9d76aa3b md5=adb048dc3988055533e1ea5d91d81f99 sha256=b00ca360e9b414744eff33ca4567f3eb1a28d32914e20f00b6672fbc141c9beb +[http://samba.org/samba/ftp/stable/samba-3.3.9.tar.gz] +md5=d99c3ccc3066d1c6a0dba4de02aad24b +sha256=41a8919e3a32cf7523c49473edb478f3a7ec7d4ae4d125297a18d48f79e17f91 + [ftp://ftp.sane-project.org/pub/sane/old-versions/sane-backends-1.0.15/sane-backends-1.0.15.tar.gz] md5=3b804f35cdfbc5ad2d201ffe078bbac9 sha256=89106b5bc5a66ca0eaf4553371c89ac8542a757964d7a91c07b8fb77e040eebe @@ -24814,6 +24926,10 @@ sha256=b0bc44f22ac05d490d607282f40986027a1cda2996adad56203dfed8faa815d9 md5=e85064c48fe28e8e87c1da04a06173df sha256=776ddf74b657da5709d8f3d1c800b8203aa82a5f06f1c6d2d0f23a0a5f6685f7 +[http://ftp.gnome.org/pub/GNOME/sources/totem/2.28/totem-2.28.1.tar.bz2] +md5=42f071fcf8ffc471beb3e1689297d647 +sha256=18121f17c37faaa9cc245d46293a24f58f2bba9dc9b84af5e1ffe0ac6e697b04 + [http://ftp.gnome.org/pub/GNOME/sources/totem-pl-parser/2.23/totem-pl-parser-2.23.3.tar.bz2] md5=c163dfd840c6a522e6cd852b379e89cd sha256=5730611c42f8a8540343faa9512d9161073d2f882668c80dd0cf6a34c72daa75 @@ -24826,6 +24942,10 @@ sha256=3193c3446d211db2bd3c169c86f6d433666669336bd589a20c87f1483295cf2a md5=daffda80cfead2a1473ca3ff71e1057b sha256=3a6dd0382fe074f23a747b08423fccb23fb38c25b1feddacbd4875d8b8c83743 +[http://ftp.gnome.org/pub/GNOME/sources/totem-pl-parser/2.28/totem-pl-parser-2.28.1.tar.bz2] +md5=bd4ef8ce1cd3c467cd6adc2835f027bc +sha256=5f71c946cce245d53e8a13281c8dc1884fb6928f0a65d47a6aba7fb18a39acc2 + [http://www.gnome.org/~jamiemcc/tracker/tracker-0.5.4.tar.gz] md5=724208e1b2d235148499672b44181298 sha256=ad214a2692041f423d2150777c233b21cab2d108f849edc513192587ac63c9c2 @@ -25654,6 +25774,18 @@ sha256=4dfd1ff2793f71ab11d842ff4379a676a30af4287b7b6892ba9733bf7b691c10 md5=ca44d7e733e4f2058a1e5e8a0aa5d2e0 sha256=59295d46010c19f7b23f46e60522e6161ffc44685ef20fc04aca8b54d3fd7ef0 +[http://www.freesmartphone.org/sources/vala-0.7.7+fso1.tar.bz2] +md5=870e79fceb3d8c2d9fa139df097ec66d +sha256=147613e4c794b45d4c75d78d7aba7b688ad6c90ff6778475c836412ee7f4cbed + +[http://www.freesmartphone.org/sources/vala-0.7.7+fso5.tar.bz2] +md5=e4c09df42b2c475dae15a791d867e26e +sha256=16971189b3cb95648b9574eb7c4c7cc0dff9978458aff7f3f7c54ab823ada721 + +[http://ftp.gnome.org/pub/GNOME/sources/vala/0.7/vala-0.7.7.tar.bz2] +md5=7d11fcddb2bd30b9ecbdacfaa20f2769 +sha256=ebb1afbb0a61dd8f5f8ef13512e789697e98d5ad5f98739120f3b3cc02d46d8f + [http://www.valgrind.org/downloads/valgrind-3.2.1.tar.bz2] md5=9407d33961186814cef0e6ecedfd6318 sha256=7f9a15d7be16ca03a0912191e8d55a486bf69690e11bb76ccece3eaff3730a33 @@ -26562,6 +26694,10 @@ sha256=75378ad3eacbe32c625de3b4af3e1f6fc9772ab45c1cd1393483d95ac4da3b22 md5=6873f49ea7f568743621ed1e05e52dab sha256=169978c677db5c498f485e9896cd0ababae6b3a9d0bf640ffa719d5af2abca46 +[http://portland.freedesktop.org/download/xdg-utils-1.0.2.tgz] +md5=348a5b91dc66426505022c74a64b2940 +sha256=21aeb7d16b2529b8d3975118f59eec09953e09f9a68d718159e98c90474b01ac + [http://xdiskusage.sourceforge.net/xdiskusage-1.48.tgz] md5=a902aa9d73761ade98256c3cd5c1f533 sha256=7842aa42510bf52c367164d44a977915ad9f070864d5175157738f8d6894274b @@ -28090,6 +28226,10 @@ sha256=256fd04cbd97b2b96e7ef808b6752561da855ded3835a1bb0d7acbe07758e924 md5=acae8edeb05a406f7f60bcbb218a8f1d sha256=aaab4cbf19c73ded4785ba69cdd7ae23aaf103c7040559283f85fc1237dad6e6 +[http://xorg.freedesktop.org/releases/individual/proto/xf86miscproto-0.9.3.tar.bz2] +md5=ca63bbb31cf5b7f37b2237e923ff257a +sha256=45b8ec6a4a8ca21066dce117e09dcc88539862e616e60fb391de05b36f63b095 + [http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86miscproto-X11R7.0-0.9.2.tar.bz2] md5=1cc082d8a6da5177ede354bedbacd4ed sha256=ed0190e3db4c07fe042cfc9d726e3806af83a2e6dfdbd832a7f8c225805bde5b @@ -29022,6 +29162,10 @@ sha256=3f8cde77e8cbeb6d0a5f232b7a2ee51dd49b677916d52ab0986d320a5f9e8000 md5=9c30b8e1709d5367beb7706146640c07 sha256=c24d08939250f10238fd1b984707bfa0901ba9c55fa36b67d91eb12b500500aa +[http://xorg.freedesktop.org/releases/individual/app/xrdb-1.0.6.tar.bz2] +md5=8dd881cd5a7dcb6e456549817f0fb475 +sha256=8d062a3764665fcf22b14df4a5aca6af1e6d7d613296875b31b68e74ef66fc99 + [http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrdb-X11R7.0-1.0.1.tar.bz2] md5=a3c1fd6f5391de7f810239a912d39fa5 sha256=adf3f97fcb0d768e19058e94dd4aaec70ea61afa8077f6c6e99aa70bc8564e14 diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc index bba14f85e7..36c556a679 100644 --- a/conf/distro/include/angstrom-2008-preferred-versions.inc +++ b/conf/distro/include/angstrom-2008-preferred-versions.inc @@ -2,7 +2,7 @@ PREFERRED_VERSION_autoconf = "2.63" PREFERRED_VERSION_autoconf-native = "2.63" PREFERRED_VERSION_automake-native = "1.10.2" PREFERRED_VERSION_busybox = "1.13.2" -PREFERRED_VERSION_cairo = "1.8.0" +PREFERRED_VERSION_cairo = "1.8.8" PREFERRED_VERSION_dbus = "1.2.3" PREFERRED_VERSION_dropbear = "0.51" PREFERRED_VERSION_fontconfig = "2.6.0" diff --git a/conf/distro/include/angstrom-eglibc.inc b/conf/distro/include/angstrom-eglibc.inc index 2a1b7b059c..e85b0b8132 100644 --- a/conf/distro/include/angstrom-eglibc.inc +++ b/conf/distro/include/angstrom-eglibc.inc @@ -1,6 +1,8 @@ # eglibc: require conf/distro/include/eglibc.inc +ANGSTROM_BLACKLIST_pn-libiconv = "the glibc builtin iconv replacement is used" + TARGET_OS = "linux" TARGET_OS .= "${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}" diff --git a/conf/distro/include/angstrom-glibc.inc b/conf/distro/include/angstrom-glibc.inc index 4488becd92..183f0c1d18 100644 --- a/conf/distro/include/angstrom-glibc.inc +++ b/conf/distro/include/angstrom-glibc.inc @@ -1,6 +1,8 @@ # glibc: require conf/distro/include/glibc-${TOOLCHAIN_TYPE}.inc +ANGSTROM_BLACKLIST_pn-libiconv = "the glibc builtin iconv replacement is used" + TARGET_OS = "linux" TARGET_OS .= "${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}" diff --git a/conf/distro/include/fso-autorev.inc b/conf/distro/include/fso-autorev.inc index 607f3cd06d..ba8cdac1f5 100644 --- a/conf/distro/include/fso-autorev.inc +++ b/conf/distro/include/fso-autorev.inc @@ -23,9 +23,11 @@ SRCREV_pn-libascenario = "${AUTOREV}" SRCREV_pn-libeflvala = "${AUTOREV}" SRCREV_pn-libfsobasics = "${AUTOREV}" SRCREV_pn-libfsoframework = "${AUTOREV}" +SRCREV_pn-libfsoresource = "${AUTOREV}" SRCREV_pn-libfsotransport = "${AUTOREV}" SRCREV_pn-libframeworkd-glib = "${AUTOREV}" SRCREV_pn-libfso-glib = "${AUTOREV}" +SRCREV_pn-libgee-native = "${AUTOREV}" SRCREV_pn-libgee = "${AUTOREV}" SRCREV_pn-libgsm0710 = "${AUTOREV}" SRCREV_pn-libgsm0710mux = "${AUTOREV}" diff --git a/conf/distro/include/kaeilos-2009-preferred-versions.inc b/conf/distro/include/kaeilos-2009-preferred-versions.inc index ba8d587241..34f0386772 100644 --- a/conf/distro/include/kaeilos-2009-preferred-versions.inc +++ b/conf/distro/include/kaeilos-2009-preferred-versions.inc @@ -4,7 +4,7 @@ #@NAME: KaeilOS(R) - http://www.kaeilos.com #@DESCRIPTION: KaeilOS Linux Distribution preferred version #@MAINTAINER: Marco Cavallini <m.cavallini@koansoftware.com> -#@VERSION: 01-07-2009 +#@VERSION: 21-10-2009 # # KaeilOS is a registered trade mark of KOAN - Bergamo - Italia # Product website : http://www.KaeilOS.com @@ -15,31 +15,32 @@ PREFERRED_VERSION_autoconf-native = "2.63" PREFERRED_VERSION_automake-native = "1.10.2" PREFERRED_VERSION_busybox = "1.13.2" PREFERRED_VERSION_cairo = "1.8.0" -PREFERRED_VERSION_dbus = "1.2.1" +PREFERRED_VERSION_dbus = "1.2.3" PREFERRED_VERSION_dropbear = "0.51" PREFERRED_VERSION_fontconfig = "2.6.0" -PREFERRED_VERSION_glib-2.0 = "2.20.0" -PREFERRED_VERSION_glib-2.0-native = "2.18.0" -PREFERRED_VERSION_glibmm = "2.18.0" -PREFERRED_VERSION_glproto = "1.4.9" +PREFERRED_VERSION_glib-2.0 = "2.22.1" +PREFERRED_VERSION_glib-2.0-native = "2.22.1" +PREFERRED_VERSION_glibmm = "2.22.1" +PREFERRED_VERSION_glproto = "1.4.9" PREFERRED_VERSION_gst-pulse = "0.9.7" -PREFERRED_VERSION_gtk+ = "2.16.0" -PREFERRED_VERSION_gtkmm = "2.14.1" -PREFERRED_VERSION_hal = "0.5.12" +PREFERRED_VERSION_gtk+ = "2.18.0" +PREFERRED_VERSION_gtkmm = "2.18.1" +PREFERRED_VERSION_hal = "0.5.13" PREFERRED_VERSION_libgemwidget = "1.0" PREFERRED_VERSION_libgpephone = "0.4" PREFERRED_VERSION_libsdl-x11 = "1.2.11" -PREFERRED_VERSION_libtool = "2.2.4" -PREFERRED_VERSION_libtool-native = "2.2.4" -PREFERRED_VERSION_libtool-cross = "2.2.4" -PREFERRED_VERSION_libtool-sdk = "2.2.4" +PREFERRED_VERSION_libtool = "2.2.6a" +PREFERRED_VERSION_libtool-native = "2.2.6a" +PREFERRED_VERSION_libtool-cross = "2.2.6a" +PREFERRED_VERSION_libtool-sdk = "2.2.6a" PREFERRED_VERSION_libx11 = "1.2" -PREFERRED_VERSION_mesa = "7.2" -PREFERRED_VERSION_pango = "1.24.2" +PREFERRED_VERSION_mesa = "7.4" +PREFERRED_VERSION_pango = "1.24.4" PREFERRED_VERSION_pixman = "0.13.2" PREFERRED_VERSION_pkgconfig = "0.23" PREFERRED_VERSION_pkgconfig-native = "0.23" PREFERRED_VERSION_pulseaudio = "0.9.15" +PREFERRED_VERSION_python = "2.6.1" PREFERRED_VERSION_samba = "3.3.0" PREFERRED_VERSION_tiff = "3.8.2+4.0.0beta2" @@ -49,7 +50,7 @@ UDEV_GE_141 = "1" PREFERRED_VERSION_usbutils = "0.82" PREFERRED_VERSION_util-macros-native = "1.2.1" PREFERRED_VERSION_util-macros = "1.2.1" -PREFERRED_VERSION_wpa-supplicant = "0.6.7" +PREFERRED_VERSION_wpa-supplicant = "0.6.9" PREFERRED_VERSION_xserver-kdrive = "1.4.0.90" PREFERRED_VERSION_xserver-xorg = "1.6.1" diff --git a/conf/distro/include/sane-srcrevs-fso.inc b/conf/distro/include/sane-srcrevs-fso.inc index aef87a62a5..b86963ff29 100644 --- a/conf/distro/include/sane-srcrevs-fso.inc +++ b/conf/distro/include/sane-srcrevs-fso.inc @@ -1,7 +1,7 @@ # To be included from sane-srcrevs.inc # FSO Projects -- Cornucopia -FSO_CORNUCOPIA_SRCREV ?= "3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7" +FSO_CORNUCOPIA_SRCREV ?= "a41cae9df1af4fc710c701ac01016d3668dd5fba" SRCREV_pn-fsodeviced ?= "${FSO_CORNUCOPIA_SRCREV}" SRCREV_pn-fsogsmd ?= "${FSO_CORNUCOPIA_SRCREV}" SRCREV_pn-fsogpsd ?= "${FSO_CORNUCOPIA_SRCREV}" @@ -10,7 +10,9 @@ SRCREV_pn-fsotimed ?= "${FSO_CORNUCOPIA_SRCREV}" SRCREV_pn-fsousaged ?= "${FSO_CORNUCOPIA_SRCREV}" SRCREV_pn-libfsoframework ?= "${FSO_CORNUCOPIA_SRCREV}" SRCREV_pn-libfsotransport ?= "${FSO_CORNUCOPIA_SRCREV}" +SRCREV_pn-libfsoresource ?= "${FSO_CORNUCOPIA_SRCREV}" SRCREV_pn-misc-vapi ?= "${FSO_CORNUCOPIA_SRCREV}" + # FSO Projects -- Misc SRCREV_pn-dbus-hlid ?= "39e804f28808247df2573788cb99897d4d765e69" SRCREV_pn-frameworkd ?= "a2dfde0fb46a745f5c07e6a1ab44e4b95b7dde80" diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc index 941d265287..1d84e96ce4 100644 --- a/conf/distro/include/sane-srcrevs.inc +++ b/conf/distro/include/sane-srcrevs.inc @@ -84,8 +84,9 @@ SRCREV_pn-libexalt ?= "78" SRCREV_pn-libexalt-dbus ?= "76" SRCREV_pn-libfakekey ?= "1455" SRCREV_pn-libgdbus ?= "aeab6e3c0185b271ca343b439470491b99cc587f" +SRCREV_pn-libgee ?= "0bddeeefb3bd5b003d77301705dbad181cddcaf6" +SRCREV_pn-libgee-native ?= "0bddeeefb3bd5b003d77301705dbad181cddcaf6" SRCREV_pn-libgsmd ?= "4505" -SRCREV_pn-libgee ?= "ea130c0837eefe404b53240f8c2ed642ae98a677" SRCREV_pn-libiac ?= "1590" SRCREV_pn-libjana = "749" SRCREV_pn-libmokogsmd2 ?= "4334" @@ -125,7 +126,6 @@ SRCREV_pn-moblin-proto ?= "8f2cb524fe06555182c25b4ba3202d7b368ac0ce" SRCREV_pn-moko-gtk-engine ?= "4734" SRCREV_pn-mokoko ?= "127" SRCREV_pn-mpd-alsa ?= "6952" -SRCREV_pn-mplayer ?= "29716" SRCREV_pn-mplayer-maemo ?= "342" SRCREV_pn-multicat ?= "f894801916cc4d0e912e4553490dc215276c52a9" SRCREV_pn-multitap-pad ?= "373" @@ -197,7 +197,7 @@ SRCREV_pn-packagekit ?= "96823118e98515dd41748e8c7bdb9cf7b1d4a95f" SRCREV_pn-paroli ?= "9279b50ed72a94100d7f0f49090043134302f2eb" SRCREV_pn-portaudio-v19 ?= "1387" SRCREV_pn-psplash ?= "249" -SRCREV_pn-pty-forward-native ?= "4907" +SRCREV_pn-pty-forward-native ?= "a41cae9df1af4fc710c701ac01016d3668dd5fba" SRCREV_pn-pyefl-sudoku ?= "49" SRCREV_pn-pygsm ?= "976477f6b403f422b4ea730f71ebf409f6671141" SRCREV_pn-python-coherence ?= "1161" @@ -216,7 +216,7 @@ SRCREV_pn-remoko ?= "121" SRCREV_pn-remoko-server ?= "121" SRCREV_pn-s3c24xx-gpio ?= "4949" SRCREV_pn-s3c64xx-gpio ?= "4949" -SRCREV_pn-serial-forward ?= "4907" +SRCREV_pn-serial-forward ?= "a41cae9df1af4fc710c701ac01016d3668dd5fba" SRCREV_pn-settings-daemon ?= "2006" SRCREV_pn-sjf2410-linux-native ?= "4268" SRCREV_pn-socketcan-modules ?= "917" diff --git a/conf/distro/kaeilos.conf b/conf/distro/kaeilos.conf index 5bec2d4d48..421483ff6f 100644 --- a/conf/distro/kaeilos.conf +++ b/conf/distro/kaeilos.conf @@ -3,7 +3,7 @@ #@NAME: KaeilOS(R) - http://www.kaeilos.com #@DESCRIPTION: KaeilOS Linux Distribution for Kernel 2.6 based devices #@MAINTAINER: Marco Cavallini <m.cavallini@koansoftware.com> -#@VERSION: 01-07-2009 +#@VERSION: 21-10-2009 # # KaeilOS is a registered trade mark of KOAN - Bergamo - Italia # Product website : http://www.KaeilOS.com @@ -15,7 +15,9 @@ #DISTRO_VERSION = "2009.1" DISTRO_VERSION = "2009.1-test-${DATE}" DISTRO_REVISION = "1" -DISTRO_PR = ".3" +DISTRO_PR = ".4" + +OLDEST_KERNEL ?= "2.6.28" #build staging from packages INHERIT += "packaged-staging" @@ -25,16 +27,16 @@ require conf/distro/include/sane-srcrevs.inc require conf/distro/include/kaeilos-2009-preferred-versions.inc require conf/distro/include/preferred-opie-versions-1.2.4.inc -PREFERRED_VERSION_xserver-kdrive = "1.3.0.0" -PREFERRED_VERSION_busybox = "1.13.2" -IMAGE_DEV_MANAGER = "busybox-mdev" - #Images built can have to modes: # 'debug': empty rootpassword, strace included # 'release' no root password, no strace and gdb by default DISTRO_TYPE ?= "debug" #DISTRO_TYPE = "release" +# Set the toolchain type (internal, external) and brand (generic, csl etc.) +TOOLCHAIN_TYPE ?= "internal" +TOOLCHAIN_BRAND ?= "" + # Ship just basic locale by default. Locales are big (~1Mb uncompr.), so # shipping some adhoc subset will be still useless and size burden for # users of all other languages/countries. Instead, worth to make it easy @@ -49,7 +51,7 @@ IMAGE_LINGUAS = '${@base_less_or_equal("ROOT_FLASH_SIZE", "16", "", "en-us", d)} EXTRA_IMAGECMD_ext2 = "-i 4096" # set feed path variables -FEED_BASEPATH = "feeds/2008/${ANGSTROM_PKG_FORMAT}/${LIBC}/" +FEED_BASEPATH = "feeds/unstable/${ANGSTROM_PKG_FORMAT}/${LIBC}/" #The angstrom-mirrors.bbclass should have everything, but we can use this as a fallback @@ -75,6 +77,10 @@ PREFERRED_VERSION_linux-libc-headers = "2.6.23" #Prefer glibc 2.6 and uclibc 0.9.30, these have had the most testing. PREFERRED_VERSION_glibc ?= "2.6.1" PREFERRED_VERSION_glibc-initial ?= "2.6.1" +# Maybe one day I'll upgrade this too +#PREFERRED_VERSION_glibc ?= "2.9" +#PREFERRED_VERSION_glibc-initial ?= "2.9" + PREFERRED_VERSION_uclibc ?= "0.9.30" PREFERRED_VERSION_uclibc-initial ?= "0.9.30" @@ -88,10 +94,10 @@ PREFERRED_VERSION_uclibc-initial ?= "0.9.30" #PREFERRED_PROVIDER_virtual/psplash ?= "psplash-kaeilos" PREFERRED_PROVIDER_avahi = "avahi" +PREFERRED_PROVIDER_virtual/libusb0 ?= "libusb-compat" +PREFERRED_PROVIDER_virtual/gail ?= "gtk+" -#Small machines prefer kdrive, but we might ship full Xorg in other images -PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive" -PREFERRED_PROVIDER_xserver ?= "xserver-kdrive" +PREFERRED_PROVIDER_libfribidi = "fribidi" #powerpc needs additional patches to gcc ANGSTROM_GCC_VERSION_ppc405 ?= "4.1.1" @@ -112,10 +118,14 @@ ANGSTROM_GCC_VERSION_486sx = "4.3.2" ANGSTROM_GCC_VERSION_avr32 ?= "4.2.2" #Everybody else can just use this: -ANGSTROM_GCC_VERSION ?= "4.2.4" -PREFERRED_VERSION_binutils ?= "2.18.50.0.7" -PREFERRED_VERSION_binutils-cross ?= "2.18.50.0.7" -PREFERRED_VERSION_binutils-cross-sdk ?= "2.18.50.0.7" +ANGSTROM_GCC_VERSION ?= "4.3.3" + +ANGSTROM_BINUTILS_VERSION ?= "2.18" +ANGSTROM_BINUTILS_VERSION_armv7a ?= "2.18.50.0.7" + +PREFERRED_VERSION_binutils ?= "${ANGSTROM_BINUTILS_VERSION}" +PREFERRED_VERSION_binutils-cross ?= "${ANGSTROM_BINUTILS_VERSION}" +PREFERRED_VERSION_binutils-cross-sdk ?= "${ANGSTROM_BINUTILS_VERSION}" PREFERRED_VERSION_gcc ?= "${ANGSTROM_GCC_VERSION}" PREFERRED_VERSION_gcc-cross ?= "${ANGSTROM_GCC_VERSION}" @@ -124,24 +134,17 @@ PREFERRED_VERSION_gcc-cross-initial ?= "${ANGSTROM_GCC_VERSION}" PREFERRED_VERSION_gcc-cross-intermediate ?= "${ANGSTROM_GCC_VERSION}" #Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom -require conf/distro/include/preferred-e-versions.inc -require conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc -require conf/distro/include/preferred-xorg-versions-X11R7.4.inc +#require conf/distro/include/preferred-e-versions.inc +#require conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc +#require conf/distro/include/preferred-xorg-versions-X11R7.4.inc #avr32 only has patches for binutils 2.17 in OE PREFERRED_VERSION_binutils_avr32 = "2.17" PREFERRED_VERSION_binutils-cross_avr32 = "2.17" PREFERRED_VERSION_binutils-cross-sdk_avr32 = "2.17" -#Other packages version -PREFERRED_VERSION_classpath ?= "0.97.2" - -# Virtuals: -PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross" -PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial" -PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-intermediate" -PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross" -PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross" +# Toolchain virtuals: +require conf/distro/include/toolchain-${TOOLCHAIN_TYPE}.inc # hostap stuff, we prefer the in-kernel modules, but those don't work for all machines PREFERRED_PROVIDER_hostap-conf ?= "hostap-conf" @@ -152,13 +155,12 @@ PREFERRED_PROVIDER_virtual/db ?= "db" PREFERRED_PROVIDER_virtual/db-native ?= "db-native" PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11" PREFERRED_PROVIDER_virtual/libx11 ?= "libx11" -PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive" # Others: -PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers" +#PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers" PREFERRED_PROVIDER_dbus-glib = "dbus-glib" PREFERRED_PROVIDER_esound ?= "pulseaudio" -PREFERRED_PROVIDER_gconf ?= "gconf-dbus" +PREFERRED_PROVIDER_gconf ?= "gconf" PREFERRED_PROVIDER_gnome-vfs ?= "gnome-vfs" PREFERRED_PROVIDER_gnome-vfs-plugin-file ?= "gnome-vfs" PREFERRED_PROVIDER_tslib ?= "tslib" @@ -166,9 +168,15 @@ PREFERRED_PROVIDER_tslib-conf ?= "tslib" PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget" PREFERRED_PROVIDER_ntp ?= "ntp" PREFERRED_PROVIDER_hotplug = "udev" +PREFERRED_PROVIDER_opkg ?= "opkg-nogpg" PREFERRED_PROVIDER_libxss = "libxss" PREFERRED_PROVIDER_bluez-utils-dbus = "bluez-utils" PREFERRED_PROVIDER_bluez-libs = "bluez4" +PREFERRED_PROVIDER_bluez-utils = "bluez4" +PREFERRED_PROVIDER_util-linux = "util-linux-ng" + +ANGSTROM_BLACKLIST_pn-bluez-libs = "bluez-libs 3.x has been replaced by bluez4" +ANGSTROM_BLACKLIST_pn-bluez-utils = "bluez-utils 3.x has been replaced by bluez4" # we don't ship gtk-directfb by default PREFERRED_PROVIDER_gtk+ ?= "gtk+" @@ -186,6 +194,9 @@ PREFERRED_PROVIDER_gdk-pixbuf-loader-wbmp ?= "gtk+" PREFERRED_PROVIDER_gdk-pixbuf-loader-xbm ?= "gtk+" PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm ?= "gtk+" +# QT stuff: +# There are several flavours of qt4x11 in OE, so lets pick one that is buildable for everyone +PREFERRED_PROVIDER_qt4x11 ?= "qt4-x11-free" #Silence a warning during parsing PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap" @@ -200,6 +211,11 @@ require conf/distro/include/kaeilos.inc # We also take this opportunity to inject angstrom-version and the feed configs into the rootfs IPKG_VARIANT = "opkg-nogpg angstrom-version ${ANGSTROM_FEED_CONFIGS}" +# Select xserver-xorg as default, since kdrive has been EOL'ed +XSERVER ?= "xserver-xorg xf86-input-evdev xf86-input-keyboard xf86-input-mouse xf86-video-fbdev" +PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg" +PREFERRED_PROVIDER_xserver ?= "xserver-xorg" + # do some task-base stuff here # Prefer bluez4, it's needed for things like connman. Bluez4 is also largely backward compatible with @@ -239,6 +255,7 @@ DISTRO_EXTRA_RRECOMMENDS += " \ kernel-module-ext3 \ kernel-module-af-packet \ openssh-sftp-server \ + ${DEBUG_APPS} \ " SPLASH ?= "psplash" diff --git a/conf/machine/igep0020.conf b/conf/machine/igep0020.conf new file mode 100644 index 0000000000..512a977748 --- /dev/null +++ b/conf/machine/igep0020.conf @@ -0,0 +1,43 @@ +#@TYPE: Machine +#@NAME: IGEP0020 machine +#@DESCRIPTION: Machine configuration for the http://www.myigep.com/ IGEP v2.x boards +TARGET_ARCH = "arm" + +PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg" +XSERVER = "xserver-xorg \ + xf86-input-evdev \ + xf86-input-mouse \ + xf86-video-omapfb \ + xf86-input-keyboard" + +# Only has DVI connector for external screen +GUI_MACHINE_CLASS = "bigscreen" + +require conf/machine/include/omap3.inc + +PREFERRED_PROVIDER_virtual/kernel = "linux-igep2" + +KERNEL_IMAGETYPE = "uImage" + +IMAGE_FSTYPES += "tar.bz2 ubi" + +# Guesswork +SERIAL_CONSOLE = "115200 ttyS2" + +# do ubiattach /dev/ubi_ctrl -m 4 +# From dmesg: +# UBI: smallest flash I/O unit: 2048 +# UBI: logical eraseblock size: 129024 bytes +# from ubiattach stdout: +# UBI device number 0, total 1996 LEBs +MKUBIFS_ARGS = "-m 2048 -e 129024 -c 1996" + +# do ubiattach /dev/ubi_ctrl -m 4 +# from dmesg: +# UBI: smallest flash I/O unit: 2048 +# UBI: physical eraseblock size: 131072 bytes (128 KiB) +# UBI: sub-page size: 512 +UBINIZE_ARGS = "-m 2048 -p 128KiB -s 512" + +# MACHINE_EXTRA_RRECOMMENDS = " omap3-sgx-modules " +MACHINE_FEATURES = "kernel26 screen apm usbgadget usbhost vfat alsa" diff --git a/conf/machine/include/omap3.inc b/conf/machine/include/omap3.inc index d52bc99a7d..675249a064 100644 --- a/conf/machine/include/omap3.inc +++ b/conf/machine/include/omap3.inc @@ -1,7 +1,7 @@ require conf/machine/include/tune-cortexa8.inc PREFERRED_PROVIDER_virtual/kernel = "linux-omap" # Increase this everytime you change something in the kernel -MACHINE_KERNEL_PR = "r46" +MACHINE_KERNEL_PR = "r47" KERNEL_IMAGETYPE = "uImage" diff --git a/contrib/angstrom/sort.sh b/contrib/angstrom/sort.sh index 9f674ec6cf..c8b1d764aa 100755 --- a/contrib/angstrom/sort.sh +++ b/contrib/angstrom/sort.sh @@ -58,7 +58,7 @@ case "$arch" in "armv7") machines="" ;; "armv7a") - machines="omap3-touchbook beagleboard omap3evm omap3517-evm omap3-pandora omapzoom omapzoom2 overo" ;; + machines="igep0020 omap3-touchbook beagleboard omap3evm omap3517-evm omap3-pandora omapzoom omapzoom2 overo" ;; "avr32") machines="atngw100 at32stk1000" ;; "bfin") diff --git a/files/device_table-jlime.txt b/files/device_table-jlime.txt index d8fbc8e26a..314ad62612 100644 --- a/files/device_table-jlime.txt +++ b/files/device_table-jlime.txt @@ -4,7 +4,7 @@ /dev/apm_bios c 660 0 46 10 134 - - - /dev/fb0 c 600 0 0 29 0 - - - /dev/hda b 660 0 6 3 0 - - - -/dev/hda b 660 0 6 3 1 1 1 20 +/dev/hda b 660 0 6 3 1 1 1 19 /dev/kmem c 640 0 15 1 2 - - - /dev/mem c 640 0 15 1 1 - - - /dev/null c 666 0 0 1 3 - - - diff --git a/files/device_table-minimal-add-md.txt b/files/device_table-minimal-add-md.txt index a78ca76605..b30fdc3f5e 100644 --- a/files/device_table-minimal-add-md.txt +++ b/files/device_table-minimal-add-md.txt @@ -13,7 +13,7 @@ /dev/apm_bios c 660 0 46 10 134 - - - /dev/fb0 c 600 0 0 29 0 - - - /dev/hda b 660 0 6 3 0 - - - -/dev/hda b 660 0 6 3 1 1 1 5 +/dev/hda b 660 0 6 3 1 1 1 4 /dev/kmem c 640 0 15 1 2 - - - /dev/mem c 640 0 15 1 1 - - - /dev/null c 666 0 0 1 3 - - - diff --git a/files/device_table-minimal.txt b/files/device_table-minimal.txt index 891feb0ff2..a474377e99 100644 --- a/files/device_table-minimal.txt +++ b/files/device_table-minimal.txt @@ -13,7 +13,7 @@ /dev/apm_bios c 660 0 46 10 134 - - - /dev/fb0 c 600 0 0 29 0 - - - /dev/hda b 660 0 6 3 0 - - - -/dev/hda b 660 0 6 3 1 1 1 20 +/dev/hda b 660 0 6 3 1 1 1 19 /dev/kmem c 640 0 15 1 2 - - - /dev/mem c 640 0 15 1 1 - - - /dev/null c 666 0 0 1 3 - - - @@ -33,10 +33,10 @@ /dev/event c 660 0 0 13 64 0 1 8 /dev/mmcblk0 b 660 0 6 179 0 - - - -/dev/mmcblk0p b 660 0 6 179 1 1 1 8 +/dev/mmcblk0p b 660 0 6 179 1 1 1 7 # for older kernels before 2.6.22 # mmc numbers are assigned dynamicly so if you have other dynamic assigned block devices it may be wrong # #/dev/mmcblk0 b 660 0 6 254 0 - - - -#/dev/mmcblk0p b 660 0 6 254 1 1 1 8 +#/dev/mmcblk0p b 660 0 6 254 1 1 1 7 diff --git a/files/device_table-slugos.txt b/files/device_table-slugos.txt index 17e8064b97..94b3c499f7 100644 --- a/files/device_table-slugos.txt +++ b/files/device_table-slugos.txt @@ -20,19 +20,19 @@ /dev/ram b 644 0 0 1 0 0 1 4 /dev/random c 644 0 0 1 8 - - - /dev/sda b 664 0 0 8 0 - - - -/dev/sda b 664 0 0 8 1 1 1 10 +/dev/sda b 664 0 0 8 1 1 1 9 /dev/sdb b 664 0 0 8 16 - - - -/dev/sdb b 664 0 0 8 17 1 1 5 +/dev/sdb b 664 0 0 8 17 1 1 4 /dev/sdc b 664 0 0 8 32 - - - -/dev/sdc b 664 0 0 8 33 1 1 5 +/dev/sdc b 664 0 0 8 33 1 1 4 /dev/sdd b 664 0 0 8 48 - - - -/dev/sdd b 664 0 0 8 49 1 1 5 +/dev/sdd b 664 0 0 8 49 1 1 4 /dev/sde b 664 0 0 8 64 - - - -/dev/sde b 664 0 0 8 65 1 1 5 +/dev/sde b 664 0 0 8 65 1 1 4 /dev/sdf b 664 0 0 8 80 - - - -/dev/sdf b 664 0 0 8 81 1 1 5 +/dev/sdf b 664 0 0 8 81 1 1 4 /dev/sdg b 664 0 0 8 96 - - - -/dev/sdg b 664 0 0 8 97 1 1 5 +/dev/sdg b 664 0 0 8 97 1 1 4 /dev/tty c 666 0 0 5 0 - - - /dev/tty c 644 0 0 4 0 0 1 10 /dev/ttyS c 644 0 0 4 64 0 1 2 diff --git a/files/device_table-unslung.txt b/files/device_table-unslung.txt index cd5d5f7bc5..64a1dc1054 100644 --- a/files/device_table-unslung.txt +++ b/files/device_table-unslung.txt @@ -20,7 +20,7 @@ /dev/mem c 640 0 0 1 1 - - - /dev/mtd c 664 0 0 90 0 0 2 8 /dev/mtdblock b 644 0 0 31 0 0 1 8 -/dev/mtdr c 664 0 0 90 0 1 2 8 +/dev/mtdr c 664 0 0 90 0 1 2 7 /dev/null c 666 0 0 1 3 - - - /dev/pbuttons c 664 0 0 60 0 - - - /dev/ppp c 644 0 0 108 0 - - - @@ -31,15 +31,15 @@ /dev/rtc c 644 0 0 10 135 - - - /dev/scd b 664 0 0 11 0 0 1 4 /dev/sda b 664 0 0 8 0 - - - -/dev/sda b 664 0 0 8 1 1 1 16 +/dev/sda b 664 0 0 8 1 1 1 15 /dev/sdb b 664 0 0 8 16 - - - -/dev/sdb b 664 0 0 8 17 1 1 16 +/dev/sdb b 664 0 0 8 17 1 1 15 /dev/sdc b 664 0 0 8 32 - - - -/dev/sdc b 664 0 0 8 33 1 1 16 +/dev/sdc b 664 0 0 8 33 1 1 15 /dev/sdd b 664 0 0 8 48 - - - -/dev/sdd b 664 0 0 8 49 1 1 16 +/dev/sdd b 664 0 0 8 49 1 1 15 /dev/sde b 664 0 0 8 64 - - - -/dev/sde b 664 0 0 8 65 1 1 16 +/dev/sde b 664 0 0 8 65 1 1 15 /dev/st c 664 0 0 9 0 0 1 4 /dev/tty c 666 0 0 5 0 - - - /dev/tty c 644 0 0 4 0 0 1 10 diff --git a/files/device_table_add-scsi.txt b/files/device_table_add-scsi.txt index 74d7725185..b672cbb015 100644 --- a/files/device_table_add-scsi.txt +++ b/files/device_table_add-scsi.txt @@ -1,2 +1,2 @@ /dev/sda b 660 0 6 8 0 - - - -/dev/sda b 660 0 6 8 1 1 1 16 +/dev/sda b 660 0 6 8 1 1 1 15 diff --git a/recipes/binutils/binutils-2.20/binutils-arm-non-empty-know.patch b/recipes/binutils/binutils-2.20/binutils-arm-non-empty-know.patch new file mode 100644 index 0000000000..f0f54b2bf8 --- /dev/null +++ b/recipes/binutils/binutils-2.20/binutils-arm-non-empty-know.patch @@ -0,0 +1,18 @@ +This is backported partially from 2.20 branch + +http://sourceware.org/ml/binutils-cvs/2009-10/msg00173.html + +-Khem +Index: binutils-2.20/gas/as.h +=================================================================== +--- binutils-2.20.orig/gas/as.h 2009-10-22 00:27:08.700469349 -0700 ++++ binutils-2.20/gas/as.h 2009-10-22 00:28:04.068416318 -0700 +@@ -238,7 +238,7 @@ typedef addressT valueT; + #define know(p) gas_assert(p) /* Verify our assumptions! */ + #endif /* not yet defined */ + #else +-#define know(p) /* know() checks are no-op.ed */ ++#define know(p) do {} while (0) /* know() checks are no-op.ed */ + #endif + + /* input_scrub.c */ diff --git a/recipes/binutils/binutils-cross-sdk.inc b/recipes/binutils/binutils-cross-sdk.inc index 4d5a6df493..da00965241 100644 --- a/recipes/binutils/binutils-cross-sdk.inc +++ b/recipes/binutils/binutils-cross-sdk.inc @@ -6,6 +6,9 @@ EXTRA_OECONF = "--with-sysroot=${prefix}/${TARGET_SYS} \ --enable-install-libbfd \ --disable-werror" +# In case we end up with a .debug dir +FILES_${PN}-dbg += "${prefix}/${HOST_PREFIX}${BUILD_SYS}/${TARGET_SYS}/lib/.debug/*" + do_stage() { : } diff --git a/recipes/binutils/binutils_2.20.bb b/recipes/binutils/binutils_2.20.bb index fd539fe59e..62f40f231a 100644 --- a/recipes/binutils/binutils_2.20.bb +++ b/recipes/binutils/binutils_2.20.bb @@ -1,6 +1,9 @@ require binutils.inc LICENSE = "GPLv3" +INC_PR = "r1" +PR = "${INC_PR}.1" + SRC_URI = "\ ${GNU_MIRROR}/binutils/binutils-${PV}.tar.bz2 \ file://binutils-uclibc-100-uclibc-conf.patch;patch=1 \ @@ -11,6 +14,7 @@ SRC_URI = "\ file://binutils-uclibc-gas-needs-libm.patch;patch=1 \ file://binutils-arm-pr7093.patch;patch=1 \ file://ld-stub-crash.patch;patch=1;pnum=0 \ + file://binutils-arm-non-empty-know.patch;patch=1 \ " # powerpc patches diff --git a/recipes/cairo/cairo_1.8.8.bb b/recipes/cairo/cairo_1.8.8.bb new file mode 100644 index 0000000000..b2d8e655f3 --- /dev/null +++ b/recipes/cairo/cairo_1.8.8.bb @@ -0,0 +1,6 @@ +require cairo.inc + +SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \ + " + + diff --git a/recipes/fastjar/fastjar-native.inc b/recipes/fastjar/fastjar-native.inc index fa7c7ca646..df4d260713 100644 --- a/recipes/fastjar/fastjar-native.inc +++ b/recipes/fastjar/fastjar-native.inc @@ -4,7 +4,7 @@ SECTION = "devel" PRIORITY = "optional" LICENSE = "GPL" -INC_PR = "r1" +INC_PR = "r2" DEPENDS = "zlib-native" @@ -14,15 +14,15 @@ S = "${WORKDIR}/fastjar-${PV}" inherit autotools native -EXTRA_OECONF = "--with-system-zlib --with-fastjar" - do_configure () { gnu-configize || die "failure running gnu-configize" oe_runconf } +do_make() { + oe_runmake bin_PROGRAMS +} + do_stage() { - install -d ${STAGING_BINDIR} - install -m 755 .libs/fastjar ${STAGING_BINDIR}/fastjar - install -m 755 .libs/grepjar ${STAGING_BINDIR} + oe_runmake install-binPROGRAMS } diff --git a/recipes/ffmpeg/ffmpeg_svn.bb b/recipes/ffmpeg/ffmpeg_svn.bb index 2832d37716..c797710f70 100644 --- a/recipes/ffmpeg/ffmpeg_svn.bb +++ b/recipes/ffmpeg/ffmpeg_svn.bb @@ -2,7 +2,7 @@ require ffmpeg.inc DEPENDS += "schroedinger libgsm" -SRCREV = "20024" +SRCREV = "20231" PE = "1" PV = "0.5.0+${PR}+svnr${SRCREV}" @@ -16,7 +16,7 @@ SRC_URI = "svn://svn.ffmpeg.org/ffmpeg/;module=trunk" S = "${WORKDIR}/trunk" B = "${S}/build.${HOST_SYS}.${TARGET_SYS}" -FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -ftree-vectorize -fomit-frame-pointer -O4 -ffast-math" +FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -fno-tree-vectorize -fomit-frame-pointer -O4 -ffast-math" BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}" EXTRA_FFCONF_armv7a = "--cpu=cortex-a8" diff --git a/recipes/ffmpeg/omapfbplay_git.bb b/recipes/ffmpeg/omapfbplay_git.bb index 89c845030a..afc3b2aa36 100644 --- a/recipes/ffmpeg/omapfbplay_git.bb +++ b/recipes/ffmpeg/omapfbplay_git.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Simple ffmpeg-based player that uses the omapfb overlays" DEPENDS = "bzip2 lame ffmpeg virtual/kernel" LICENSE = "MIT" -PR = "r17" +PR = "r18" PV = "0.0+${PR}+gitr${SRCREV}" diff --git a/recipes/fftw/fftw_3.2.bb b/recipes/fftw/fftw_3.2.2.bb index 3dac339151..3dac339151 100644 --- a/recipes/fftw/fftw_3.2.bb +++ b/recipes/fftw/fftw_3.2.2.bb diff --git a/recipes/fftw/fftwf_3.2.bb b/recipes/fftw/fftwf_3.2.2.bb index 5bc3134593..5bc3134593 100644 --- a/recipes/fftw/fftwf_3.2.bb +++ b/recipes/fftw/fftwf_3.2.2.bb diff --git a/recipes/fftw/fftwl_3.2.bb b/recipes/fftw/fftwl_3.2.2.bb index 31d0ed0b53..31d0ed0b53 100644 --- a/recipes/fftw/fftwl_3.2.bb +++ b/recipes/fftw/fftwl_3.2.2.bb diff --git a/recipes/freesmartphone/fsodeviced_git.bb b/recipes/freesmartphone/fsodeviced_git.bb index 06aecf7415..1b01241e4c 100644 --- a/recipes/freesmartphone/fsodeviced_git.bb +++ b/recipes/freesmartphone/fsodeviced_git.bb @@ -1,7 +1,7 @@ require cornucopia.inc inherit fso-plugin -DEPENDS += "alsa-lib libcanberra" +DEPENDS += "alsa-lib libcanberra libfsoresource" RDEPENDS += "libcanberra-alsa" RRECOMMENDS += "fso-alsa-data" PV = "0.9.0+gitr${SRCREV}" diff --git a/recipes/freesmartphone/fsogpsd_git.bb b/recipes/freesmartphone/fsogpsd_git.bb new file mode 100644 index 0000000000..1e3f5718ed --- /dev/null +++ b/recipes/freesmartphone/fsogpsd_git.bb @@ -0,0 +1,6 @@ +require cornucopia.inc +inherit fso-plugin +PR = "${INC_PR}.0" +PV = "0.0.0+gitr${SRCREV}" + +DEPENDS += "libfsoresource" diff --git a/recipes/freesmartphone/fsogsmd_git.bb b/recipes/freesmartphone/fsogsmd_git.bb index f7e12e9d63..d5067145d2 100644 --- a/recipes/freesmartphone/fsogsmd_git.bb +++ b/recipes/freesmartphone/fsogsmd_git.bb @@ -1,4 +1,6 @@ require cornucopia.inc inherit fso-plugin PR = "${INC_PR}.0" +PV = "0.1.0+gitr${SRCREV}" +DEPENDS += "libfsoresource libgsm0710mux" diff --git a/recipes/freesmartphone/libfso-glib_git.bb b/recipes/freesmartphone/libfso-glib_git.bb index 3bf1b39b69..f7e49cb89d 100644 --- a/recipes/freesmartphone/libfso-glib_git.bb +++ b/recipes/freesmartphone/libfso-glib_git.bb @@ -3,13 +3,12 @@ AUTHOR = "Didier 'Ptitjes" LICENSE = "LGPL" SECTION = "devel" DEPENDS = "vala-native vala-dbus-binding-tool-native dbus-glib glib-2.0 fso-specs" -# remove the x on next version bump -PV = "0.2.1+gitr${SRCREV}" +PV = "0.2.2+gitr${SRCREV}" PR = "r0" inherit autotools_stage pkgconfig vala -SRC_URI = "git://git.freesmartphone.org/libfso-glib.git;protocol=git;branch=master" +SRC_URI = "${FREESMARTPHONE_GIT}/libfso-glib.git;protocol=git;branch=master" S = "${WORKDIR}/git" EXTRA_OECONF = "\ diff --git a/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb b/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb index 72f835e6a5..b2a471dd00 100644 --- a/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb +++ b/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb @@ -1,7 +1,7 @@ DESCRIPTION = "Vala DBus Binding Tool" SECTION = "console" LICENSE = "GPLv2" -DEPENDS = "vala-native intltool-native libxml2-native" +DEPENDS = "vala-native libgee-native intltool-native libxml2-native" PV = "0.1.0+gitr${SRCREV}" SRC_URI = "${FREESMARTPHONE_GIT}/vala-dbus-binding-tool.git;protocol=git;branch=master" diff --git a/recipes/geoclue/geoclue_git.bb b/recipes/geoclue/geoclue_git.bb index bb5ce10163..b7950a9c12 100644 --- a/recipes/geoclue/geoclue_git.bb +++ b/recipes/geoclue/geoclue_git.bb @@ -1,10 +1,11 @@ DESCRIPTION = "GeoClue is a project that provide all kinds of geography information to an application" HOMEPAGE = "http://www.freedesktop.org/wiki/Software/GeoClue" -DEPENDS = "libgpsmgr libgpsbt gtk+ gypsy libxml2 gconf-dbus libsoup dbus-glib" +DEPENDS = "libgpsmgr libgpsbt gtk+ gypsy libxml2 gconf libsoup dbus-glib" SRCREV = "3a31d260074397a968afaf1065856ab763befb01" PV = "0.11.1" +PR = "r1" PR_append = "+gitr${SRCREV}" PE = "1" diff --git a/recipes/gkdial/gkdial_1.8.1.bb b/recipes/gkdial/gkdial_1.8.1.bb index 3208a06f00..53caca388e 100644 --- a/recipes/gkdial/gkdial_1.8.1.bb +++ b/recipes/gkdial/gkdial_1.8.1.bb @@ -1,12 +1,12 @@ inherit autotools pkgconfig gconf DESCRIPTION = "GTK PPP dialing tool" -DEPENDS = "gconf-dbus gtk+ libglade gettext ppp gpe-su" -RDEPENDS = "ppp gconf-dbus gpe-su" +DEPENDS = "gconf gtk+ libglade gettext ppp gpe-su" +RDEPENDS = "ppp gconf gpe-su" SECTION = "gpe" PRIORITY = "optional" -PR = "r3gpe1" +PR = "r4" SRC_URI = "http://familiar.handhelds.org/source/v0.8.2/${PN}-${PV}.tar.gz \ file://gkdial-pgpe.patch;patch=1 \ diff --git a/recipes/gnash/gnash-fb_0.8.5.bb b/recipes/gnash/gnash-fb_0.8.5.bb index 455d2d3c42..79e90a8d4e 100644 --- a/recipes/gnash/gnash-fb_0.8.5.bb +++ b/recipes/gnash/gnash-fb_0.8.5.bb @@ -1,6 +1,6 @@ require gnash.inc -DEPENDS += "gst-plugins-base cairo libmad" +DEPENDS += "gst-plugins-base agg libmad" acpaths = " -Imacros" diff --git a/recipes/gnome/gdm_2.28.0.bb b/recipes/gnome/gdm_2.28.0.bb index 3f5c69ec24..683773a3ab 100644 --- a/recipes/gnome/gdm_2.28.0.bb +++ b/recipes/gnome/gdm_2.28.0.bb @@ -1,7 +1,9 @@ DESCRIPTION = "Graphical login manager" LICENSE = "GPL" -DEPENDS = "libxklavier grep consolekit libpam gnome-doc-utils gtk+ libglade libgnomecanvas librsvg libxml2 libart-lgpl xrdb" +DEPENDS = "libcanberra libxklavier grep consolekit libpam gnome-doc-utils gtk+ libglade libgnomecanvas librsvg libxml2 libart-lgpl xrdb" + +PR = "r1" inherit gnome update-rc.d diff --git a/recipes/gnome/gedit_2.28.0.bb b/recipes/gnome/gedit_2.28.0.bb index 10e5b54f97..0c4e7b480d 100644 --- a/recipes/gnome/gedit_2.28.0.bb +++ b/recipes/gnome/gedit_2.28.0.bb @@ -5,6 +5,8 @@ LICENSE = "GPL" DEPENDS = "iso-codes gnome-common glib-2.0 gtk+ gconf gtksourceview2" RDEPENDS += " gtksourceview2" +PR = "r1" + inherit gnome pkgconfig EXTRA_OECONF = "--disable-scrollkeeper" @@ -17,5 +19,5 @@ do_stage () { autotools_stage_all } -FILES_${PN} += "${libdir} ${datadir}/gedit-2" +FILES_${PN} += "${libdir}/gedit-2/plugin* ${datadir}/gedit-2" FILES_${PN}-dbg += "${libdir}/gedit-2/plugin-loaders/.debug ${libdir}/gedit-2/plugins/.debug" diff --git a/recipes/gnome/gnome-bluetooth_git.bb b/recipes/gnome/gnome-bluetooth_git.bb index b6690f4bb6..8d33cf51cb 100644 --- a/recipes/gnome/gnome-bluetooth_git.bb +++ b/recipes/gnome/gnome-bluetooth_git.bb @@ -5,14 +5,14 @@ DEFAULT_PREFERENCE = "-1" inherit autotools gnome pkgconfig -SRC_URI = "git://git.gnome.org/gnome-bluetooth;protocol=git \ +SRC_URI = "git://git.gnome.org/gnome-bluetooth;branch=gnome-2-28;protocol=git \ file://gtk-doc.make \ " S = "${WORKDIR}/git" -SRCREV = "59efa1c06153cd5bdaff64f7efca791c11c77f2f" -PV = "2.27.8" +SRCREV = "0622ea93f4e42d1599f2467e6bef5dca49cd99fd" +PV = "2.28.1" PR = "r0" PR_append = "+gitr${SRCREV}" diff --git a/recipes/gnome/gnome-python-extras_2.25.3.bb b/recipes/gnome/gnome-python-extras_2.25.3.bb index 9d8e786241..cf3d84e9af 100644 --- a/recipes/gnome/gnome-python-extras_2.25.3.bb +++ b/recipes/gnome/gnome-python-extras_2.25.3.bb @@ -5,12 +5,17 @@ inherit gnome distutils-base SRC_URI += "file://acinclude.m4" +EXTRA_OECONF = "--with-python-includes=${STAGING_INCDIR}/../" + do_configure_prepend() { install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/ } do_configure_prepend() { - sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g ${S}/configure.ac + sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g \ + -e s:'`$PKG_CONFIG --variable=defsdir gnome-python-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g \ + -e s:'`$PKG_CONFIG --variable=argtypesdir gnome-python-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/argtypes/\":g \ + ${S}/configure.ac } AUTOTOOLS_STAGE_PKGCONFIG = "1" diff --git a/recipes/gnome/gnome-screensaver_2.28.0.bb b/recipes/gnome/gnome-screensaver_2.28.0.bb index c5b6635179..06a4ffe48e 100644 --- a/recipes/gnome/gnome-screensaver_2.28.0.bb +++ b/recipes/gnome/gnome-screensaver_2.28.0.bb @@ -2,8 +2,11 @@ DESCRIPTION = "GNOME utilities" SECTION = "x11/gnome" LICENSE = "GPL" DEPENDS = "gnome-common glib-2.0 gtk+ gconf" + inherit gnome pkgconfig +PR = "r1" + EXTRA_OECONF = " \ --with-shadow=${STAGING_INCDIR}/.. \ " @@ -17,6 +20,8 @@ do_stage () { autotools_stage_all } +FILES_${PN} += "${datadir}/*background* ${datadir}/desktop-directories" + FILES_${PN}-dbg += "${libexecdir}/gnome-screensaver/.debug " diff --git a/recipes/gnome/libgdata_0.4.0.bb b/recipes/gnome/libgdata_0.4.0.bb new file mode 100644 index 0000000000..7c510d0b5f --- /dev/null +++ b/recipes/gnome/libgdata_0.4.0.bb @@ -0,0 +1,18 @@ +DESCRIPTION = "libgdata is a GLib-based library for accessing online service APIs" +LICENSE = "LGPL" +DEPENDS = "libxml2 glib-2.0 libsoup-2.4" + +inherit gnome lib_package autotools_stage + +SRC_URI += " \ + file://gtk-doc.make \ +" + +do_configure_prepend() { + cp ${WORKDIR}/gtk-doc.make ${S}/ + sed -i -e s:docs::g ${S}/Makefile.am + echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make +} + + + diff --git a/recipes/gpephone/firewall_svn.bb b/recipes/gpephone/firewall_svn.bb index b3d7aee848..6c3ed64b26 100644 --- a/recipes/gpephone/firewall_svn.bb +++ b/recipes/gpephone/firewall_svn.bb @@ -2,12 +2,12 @@ LICENSE = "LiPS" DESCRIPTION = "Cellphone firewall tool" SECTION = "gpe" PRIORITY = "optional" -PR = "r0" +PR = "r1" PV = "0.0+svnr-${SRCREV}" DEFAULT_PREFERENCE = "-1" -DEPENDS = "gtk+ libmsgenabler libabenabler libiac libgpewidget libgpephone gconf-dbus" +DEPENDS = "gtk+ libmsgenabler libabenabler libiac libgpewidget libgpephone gconf" inherit gpephone autotools pkgconfig diff --git a/recipes/gpephone/libsettings_0.3.bb b/recipes/gpephone/libsettings_0.3.bb index 22f8c4f3e0..3c9794edc2 100644 --- a/recipes/gpephone/libsettings_0.3.bb +++ b/recipes/gpephone/libsettings_0.3.bb @@ -2,7 +2,8 @@ DESCRIPTION = "G(PE)^2 settings API library" SECTION = "gpe/libs" PRIORITY = "required" LICENSE = "LiPS" -DEPENDS = "glib-2.0 gconf-dbus" +DEPENDS = "glib-2.0 gconf" +PR = "r1" inherit gpephone pkgconfig autotools diff --git a/recipes/gpephone/libsettings_svn.bb b/recipes/gpephone/libsettings_svn.bb index 74e1190c5a..770fe8cce6 100644 --- a/recipes/gpephone/libsettings_svn.bb +++ b/recipes/gpephone/libsettings_svn.bb @@ -2,8 +2,9 @@ DESCRIPTION = "G(PE)^2 settings API library" SECTION = "gpe/libs" PRIORITY = "required" LICENSE = "LiPS" -DEPENDS = "glib-2.0 gconf-dbus" +DEPENDS = "glib-2.0 gconf" PV = "0.0+svnr-${SRCREV}" +PR = "r1" DEFAULT_PREFERENCE = "-1" diff --git a/recipes/gtksourceview/files/acinclude.m4 b/recipes/gtksourceview/files/acinclude.m4 new file mode 100644 index 0000000000..53518fb2eb --- /dev/null +++ b/recipes/gtksourceview/files/acinclude.m4 @@ -0,0 +1,90 @@ +## this one is commonly used with AM_PATH_PYTHONDIR ... +dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]]) +dnl Check if a module containing a given symbol is visible to python. +AC_DEFUN(AM_CHECK_PYMOD, +[AC_REQUIRE([AM_PATH_PYTHON]) +py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` +AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1) +AC_CACHE_VAL(py_cv_mod_$py_mod_var, [ +ifelse([$2],[], [prog=" +import sys +try: + import $1 +except ImportError: + sys.exit(1) +except: + sys.exit(0) +sys.exit(0)"], [prog=" +import $1 +$1.$2"]) +if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC + then + eval "py_cv_mod_$py_mod_var=yes" + else + eval "py_cv_mod_$py_mod_var=no" + fi +]) +py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"` +if test "x$py_val" != xno; then + AC_MSG_RESULT(yes) + ifelse([$3], [],, [$3 +])dnl +else + AC_MSG_RESULT(no) + ifelse([$4], [],, [$4 +])dnl +fi +]) + +dnl a macro to check for ability to create python extensions +dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE]) +dnl function also defines PYTHON_INCLUDES +AC_DEFUN([AM_CHECK_PYTHON_HEADERS], +[AC_REQUIRE([AM_PATH_PYTHON]) +AC_MSG_CHECKING(for headers required to compile python extensions) +dnl deduce PYTHON_INCLUDES +AC_ARG_WITH(python-includes, + [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval) +if test x$py_exec_prefix != x; then +PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}" +else +py_prefix=`$PYTHON -c "import sys; print sys.prefix"` +py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` +PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" +if test "$py_prefix" != "$py_exec_prefix"; then + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" +fi +fi +AC_SUBST(PYTHON_INCLUDES) +dnl check if the headers exist: +save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES" +AC_TRY_CPP([#include <Python.h>],dnl +[AC_MSG_RESULT(found) +$1],dnl +[AC_MSG_RESULT(not found) +$2]) +CPPFLAGS="$save_CPPFLAGS" +]) + +dnl +dnl JH_ADD_CFLAG(FLAG) +dnl checks whether the C compiler supports the given flag, and if so, adds +dnl it to $CFLAGS. If the flag is already present in the list, then the +dnl check is not performed. +AC_DEFUN([JH_ADD_CFLAG], +[ +case " $CFLAGS " in +*@<:@\ \ @:>@$1@<:@\ \ @:>@*) + ;; +*) + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + AC_MSG_CHECKING([whether [$]CC understands $1]) + AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no]) + AC_MSG_RESULT($jh_has_option) + if test $jh_has_option = no; then + CFLAGS="$save_CFLAGS" + fi + ;; +esac]) diff --git a/recipes/gtksourceview/files/gtk-doc.m4 b/recipes/gtksourceview/files/gtk-doc.m4 new file mode 100644 index 0000000000..3ec41666b2 --- /dev/null +++ b/recipes/gtksourceview/files/gtk-doc.m4 @@ -0,0 +1,53 @@ +dnl -*- mode: autoconf -*- + +# serial 1 + +dnl Usage: +dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) +AC_DEFUN([GTK_DOC_CHECK], +[ + AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first + AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first + dnl for overriding the documentation installation directory + AC_ARG_WITH(html-dir, + AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, + [with_html_dir='${datadir}/gtk-doc/html']) + HTML_DIR="$with_html_dir" + AC_SUBST(HTML_DIR) + + dnl enable/disable documentation building + AC_ARG_ENABLE(gtk-doc, + AC_HELP_STRING([--enable-gtk-doc], + [use gtk-doc to build documentation [default=no]]),, + enable_gtk_doc=no) + + have_gtk_doc=no + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then + have_gtk_doc=yes + fi + + dnl do we want to do a version check? +ifelse([$1],[],, + [gtk_doc_min_version=$1 + if test "$have_gtk_doc" = yes; then + AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version]) + if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + have_gtk_doc=no + fi + fi +]) + if test x$enable_gtk_doc = xyes; then + if test "$have_gtk_doc" != yes; then + enable_gtk_doc=no + fi + fi + + AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes) + AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL") +]) diff --git a/recipes/gtksourceview/files/gtk-doc.make b/recipes/gtksourceview/files/gtk-doc.make new file mode 100644 index 0000000000..354ffb7c66 --- /dev/null +++ b/recipes/gtksourceview/files/gtk-doc.make @@ -0,0 +1,173 @@ +# -*- mode: makefile -*- + +#################################### +# Everything below here is generic # +#################################### + +if GTK_DOC_USE_LIBTOOL +GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +else +GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +endif + +# We set GPATH here; this gives us semantics for GNU make +# which are more like other make's VPATH, when it comes to +# whether a source that is a target of one rule is then +# searched for in VPATH/GPATH. +# +GPATH = $(srcdir) + +TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) + +EXTRA_DIST = \ + $(content_files) \ + $(HTML_IMAGES) \ + $(DOC_MAIN_SGML_FILE) \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-overrides.txt + +DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \ + $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp + +SCANOBJ_FILES = \ + $(DOC_MODULE).args \ + $(DOC_MODULE).hierarchy \ + $(DOC_MODULE).interfaces \ + $(DOC_MODULE).prerequisites \ + $(DOC_MODULE).signals + +REPORT_FILES = \ + $(DOC_MODULE)-undocumented.txt \ + $(DOC_MODULE)-undeclared.txt \ + $(DOC_MODULE)-unused.txt + +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) + +if ENABLE_GTK_DOC +all-local: html-build.stamp +else +all-local: +endif + +docs: html-build.stamp + +#### scan #### + +scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB) + @echo 'gtk-doc: Scanning header files' + @-chmod -R u+w $(srcdir) + cd $(srcdir) && \ + gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES) + if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \ + else \ + cd $(srcdir) ; \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ + fi + touch scan-build.stamp + +$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp + @true + +#### templates #### + +tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt + @echo 'gtk-doc: Rebuilding template files' + @-chmod -R u+w $(srcdir) + cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS) + touch tmpl-build.stamp + +tmpl.stamp: tmpl-build.stamp + @true + +tmpl/*.sgml: + @true + + +#### xml #### + +sgml-build.stamp: tmpl.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files) + @echo 'gtk-doc: Building XML' + @-chmod -R u+w $(srcdir) + cd $(srcdir) && \ + gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS) + touch sgml-build.stamp + +sgml.stamp: sgml-build.stamp + @true + +#### html #### + +html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) + @echo 'gtk-doc: Building HTML' + @-chmod -R u+w $(srcdir) + rm -rf $(srcdir)/html + mkdir $(srcdir)/html + cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) + test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html ) + @echo 'gtk-doc: Fixing cross-references' + cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + touch html-build.stamp + +############## + +clean-local: + rm -f *~ *.bak + rm -rf .libs + +distclean-local: + cd $(srcdir) && \ + rm -rf xml $(REPORT_FILES) \ + $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt + +maintainer-clean-local: clean + cd $(srcdir) && rm -rf xml html + +install-data-local: + -installfiles=`echo $(srcdir)/html/*`; \ + if test "$$installfiles" = '$(srcdir)/html/*'; \ + then echo '-- Nothing to install' ; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \ + for i in $$installfiles; do \ + echo '-- Installing '$$i ; \ + $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \ + done; \ + echo '-- Installing $(srcdir)/html/index.sgml' ; \ + $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \ + which gtkdoc-rebase >/dev/null && \ + gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \ + fi + + +uninstall-local: + rm -f $(DESTDIR)$(TARGET_DIR)/* + +# +# Require gtk-doc when making dist +# +if ENABLE_GTK_DOC +dist-check-gtkdoc: +else +dist-check-gtkdoc: + @echo "*** gtk-doc must be installed and enabled in order to make dist" + @false +endif + +dist-hook: dist-check-gtkdoc dist-hook-local + mkdir $(distdir)/tmpl + mkdir $(distdir)/xml + mkdir $(distdir)/html + -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl + -cp $(srcdir)/xml/*.xml $(distdir)/xml + cp $(srcdir)/html/* $(distdir)/html + -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/ + -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/ + cd $(distdir) && rm -f $(DISTCLEANFILES) + -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html + +.PHONY : dist-hook-local docs diff --git a/recipes/gtksourceview/gtksourceview2_2.7.3.bb b/recipes/gtksourceview/gtksourceview2_2.7.3.bb index 474b317678..20a2a5b440 100644 --- a/recipes/gtksourceview/gtksourceview2_2.7.3.bb +++ b/recipes/gtksourceview/gtksourceview2_2.7.3.bb @@ -2,12 +2,14 @@ DESCRIPTION = "Portable C library for multiline text editing" HOMEPAGE = "http://projects.gnome.org/gtksourceview/" LICENSE = "LGPL" DEPENDS = "gtk+ libgnomeprint" -PR = "r0" + +PR = "r1" + PNAME = "gtksourceview" S = "${WORKDIR}/${PNAME}-${PV}" -inherit gnome pkgconfig +inherit gnome pkgconfig lib_package # overrule SRC_URI from gnome.conf SRC_URI = "${GNOME_MIRROR}/${PNAME}/${@gnome_verdir("${PV}")}/${PNAME}-${PV}.tar.bz2" diff --git a/recipes/gtksourceview/gtksourceview2_2.9.1.bb b/recipes/gtksourceview/gtksourceview2_2.9.1.bb new file mode 100644 index 0000000000..f6695ecacd --- /dev/null +++ b/recipes/gtksourceview/gtksourceview2_2.9.1.bb @@ -0,0 +1,30 @@ +DESCRIPTION = "Portable C library for multiline text editing" +HOMEPAGE = "http://projects.gnome.org/gtksourceview/" +LICENSE = "LGPL" +DEPENDS = "gtk+ libgnomeprint" + +PNAME = "gtksourceview" + +S = "${WORKDIR}/${PNAME}-${PV}" + +inherit gnome pkgconfig lib_package + +# overrule SRC_URI from gnome.conf +SRC_URI = "${GNOME_MIRROR}/${PNAME}/${@gnome_verdir("${PV}")}/${PNAME}-${PV}.tar.bz2" + +SRC_URI += " \ + file://gtk-doc.make \ +" + +do_configure_prepend() { + cp ${WORKDIR}/gtk-doc.make ${S}/ + sed -i -e s:docs::g ${S}/Makefile.am + echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make +} + +do_stage() { + autotools_stage_all +} + +FILES_${PN} += " ${datadir}/gtksourceview-2.0" + diff --git a/recipes/kexecboot/device_table-oldmmc.txt b/recipes/kexecboot/device_table-oldmmc.txt index 4decc8dfb4..2b61c01849 100644 --- a/recipes/kexecboot/device_table-oldmmc.txt +++ b/recipes/kexecboot/device_table-oldmmc.txt @@ -13,7 +13,7 @@ /dev/apm_bios c 660 0 46 10 134 - - - /dev/fb0 c 600 0 0 29 0 - - - /dev/hda b 660 0 6 3 0 - - - -/dev/hda b 660 0 6 3 1 1 1 20 +/dev/hda b 660 0 6 3 1 1 1 19 /dev/kmem c 640 0 15 1 2 - - - /dev/mem c 640 0 15 1 1 - - - /dev/null c 666 0 0 1 3 - - - @@ -32,5 +32,5 @@ # mmc numbers are assigned dynamicly so if you have other dynamic assigned block devices it may be wrong /dev/mmcblk0 b 660 0 6 254 0 - - - -/dev/mmcblk0p b 660 0 6 254 1 1 1 8 +/dev/mmcblk0p b 660 0 6 254 1 1 1 7 /dev/event0 c 660 0 0 13 64 - - - diff --git a/recipes/libgee/libgee-native_git.bb b/recipes/libgee/libgee-native_git.bb new file mode 100644 index 0000000000..e90f99e2f0 --- /dev/null +++ b/recipes/libgee/libgee-native_git.bb @@ -0,0 +1,2 @@ +require libgee_git.bb +inherit native diff --git a/recipes/libgee/libgee_git.bb b/recipes/libgee/libgee_git.bb index 74e0eca488..ead93741ce 100644 --- a/recipes/libgee/libgee_git.bb +++ b/recipes/libgee/libgee_git.bb @@ -4,7 +4,7 @@ HOMEPAGE = "http://live.gnome.org/Libgee" SECTION = "libs" DEPENDS = "glib-2.0" LICENSE = "LGPL" -PV = "0.3.0+gitr${SRCREV}" +PV = "0.5.0+gitr${SRCREV}" SRC_URI = "\ git://git.gnome.org/libgee;protocol=git;branch=master \ diff --git a/recipes/libgmime/gmime_2.4.10.bb b/recipes/libgmime/gmime_2.4.10.bb new file mode 100644 index 0000000000..d455f3339e --- /dev/null +++ b/recipes/libgmime/gmime_2.4.10.bb @@ -0,0 +1,20 @@ +LICENSE = "LGPL" +DESCRIPTION = "Runtime libraries for parsing and creating MIME mail" +SECTION = "libs" +PRIORITY = "optional" +DEPENDS = "glib-2.0 zlib" + +inherit gnome autotools_stage lib_package binconfig + +SRC_URI += " \ + file://iconv-detect.h" + +EXTRA_OECONF += "--disable-mono" + +export ac_cv_have_iconv_detect_h=yes +do_configure_append = "cp ${WORKDIR}/iconv-detect.h ${S}" + +# we do not need GNOME 1 gnome-config support +do_install_append () { + rm -f ${D}${libdir}/gmimeConf.sh +} diff --git a/recipes/linux/linux-2.6.24/hipox/defconfig b/recipes/linux/linux-2.6.24/hipox/defconfig index d2867f13d4..e5d033846e 100644 --- a/recipes/linux/linux-2.6.24/hipox/defconfig +++ b/recipes/linux/linux-2.6.24/hipox/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.24.4 -# Wed Oct 14 11:55:54 2009 +# Tue Oct 20 14:36:38 2009 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -36,7 +36,7 @@ CONFIG_LOCALVERSION="" CONFIG_SWAP=y CONFIG_SYSVIPC=y CONFIG_SYSVIPC_SYSCTL=y -# CONFIG_POSIX_MQUEUE is not set +CONFIG_POSIX_MQUEUE=y # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_TASKSTATS is not set # CONFIG_USER_NS is not set diff --git a/recipes/linux/linux-2.6.31/boc01/004-081205-usb.patch b/recipes/linux/linux-2.6.31/boc01/004-081205-usb.patch new file mode 100644 index 0000000000..dc7eba64d0 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/004-081205-usb.patch @@ -0,0 +1,16 @@ +--- linux-2.6.27.orig/arch/powerpc/platforms/83xx/usb.c 2008-12-05 14:50:43.000000000 +0100 ++++ linux-2.6.27.modif/arch/powerpc/platforms/83xx/usb.c 2008-12-05 14:51:17.000000000 +0100 +@@ -172,10 +172,10 @@ + !strcmp(prop, "utmi"))) { + u32 refsel; + +- if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) ++// if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr")) + refsel = CONTROL_REFSEL_24MHZ; +- else +- refsel = CONTROL_REFSEL_48MHZ; ++// else ++// refsel = CONTROL_REFSEL_48MHZ; + /* Set UTMI_PHY_EN and REFSEL */ + out_be32(usb_regs + FSL_USB2_CONTROL_OFFS, + CONTROL_UTMI_PHY_EN | refsel); diff --git a/recipes/linux/linux-2.6.31/boc01/005-091008-isl12024.patch b/recipes/linux/linux-2.6.31/boc01/005-091008-isl12024.patch new file mode 100644 index 0000000000..401ce4d9c8 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/005-091008-isl12024.patch @@ -0,0 +1,512 @@ +Index: linux-2.6.31/drivers/misc/eeprom/at24.c +=================================================================== +--- linux-2.6.31.orig/drivers/misc/eeprom/at24.c 2009-10-19 16:55:01.000000000 +0200 ++++ linux-2.6.31/drivers/misc/eeprom/at24.c 2009-10-19 16:55:05.000000000 +0200 +@@ -115,6 +115,8 @@ + { "spd", AT24_DEVICE_MAGIC(2048 / 8, + AT24_FLAG_READONLY | AT24_FLAG_IRUGO) }, + { "24c04", AT24_DEVICE_MAGIC(4096 / 8, 0) }, ++ /* Intersil RTC/Unique-ID isl12024 eeprom handled here */ ++ { "isl12024-eeprom", AT24_DEVICE_MAGIC(4096 / 8, AT24_FLAG_ADDR16) }, + /* 24rf08 quirk is handled at i2c-core */ + { "24c08", AT24_DEVICE_MAGIC(8192 / 8, 0) }, + { "24c16", AT24_DEVICE_MAGIC(16384 / 8, 0) }, +Index: linux-2.6.31/drivers/rtc/Kconfig +=================================================================== +--- linux-2.6.31.orig/drivers/rtc/Kconfig 2009-10-19 16:55:01.000000000 +0200 ++++ linux-2.6.31/drivers/rtc/Kconfig 2009-10-19 16:55:05.000000000 +0200 +@@ -128,6 +128,12 @@ + + if I2C + ++config RTC_DRV_ISL12024 ++ tristate "Intersil 12024 RTC/Unique-ID" ++ help ++ If you say yes .... ++ This driver can also be built as a module. ++ + config RTC_DRV_DS1307 + tristate "Dallas/Maxim DS1307/37/38/39/40, ST M41T00, EPSON RX-8025" + help +Index: linux-2.6.31/drivers/rtc/Makefile +=================================================================== +--- linux-2.6.31.orig/drivers/rtc/Makefile 2009-10-19 16:55:01.000000000 +0200 ++++ linux-2.6.31/drivers/rtc/Makefile 2009-10-19 16:55:05.000000000 +0200 +@@ -40,6 +40,7 @@ + obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o + obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o + obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o ++obj-$(CONFIG_RTC_DRV_ISL12024) += rtc-isl12024.o + obj-$(CONFIG_RTC_DRV_M41T80) += rtc-m41t80.o + obj-$(CONFIG_RTC_DRV_M41T94) += rtc-m41t94.o + obj-$(CONFIG_RTC_DRV_M48T35) += rtc-m48t35.o +Index: linux-2.6.31/drivers/rtc/rtc-isl12024.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.31/drivers/rtc/rtc-isl12024.c 2009-10-19 16:57:37.000000000 +0200 +@@ -0,0 +1,465 @@ ++/* ++ * Intersil ISL12024 class driver ++ * ++ * ++ * Copyright (C) 2007, CenoSYS (www.cenosys.com). ++ * ++ * Guillaume Ligneul <guillaume.ligneul@gmail.com> ++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr> ++ * Jeremy Laine <jeremy.laine@bolloretelecom.eu> ++ * ++ * This software program is licensed subject to the GNU General Public License ++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html ++ */ ++ ++#include <linux/module.h> ++#include <linux/i2c.h> ++#include <linux/bcd.h> ++#include <linux/rtc.h> ++#include <linux/delay.h> ++ ++#define DRV_VERSION "0.3" ++ ++#define ISL12024_CCR_BASE 0x30 /* Base address of CCR */ ++#define ISL12024_ALM0_BASE 0x00 /* Base address of ALARM0 */ ++#define ISL12024_INT_AL0E 0x20 /* Alarm 0 enable */ ++ ++/* Register map */ ++ ++/* device id section */ ++#define ISL12024_REG_ID 0x20 ++ ++/* rtc section */ ++#define ISL12024_REG_HR_MIL (1<<7) /* 24h/12h mode */ ++#define ISL12024_REG_HR_PM (1<<5) /* PM/AM bit in 12h mode */ ++#define ISL12024_REG_SC 0x30 ++#define ISL12024_REG_DT 0x33 /* Date */ ++#define ISL12024_REG_MO 0x34 /* Month */ ++#define ISL12024_REG_YR 0x35 /* Year */ ++#define ISL12024_REG_DW 0x36 ++#define ISL12024_REG_Y2K 0x37 ++#define ISL12024_RTC_SECTION_LEN 8 ++ ++/* control/status section */ ++#define ISL12024_REG_SR 0x3F ++#define ISL12024_REG_SR_BAT (1<<7) /* battery */ ++#define ISL12024_REG_SR_AL1 (1<<6) /* alarm 0 */ ++#define ISL12024_REG_SR_AL0 (1<<5) /* alarm 1 */ ++#define ISL12024_REG_SR_OSCF (1<<4) /* oscillator fail */ ++#define ISL12024_REG_SR_RWEL (1<<2) /* register write enable latch */ ++#define ISL12024_REG_SR_WEL (1<<1) /* write enable latch */ ++#define ISL12024_REG_SR_RTCF (1<<0) /* rtc fail */ ++#define ISL12024_REG_INT 0x11 ++ ++#define CCR_SEC 0 ++#define CCR_MIN 1 ++#define CCR_HOUR 2 ++#define CCR_MDAY 3 ++#define CCR_MONTH 4 ++#define CCR_YEAR 5 ++#define CCR_WDAY 6 ++#define CCR_Y2K 7 ++ ++static int isl12024_get_status(struct i2c_client *client, unsigned char *sr); ++static int isl12024_fix_osc(struct i2c_client *client); ++ ++static struct i2c_driver isl12024_driver; ++ ++static int ++isl12024_i2c_read_regs(struct i2c_client *client, u8 reg, u8 buf[], ++ unsigned len) ++{ ++ int ret; ++ u8 dt_addr[2]; ++ ++ struct i2c_msg msgs[2] = { ++ { ++ .addr = client->addr, ++ .flags = 0, ++ .len = 2, ++ .buf = dt_addr, ++ }, ++ { ++ .addr = client->addr, ++ .flags = I2C_M_RD, ++ .len = len , ++ .buf = buf, ++ }, ++ }; ++ ++ dt_addr[0] = 0; ++ dt_addr[1] = reg; ++ ++ ret = i2c_transfer(client->adapter, msgs, 2); ++ if ( ret < 0) { ++ dev_err(&client->dev, "read error\n"); ++ return -EIO; ++ } ++ return ret; ++} ++ ++static int isl12024_i2c_validate_client(struct i2c_client *client) ++{ ++ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, }; ++ u8 zero_mask[ISL12024_RTC_SECTION_LEN] = { ++ 0x80, 0x80, 0x40, 0xc0, 0xe0, 0x00, 0xf8, 0xc6 ++ }; ++ ++ int i; ++ int ret; ++ ++ ret = isl12024_i2c_read_regs(client, ISL12024_REG_SC, regs, ISL12024_RTC_SECTION_LEN); ++ ++ if (ret < 0) ++ return ret; ++ ++ for (i = 0; i < ISL12024_RTC_SECTION_LEN; ++i) { ++ if (regs[i] & zero_mask[i]) /* check if bits are cleared */ ++ return -ENODEV; ++ } ++ ++ return 0; ++} ++ ++static int isl12024_read_time(struct i2c_client *client, ++ struct rtc_time *tm) ++{ ++ unsigned char sr; ++ int err; ++ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, }; ++ ++ if (isl12024_get_status(client, &sr) < 0) { ++ dev_err(&client->dev, "reading SR failed\n"); ++ return -EIO; ++ } ++ ++ err = isl12024_i2c_read_regs(client, ISL12024_REG_SC, regs, ISL12024_RTC_SECTION_LEN); ++ ++ if (err < 0) { ++ dev_err(&client->dev, "reading RTC section failed\n"); ++ return err; ++ } ++ ++ tm->tm_sec = bcd2bin(regs[0]); ++ tm->tm_min = bcd2bin(regs[1]); ++ ++ { /* HR field has a more complex interpretation */ ++ const u8 _hr = regs[2]; ++ if (_hr & ISL12024_REG_HR_MIL) /* 24h format */ ++ tm->tm_hour = bcd2bin(_hr & 0x3f); ++ else { // 12h format ++ tm->tm_hour = bcd2bin(_hr & 0x1f); ++ if (_hr & ISL12024_REG_HR_PM) /* PM flag set */ ++ tm->tm_hour += 12; ++ } ++ } ++ ++ tm->tm_mday = bcd2bin(regs[3]); ++ tm->tm_mon = bcd2bin(regs[4]); ++ tm->tm_year = bcd2bin(regs[5]) + 100; ++ tm->tm_wday = bcd2bin(regs[6]); ++ ++ return rtc_valid_tm(tm); ++} ++ ++static int isl12024_get_status(struct i2c_client *client, unsigned char *sr) ++{ ++ static unsigned char sr_addr[2] = { 0, ISL12024_REG_SR }; ++ ++ struct i2c_msg msgs[] = { ++ { client->addr, 0, 2, sr_addr }, /* setup read ptr */ ++ { client->addr, I2C_M_RD, 1, sr }, /* read status */ ++ }; ++ ++ /* read status register */ ++ if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) { ++ dev_err(&client->dev, "%s: read error\n", __func__); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ ++static int isl12024_set_datetime(struct i2c_client *client, struct rtc_time *tm, ++ int datetoo, u8 reg_base, unsigned char alm_enable) ++{ ++ int i, xfer, nbytes; ++ unsigned char buf[8]; ++ unsigned char rdata[10] = { 0, reg_base }; ++ ++ static const unsigned char wel[3] = { 0, ISL12024_REG_SR, ++ ISL12024_REG_SR_WEL }; ++ ++ static const unsigned char rwel[3] = { 0, ISL12024_REG_SR, ++ ISL12024_REG_SR_WEL | ISL12024_REG_SR_RWEL }; ++ ++ static const unsigned char diswe[3] = { 0, ISL12024_REG_SR, 0 }; ++ ++ dev_dbg(&client->dev, ++ "%s: secs=%d, mins=%d, hours=%d\n", ++ __func__, ++ tm->tm_sec, tm->tm_min, tm->tm_hour); ++ ++ buf[CCR_SEC] = bin2bcd(tm->tm_sec); ++ buf[CCR_MIN] = bin2bcd(tm->tm_min); ++ ++ /* set hour and 24hr bit */ ++ buf[CCR_HOUR] = bin2bcd(tm->tm_hour) | ISL12024_REG_HR_MIL; ++ ++ /* should we also set the date? */ ++ if (datetoo) { ++ dev_dbg(&client->dev, ++ "%s: mday=%d, mon=%d, year=%d, wday=%d\n", ++ __func__, ++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); ++ ++ buf[CCR_MDAY] = bin2bcd(tm->tm_mday); ++ ++ /* month, 1 - 12 */ ++ buf[CCR_MONTH] = bin2bcd(tm->tm_mon); ++ ++ /* year, since the rtc epoch*/ ++ buf[CCR_YEAR] = bin2bcd(tm->tm_year % 100); ++ buf[CCR_WDAY] = tm->tm_wday & 0x07; ++ buf[CCR_Y2K] = bin2bcd(tm->tm_year / 100); ++ } ++ ++ /* If writing alarm registers, set compare bits on registers 0-4 */ ++ if (reg_base < ISL12024_CCR_BASE) ++ for (i = 0; i <= 4; i++) ++ buf[i] |= 0x80; ++ ++ /* this sequence is required to unlock the chip */ ++ if ((xfer = i2c_master_send(client, wel, 3)) != 3) { ++ dev_err(&client->dev, "%s: wel - %d\n", __func__, xfer); ++ return -EIO; ++ } ++ ++ if ((xfer = i2c_master_send(client, rwel, 3)) != 3) { ++ dev_err(&client->dev, "%s: rwel - %d\n", __func__, xfer); ++ return -EIO; ++ } ++ ++ /* write register's data */ ++ if (datetoo) ++ nbytes = 8; ++ else ++ nbytes = 3; ++ for (i = 0; i < nbytes; i++) ++ rdata[2+i] = buf[i]; ++ ++ xfer = i2c_master_send(client, rdata, nbytes+2); ++ if (xfer != nbytes+2) { ++ dev_err(&client->dev, ++ "%s: result=%d addr=%02x, data=%02x\n", ++ __func__, ++ xfer, rdata[1], rdata[2]); ++ return -EIO; ++ } ++ ++ /* If we wrote to the nonvolatile region, wait 10msec for write cycle*/ ++ if (reg_base < ISL12024_CCR_BASE) { ++ unsigned char al0e[3] = { 0, ISL12024_REG_INT, 0 }; ++ ++ msleep(10); ++ ++ /* ...and set or clear the AL0E bit in the INT register */ ++ ++ /* Need to set RWEL again as the write has cleared it */ ++ xfer = i2c_master_send(client, rwel, 3); ++ if (xfer != 3) { ++ dev_err(&client->dev, ++ "%s: aloe rwel - %d\n", ++ __func__, ++ xfer); ++ return -EIO; ++ } ++ ++ if (alm_enable) ++ al0e[2] = ISL12024_INT_AL0E; ++ ++ xfer = i2c_master_send(client, al0e, 3); ++ if (xfer != 3) { ++ dev_err(&client->dev, ++ "%s: al0e - %d\n", ++ __func__, ++ xfer); ++ return -EIO; ++ } ++ ++ /* and wait 10msec again for this write to complete */ ++ msleep(10); ++ } ++ ++ /* disable further writes */ ++ if ((xfer = i2c_master_send(client, diswe, 3)) != 3) { ++ dev_err(&client->dev, "%s: diswe - %d\n", __func__, xfer); ++ return -EIO; ++ } ++ ++ return 0; ++} ++ ++static int isl12024_fix_osc(struct i2c_client *client) ++{ ++ int err; ++ struct rtc_time tm; ++ ++ tm.tm_hour = tm.tm_min = tm.tm_sec = 0; ++ ++ err = isl12024_set_datetime(client, &tm, 0, ISL12024_CCR_BASE, 0); ++ if ( err < 0 ) ++ dev_err(&client->dev, "unable to restart the oscillator (%d)\n", err); ++ ++ return err; ++} ++ ++static int isl12024_rtc_read_time(struct device *dev, struct rtc_time *tm) ++{ ++ return isl12024_read_time(to_i2c_client(dev), tm); ++ ++} ++ ++static int isl12024_rtc_set_time(struct device *dev, struct rtc_time *tm) ++{ ++ return isl12024_set_datetime(to_i2c_client(dev), ++ tm, 1, ISL12024_CCR_BASE, 0); ++} ++ ++static int ++isl12024_rtc_proc(struct device *dev, struct seq_file *seq) ++{ ++ ++ /* Nothing to do */ ++ ++ return 0; ++} ++ ++static const struct rtc_class_ops isl12024_rtc_ops = { ++ .proc = isl12024_rtc_proc, ++ .read_time = isl12024_rtc_read_time, ++ .set_time = isl12024_rtc_set_time, ++}; ++ ++static ssize_t isl12024_show_id(struct device *dev, struct device_attribute *attr, ++ char *buf) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ int err; ++ int len = 0; ++ int i; ++ u8 id_buffer[ISL12024_RTC_SECTION_LEN]; ++ ++ /* Read unique id from eeprom */ ++ err = isl12024_i2c_read_regs(client, ISL12024_REG_ID, id_buffer, sizeof(id_buffer)); ++ if (err < 0) { ++ dev_err(&client->dev, "reading RTC section failed\n"); ++ return err; ++ } ++ ++ /* Print hexadecimal */ ++ for (i = 0; i < sizeof(id_buffer); i++) ++ len += sprintf(buf + len, "%02X", id_buffer[i]); ++ len += sprintf(buf + len, "\n"); ++ return len; ++} ++ ++static DEVICE_ATTR(id, S_IRUGO, isl12024_show_id, NULL); ++ ++static int ++isl12024_probe(struct i2c_client *client, const struct i2c_device_id *id) ++{ ++ int rc = 0; ++ unsigned char sr; ++ struct rtc_device *rtc = NULL; ++ ++ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) ++ return -ENODEV; ++ ++ if (isl12024_i2c_validate_client(client) < 0) ++ return -ENODEV; ++ ++ dev_info(&client->dev, ++ "chip found, driver version " DRV_VERSION "\n"); ++ ++ rtc = rtc_device_register(isl12024_driver.driver.name, ++ &client->dev, &isl12024_rtc_ops, ++ THIS_MODULE); ++ ++ if (IS_ERR(rtc)) ++ return PTR_ERR(rtc); ++ ++ i2c_set_clientdata(client, rtc); ++ ++ rc = isl12024_get_status(client, &sr); ++ if (rc < 0) { ++ dev_err(&client->dev, "reading status failed\n"); ++ goto exit_unregister; ++ } ++ ++ /* Check for power failures and enable the osc */ ++ if (sr & ISL12024_REG_SR_RTCF) { ++ dev_warn(&client->dev, "rtc power failure detected, " ++ "please set clock.\n"); ++ udelay(50); ++ isl12024_fix_osc(client); ++ } ++ ++ /* Register sysfs hooks */ ++ rc = device_create_file(&client->dev, &dev_attr_id); ++ if (rc < 0) ++ goto exit_unregister; ++ ++ return 0; ++ ++exit_unregister: ++ rtc_device_unregister(rtc); ++ ++ return rc; ++} ++ ++static int ++isl12024_remove(struct i2c_client *client) ++{ ++ struct rtc_device *rtc = i2c_get_clientdata(client); ++ ++ rtc_device_unregister(rtc); ++ device_remove_file(&client->dev, &dev_attr_id); ++ ++ return 0; ++} ++ ++static const struct i2c_device_id isl12024_id[] = { ++ { "isl12024", 0 }, ++ { } ++}; ++MODULE_DEVICE_TABLE(i2c, isl12024_id); ++ ++static struct i2c_driver isl12024_driver = { ++ .driver = { ++ .name = "rtc-isl12024", ++ }, ++ .probe = isl12024_probe, ++ .remove = isl12024_remove, ++ .id_table = isl12024_id, ++}; ++ ++/* module init/exit */ ++ ++static int __init isl12024_init(void) ++{ ++ return i2c_add_driver(&isl12024_driver); ++} ++ ++static void __exit isl12024_exit(void) ++{ ++ i2c_del_driver(&isl12024_driver); ++} ++ ++MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>"); ++MODULE_DESCRIPTION("Intersil ISL12024 driver"); ++MODULE_LICENSE("GPL"); ++MODULE_VERSION(DRV_VERSION); ++ ++module_init(isl12024_init); ++module_exit(isl12024_exit); diff --git a/recipes/linux/linux-2.6.31/boc01/007-091005-lm73.patch b/recipes/linux/linux-2.6.31/boc01/007-091005-lm73.patch new file mode 100644 index 0000000000..bc43a0a70a --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/007-091005-lm73.patch @@ -0,0 +1,242 @@ +Index: linux-2.6.29/drivers/hwmon/Kconfig +=================================================================== +--- linux-2.6.29.orig/drivers/hwmon/Kconfig 2009-10-05 18:27:57.000000000 +0200 ++++ linux-2.6.29/drivers/hwmon/Kconfig 2009-10-05 18:28:35.000000000 +0200 +@@ -448,6 +448,15 @@ + This driver can also be built as a module. If so, the module + will be called lm70. + ++config SENSORS_LM73 ++ tristate "National Semiconductor LM73" ++ depends on I2C ++ help ++ If you say yes here you get support for National Semiconductor LM73 ++ sensor chips. ++ This driver can also be built as a module. If so, the module ++ will be called lm73. ++ + config SENSORS_LM75 + tristate "National Semiconductor LM75 and compatibles" + depends on I2C +Index: linux-2.6.29/drivers/hwmon/lm73.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.29/drivers/hwmon/lm73.c 2009-10-05 18:28:49.000000000 +0200 +@@ -0,0 +1,205 @@ ++/* ++ * LM73 Sensor driver ++ * Based on LM75 ++ * ++ * Copyright (C) 2007, CenoSYS (www.cenosys.com). ++ * Copyright (C) 2009, Bollore telecom (www.bolloretelecom.eu). ++ * ++ * Guillaume Ligneul <guillaume.ligneul@cenosys.com> ++ * Adrien Demarez <adrien.demarez@bolloretelecom.eu> ++ * Jeremy Laine <jeremy.laine@bolloretelecom.eu> ++ * ++ * This software program is licensed subject to the GNU General Public License ++ * (GPL).Version 2,June 1991, available at ++ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html ++ */ ++ ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/slab.h> ++#include <linux/i2c.h> ++#include <linux/hwmon.h> ++#include <linux/hwmon-sysfs.h> ++#include <linux/err.h> ++ ++ ++/* Addresses scanned */ ++static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4c, ++ 0x4d, 0x4e, I2C_CLIENT_END }; ++ ++/* Insmod parameters */ ++I2C_CLIENT_INSMOD_1(lm73); ++ ++/* LM73 registers */ ++#define LM73_REG_INPUT 0x00 ++#define LM73_REG_CONF 0x01 ++#define LM73_REG_MAX 0x02 ++#define LM73_REG_MIN 0x03 ++#define LM73_REG_CTRL 0x04 ++#define LM73_REG_ID 0x07 ++ ++#define LM73_ID 0x9001 /* or 0x190 after a swab16() */ ++#define DRVNAME "lm73" ++#define LM73_TEMP_MIN (-40) ++#define LM73_TEMP_MAX 150 ++ ++/*-----------------------------------------------------------------------*/ ++ ++ ++static ssize_t set_temp(struct device *dev, struct device_attribute *da, ++ const char *buf, size_t count) ++{ ++ struct sensor_device_attribute *attr = to_sensor_dev_attr(da); ++ struct i2c_client *client = to_i2c_client(dev); ++ long temp; ++ short value; ++ ++ int status = strict_strtol(buf, 10, &temp); ++ if(status < 0) ++ return status; ++ ++ /* Write value */ ++ value = (short) SENSORS_LIMIT(temp/250, (LM73_TEMP_MIN*4), ++ (LM73_TEMP_MAX*4)) << 5; ++ i2c_smbus_write_word_data(client, attr->index, swab16(value)); ++ return count; ++} ++ ++static ssize_t show_temp(struct device *dev, struct device_attribute *da, ++ char *buf) ++{ ++ struct sensor_device_attribute *attr = to_sensor_dev_attr(da); ++ struct i2c_client *client = to_i2c_client(dev); ++ /* use integer division instead of equivalent right shift to ++ guarantee arithmetic shift and preserve the sign */ ++ int temp = ((s16) (swab16(i2c_smbus_read_word_data(client, ++ attr->index)))*250) / 32; ++ return sprintf(buf, "%d\n", temp); ++} ++ ++ ++/*-----------------------------------------------------------------------*/ ++ ++/* sysfs attributes for hwmon */ ++ ++static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO, ++ show_temp, set_temp, LM73_REG_MAX); ++static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO, ++ show_temp, set_temp, LM73_REG_MIN); ++static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, ++ show_temp, NULL, LM73_REG_INPUT); ++ ++ ++static struct attribute *lm73_attributes[] = { ++ &sensor_dev_attr_temp1_input.dev_attr.attr, ++ &sensor_dev_attr_temp1_max.dev_attr.attr, ++ &sensor_dev_attr_temp1_min.dev_attr.attr, ++ ++ NULL ++}; ++ ++static const struct attribute_group lm73_group = { ++ .attrs = lm73_attributes, ++}; ++ ++/*-----------------------------------------------------------------------*/ ++ ++/* device probe and removal */ ++ ++static int ++lm73_probe(struct i2c_client *client, const struct i2c_device_id *id) ++{ ++ struct device *hwmon_dev; ++ int status; ++ ++ /* Register sysfs hooks */ ++ status = sysfs_create_group(&client->dev.kobj, &lm73_group); ++ if (status) ++ return status; ++ ++ hwmon_dev = hwmon_device_register(&client->dev); ++ if (IS_ERR(hwmon_dev)) { ++ status = PTR_ERR(hwmon_dev); ++ goto exit_remove; ++ } ++ i2c_set_clientdata(client, hwmon_dev); ++ ++ dev_info(&client->dev, "%s: sensor '%s'\n", ++ dev_name(hwmon_dev), client->name); ++ ++ return 0; ++ ++exit_remove: ++ sysfs_remove_group(&client->dev.kobj, &lm73_group); ++ return status; ++} ++ ++static int lm73_remove(struct i2c_client *client) ++{ ++ struct device *hwmon_dev = i2c_get_clientdata(client); ++ ++ hwmon_device_unregister(hwmon_dev); ++ sysfs_remove_group(&client->dev.kobj, &lm73_group); ++ i2c_set_clientdata(client, NULL); ++ return 0; ++} ++ ++static const struct i2c_device_id lm73_ids[] = { ++ { "lm73", lm73 }, ++ { /* LIST END */ } ++}; ++MODULE_DEVICE_TABLE(i2c, lm73_ids); ++ ++/* Return 0 if detection is successful, -ENODEV otherwise */ ++static int lm73_detect(struct i2c_client *new_client, int kind, ++ struct i2c_board_info *info) ++{ ++ struct i2c_adapter *adapter = new_client->adapter; ++ u16 id; ++ u8 ctrl; ++ ++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA | ++ I2C_FUNC_SMBUS_WORD_DATA)) ++ return -ENODEV; ++ ++ /* Check device ID */ ++ id = i2c_smbus_read_word_data(new_client, LM73_REG_ID); ++ ctrl = i2c_smbus_read_byte_data(new_client, LM73_REG_CTRL); ++ if ((id != LM73_ID) || (ctrl & 0x10)) ++ return -ENODEV; ++ ++ strlcpy(info->type, "lm73", I2C_NAME_SIZE); ++ ++ return 0; ++} ++ ++static struct i2c_driver lm73_driver = { ++ .class = I2C_CLASS_HWMON, ++ .driver = { ++ .name = "lm73", ++ }, ++ .probe = lm73_probe, ++ .remove = lm73_remove, ++ .id_table = lm73_ids, ++ .detect = lm73_detect, ++ .address_data = &addr_data, ++}; ++ ++/* module glue */ ++ ++static int __init sensors_lm73_init(void) ++{ ++ return i2c_add_driver(&lm73_driver); ++} ++ ++static void __exit sensors_lm73_exit(void) ++{ ++ i2c_del_driver(&lm73_driver); ++} ++ ++MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>"); ++MODULE_DESCRIPTION("LM73 driver"); ++MODULE_LICENSE("GPL"); ++ ++module_init(sensors_lm73_init); ++module_exit(sensors_lm73_exit); +Index: linux-2.6.29/drivers/hwmon/Makefile +=================================================================== +--- linux-2.6.29.orig/drivers/hwmon/Makefile 2009-10-05 18:27:57.000000000 +0200 ++++ linux-2.6.29/drivers/hwmon/Makefile 2009-10-05 18:28:35.000000000 +0200 +@@ -54,6 +54,7 @@ + obj-$(CONFIG_SENSORS_LIS3LV02D) += lis3lv02d.o hp_accel.o + obj-$(CONFIG_SENSORS_LM63) += lm63.o + obj-$(CONFIG_SENSORS_LM70) += lm70.o ++obj-$(CONFIG_SENSORS_LM73) += lm73.o + obj-$(CONFIG_SENSORS_LM75) += lm75.o + obj-$(CONFIG_SENSORS_LM77) += lm77.o + obj-$(CONFIG_SENSORS_LM78) += lm78.o diff --git a/recipes/linux/linux-2.6.31/boc01/008-091005-spi.patch b/recipes/linux/linux-2.6.31/boc01/008-091005-spi.patch new file mode 100644 index 0000000000..2c5239d13a --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/008-091005-spi.patch @@ -0,0 +1,227 @@ +Index: linux-2.6.31/arch/powerpc/platforms/83xx/mpc831x_rdb.c +=================================================================== +--- linux-2.6.31.orig/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-09-10 00:13:59.000000000 +0200 ++++ linux-2.6.31/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-10-20 15:32:51.000000000 +0200 +@@ -14,18 +14,176 @@ + */ + + #include <linux/pci.h> ++#include <linux/interrupt.h> + #include <linux/of_platform.h> ++#include <linux/spi/spi.h> ++#include <linux/fsl_devices.h> + + #include <asm/time.h> + #include <asm/ipic.h> + #include <asm/udbg.h> + #include <sysdev/fsl_pci.h> ++#include <sysdev/fsl_soc.h> + + #include "mpc83xx.h" + + /* + * Setup the architecture + */ ++struct gpio { ++ __be32 gpdir; ++ __be32 gpodr; ++ __be32 gpdat; ++ __be32 gpier; ++ __be32 gpimr; ++ __be32 gpicr; ++} __attribute__ ((packed)); ++static struct gpio *gpio_regs; ++ ++static int __init of_fsl_spi_probe(char *type, char *compatible, u32 sysclk, ++ struct spi_board_info *board_infos, ++ unsigned int num_board_infos, ++ void (*cs_control)(struct spi_device *dev, ++ bool on)) ++{ ++ struct device_node *np; ++ unsigned int i = 0; ++ ++ for_each_compatible_node(np, type, compatible) { ++ int ret; ++ unsigned int j; ++ const void *prop; ++ struct resource res[2]; ++ struct platform_device *pdev; ++ struct fsl_spi_platform_data pdata = { ++ .cs_control = cs_control, ++ }; ++ ++ memset(res, 0, sizeof(res)); ++ ++ pdata.sysclk = sysclk; ++ ++ prop = of_get_property(np, "reg", NULL); ++ if (!prop) ++ goto err; ++ pdata.bus_num = *(u32 *)prop; ++ ++ prop = of_get_property(np, "cell-index", NULL); ++ if (prop) ++ i = *(u32 *)prop; ++ ++ prop = of_get_property(np, "mode", NULL); ++ if (prop && !strcmp(prop, "cpu-qe")) ++ pdata.qe_mode = 1; ++ ++ for (j = 0; j < num_board_infos; j++) { ++ if (board_infos[j].bus_num == pdata.bus_num) ++ pdata.max_chipselect++; ++ } ++ ++ if (!pdata.max_chipselect) ++ continue; ++ ++ ret = of_address_to_resource(np, 0, &res[0]); ++ if (ret) ++ goto err; ++ ++ ret = of_irq_to_resource(np, 0, &res[1]); ++ if (ret == NO_IRQ) ++ goto err; ++ ++ pdev = platform_device_alloc("mpc83xx_spi", i); ++ if (!pdev) ++ goto err; ++ ++ ret = platform_device_add_data(pdev, &pdata, sizeof(pdata)); ++ if (ret) ++ goto unreg; ++ ++ ret = platform_device_add_resources(pdev, res, ++ ARRAY_SIZE(res)); ++ if (ret) ++ goto unreg; ++ ++ ret = platform_device_add(pdev); ++ if (ret) ++ goto unreg; ++ ++ goto next; ++unreg: ++ platform_device_del(pdev); ++err: ++ pr_err("%s: registration failed\n", np->full_name); ++next: ++ i++; ++ } ++ ++ return i; ++} ++ ++static int __init fsl_spi_init(struct spi_board_info *board_infos, ++ unsigned int num_board_infos, ++ void (*cs_control)(struct spi_device *spi, ++ bool on)) ++{ ++ u32 sysclk = -1; ++ int ret; ++ ++ /* SPI controller is either clocked from QE or SoC clock */ ++ sysclk = get_brgfreq(); ++ if (sysclk == -1) { ++ sysclk = fsl_get_sys_freq(); ++ if (sysclk == -1) ++ return -ENODEV; ++ } ++ ++ ret = of_fsl_spi_probe(NULL, "fsl,spi", sysclk, board_infos, ++ num_board_infos, cs_control); ++ if (!ret) ++ of_fsl_spi_probe("spi", "fsl_spi", sysclk, board_infos, ++ num_board_infos, cs_control); ++ ++ return spi_register_board_info(board_infos, num_board_infos); ++} ++ ++static void mpc83xx_spi_cs_control(struct spi_device *spi, bool on) ++{ ++ if (on) ++ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++ else ++ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++} ++ ++static struct spi_board_info mpc8313_spi_boardinfo = { ++ .bus_num = 0x7000, ++ .chip_select = 0, ++ .max_speed_hz = 50000000, ++ .modalias = "spidev", ++}; ++ ++static int __init mpc8313_spi_init(void) ++{ ++ __be32 __iomem *psicrl; ++ ++ /* System I/O Configuration Register Low */ ++ psicrl = ioremap(get_immrbase() + MPC83XX_SICRL_OFFS, 0x4); ++ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20); ++ if (!psicrl || !gpio_regs) ++ return -ENOMEM; ++ ++ clrbits32(psicrl, 0x03F00000); ++ setbits32(psicrl, 0x30000000); ++ iounmap(psicrl); ++ ++ /* set GPIO13 as output */ ++ setbits32(&gpio_regs->gpdir, 1 << (31 - 14)); ++ clrbits32(&gpio_regs->gpodr, 1 << (31 - 14)); ++ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++ ++ return fsl_spi_init(&mpc8313_spi_boardinfo, 1, mpc83xx_spi_cs_control); ++} ++machine_device_initcall(mpc831x_rdb, mpc8313_spi_init); ++ + static void __init mpc831x_rdb_setup_arch(void) + { + #ifdef CONFIG_PCI +Index: linux-2.6.31/drivers/spi/spi_mpc8xxx.c +=================================================================== +--- linux-2.6.31.orig/drivers/spi/spi_mpc8xxx.c 2009-09-10 00:13:59.000000000 +0200 ++++ linux-2.6.31/drivers/spi/spi_mpc8xxx.c 2009-10-20 15:32:55.000000000 +0200 +@@ -285,7 +285,9 @@ + if (pm) + pm--; + +- cs->hw_mode |= SPMODE_PM(pm); ++ cs->hw_mode = 0x0F700000; ++ mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mode, cs->hw_mode); ++ + regval = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode); + if (cs->hw_mode != regval) { + unsigned long flags; +@@ -445,7 +447,7 @@ + cs->hw_mode = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode); + /* mask out bits we are going to set */ + cs->hw_mode &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH +- | SPMODE_REV | SPMODE_LOOP); ++ | SPMODE_REV ); + + if (spi->mode & SPI_CPHA) + cs->hw_mode |= SPMODE_CP_BEGIN_EDGECLK; +@@ -453,8 +455,10 @@ + cs->hw_mode |= SPMODE_CI_INACTIVEHIGH; + if (!(spi->mode & SPI_LSB_FIRST)) + cs->hw_mode |= SPMODE_REV; +- if (spi->mode & SPI_LOOP) +- cs->hw_mode |= SPMODE_LOOP; ++ ++ cs->hw_mode = 0x0F700000; ++ mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mode, cs->hw_mode); ++ cs->hw_mode = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode); + + retval = mpc8xxx_spi_setup_transfer(spi, NULL); + if (retval < 0) { +@@ -602,7 +606,7 @@ + INIT_LIST_HEAD(&mpc8xxx_spi->queue); + + mpc8xxx_spi->workqueue = create_singlethread_workqueue( +- dev_name(master->dev.parent)); ++ dev_name(dev)); + if (mpc8xxx_spi->workqueue == NULL) { + ret = -EBUSY; + goto free_irq; diff --git a/recipes/linux/linux-2.6.31/boc01/011-090115-gpio.patch b/recipes/linux/linux-2.6.31/boc01/011-090115-gpio.patch new file mode 100644 index 0000000000..fd20dccea3 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/011-090115-gpio.patch @@ -0,0 +1,440 @@ +Index: linux-2.6.29/drivers/char/Kconfig +=================================================================== +--- linux-2.6.29.orig/drivers/char/Kconfig 2009-03-24 00:12:14.000000000 +0100 ++++ linux-2.6.29/drivers/char/Kconfig 2009-04-01 17:37:55.000000000 +0200 +@@ -1020,6 +1020,24 @@ + tristate "NEC VR4100 series General-purpose I/O Unit support" + depends on CPU_VR41XX + ++config GPIO_MPC8313 ++ tristate "mpc8313e gpio" ++ depends on PPC_MPC831x ++ select INPUT ++ default y ++ help ++ Give userspace access to the GPIO pins on the MPC8313E devices. ++ ++config EXIO_MPC8313 ++ tristate "mpc8313e exio" ++ depends on PPC_MPC831x ++ select INPUT ++ select LEDS_CLASS ++ default y ++ help ++ Give userspace access to the Extenrder IO pins on the CPE board. ++ ++ + config RAW_DRIVER + tristate "RAW driver (/dev/raw/rawN)" + depends on BLOCK +Index: linux-2.6.29/drivers/char/Makefile +=================================================================== +--- linux-2.6.29.orig/drivers/char/Makefile 2009-03-24 00:12:14.000000000 +0100 ++++ linux-2.6.29/drivers/char/Makefile 2009-04-01 17:37:55.000000000 +0200 +@@ -109,6 +109,8 @@ + obj-$(CONFIG_PS3_FLASH) += ps3flash.o + + obj-$(CONFIG_JS_RTC) += js-rtc.o ++obj-$(CONFIG_GPIO_MPC8313) += mpc8313e_gpio.o ++obj-$(CONFIG_EXIO_MPC8313) += mpc8313e_exio.o + js-rtc-y = rtc.o + + # Files generated that shall be removed upon make clean +Index: linux-2.6.29/drivers/char/mpc8313e_exio.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.29/drivers/char/mpc8313e_exio.c 2009-04-01 17:37:55.000000000 +0200 +@@ -0,0 +1,240 @@ ++/* ++* CPE Extender io driver ++* ++* Copyright (C) 2007, CenoSYS (www.cenosys.com). ++* ++* Alexandre Coffignal <alexandre.coffignal@cenosys.com> ++* Sylvain Giroudon <sylvain.giroudon@goobie.fr> ++* ++* This software program is licensed subject to the GNU General Public License ++* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html ++* ++* Allows a user space process to control the EXIO pins. ++* ++*/ ++ ++#include <linux/fs.h> ++#include <linux/module.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <asm/uaccess.h> ++#include <asm/io.h> ++#include <linux/of_platform.h> ++#include <sysdev/fsl_soc.h> ++#include <linux/cdev.h> ++#include <linux/leds.h> ++ ++static char module_name[] = "exio"; ++ ++ ++#define NB_EXIO 8 ++#define DEFAULT_STATE 0x58 ++#define EXIO_BASE 0xfa000000 ++#define EXIO_SIZE 0x2 ++#define EXIO_LED_MASK 0x01 ++ ++static int major = 0; ++static u8 exio_state = DEFAULT_STATE; ++static void *exio_io = NULL; ++static struct resource *exio_mem = NULL; ++static struct class * exio_class = NULL; ++ ++ ++static void ++exio_led_set(struct led_classdev *led_cdev, ++ enum led_brightness value) ++{ ++ if ( value ) ++ exio_state &= ~EXIO_LED_MASK; ++ else ++ exio_state |= EXIO_LED_MASK; ++ ++ iowrite8(exio_state, exio_io); ++} ++ ++static struct led_classdev exio_led = { ++ .name = "boc:blue:status", ++ .brightness_set = exio_led_set, ++}; ++ ++static inline int ++exio_led_init(void) ++{ ++ return led_classdev_register(NULL, &exio_led); ++} ++ ++ ++static inline void ++exio_led_exit(void) ++{ ++ led_classdev_unregister(&exio_led); ++} ++ ++ ++static inline void ++exio_led_suspend(void) ++{ ++ led_classdev_suspend(&exio_led); ++} ++ ++ ++static inline void ++exio_led_resume(void) ++{ ++ led_classdev_resume(&exio_led); ++} ++ ++ ++static ssize_t exio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos) ++{ ++ unsigned m = iminor(file->f_path.dentry->d_inode); ++ size_t i; ++ char mask; ++ int err = 0; ++ ++ for (i = 0; i < len; ++i) { ++ char c; ++ if (get_user(c, data + i)) ++ return -EFAULT; ++ ++ mask=(1<<(7-m)); ++ switch (c) { ++ case '0': ++ /*Clear exio level */ ++ exio_state&=~mask; ++ iowrite8(exio_state, exio_io); ++ break; ++ case '1': ++ /*Set exio level */ ++ exio_state|=mask; ++ iowrite8(exio_state, exio_io); ++ break; ++ default: ++ printk(KERN_DEBUG "exio%2d bad setting: chr<0x%2x>\n", ++ m, (int)c); ++ err++; ++ } ++ } ++ if (err) ++ return -EINVAL; ++ ++ return len; ++} ++ ++ ++static ssize_t exio_read(struct file *file, char __user * buf, ++ size_t len, loff_t * ppos) ++{ ++ unsigned m = iminor(file->f_path.dentry->d_inode); ++ int value; ++ char mask; ++ char state=ioread8(exio_io); ++ ++ mask=(1<<(7-m)); ++ value=state&mask; ++ if (put_user(value ? '1' : '0', buf)) ++ return -EFAULT; ++ return 1; ++ ++} ++ ++static int exio_open(struct inode *inode, struct file *file) ++{ ++ return 0; ++} ++ ++static int exio_close(struct inode *inode, struct file *file) ++{ ++ printk(KERN_DEBUG "close()\n"); ++ return 0; ++} ++ ++struct file_operations exio_fops = ++{ ++ .owner = THIS_MODULE, ++ .read = exio_read, ++ .write = exio_write, ++ .open = exio_open, ++ .release = exio_close /* correspond a close */ ++}; ++ ++ ++static void exio_cleanup(void) ++{ ++ if ( exio_mem ) ++ release_mem_region(EXIO_BASE, EXIO_SIZE); ++ exio_mem = NULL; ++ exio_io = NULL; ++ ++ if ( exio_class ) ++ class_destroy(exio_class); ++ exio_class = NULL; ++ ++ unregister_chrdev(major, module_name); ++} ++ ++ ++static int __init exio_init(void) ++{ ++ int rc, i; ++ ++ rc = register_chrdev(major, module_name, &exio_fops); ++ if ( rc < 0 ) ++ return rc; ++ ++ if ( major == 0 ) { ++ major = rc; /* accept dynamic major number */ ++ printk(KERN_INFO "%s: successfully loaded with major %d\n",module_name, major); ++ } ++ ++ exio_class = class_create(THIS_MODULE, "exio"); ++ if ( exio_class == NULL ) ++ goto out_cleanup; ++ ++ for (i = 0; i < NB_EXIO; i++) { ++ device_create(exio_class, NULL, MKDEV(major, i) ,NULL, "exio%i", i); ++ } ++ ++ /* System I/O Configuration Register Low */ ++ exio_mem = request_mem_region(EXIO_BASE, EXIO_SIZE, "exio"); ++ if ( exio_mem == NULL ) ++ goto out_cleanup; ++ ++ exio_io = ioremap(EXIO_BASE, EXIO_SIZE); ++ if ( exio_io == NULL ) ++ goto out_cleanup; ++ ++ /* Output default exio state */ ++ iowrite8(exio_state, exio_io); ++ ++ /* Register led class entry for driving the Status led */ ++ exio_led_init(); ++ ++ return 0; ++ ++out_cleanup: ++ exio_cleanup(); ++ return -ENOMEM; ++} ++ ++static void __exit exio_exit(void) ++{ ++ /* Unregister Status led */ ++ exio_led_exit(); ++ ++ /* Cleanup all other gears */ ++ exio_cleanup(); ++} ++ ++ ++module_param(major, int, 0644); ++MODULE_PARM_DESC(major, "Static major number (none = dynamic)"); ++MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>"); ++MODULE_DESCRIPTION("boc01 exio management"); ++MODULE_LICENSE("GPL"); ++ ++module_init(exio_init); ++module_exit(exio_exit); ++ ++ +Index: linux-2.6.29/drivers/char/mpc8313e_gpio.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.29/drivers/char/mpc8313e_gpio.c 2009-04-01 17:37:55.000000000 +0200 +@@ -0,0 +1,148 @@ ++/* ++* mpc8313e gpio driver ++* ++* ++* Copyright (C) 2007, CenoSYS (www.cenosys.com). ++* Alexandre Coffignal ++* alexandre.coffignal@cenosys.com ++* ++* This software program is licensed subject to the GNU General Public License ++* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html ++* ++* Allows a user space process to control the GPIO pins. ++* ++*/ ++ ++#include <linux/fs.h> ++#include <linux/module.h> ++#include <linux/errno.h> ++#include <linux/kernel.h> ++#include <linux/init.h> ++#include <asm/uaccess.h> ++#include <asm/io.h> ++#include <linux/of_platform.h> ++#include <sysdev/fsl_soc.h> ++ ++static char module_name[] = "gpio"; ++#define NB_GPIO 8 ++static int major = 0; ++struct gpio { ++ __be32 gpdir; ++ __be32 gpodr; ++ __be32 gpdat; ++ __be32 gpier; ++ __be32 gpimr; ++ __be32 gpicr; ++} __attribute__ ((packed)); ++static struct gpio *gpio_regs; ++ ++static ssize_t mpc8313e_gpio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos) ++{ ++ unsigned m = iminor(file->f_path.dentry->d_inode); ++ size_t i; ++ int err = 0; ++ ++ for (i = 0; i < len; ++i) { ++ char c; ++ if (get_user(c, data + i)) ++ return -EFAULT; ++ /* set GPIO as output */ ++ setbits32(&gpio_regs->gpdir, 1 << (31 - m)); ++ clrbits32(&gpio_regs->gpodr, 1 << (31 - m)); ++ switch (c) { ++ case '0': ++ /*Set GPIO level */ ++ clrbits32(&gpio_regs->gpdat, 1 << (31 - m)); ++ break; ++ case '1': ++ /*Set GPIO level */ ++ setbits32(&gpio_regs->gpdat, 1 << (31 - m)); ++ break; ++ default: ++ printk(KERN_DEBUG "io%2d bad setting: chr<0x%2x>\n", ++ m, (int)c); ++ err++; ++ } ++ } ++ if (err) ++ return -EINVAL; ++ ++ return len; ++} ++ ++static ssize_t mpc8313e_gpio_read(struct file *file, char __user * buf, size_t len, loff_t * ppos) ++{ ++ unsigned m = iminor(file->f_path.dentry->d_inode); ++ int value; ++ value=in_be32(&gpio_regs->gpdat)&(1 << (31 - m)); ++ if (put_user(value ? '1' : '0', buf)) ++ return -EFAULT; ++ return 1; ++ ++ ++} ++ ++ ++ ++static int mpc8313e_gpio_open(struct inode *inode, struct file *file) ++{ ++ return 0; ++} ++ ++static int mpc8313e_gpio_close(struct inode *inode, struct file *file) ++{ ++ return 0; ++} ++ ++struct file_operations mpc8313e_gpio_fops = ++{ ++ .owner = THIS_MODULE, ++ .read = mpc8313e_gpio_read, ++ .write = mpc8313e_gpio_write, ++ .open = mpc8313e_gpio_open, ++ .release = mpc8313e_gpio_close ++}; ++static struct class * gpio_class; ++static int __init mpc8313e_gpio_init(void) ++{ ++ int rc,i; ++ ++ rc = register_chrdev(major, module_name, &mpc8313e_gpio_fops); ++ if (rc < 0) { ++ return rc; ++ } ++ ++ if (major == 0) { ++ major = rc; /* accept dynamic major number */ ++ printk(KERN_INFO "%s: successfully loaded with major %d\n",module_name, major); ++ ++ } ++ gpio_class = class_create(THIS_MODULE, "gpio"); ++ ++ for (i = 0; i < NB_GPIO; i++) ++ { ++ device_create(gpio_class, NULL, MKDEV(major, i) ,NULL, "gpio%d",i); ++ ++ } ++ ++ /* System I/O Configuration Register Low */ ++ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20); ++ if (!gpio_regs) ++ return -ENOMEM; ++ return 0; ++} ++ ++static void __exit mpc8313e_gpio_cleanup(void) ++{ ++ unregister_chrdev(major, module_name); ++} ++module_param(major, int, 0644); ++MODULE_PARM_DESC(major, "Static major number (none = dynamic)"); ++MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>"); ++MODULE_DESCRIPTION("mpc8313e GPIO"); ++MODULE_LICENSE("GPL"); ++ ++module_init(mpc8313e_gpio_init); ++module_exit(mpc8313e_gpio_cleanup); ++ ++ diff --git a/recipes/linux/linux-2.6.31/boc01/012-091019-capsense.patch b/recipes/linux/linux-2.6.31/boc01/012-091019-capsense.patch new file mode 100644 index 0000000000..d82f8b1e54 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/012-091019-capsense.patch @@ -0,0 +1,858 @@ +Index: linux-2.6.31/drivers/input/misc/Kconfig +=================================================================== +--- linux-2.6.31.orig/drivers/input/misc/Kconfig 2009-10-19 16:32:13.000000000 +0200 ++++ linux-2.6.31/drivers/input/misc/Kconfig 2009-10-19 16:49:22.000000000 +0200 +@@ -269,4 +269,14 @@ + + To compile this driver as a module, choose M here: the + module will be called dm355evm_keys. ++ ++config INPUT_CAPSENSE_BTNS ++ tristate "CAPSENSE CY8C201xx buttons interface" ++ select INPUT_POLLDEV ++ select LEDS_CLASS ++ help ++ To compile this driver as a module, choose M here: ++ the module will be called capsense-btns. ++ To change poll interval, invoque poll parameter in msecs. ++ + endif +Index: linux-2.6.31/drivers/input/misc/Makefile +=================================================================== +--- linux-2.6.31.orig/drivers/input/misc/Makefile 2009-10-19 16:32:13.000000000 +0200 ++++ linux-2.6.31/drivers/input/misc/Makefile 2009-10-19 16:49:22.000000000 +0200 +@@ -26,3 +26,4 @@ + obj-$(CONFIG_INPUT_UINPUT) += uinput.o + obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o + obj-$(CONFIG_INPUT_YEALINK) += yealink.o ++obj-$(CONFIG_INPUT_CAPSENSE_BTNS) += capsense-btns.o +Index: linux-2.6.31/drivers/input/misc/capsense-btns.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.31/drivers/input/misc/capsense-btns.c 2009-10-19 16:49:22.000000000 +0200 +@@ -0,0 +1,440 @@ ++/* ++ * CAPSENSE Interface driver ++ * ++ * ++ * Copyright (C) 2008, CenoSYS (www.cenosys.com). ++ * Copyright (C) 2009, Bollore telecom (www.bolloretelecom.eu). ++ * ++ * Guillaume Ligneul <guillaume.ligneul@gmail.com> ++ * Adrien Demarez <jeremy.laine@bolloretelecom.eu> ++ * Jeremy Lainé <jeremy.laine@bolloretelecom.eu> ++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr> ++ * ++ * This software program is licensed subject to the GNU General Public License ++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html ++ */ ++ ++#include <linux/init.h> ++#include <linux/input-polldev.h> ++#include <linux/ioport.h> ++#include <linux/module.h> ++#include <linux/i2c.h> ++#include <linux/leds.h> ++ ++#define DRIVER_NAME "capsense" ++ ++#define BUTTONS_POLL_INTERVAL 30 /* msec */ ++ ++#define CAP_INPUT_PORT(port) (0x00+(port)) ++#define CAP_STATUS_PORT(port) (0x02+(port)) ++#define CAP_OUTPUT_PORT(port) (0x04+(port)) ++#define CAP_CS_ENABLE(port) (0x06+(port)) ++#define CAP_GPIO_ENABLE(port) (0x08+(port)) ++#define CAP_INVERSION_MASK(port) (0x0A+(port)) ++#define CAP_INT_MASK(port) (0x0C+(port)) ++#define CAP_STATUS_HOLD_MSK(port) (0x0E+(port)) ++#define CAP_DM_PULL_UP(port) (0x10+(4*(port))) ++#define CAP_DM_STRONG(port) (0x11+(4*(port))) ++#define CAP_DM_HIGHZ(port) (0x12+(4*(port))) ++#define CAP_OD_LOW(port) (0x13+(4*(port))) ++#define CAP_PWM_ENABLE(port) (0x18+(port)) ++#define CAP_PWM_MODE_DC 0x1A ++#define CAP_PWM_DELAY 0x1B ++#define CAP_OP_SEL(port,bit) (0x1C+(25*(port))+(5*(bit))) ++#define CAP_READ_STATUS(port) (0x88+(port)) ++ ++#define CAP_CS(command,port,bit) ((command)+(5*(port))+(bit)) ++#define CAP_CS_FINGER_TH(port,bit) CAP_CS(0x61,port,bit) ++#define CAP_CS_IDAC(port,bit) CAP_CS(0x6B,port,bit) ++ ++#define CAP_DEVICE_ID 0x7A ++#define CAP_DEVICE_STATUS 0x7B ++#define CAP_I2C_ADDR_DM 0x7C ++ ++#define CAP_COMMAND_REG 0xA0 ++#define CAP_COMMAND_STORE_NVM 0x01 ++#define CAP_COMMAND_RESTORE_FACTORY 0x02 ++#define CAP_COMMAND_RECONFIGURE 0x06 ++#define CAP_COMMAND_NORMAL_MODE 0x07 ++#define CAP_COMMAND_SETUP_MODE 0x08 ++ ++#define CAP_NLEDS 5 ++ ++static int poll_interval = BUTTONS_POLL_INTERVAL; ++module_param_named(poll, poll_interval, uint, 0); ++MODULE_PARM_DESC(poll, "poll interval in msec (30=default)"); ++ ++struct capsense_led { ++ struct led_classdev cdev; ++ struct capsense_ctx *capsense; ++ int port; ++ int bit; ++}; ++ ++struct capsense_ctx { ++ struct input_polled_dev *ipdev; ++ struct i2c_client *client; ++ unsigned char key_state; ++ struct capsense_led leds[CAP_NLEDS]; ++ unsigned char led_state[2]; ++ struct mutex mutex; ++}; ++ ++static unsigned short input_keymap[] = { ++ // GP0 ++ KEY_F1, ++ KEY_ENTER, ++ KEY_DOWN, ++ KEY_BACKSPACE, ++ // GP1 ++ KEY_UP, ++}; ++ ++struct capsense_keymap { ++ char *name; ++ int port, bit; ++}; ++ ++static struct capsense_keymap phys_keymap[] = { ++ { "info", 0, 4 }, ++ { "ok", 0, 2 }, ++ { "down", 0, 3 }, ++ { "back", 0, 0 }, ++ { "up", 1, 4 }, ++}; ++ ++ ++struct capsense_ledmap { ++ char *name; ++ int port, bit; ++}; ++ ++static struct capsense_ledmap ledmap[CAP_NLEDS] = { ++ { "capsense:blue:back", 0, 1 }, ++ { "capsense:blue:info", 1, 0 }, ++ { "capsense:blue:down", 1, 1 }, ++ { "capsense:blue:ok", 1, 2 }, ++ { "capsense:blue:up", 1, 3 }, ++}; ++ ++ ++/* ++ * Buttons events handling ++ */ ++ ++static void handle_buttons(struct input_polled_dev *dev) ++{ ++ struct capsense_ctx *capsense = dev->private; ++ u8 port_value; ++ u8 new_state = 0; ++ int port; ++ u8 changed; ++ int i; ++ ++ mutex_lock(&capsense->mutex); ++ ++ // read status ++ port = -1; ++ port_value = 0; ++ for (i = 0; i < ARRAY_SIZE(phys_keymap); i++) { ++ if ( phys_keymap[i].port != port ) { ++ port = phys_keymap[i].port; ++ port_value = i2c_smbus_read_byte_data(capsense->client, CAP_READ_STATUS(port)); ++ } ++ ++ if ( port_value & (1 << phys_keymap[i].bit) ) ++ new_state |= (1 << i); ++ } ++ ++ mutex_unlock(&capsense->mutex); ++ ++ // update keyboard state ++ changed = capsense->key_state ^ new_state; ++ for (i = 0; i < ARRAY_SIZE(input_keymap); i++) ++ if (changed & (1 << i)) ++ input_report_key(dev->input, input_keymap[i], (new_state & (1 << i))); ++ capsense->key_state = new_state; ++ input_sync(dev->input); ++} ++ ++ ++/* ++ * LEDs management ++ */ ++ ++static void ++capsense_led_set(struct led_classdev *led_cdev, ++ enum led_brightness value) ++{ ++ struct capsense_led *led = (struct capsense_led *) led_cdev; ++ struct capsense_ctx *capsense = led->capsense; ++ int port = led->port; ++ unsigned char mask = (1 << led->bit); ++ ++ if ( value ) ++ capsense->led_state[port] |= mask; ++ else ++ capsense->led_state[port] &= ~mask; ++ ++ mutex_lock(&capsense->mutex); ++ i2c_smbus_write_byte_data(capsense->client, CAP_OUTPUT_PORT(port), capsense->led_state[port]); ++ mutex_unlock(&capsense->mutex); ++} ++ ++static void ++capsense_led_enable(struct capsense_led *led, int state) ++{ ++ struct capsense_ctx *capsense = led->capsense; ++ ++ mutex_lock(&capsense->mutex); ++ i2c_smbus_write_byte_data(capsense->client, CAP_OP_SEL(led->port, led->bit), state ? 0x00 : 0x80); ++ mutex_unlock(&capsense->mutex); ++} ++ ++static int ++capsense_led_init(struct capsense_ctx *capsense) ++{ ++ int i; ++ int ret; ++ ++ for (i = 0; i < CAP_NLEDS; i++) { ++ struct capsense_led *led = &(capsense->leds[i]); ++ ++ led->cdev.name = ledmap[i].name; ++ led->cdev.brightness_set = capsense_led_set; ++ led->capsense = capsense; ++ led->port = ledmap[i].port; ++ led->bit = ledmap[i].bit; ++ ++ ret = led_classdev_register(&capsense->ipdev->input->dev, &led->cdev); ++ if ( ret < 0 ) ++ return -1; ++ ++ capsense_led_enable(led, 1); ++ } ++ ++ /* Switch all leds off */ ++ mutex_lock(&capsense->mutex); ++ ++ capsense->led_state[0] = 0x00; ++ i2c_smbus_write_byte_data(capsense->client, CAP_OUTPUT_PORT(0), 0x00); ++ ++ capsense->led_state[1] = 0x00; ++ i2c_smbus_write_byte_data(capsense->client, CAP_OUTPUT_PORT(1), 0x00); ++ ++ mutex_unlock(&capsense->mutex); ++ ++ return 0; ++} ++ ++static void ++capsense_led_exit(struct capsense_ctx *capsense) ++{ ++ int i; ++ ++ for (i = 0; i < CAP_NLEDS; i++) { ++ led_classdev_unregister(&capsense->leds[i].cdev); ++ } ++} ++ ++static inline void ++capsense_led_suspend(struct capsense_ctx *capsense) ++{ ++ int i; ++ ++ for (i = 0; i < CAP_NLEDS; i++) { ++ struct capsense_led *led = &(capsense->leds[i]); ++ ++ led_classdev_suspend(&led->cdev); ++ capsense_led_enable(led, 0); ++ } ++} ++ ++static inline void ++capsense_led_resume(struct capsense_ctx *capsense) ++{ ++ int i; ++ ++ for (i = 0; i < CAP_NLEDS; i++) { ++ struct capsense_led *led = &(capsense->leds[i]); ++ ++ capsense_led_enable(led, 1); ++ led_classdev_resume(&led->cdev); ++ } ++} ++ ++ ++/* ++ * Device configuration through procfs entries ++ */ ++ ++#ifdef CONFIG_PROC_FS ++#include "capsense-procfs.c" ++#endif ++ ++ ++/* ++ * Device initialisation ++ */ ++ ++static int ++capsense_detect(struct i2c_client *client, int kind, struct i2c_board_info *info) ++{ ++ struct i2c_adapter *adapter = client->adapter; ++ ++ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C)) ++ return -ENODEV; ++ ++ // FIXME: how do we identify the device? ++ ++ return 0; ++} ++ ++static int ++capsense_probe(struct i2c_client *client, const struct i2c_device_id *id) ++{ ++ struct capsense_ctx *capsense; ++ struct input_polled_dev *ipdev; ++ struct input_dev *input; ++ int rc=0, i=0; ++ ++ capsense = kzalloc(sizeof(*capsense), GFP_KERNEL); ++ if (!capsense) ++ return -ENOMEM; ++ ++ mutex_init(&capsense->mutex); ++ ++ ipdev = input_allocate_polled_device(); ++ if (!ipdev) { ++ rc = -ENOMEM; ++ goto out_allocated; ++ } ++ ++ capsense->key_state = 0; ++ capsense->ipdev = ipdev; ++ capsense->client = client; ++ i2c_set_clientdata(client, capsense); ++ ++ ipdev->poll = handle_buttons; ++ ipdev->private = capsense; ++ ipdev->poll_interval = poll_interval; ++ ++ input = ipdev->input; ++ input->name = "Capsense buttons"; ++ input->phys = "capsense/input0"; ++ input->id.bustype = BUS_I2C; ++ input->dev.parent = &client->dev; ++ input->keycode = input_keymap; ++ input->keycodemax = ARRAY_SIZE(input_keymap); ++ input->keycodesize = sizeof(unsigned short); ++ ++ input_set_capability(input, EV_MSC, MSC_SCAN); ++ set_bit(EV_KEY, ipdev->input->evbit); ++ ++ for (i = 0; i < ARRAY_SIZE(input_keymap); i++) ++ set_bit(input_keymap[i], ipdev->input->keybit); ++ ++ rc = input_register_polled_device(ipdev); ++ if (rc) ++ goto out_polled; ++ ++ rc = capsense_led_init(capsense); ++ if (rc) ++ goto out_registered; ++ ++#ifdef CONFIG_PROC_FS ++ /* Create /proc entries for hardware device configuration */ ++ capsense_proc_init(capsense); ++#endif ++ ++ return 0; ++ ++out_registered: ++ input_unregister_polled_device(ipdev); ++out_polled: ++ input_free_polled_device(ipdev); ++out_allocated: ++ kfree(capsense); ++ return rc; ++} ++ ++static int ++capsense_remove(struct i2c_client *client) ++{ ++ struct capsense_ctx *capsense = i2c_get_clientdata(client); ++ ++ capsense_led_exit(capsense); ++ input_unregister_polled_device(capsense->ipdev); ++ input_free_polled_device(capsense->ipdev); ++ kfree(capsense); ++ return 0; ++} ++ ++/* ++ * Power management ++ */ ++ ++#ifdef CONFIG_PM ++static int capsense_suspend(struct i2c_client *client, pm_message_t mesg) ++{ ++ struct capsense_ctx *capsense = i2c_get_clientdata(client); ++ ++ dev_info(&client->dev, "suspend\n"); ++ ++ capsense_led_suspend(capsense); ++ ++ return 0; ++} ++ ++static int capsense_resume(struct i2c_client *client) ++{ ++ struct capsense_ctx *capsense = i2c_get_clientdata(client); ++ ++ dev_info(&client->dev, "resume\n"); ++ ++ capsense_led_resume(capsense); ++ ++ return 0; ++} ++#endif ++ ++ ++/* ++ * Driver initialisation ++ */ ++ ++struct i2c_device_id capsense_idtable[] = { ++ { "capsense", 0 }, ++ { } ++}; ++MODULE_DEVICE_TABLE(i2c, capsense_idtable); ++ ++static struct i2c_driver capsense_driver = { ++ .driver = { ++ .name = DRIVER_NAME, ++ }, ++ .detect = capsense_detect, ++ .probe = capsense_probe, ++ .remove = capsense_remove, ++ .id_table = capsense_idtable, ++#ifdef CONFIG_PM ++ .suspend = capsense_suspend, ++ .resume = capsense_resume, ++#endif ++}; ++ ++static int __init capsense_buttons_init(void) ++{ ++ return i2c_add_driver(&capsense_driver); ++} ++ ++static void __exit capsense_buttons_exit(void) ++{ ++ i2c_del_driver(&capsense_driver); ++} ++ ++MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>"); ++MODULE_DESCRIPTION("Capsense CY8C201xx Input driver"); ++MODULE_LICENSE("GPL"); ++module_init(capsense_buttons_init); ++module_exit(capsense_buttons_exit); +Index: linux-2.6.31/drivers/input/misc/capsense-procfs.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.31/drivers/input/misc/capsense-procfs.c 2009-10-19 16:50:35.000000000 +0200 +@@ -0,0 +1,380 @@ ++/* ++ * CAPSENSE Interface driver ++ * Device setup using procfs ++ * ++ * Copyright (C) 2008, Goobie (www.goobie.fr). ++ * ++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr> ++ * ++ * This software program is licensed subject to the GNU General Public License ++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html ++ */ ++ ++#include <linux/proc_fs.h> ++#include <linux/uaccess.h> ++ ++ ++struct capsense_proc_data { ++ struct capsense_ctx *capsense; ++ struct capsense_keymap *phys; ++ char *name; ++ unsigned char command; ++ unsigned char hex; ++}; ++ ++struct capsense_proc_entry { ++ char *name; ++ unsigned char command; ++ struct capsense_proc_data data[ARRAY_SIZE(phys_keymap)]; ++}; ++ ++static struct capsense_proc_entry capsense_proc_key_entries[] = { ++ { "CS_FINGER_TH", CAP_CS_FINGER_TH(0,0) }, ++ { "CS_IDAC", CAP_CS_IDAC(0,0) }, ++}; ++ ++static struct capsense_proc_entry capsense_proc_device_entries[] = { ++ { "DEVICE_ID", CAP_DEVICE_ID }, ++ { "DEVICE_STATUS", CAP_DEVICE_STATUS }, ++}; ++ ++struct capsense_proc_command { ++ char *name; ++ unsigned char command; ++ struct capsense_ctx *capsense; ++}; ++ ++static struct capsense_proc_command capsense_proc_commands[] = { ++ { "store", CAP_COMMAND_STORE_NVM }, ++ //{ "factory", CAP_COMMAND_RESTORE_FACTORY }, ++ //{ "reconfigure", CAP_COMMAND_RECONFIGURE }, ++}; ++ ++ ++static int capsense_proc_read(char *page, char **start, off_t off, int count, ++ int *eof, void *_data) ++{ ++ struct capsense_proc_data *data = _data; ++ struct capsense_ctx *capsense = data->capsense; ++ u8 value; ++ int len; ++ ++ mutex_lock(&capsense->mutex); ++ value = i2c_smbus_read_byte_data(capsense->client, data->command); ++ mutex_unlock(&capsense->mutex); ++ ++ if ( data->hex ) ++ len = sprintf(page, "%02X\n", value); ++ else ++ len = sprintf(page, "%u\n", value); ++ ++ len -= off; ++ if ( len < count ) { ++ *eof = 1; ++ if ( len <= 0 ) ++ return 0; ++ } else { ++ len = count; ++ } ++ ++ *start = page + off; ++ ++ return len; ++} ++ ++ ++static int capsense_proc_write(struct file *file, const char *buf, ++ unsigned long count, void *_data) ++{ ++ struct capsense_proc_data *data = _data; ++ struct capsense_ctx *capsense = data->capsense; ++ char lbuf[count+1]; ++ u8 value; ++ ++ /* Only root can do this */ ++ if ( !capable(CAP_SYS_ADMIN) ) ++ return -EACCES; ++ ++ memset(lbuf, 0, sizeof(lbuf)); ++ ++ if (copy_from_user(lbuf, buf, count)) ++ return -EFAULT; ++ ++ if ( sscanf(lbuf, "%hhi", &value) == 1 ) { ++ mutex_lock(&capsense->mutex); ++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_SETUP_MODE); ++ i2c_smbus_write_byte_data(capsense->client, data->command, value); ++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_NORMAL_MODE); ++ mutex_unlock(&capsense->mutex); ++ } ++ else { ++ printk(KERN_INFO DRIVER_NAME ": [%s/%s] Syntax error in expression\n", data->phys->name, data->name); ++ return -EINVAL; ++ } ++ ++ return count; ++} ++ ++ ++static inline char *str_skip_blanks(char *s) ++{ ++ while ( (*s != '\0') && (*s <= ' ') ) ++ s++; ++ return s; ++} ++ ++ ++static inline char *str_skip_chars(char *s) ++{ ++ while ( *s > ' ' ) ++ s++; ++ return s; ++} ++ ++ ++static int capsense_proc_write_iic(struct file *file, const char *buf, ++ unsigned long count, void *data) ++{ ++ struct capsense_ctx *capsense = data; ++ char lbuf[count+1]; ++ int lnum; ++ char *s; ++ ++ /* Only root can do this */ ++ if ( !capable(CAP_SYS_ADMIN) ) ++ return -EACCES; ++ ++ printk(KERN_INFO DRIVER_NAME ": Reading configuration script from /proc/" DRIVER_NAME "/iic (%lu bytes)\n", count); ++ ++ memset(lbuf, 0, sizeof(lbuf)); ++ ++ if (copy_from_user(lbuf, buf, count)) ++ return -EFAULT; ++ ++ s = lbuf; ++ lnum = 0; ++ ++ while ( *s != '\0' ) { ++ char *line; ++ char operation; ++ unsigned char data[255]; ++ int size; ++ struct i2c_msg msg; ++ int ret; ++ ++ lnum++; ++ ++ /* Spot the end of the line */ ++ line = s; ++ while ( (*s != '\0') && (*s != '\n') ) ++ s++; ++ if ( *s != '\0' ) ++ *(s++) = '\0'; ++ ++ //printk(KERN_INFO DRIVER_NAME ": iic:%d: '%s'\n", lnum, line); ++ ++ /* Strip leading blank characters */ ++ line = str_skip_blanks(line); ++ ++ /* Empty or commented line: skip! */ ++ if ( (*line == '\0') || (*line == '#') ) ++ continue; ++ ++ /* Only accept write operations 'w' */ ++ operation = *(line++); ++ if ( operation != 'w' ) { ++ printk(KERN_ERR DRIVER_NAME ": iic:%d: Unknown operation '%c ...' -- skipped\n", lnum, operation); ++ continue; ++ } ++ ++ /* Extract data values */ ++ size = 0; ++ while ( (*line != '\0') && (size < sizeof(data)) ) { ++ line = str_skip_blanks(line); ++ if ( *line != '\0' ) ++ sscanf(line, "%hhx", &data[size++]); ++ line = str_skip_chars(line); ++ } ++ ++ { ++ int i; ++ ++ printk(KERN_DEBUG DRIVER_NAME ": iic:%d: %c", lnum, operation); ++ for (i = 0; i < size; i++) ++ printk(" %02X", data[i]); ++ printk("\n"); ++ } ++ ++ /* Do nothing if there are less than 2 data bytes (address, command) */ ++ if ( size < 3 ) { ++ printk(KERN_ERR DRIVER_NAME ": iic:%d: Too few data for operation '%c ...' -- skipped\n", lnum, operation); ++ continue; ++ } ++ ++ /* First data byte is the i2c device address: ++ Warn if it does not match the current i2c address */ ++ if ( data[0] != capsense->client->addr ) { ++ printk(KERN_WARNING DRIVER_NAME ": iic:%d: WARNING - Specified i2c address (%02X) differs from current i2c address (%02X)\n", lnum, data[0], capsense->client->addr); ++ } ++ ++ /* Second data byte is the capsense register: ++ Warn if changing the device I2C address */ ++ if ( data[1] == CAP_I2C_ADDR_DM ) { ++ printk(KERN_WARNING DRIVER_NAME ": iic:%d: WARNING - Changing i2c address to %02X (I2C_ADDR_DM=%02X)\n", lnum, data[2] & 0x7F, data[2]); ++ } ++ ++ /* Send command to i2c device */ ++ mutex_lock(&capsense->mutex); ++ ++ msg.addr = data[0]; ++ msg.flags = capsense->client->flags; ++ msg.len = size - 1; ++ msg.buf = data + 1; ++ //printk(KERN_INFO DRIVER_NAME ": iic:%d: i2c transfer: addr=0x%02X flags=0x%04X len=%d\n", lnum, msg.addr, msg.flags, msg.len); ++ ++ ret = i2c_transfer(capsense->client->adapter, &msg, 1); ++ if ( ret < 0 ) ++ printk(KERN_ERR DRIVER_NAME ": iic:%d: i2c transfer failed (%d), command rejected\n", lnum, ret); ++ ++ mutex_unlock(&capsense->mutex); ++ } ++ ++ return count; ++} ++ ++ ++static int capsense_proc_write_command(struct file *file, const char *buf, ++ unsigned long count, void *data) ++{ ++ struct capsense_proc_command *command = data; ++ struct capsense_ctx *capsense = command->capsense; ++ ++ /* Only root can do this */ ++ if ( !capable(CAP_SYS_ADMIN) ) ++ return -EACCES; ++ ++ printk(KERN_INFO DRIVER_NAME ": %s (%02X)\n", command->name, command->command); ++ ++ mutex_lock(&capsense->mutex); ++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_SETUP_MODE); ++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, command->command); ++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_NORMAL_MODE); ++ mutex_unlock(&capsense->mutex); ++ ++ return count; ++} ++ ++ ++static int capsense_proc_init(struct capsense_ctx *capsense) ++{ ++ struct proc_dir_entry *root; ++ struct proc_dir_entry *dir; ++ struct proc_dir_entry *ent; ++ int i; ++ ++ /* Create capsense proc directory */ ++ printk(KERN_INFO DRIVER_NAME ": Creating setup entries in /proc/" DRIVER_NAME "/\n"); ++ ++ root = proc_mkdir(DRIVER_NAME, NULL); ++ if ( root == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "\n"); ++ return -1; ++ } ++ ++ /* Create iic config file dump entry */ ++ ent = create_proc_entry("iic", S_IFREG|S_IWUSR, root); ++ if ( ent == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/iic\n"); ++ return -1; ++ } ++ ++ ent->data = capsense; ++ ent->write_proc = capsense_proc_write_iic; ++ ++ /* Create commands directory */ ++ dir = proc_mkdir("commands", root); ++ if ( dir == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/commands\n"); ++ return -1; ++ } ++ ++ /* Create command entries */ ++ for (i = 0; i < ARRAY_SIZE(capsense_proc_commands); i++) { ++ struct capsense_proc_command *command = &capsense_proc_commands[i]; ++ ++ command->capsense = capsense; ++ ++ ent = create_proc_entry(command->name, S_IFREG|S_IWUSR, dir); ++ if ( ent == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/commands/%s\n", command->name); ++ return -1; ++ } ++ ++ ent->data = command; ++ ent->write_proc = capsense_proc_write_command; ++ } ++ ++ /* Create device status read entries */ ++ for (i = 0; i < ARRAY_SIZE(capsense_proc_device_entries); i++) { ++ struct capsense_proc_entry *entry = &(capsense_proc_device_entries[i]); ++ struct capsense_proc_data *data = &(entry->data[i]); ++ ++ data->capsense = capsense; ++ data->phys = NULL; ++ data->name = entry->name; ++ data->command = entry->command; ++ data->hex = 1; ++ ++ ent = create_proc_entry(entry->name, S_IFREG|S_IRUSR, root); ++ if ( ent == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/%s\n", entry->name); ++ continue; ++ } ++ ++ ent->data = data; ++ ent->read_proc = capsense_proc_read; ++ } ++ ++ /* Create keys management directory */ ++ dir = proc_mkdir("keys", root); ++ if ( dir == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/keys\n"); ++ return -1; ++ } ++ ++ /* Create keys sensitivity adjustment entries */ ++ for (i = 0; i < ARRAY_SIZE(phys_keymap); i++) { ++ struct capsense_keymap *phys = &phys_keymap[i]; ++ struct proc_dir_entry *subdir; ++ int ientry; ++ ++ subdir = proc_mkdir(phys->name, dir); ++ if ( subdir == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/keys/%s\n", phys->name); ++ continue; ++ } ++ ++ for (ientry = 0; ientry < ARRAY_SIZE(capsense_proc_key_entries); ientry++) { ++ struct capsense_proc_entry *entry = &(capsense_proc_key_entries[ientry]); ++ struct capsense_proc_data *data = &(entry->data[i]); ++ ++ data->capsense = capsense; ++ data->phys = phys; ++ data->name = entry->name; ++ data->command = CAP_CS(entry->command, phys->port, phys->bit); ++ data->hex = 0; ++ ++ ent = create_proc_entry(entry->name, S_IFREG|S_IRUSR|S_IWUSR, subdir); ++ if ( ent == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/keys/%s/%s\n", phys->name, entry->name); ++ continue; ++ } ++ ++ ent->data = data; ++ ent->read_proc = capsense_proc_read; ++ ent->write_proc = capsense_proc_write; ++ } ++ } ++ ++ return 0; ++} diff --git a/recipes/linux/linux-2.6.31/boc01/013-091015-lcd.patch b/recipes/linux/linux-2.6.31/boc01/013-091015-lcd.patch new file mode 100644 index 0000000000..2bb2cfc4b0 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/013-091015-lcd.patch @@ -0,0 +1,1070 @@ +Index: linux-2.6.31/drivers/video/Kconfig +=================================================================== +--- linux-2.6.31.orig/drivers/video/Kconfig 2009-10-19 16:31:51.000000000 +0200 ++++ linux-2.6.31/drivers/video/Kconfig 2009-10-19 16:53:39.000000000 +0200 +@@ -491,6 +491,28 @@ + this driver, say Y or M; otherwise say N. You must specify the + GPIO IO address to be used for setting control and data. + ++config FB_NT7506 ++ tristate "Novatek 7506 LCD board support" ++ depends on FB ++ select FB_SYS_FILLRECT ++ select FB_SYS_COPYAREA ++ select FB_SYS_IMAGEBLIT ++ select FB_SYS_FOPS ++ select FB_BACKLIGHT ++ select LCD_CLASS_DEVICE ++ help ++ This is the frame buffer device driver for the Novatek 7506 Monochrome/Grayscale LCD board. ++ The board is based on the NT7506 LCD controller. ++ ++config FB_NT7506_GRAYSCALE ++ bool "Novatek 7506 Grayscale mode" ++ depends on FB_NT7506 ++ default y ++ help ++ This option switches the Monochrome/Grayscale mode for the Novatek 7506 LCD board. ++ Say Y to enable 4-levels Grayscale mode (2 bpp). ++ Say N to enable Monochrome mode (1 bpp). ++ + config FB_ATARI + bool "Atari native chipset support" + depends on (FB = y) && ATARI +Index: linux-2.6.31/drivers/video/Makefile +=================================================================== +--- linux-2.6.31.orig/drivers/video/Makefile 2009-10-19 16:31:51.000000000 +0200 ++++ linux-2.6.31/drivers/video/Makefile 2009-10-19 16:53:39.000000000 +0200 +@@ -30,6 +30,7 @@ + # Hardware specific drivers go first + obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o + obj-$(CONFIG_FB_ARC) += arcfb.o ++obj-$(CONFIG_FB_NT7506) += nt7506fb.o + obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o + obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o + obj-$(CONFIG_FB_PM2) += pm2fb.o +Index: linux-2.6.31/drivers/video/nt7506fb.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.31/drivers/video/nt7506fb.c 2009-10-19 16:53:39.000000000 +0200 +@@ -0,0 +1,899 @@ ++/* ++ * linux/drivers/video/nt7506fb.c -- FB driver for NT7506 monochrome LCD board ++ * ++ * Copyright (C) 2008, CenoSYS (www.cenosys.com). ++ * Copyright (C) 2009, Bollore telecom (www.bolloretelecom.eu). ++ * ++ * Alexandre Coffignal <alexandre.coffignal@cenosys.com> ++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr> ++ * Jeremy Laine <jeremy.laine@bolloretelecom.eu> ++ * ++ * This file is subject to the terms and conditions of the GNU General Public ++ * License. See the file COPYING in the main directory of this archive for ++ * more details. ++ * ++ * Layout is based on arcfb.c by Jaya Kumar ++ * ++ * This driver was written to be used with the Novatek NT7506 LCD board. ++ * ++ * Novatek uses a set of NT7506 chips that control individual 128x128 LCD ++ * matrices. The interface between the board and the host is TTL based GPIO. ++ * ++ * General notes: ++ * - User must set tuhold. It's in microseconds. According to the 108 spec, ++ * the hold time is supposed to be at least 1 microsecond. ++ * ++ */ ++ ++#include <linux/module.h> ++#include <linux/kernel.h> ++#include <linux/errno.h> ++#include <linux/string.h> ++#include <linux/mm.h> ++#include <linux/vmalloc.h> ++#include <linux/delay.h> ++#include <linux/timer.h> ++#include <linux/fb.h> ++#include <linux/init.h> ++#include <linux/platform_device.h> ++#include <linux/backlight.h> ++#include <linux/lcd.h> ++ ++#include <linux/uaccess.h> ++ ++#define DRIVER_NAME "nt7506fb" ++ ++//NT7506 Hardware ++#define LCD_RST 0x08 ++#define LCD_RSTN 0x00 ++#define LCD_BCKLIGH 0x04 ++#define LCD_BCKLIGHN 0x00 ++#define LCD_RS 0x02 ++#define LCD_RSN 0x00 ++#define LCD_ERD 0x01 ++#define LCD_ERDN 0x00 ++ ++//Base address ++#define LCD_BASE 0xf0000000 ++#define LCD_SIZE 0x2 ++ ++//NT7506 Instructions ++#define NT_ICON 0xA2 ++#define NT_PAGE_ADDR 0xB0 ++#define NT_COL_MSB 0x10 ++#define NT_COL_LSB 0x00 ++#define NT_DISP 0xAE ++#define NT_START_LINE 0x40 ++#define NT_COM0 0x44 ++#define NT_DUTY 0x48 ++#define DUTY_1_128 0x80 ++#define NT_REV_DISP 0xA6 ++#define NT_POWER 0x28 ++#define VC 0x04 ++#define VR 0x02 ++#define VF 0x01 ++#define NT_DCDC 0x64 ++#define TIME6 0x03 ++#define NT_REG_RES 0x20 ++#define RES_7_2 0x07 ++#define NT_ELEC_VOL 0x81 ++#define NT_BIAS 0x50 ++#define BIAS_1_11 0x06 ++#define NT_ADC_NOR 0xA0 ++#define NT_ADC_REV 0xA1 ++#define NT_SHL_NOR 0xC0 ++#define NT_SHL_REV 0xC8 ++#define NT_SET_PWRSAVE 0xA8 ++#define NT_OSC 0xAB ++#define NT_RLS_PWRSAVE 0xE1 ++#define NT_RESET 0xE2 ++#define NT_DATA_DIR 0xe8 ++#define NT_FRC_PWM 0x90 ++#define PWM15 0x03 ++ ++#define ON 0x01 ++#define OFF 0x00 ++ ++#define NT_GRAY_SCALE 0x88 ++#define GRAY_WHITE_AB 0 ++#define GRAY_WHITE_CD 1 ++#define GRAY_LIGHT_AB 2 ++#define GRAY_LIGHT_CD 3 ++#define GRAY_DARK_AB 4 ++#define GRAY_DARK_CD 5 ++#define GRAY_BLACK_AB 6 ++#define GRAY_BLACK_CD 7 ++ ++#define GRAY_INDEX_WHITE GRAY_WHITE_AB ++#define GRAY_INDEX_LIGHT GRAY_LIGHT_AB ++#define GRAY_INDEX_DARK GRAY_DARK_AB ++#define GRAY_INDEX_BLACK GRAY_BLACK_AB ++ ++#define GRAY_LEVEL_WHITE 0 ++#define GRAY_LEVEL_LIGHT 5 ++#define GRAY_LEVEL_DARK 10 ++#define GRAY_LEVEL_BLACK 15 ++#define GRAY_LEVEL_MAX 15 ++ ++#define GRAY_VALUE(level) (((level)<<4)+(level)) ++ ++// Geometric settings ++#define LCD_WIDTH 128 ++#define LCD_HEIGHT 128 ++#define LCD_NPAGES (LCD_HEIGHT/8) /* LCD pages of 8 vertical pixels */ ++ ++#define DEFAULT_CONTRAST 20 ++#define DEFAULT_FPS 10 ++ ++static struct resource *lcd_mem = NULL; ++static void * _lcd_io = NULL; ++static unsigned long tuhold; ++static char _backlight = 1; ++ ++struct nt7506fb_par { ++ atomic_t ref_count; ++ struct fb_info *info; ++ struct lcd_device *lcd_dev; ++ int power; ++ int contrast; ++ ++ /* refresh rate and timer */ ++ unsigned int framerate; ++ struct timer_list timer; ++}; ++ ++static struct fb_fix_screeninfo nt7506fb_fix __initdata = { ++ .id = DRIVER_NAME, ++ .type = FB_TYPE_PACKED_PIXELS, ++#ifdef CONFIG_FB_NT7506_GRAYSCALE ++ .visual = FB_VISUAL_STATIC_PSEUDOCOLOR, ++ .line_length = LCD_WIDTH / 4, ++#else ++ .visual = FB_VISUAL_MONO01, ++ .line_length = LCD_WIDTH / 8, ++#endif ++ .xpanstep = 1, ++ .ypanstep = 1, ++ .ywrapstep = 0, ++ .accel = FB_ACCEL_NONE, ++}; ++ ++static struct fb_var_screeninfo nt7506fb_var __initdata = { ++ .xres = LCD_WIDTH, ++ .yres = LCD_HEIGHT, ++ .xres_virtual = LCD_WIDTH, ++ .yres_virtual = LCD_HEIGHT, ++ .nonstd = 1, ++#ifdef CONFIG_FB_NT7506_GRAYSCALE ++ .bits_per_pixel = 2, ++ .grayscale = 1, ++ .red = { 0, 2, 0 }, ++ .green = { 0, 2, 0 }, ++ .blue = { 0, 2, 0 }, ++ .transp = { 0, 0, 0 }, ++#else ++ .bits_per_pixel = 1, ++#endif ++}; ++ ++ ++/* ++ * Low-level i/o primitives ++ */ ++ ++static void NT7506_init_lcd(char ael); ++ ++static void NT7506_writeb_ctl(unsigned char value) ++{ ++ unsigned short svalue; ++ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN; ++ ++ svalue=value<<8 | LCD_RSN | LCD_RST | LCD_ERDN | bl; ++ iowrite16(svalue, _lcd_io); ++ udelay(tuhold); ++ //The data on DB0/7 are latched at the falling edge of the E_RD signal ++ svalue=value<<8 | LCD_RSN | LCD_RST | LCD_ERD | bl; ++ iowrite16(svalue, _lcd_io); ++ udelay(tuhold); ++} ++ ++static void NT7506_writeb_data(unsigned char value) ++{ ++ unsigned short svalue; ++ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN; ++ ++ svalue=value<<8|LCD_RS |LCD_RST | LCD_ERD | bl ; ++ iowrite16(svalue, _lcd_io); ++ udelay(tuhold); ++ //The data on DB0/7 are latched at the falling edge of the E_RD signal ++ svalue=value<<8|LCD_RS |LCD_RST | LCD_ERDN | bl; ++ iowrite16(svalue, _lcd_io); ++ udelay(tuhold); ++} ++ ++static void NT7506_set_start_line(unsigned char y) ++{ ++ NT7506_writeb_ctl(NT_START_LINE); ++ NT7506_writeb_ctl(y); ++} ++ ++static void NT7506_set_yaddr(unsigned char y) ++{ ++ NT7506_writeb_ctl(NT_PAGE_ADDR+y); ++} ++ ++static void NT7506_set_xaddr(unsigned char x) ++{ ++ NT7506_writeb_ctl(NT_COL_MSB | (x >> 0x04)); //Send high nibble ++ NT7506_writeb_ctl(NT_COL_LSB | (x & 0x0F) ); //Send low nibble ++} ++ ++ ++/* ++ * LCD device management ++ */ ++ ++static int ++nt7506fb_lcd_get_contrast(struct lcd_device *lcd_dev) ++{ ++ struct nt7506fb_par *par = lcd_get_data(lcd_dev); ++ return par->contrast; ++} ++ ++static int ++nt7506fb_lcd_set_contrast(struct lcd_device *lcd_dev, int contrast) ++{ ++ struct nt7506fb_par *par = lcd_get_data(lcd_dev); ++ ++ par->contrast = contrast; ++ NT7506_writeb_ctl(NT_ELEC_VOL); ++ NT7506_writeb_ctl(par->contrast); ++ ++ return 0; ++} ++ ++static struct lcd_ops nt7506fb_lcd_ops = { ++ .get_contrast = nt7506fb_lcd_get_contrast, ++ .set_contrast = nt7506fb_lcd_set_contrast, ++}; ++ ++static void ++nt7506fb_lcd_init(struct nt7506fb_par *par) ++{ ++ struct fb_info *info = par->info; ++ struct lcd_device *lcd_dev; ++ ++ lcd_dev = lcd_device_register("nt7506fb-lcd", info->dev, par, &nt7506fb_lcd_ops); ++ if (IS_ERR(lcd_dev)) { ++ par->lcd_dev = NULL; ++ dev_warn(info->device, "LCD device registration failed\n"); ++ return; ++ } ++ ++ par->lcd_dev = lcd_dev; ++ lcd_dev->props.max_contrast = 255; ++ par->contrast = DEFAULT_CONTRAST; ++ dev_info(info->device, "LCD contrast management initialized\n"); ++} ++ ++static void ++nt7506fb_lcd_exit(struct nt7506fb_par *par) ++{ ++ if ( par->lcd_dev ) { ++ lcd_device_unregister(par->lcd_dev); ++ par->lcd_dev = NULL; ++ } ++} ++ ++ ++/* ++ * Backlight device management ++ */ ++static void nt7506fb_start_timer(struct nt7506fb_par *par); ++ ++static int ++nt7506fb_bl_update_status(struct backlight_device *bd) ++{ ++ struct nt7506fb_par *par = bl_get_data(bd); ++ struct fb_info *info = par->info; ++ int power_on = (bd->props.power != FB_BLANK_POWERDOWN); ++ ++ _backlight = bd->props.brightness & power_on; ++ ++ dev_info(info->device, "backlight=%d power_on=%d\n", _backlight, power_on); ++ ++ if ( bd->props.power != par->power ) { ++ par->power = bd->props.power; ++ ++ if ( power_on ) { ++ /* Power LCD device on */ ++ NT7506_writeb_ctl(NT_SET_PWRSAVE|OFF); ++ NT7506_writeb_ctl(NT_RLS_PWRSAVE); ++ ++ /* Restart refresh timer */ ++ if ( ! timer_pending(&par->timer) ) ++ nt7506fb_start_timer(par); ++ } ++ else { ++ /* Throttle refresh timer */ ++ del_timer(&par->timer); ++ ++ /* Put LCD device in power save mode */ ++ NT7506_writeb_ctl(NT_SET_PWRSAVE|ON); ++ NT7506_writeb_ctl(NT_RLS_PWRSAVE); ++ } ++ } ++ ++ return 0; ++} ++ ++static int ++nt7506fb_bl_get_brightness(struct backlight_device *bd) ++{ ++ return bd->props.brightness; ++} ++ ++static struct backlight_ops nt7506fb_bl_ops = { ++ .get_brightness = nt7506fb_bl_get_brightness, ++ .update_status = nt7506fb_bl_update_status, ++}; ++ ++static void ++nt7506fb_bl_init(struct nt7506fb_par *par) ++{ ++ struct fb_info *info = par->info; ++ struct backlight_device *bd; ++ ++ bd = backlight_device_register("nt7506fb-bl", info->dev, par, &nt7506fb_bl_ops); ++ if (IS_ERR(bd)) { ++ info->bl_dev = NULL; ++ dev_warn(info->device, "Backlight device registration failed\n"); ++ return; ++ } ++ ++ info->bl_dev = bd; ++ bd->props.max_brightness = 1; ++ bd->props.power = FB_BLANK_UNBLANK; ++ bd->props.brightness = 1; ++ par->power = bd->props.power; ++ ++ nt7506fb_bl_update_status(bd); ++ ++ dev_info(info->device, "Backlight control initialized\n"); ++} ++ ++static void ++nt7506fb_bl_exit(struct fb_info *info) ++{ ++ if ( info->bl_dev ) { ++ backlight_device_unregister(info->bl_dev); ++ info->bl_dev = NULL; ++ } ++} ++ ++ ++/* ++ * Main frame buffer operations ++ */ ++ ++static int nt7506fb_open(struct fb_info *info, int user) ++{ ++ struct nt7506fb_par *par = info->par; ++ atomic_inc(&par->ref_count); ++ return 0; ++} ++ ++static int nt7506fb_release(struct fb_info *info, int user) ++{ ++ struct nt7506fb_par *par = info->par; ++ int count = atomic_read(&par->ref_count); ++ if (!count) ++ return -EINVAL; ++ atomic_dec(&par->ref_count); ++ return 0; ++} ++ ++static int nt7506fb_pan_display(struct fb_var_screeninfo *var, ++ struct fb_info *info) ++{ ++ if ( (var->vmode & FB_VMODE_YWRAP) && ++ (var->yoffset < LCD_HEIGHT) && ++ (info->var.yres <= LCD_HEIGHT) ) { ++ NT7506_set_start_line(var->yoffset); ++ info->var.yoffset = var->yoffset; ++ return 0; ++ } ++ ++ return -EINVAL; ++} ++ ++static void nt7506fb_lcd_update(struct nt7506fb_par *par) ++{ ++ unsigned char *src = (unsigned char __force *) par->info->screen_base; ++ int line_length = par->info->fix.line_length; ++ int page, x, bit; ++ unsigned char plane1, plane2; ++ unsigned char *ptr; ++ unsigned char xshift; ++ ++ if ( par->info->var.bits_per_pixel == 1 ) { ++ ++ for (page = 0; page < LCD_NPAGES; page++) { ++ NT7506_set_yaddr(page); ++ NT7506_set_xaddr(0); ++ for (x = 0; x < LCD_WIDTH; x++) { ++ xshift = 7 - (x % 8); ++ plane1 = plane2 = 0; ++ ptr = src + (page * 8 * line_length + x / 8); ++ for (bit = 0; bit < 8; ptr += line_length, bit++) { ++ plane1 |= (((*ptr) >> xshift) & 1) << bit; ++ } ++ NT7506_writeb_data(plane1); ++ NT7506_writeb_data(plane2); ++ } ++ } ++ ++ } else { ++ ++ for (page = 0; page < LCD_NPAGES; page++) { ++ NT7506_set_yaddr(page); ++ NT7506_set_xaddr(0); ++ for (x = 0; x < LCD_WIDTH; x++) { ++ xshift = (3 - (x % 4)) << 1; ++ plane1 = plane2 = 0; ++ ptr = src + (page * 8 * line_length + x / 4); ++ for (bit = 0; bit < 8; ptr += line_length, bit++) { ++ plane1 |= (((*ptr) >> (xshift + 1)) & 1) << bit; ++ plane2 |= (((*ptr) >> xshift) & 1) << bit; ++ } ++ NT7506_writeb_data(plane1); ++ NT7506_writeb_data(plane2); ++ } ++ } ++ ++ } ++} ++ ++static void nt7506fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect) ++{ ++ sys_fillrect(info, rect); ++} ++ ++static void nt7506fb_copyarea(struct fb_info *info, ++ const struct fb_copyarea *area) ++{ ++ sys_copyarea(info, area); ++} ++ ++ ++static void nt7506fb_imageblit(struct fb_info *info, const struct fb_image *image) ++{ ++ sys_imageblit(info, image); ++} ++ ++ ++/* ++ * this is the access path from userspace. they can seek and write to ++ * the fb. it's inefficient for them to do anything less than 128*8 ++ * writes since we update the lcd in each write() anyway. ++ */ ++static ssize_t nt7506fb_write(struct fb_info *info, const char __user *buf, ++ size_t count, loff_t *ppos) ++{ ++ unsigned long p = *ppos; ++ unsigned int fbmemlength; ++ int err = 0; ++ ++ fbmemlength = (info->var.xres * info->var.yres) / (8 / info->var.bits_per_pixel); ++ ++ if ( p > fbmemlength ) { ++ return -EFBIG; ++ } ++ ++ if ( (count + p) > fbmemlength ) { ++ count = fbmemlength - p; ++ err = -ENOSPC; ++ } ++ ++ if ( count ) { ++ char *base_addr = (char __force *) info->screen_base; ++ if ( copy_from_user(base_addr + p, buf, count) ) ++ err = -EFAULT; ++ } ++ ++ if ( !err ) ++ *ppos += count; ++ ++ return err ? err : count; ++} ++ ++ ++static int nt7506fb_mmap(struct fb_info *info, struct vm_area_struct *vma) ++{ ++ unsigned long off; ++ unsigned long start; ++ u32 len; ++ ++ if (vma->vm_end - vma->vm_start == 0) ++ return 0; ++ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT)) ++ return -EINVAL; ++ off = vma->vm_pgoff << PAGE_SHIFT; ++ start = info->fix.smem_start; ++ len = info->fix.smem_len; ++ if (off >= len) ++ { ++ return -EINVAL; ++ ++ } ++ if ((vma->vm_end - vma->vm_start + off) > len) ++ { ++ return -EINVAL; ++ } ++ off += start; ++ vma->vm_pgoff = off >> PAGE_SHIFT; ++ if (remap_pfn_range(vma, vma->vm_start, virt_to_phys((void *)info->fix.smem_start) >> PAGE_SHIFT, ++ info->fix.smem_len, vma->vm_page_prot)) ++ ++ { ++ return -EAGAIN; ++ } ++ return 0; ++ ++} ++ ++static struct fb_ops nt7506fb_ops = { ++ .owner = THIS_MODULE, ++ .fb_open = nt7506fb_open, ++ .fb_read = fb_sys_read, ++ .fb_write = nt7506fb_write, ++ .fb_release = nt7506fb_release, ++ .fb_pan_display = nt7506fb_pan_display, ++ .fb_fillrect = nt7506fb_fillrect, ++ .fb_copyarea = nt7506fb_copyarea, ++ .fb_imageblit = nt7506fb_imageblit, ++ .fb_mmap = nt7506fb_mmap, ++}; ++ ++static void ++nt7506fb_start_timer(struct nt7506fb_par *par) ++{ ++ par->timer.expires = jiffies + (HZ/par->framerate); ++ add_timer(&par->timer); ++} ++ ++static void ++nt7506fb_refresh(unsigned long data) ++{ ++ struct nt7506fb_par *par = (struct nt7506fb_par *)data; ++ nt7506fb_lcd_update(par); ++ nt7506fb_start_timer(par); ++} ++ ++/* ++ * Grayscale levels adjustment ++ */ ++ ++#ifdef CONFIG_FB_NT7506_GRAYSCALE ++ ++static void nt7506fb_set_gray_level(unsigned char index, unsigned char level) ++{ ++ NT7506_writeb_ctl(NT_GRAY_SCALE | index); ++ NT7506_writeb_ctl(GRAY_VALUE(level)); ++ NT7506_writeb_ctl(NT_GRAY_SCALE | (index+1)); ++ NT7506_writeb_ctl(GRAY_VALUE(level)); ++} ++ ++#ifdef CONFIG_PROC_FS ++#include "nt7506fb-procfs.c" ++#endif ++ ++#endif ++ ++/* ++ * sysfs attributes ++ */ ++ ++static ssize_t show_framerate(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); ++ struct nt7506fb_par *par = info->par; ++ return snprintf(buf, PAGE_SIZE, "%u\n", par->framerate); ++} ++ ++static ssize_t store_framerate(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t count) ++{ ++ struct fb_info *info = platform_get_drvdata(to_platform_device(dev)); ++ struct nt7506fb_par *par = info->par; ++ unsigned int framerate; ++ if (sscanf(buf, "%u", &framerate) == 1 && framerate > 0) ++ { ++ par->framerate = framerate; ++ return count; ++ } ++ return -EINVAL; ++} ++ ++static DEVICE_ATTR(framerate, S_IRUGO | S_IWUSR, show_framerate, store_framerate); ++ ++static struct attribute *nt7506fb_attributes[] = { ++ &dev_attr_framerate.attr, ++ NULL, ++}; ++ ++static struct attribute_group nt7506fb_group = { ++ .name = NULL, ++ .attrs = nt7506fb_attributes, ++}; ++ ++ ++/* ++ * Device driver intialisation ++ */ ++ ++static int __init ++nt7506fb_probe(struct platform_device *pdev) ++{ ++ int retval = -ENOMEM; ++ struct device *dev = &pdev->dev; ++ struct fb_info *info; ++ struct nt7506fb_par *par; ++ static unsigned char *videomemory; ++ static int videomemorysize; ++ int i; ++ ++ NT7506_init_lcd(DEFAULT_CONTRAST); ++ ++ videomemorysize = LCD_WIDTH * LCD_HEIGHT / 4; ++ ++ if (!(videomemory = kmalloc(videomemorysize, GFP_ATOMIC))) ++ goto failout; ++ memset(videomemory, 0, videomemorysize); ++ ++ info = framebuffer_alloc(sizeof(struct nt7506fb_par), dev); ++ ++ if (!info) ++ goto out_alloc; ++ info->screen_base = (char __iomem *)videomemory; ++ info->fbops = &nt7506fb_ops; ++ ++ info->var = nt7506fb_var; ++ info->fix = nt7506fb_fix; ++ info->fix.smem_start = (unsigned long)videomemory; ++ info->fix.smem_len = videomemorysize; ++ ++ par = info->par; ++ par->info = info; ++ par->framerate = DEFAULT_FPS; ++ ++ info->flags = FBINFO_FLAG_DEFAULT; ++ platform_set_drvdata(pdev, info); ++ ++#ifdef CONFIG_FB_NT7506_GRAYSCALE ++ /* Allocate cmap */ ++ retval = fb_alloc_cmap(&info->cmap, 4, 0); ++ if (retval < 0) { ++ dev_err(dev, "Failed to allocate colormap\n"); ++ goto out_register; ++ } ++ ++ /* Set cmap */ ++ for (i = 0; i < 4; i++) ++ info->cmap.red[i] = (((4*i)+1)*(0xFFFF))/16; ++ memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*4); ++ memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*4); ++#endif ++ ++ /* Register framebuffer */ ++ retval = register_framebuffer(info); ++ if (retval < 0) ++ goto out_register; ++ ++ setup_timer(&par->timer, nt7506fb_refresh, (unsigned long) par); ++ ++ dev_info(dev, ++ "nt7506 frame buffer device, using %dK of video memory\n", ++ videomemorysize >> 10); ++ ++ /* Create procfs entries for grayscale levels adjustment */ ++#ifdef CONFIG_PROC_FS ++#ifdef CONFIG_FB_NT7506_GRAYSCALE ++ nt7506fb_proc_init(par); ++#endif ++#endif ++ ++ /* Initialize backlight and contrast control (do not abort driver if it fails) */ ++ nt7506fb_bl_init(par); ++ nt7506fb_lcd_init(par); ++ ++ /* Register sysfs hooks */ ++ retval = sysfs_create_group(&dev->kobj, &nt7506fb_group); ++ if (retval != 0) ++ dev_warn(dev, "Failed to register attributes\n"); ++ ++ nt7506fb_start_timer(par); ++ ++ return 0; ++ ++out_register: ++ framebuffer_release(info); ++out_alloc: ++ vfree(videomemory); ++failout: ++ return retval; ++} ++ ++static int nt7506fb_remove(struct platform_device *pdev) ++{ ++ struct fb_info *info = platform_get_drvdata(pdev); ++ struct nt7506fb_par *par = info->par; ++ ++ del_timer(&par->timer); ++ ++ if (info) { ++ sysfs_remove_group(&pdev->dev.kobj, &nt7506fb_group); ++ nt7506fb_lcd_exit(info->par); ++ nt7506fb_bl_exit(info); ++ unregister_framebuffer(info); ++ vfree((void __force *)info->screen_base); ++ framebuffer_release(info); ++ } ++ return 0; ++} ++ ++#ifdef CONFIG_PM ++static int nt7506fb_suspend(struct platform_device *pdev, pm_message_t state) ++{ ++ struct fb_info *info = platform_get_drvdata(pdev); ++ ++ dev_info(info->device, "suspend\n"); ++ ++ info->bl_dev->props.power = FB_BLANK_POWERDOWN; ++ nt7506fb_bl_update_status(info->bl_dev); ++ ++ return 0; ++} ++ ++static int nt7506fb_resume(struct platform_device *pdev) ++{ ++ struct fb_info *info = platform_get_drvdata(pdev); ++ ++ dev_info(info->device, "resume\n"); ++ ++ info->bl_dev->props.power = FB_BLANK_UNBLANK; ++ nt7506fb_bl_update_status(info->bl_dev); ++ ++ return 0; ++} ++#else ++#define nt7506fb_suspend NULL ++#define nt7506fb_resume NULL ++#endif ++ ++ ++static struct platform_driver nt7506fb_driver = { ++ .probe = nt7506fb_probe, ++ .remove = nt7506fb_remove, ++ .suspend = nt7506fb_suspend, ++ .resume = nt7506fb_resume, ++ .driver = { ++ .name = DRIVER_NAME, ++ }, ++}; ++ ++static struct platform_device *nt7506fb_device; ++ ++static int __init nt7506fb_init(void) ++{ ++ int ret; ++ ++ if (!(lcd_mem = request_mem_region(LCD_BASE, LCD_SIZE, DRIVER_NAME))) ++ return -ENOMEM; ++ ++ if (!(_lcd_io = ioremap(LCD_BASE, LCD_SIZE))) ++ { ++ release_mem_region(LCD_BASE, LCD_SIZE); ++ lcd_mem = NULL; ++ return -ENOMEM; ++ } ++ ret = platform_driver_register(&nt7506fb_driver); ++ ++ if (!ret) { ++ nt7506fb_device = platform_device_alloc(DRIVER_NAME, 0); ++ if (nt7506fb_device) ++ { ++ ret = platform_device_add(nt7506fb_device); ++ } ++ else ++ { ++ ret = -ENOMEM; ++ } ++ if (ret) ++ { ++ platform_device_put(nt7506fb_device); ++ platform_driver_unregister(&nt7506fb_driver); ++ } ++ ++ } ++ ++ return ret; ++} ++ ++static void NT7506_init_lcd(char ael) ++{ ++ /* this resets the lcd*/ ++ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN; ++ ++ iowrite16(LCD_RSTN | LCD_ERD | bl, _lcd_io); ++ udelay(100); ++ iowrite16(LCD_RST| LCD_ERD | bl, _lcd_io); ++ udelay(200); ++ /* Soft reset*/ ++ NT7506_writeb_ctl(NT_RESET); ++ /* Disable ICON display*/ ++ NT7506_writeb_ctl(NT_ICON|OFF); ++ /* Sets the duty ratio 1/128*/ ++ NT7506_writeb_ctl(NT_DUTY); NT7506_writeb_ctl(DUTY_1_128); ++ /* Sets reverse direction between RAM column address and segment driver*/ ++ NT7506_writeb_ctl(NT_ADC_REV); ++ NT7506_writeb_ctl(NT_SHL_NOR); ++ /* Enales the built in Oscillator circuit.*/ ++ NT7506_writeb_ctl(NT_OSC); ++ /* Set Initial row to 0*/ ++ NT7506_writeb_ctl(NT_COM0); NT7506_writeb_ctl(0); ++ /* Sets DC-DC*/ ++ NT7506_writeb_ctl(NT_DCDC|TIME6); ++ /* Selects resistance ratio of the internal resistor*/ ++ NT7506_writeb_ctl(NT_REG_RES|RES_7_2); ++ /* set Reference Voltage mode*/ ++ NT7506_writeb_ctl(NT_ELEC_VOL); NT7506_writeb_ctl(ael); ++ /* Selects LCD bias ratio*/ ++ NT7506_writeb_ctl(NT_BIAS|BIAS_1_11); ++ ++ NT7506_writeb_ctl(NT_DATA_DIR); NT7506_writeb_ctl(0); ++ NT7506_writeb_ctl(NT_FRC_PWM|PWM15); ++ ++#ifdef CONFIG_FB_NT7506_GRAYSCALE ++ /* Feed grayscale palette */ ++ nt7506fb_set_gray_level(GRAY_INDEX_WHITE, GRAY_LEVEL_WHITE); ++ nt7506fb_set_gray_level(GRAY_INDEX_LIGHT, GRAY_LEVEL_LIGHT); ++ nt7506fb_set_gray_level(GRAY_INDEX_DARK, GRAY_LEVEL_DARK); ++ nt7506fb_set_gray_level(GRAY_INDEX_BLACK, GRAY_LEVEL_BLACK); ++#endif ++ ++ /* Select power circuit functions */ ++ NT7506_writeb_ctl(NT_POWER|VC); ++ udelay(5000); ++ NT7506_writeb_ctl(NT_POWER|VC|VR); ++ udelay(5000); ++ NT7506_writeb_ctl(NT_POWER|VC|VR|VF); ++ udelay(5000); ++ /* Reverses the display status on LCD panel */ ++ NT7506_writeb_ctl(NT_REV_DISP|OFF); ++ /* Forces the whole LCD points to be turned on regardless of the contents of the display data RAM*/ ++ NT7506_writeb_ctl(NT_DISP|ON); ++ /* Set Initial Start Line Address */ ++ NT7506_writeb_ctl(NT_START_LINE); NT7506_writeb_ctl(0x00); ++} ++ ++static void __exit nt7506fb_exit(void) ++{ ++ if (lcd_mem) ++ release_mem_region(LCD_BASE, LCD_SIZE); ++ lcd_mem = NULL; ++ platform_device_unregister(nt7506fb_device); ++ platform_driver_unregister(&nt7506fb_driver); ++} ++ ++module_param(tuhold, ulong, 0); ++MODULE_PARM_DESC(tuhold, "Time to hold between strobing data to NT7506 board"); ++ ++module_init(nt7506fb_init); ++module_exit(nt7506fb_exit); ++ ++MODULE_DESCRIPTION("fbdev driver for Novatek NT7506 monochrome LCD board"); ++MODULE_AUTHOR("Alexandre Coffignal"); ++MODULE_LICENSE("GPL"); ++ +Index: linux-2.6.31/drivers/video/nt7506fb-procfs.c +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ linux-2.6.31/drivers/video/nt7506fb-procfs.c 2009-10-19 16:53:53.000000000 +0200 +@@ -0,0 +1,116 @@ ++/* ++ * FB driver for NT7506 monochrome/grayscale LCD board ++ * Device setup using procfs ++ * ++ * Copyright (C) 2009, Goobie (www.goobie.fr). ++ * ++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr> ++ * ++ * This software program is licensed subject to the GNU General Public License ++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html ++ */ ++ ++#include <linux/proc_fs.h> ++#include <linux/uaccess.h> ++ ++struct nt7506fb_proc_entry { ++ char *name; ++ unsigned char index; ++ unsigned char level; ++ struct nt7506fb_par *par; ++}; ++ ++static struct nt7506fb_proc_entry nt7506fb_proc_entries[] = { ++ { "white", GRAY_INDEX_WHITE, GRAY_LEVEL_WHITE }, ++ { "light", GRAY_INDEX_LIGHT, GRAY_LEVEL_LIGHT }, ++ { "dark", GRAY_INDEX_DARK, GRAY_LEVEL_DARK }, ++ { "black", GRAY_INDEX_BLACK, GRAY_LEVEL_BLACK }, ++}; ++ ++static int nt7506fb_proc_read(char *page, char **start, off_t off, int count, ++ int *eof, void *data) ++{ ++ struct nt7506fb_proc_entry *entry = data; ++ int len; ++ ++ len = sprintf(page, "%d\n", entry->level); ++ ++ len -= off; ++ if ( len < count ) { ++ *eof = 1; ++ if ( len <= 0 ) ++ return 0; ++ } else { ++ len = count; ++ } ++ ++ *start = page + off; ++ ++ return len; ++} ++ ++ ++static int nt7506fb_proc_write(struct file *file, const char *buf, ++ unsigned long count, void *data) ++{ ++ struct nt7506fb_proc_entry *entry = data; ++ char lbuf[count+1]; ++ ++ /* Only root can do this */ ++ if ( !capable(CAP_SYS_ADMIN) ) ++ return -EACCES; ++ ++ memset(lbuf, 0, sizeof(lbuf)); ++ ++ if (copy_from_user(lbuf, buf, count)) ++ return -EFAULT; ++ ++ if ( sscanf(lbuf, "%hhi", &entry->level) == 1 ) { ++ if ( entry->level > GRAY_LEVEL_MAX ) ++ entry->level = GRAY_LEVEL_MAX; ++ ++ /* Set grayscale palette entry */ ++ nt7506fb_set_gray_level(entry->index, entry->level); ++ } ++ else { ++ printk(KERN_INFO DRIVER_NAME ": [%s] Syntax error in expression\n", entry->name); ++ return -EINVAL; ++ } ++ ++ return count; ++} ++ ++ ++static int nt7506fb_proc_init(struct nt7506fb_par *par) ++{ ++ struct proc_dir_entry *root; ++ struct proc_dir_entry *ent; ++ int i; ++ ++ /* Create nt7506fb proc directory */ ++ printk(KERN_INFO DRIVER_NAME ": Creating setup entries in /proc/" DRIVER_NAME "/\n"); ++ ++ root = proc_mkdir(DRIVER_NAME, NULL); ++ if ( root == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "\n"); ++ return -1; ++ } ++ ++ /* Create gray level entries */ ++ for (i = 0; i < ARRAY_SIZE(nt7506fb_proc_entries); i++) { ++ struct nt7506fb_proc_entry *entry = &nt7506fb_proc_entries[i]; ++ ++ entry->par = par; ++ ++ ent = create_proc_entry(entry->name, S_IFREG|S_IWUSR, root); ++ if ( ent == NULL ) { ++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/%s\n", entry->name); ++ return -1; ++ } ++ ++ ent->data = entry; ++ ent->write_proc = nt7506fb_proc_write; ++ ent->read_proc = nt7506fb_proc_read; ++ } ++ return 0; ++} diff --git a/recipes/linux/linux-2.6.31/boc01/boc01.dts b/recipes/linux/linux-2.6.31/boc01/boc01.dts new file mode 100644 index 0000000000..d18fd7fd71 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/boc01.dts @@ -0,0 +1,348 @@ +/* + * Bolloré telecom CPE v01 Device Tree Source + * + * Copyright 2005, 2006, 2007 Freescale Semiconductor Inc. + * Copyright 2008, 2009 Bolloré telecom. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC8313ERDB"; + compatible = "MPC8313ERDB", "MPC831xRDB", "MPC83xxRDB"; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + ethernet1 = &enet1; + serial0 = &serial0; + pci0 = &pci0; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,8313@0 { + device_type = "cpu"; + reg = <0x0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <16384>; + i-cache-size = <16384>; + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory { + device_type = "memory"; + reg = <0x00000000 0x08000000>; // 128MB at 0 + }; + + localbus@e0005000 { + #address-cells = <2>; + #size-cells = <1>; + compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus"; + reg = <0xe0005000 0x1000>; + interrupts = <77 0x8>; + interrupt-parent = <&ipic>; + + // CS0 and CS1 are swapped when + // booting from nand, but the + // addresses are the same. + ranges = <0x0 0x0 0xfe000000 0x00800000 + 0x1 0x0 0xe2800000 0x00008000 + 0x2 0x0 0xf0000000 0x00020000 + 0x3 0x0 0xfa000000 0x00008000>; + + flash@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x800000>; + bank-width = <2>; + device-width = <1>; + }; + + nand@1,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8313-fcm-nand", + "fsl,elbc-fcm-nand"; + reg = <0x1 0x0 0x2000>; + + kernel@0 { + reg = <0x0 0x400000>; + read-only; + }; + + fs@400000 { + reg = <0x400000 0x4000000>; + }; + + appli@4400000 { + reg = <0x4400000 0x3c00000>; + }; + }; + }; + + soc8313@e0000000 { + #address-cells = <1>; + #size-cells = <1>; + device_type = "soc"; + compatible = "simple-bus"; + ranges = <0x0 0xe0000000 0x00100000>; + reg = <0xe0000000 0x00000200>; + bus-frequency = <0>; + + wdt@200 { + device_type = "watchdog"; + compatible = "mpc83xx_wdt"; + reg = <0x200 0x100>; + }; + + sleep-nexus { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + sleep = <&pmc 0x03000000>; + ranges; + + i2c@3000 { + #address-cells = <1>; + #size-cells = <0>; + cell-index = <0>; + compatible = "fsl-i2c"; + reg = <0x3000 0x100>; + interrupts = <14 0x8>; + interrupt-parent = <&ipic>; + dfsrr; + rtc@6f { + compatible = "intersil,isl12024"; + reg = <0x6f>; + }; + dtt@49 { + compatible = "national,lm73"; + reg = <0x49>; + }; + at24@50 { + compatible = "at24,24c32"; + reg = <0x50>; + }; + at24@57 { + compatible = "at24,isl12024-eeprom"; + reg = <0x57>; + }; + }; + + crypto@30000 { + compatible = "fsl,sec2.2", "fsl,sec2.1", + "fsl,sec2.0"; + reg = <0x30000 0x10000>; + interrupts = <11 0x8>; + interrupt-parent = <&ipic>; + fsl,num-channels = <1>; + fsl,channel-fifo-len = <24>; + fsl,exec-units-mask = <0x4c>; + fsl,descriptor-types-mask = <0x0122003f>; + }; + }; + + i2c@3100 { + #address-cells = <1>; + #size-cells = <0>; + cell-index = <1>; + compatible = "fsl-i2c"; + reg = <0x3100 0x100>; + interrupts = <15 0x8>; + interrupt-parent = <&ipic>; + dfsrr; + capsense@25 { + compatible = "cypress,capsense"; + reg = <0x25>; + }; + }; + + spi@7000 { + cell-index = <0>; + compatible = "fsl,spi"; + reg = <0x7000 0x1000>; + interrupts = <16 0x8>; + interrupt-parent = <&ipic>; + mode = "cpu"; + }; + + /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ + usb@23000 { + compatible = "fsl-usb2-dr"; + reg = <0x23000 0x1000>; + #address-cells = <1>; + #size-cells = <0>; + interrupt-parent = <&ipic>; + interrupts = <38 0x8>; + phy_type = "utmi_wide"; + sleep = <&pmc 0x00300000>; + }; + + enet1: ethernet@25000 { + cell-index = <1>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <0x25000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <35 0x8 36 0x8 37 0x8>; + interrupt-parent = <&ipic>; + fixed-link = <1 1 100 0 0>; + sleep = <&pmc 0x10000000>; + fsl,magic-packet; + }; + + serial0: serial@4600 { + cell-index = <0>; + device_type = "serial"; + compatible = "ns16550"; + reg = <0x4600 0x100>; + clock-frequency = <0>; + interrupts = <10 0x8>; + interrupt-parent = <&ipic>; + }; + + /* IPIC + * interrupts cell = <intr #, sense> + * sense values match linux IORESOURCE_IRQ_* defines: + * sense == 8: Level, low assertion + * sense == 2: Edge, high-to-low change + */ + ipic: pic@700 { + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <2>; + reg = <0x700 0x100>; + device_type = "ipic"; + }; + + pmc: power@b00 { + compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc"; + reg = <0xb00 0x100 0xa00 0x100>; + interrupts = <80 8>; + interrupt-parent = <&ipic>; + fsl,mpc8313-wakeup-timer = <>m1>; + + /* Remove this (or change to "okay") if you have + * a REVA3 or later board, if you apply one of the + * workarounds listed in section 8.5 of the board + * manual, or if you are adapting this device tree + * to a different board. + */ + status = "okay"; + }; + + gtm1: timer@500 { + compatible = "fsl,mpc8313-gtm", "fsl,gtm"; + reg = <0x500 0x100>; + interrupts = <72 8 78 8 84 8 90 8>; + interrupt-parent = <&ipic>; + }; + + timer@600 { + compatible = "fsl,mpc8313-gtm", "fsl,gtm"; + reg = <0x600 0x100>; + interrupts = <91 8 79 8 85 8 73 8>; + interrupt-parent = <&ipic>; + }; + + wakeup@27000 { + compatible = "fsl,wakeup-it", "fsl,gtm"; + reg = <0x27000 0x100>; + interrupts = <17 8 19 8>; + interrupt-parent = <&ipic>; + }; + + }; + + sleep-nexus { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + sleep = <&pmc 0x00010000>; + ranges; + + pci0: pci@e0008500 { + cell-index = <1>; + interrupt-map-mask = <0xf800 0x0 0x0 0x7>; + interrupt-map = < + /* IDSEL 0x0F - PCI slot */ + 0x7800 0x0 0x0 0x1 &ipic 48 0x8 + 0x7800 0x0 0x0 0x2 &ipic 48 0x8 + 0x7800 0x0 0x0 0x3 &ipic 48 0x8 + 0x7800 0x0 0x0 0x4 &ipic 48 0x8>; + interrupt-parent = <&ipic>; + interrupts = <66 0x8>; + bus-range = <0x0 0x0>; + ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000 + 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000 + 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>; + clock-frequency = <66666666>; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <0xe0008500 0x100>; + compatible = "fsl,mpc8349-pci"; + device_type = "pci"; + }; + + dma@82a8 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8313-dma", "fsl,elo-dma"; + reg = <0xe00082a8 4>; + ranges = <0 0xe0008100 0x1a8>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + + dma-channel@0 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <0>; + }; + + dma-channel@80 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0x80 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <1>; + }; + + dma-channel@100 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0x100 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <2>; + }; + + dma-channel@180 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0x180 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <3>; + }; + }; + }; +}; diff --git a/recipes/linux/linux-2.6.31/boc01/boc01.dts.v1 b/recipes/linux/linux-2.6.31/boc01/boc01.dts.v1 new file mode 100644 index 0000000000..b2e2456438 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/boc01.dts.v1 @@ -0,0 +1,348 @@ +/* + * Bolloré telecom CPE v01 Device Tree Source + * + * Copyright 2005, 2006, 2007 Freescale Semiconductor Inc. + * Copyright 2008, 2009 Bolloré telecom. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +/dts-v1/; + +/ { + model = "MPC8313ERDB"; + compatible = "MPC8313ERDB", "MPC831xRDB", "MPC83xxRDB"; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + ethernet1 = &enet1; + serial0 = &serial0; + pci0 = &pci0; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,8313@0 { + device_type = "cpu"; + reg = <0x0>; + d-cache-line-size = <32>; + i-cache-line-size = <32>; + d-cache-size = <16384>; + i-cache-size = <16384>; + timebase-frequency = <0>; // from bootloader + bus-frequency = <0>; // from bootloader + clock-frequency = <0>; // from bootloader + }; + }; + + memory { + device_type = "memory"; + reg = <0x00000000 0x08000000>; // 128MB at 0 + }; + + localbus@e0005000 { + #address-cells = <2>; + #size-cells = <1>; + compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus"; + reg = <0xe0005000 0x1000>; + interrupts = <77 0x8>; + interrupt-parent = <&ipic>; + + // CS0 and CS1 are swapped when + // booting from nand, but the + // addresses are the same. + ranges = <0x0 0x0 0xfe000000 0x00800000 + 0x1 0x0 0xe2800000 0x00008000 + 0x2 0x0 0xf0000000 0x00020000 + 0x3 0x0 0xfa000000 0x00008000>; + + flash@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x800000>; + bank-width = <2>; + device-width = <1>; + }; + + nand@1,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8313-fcm-nand", + "fsl,elbc-fcm-nand"; + reg = <0x1 0x0 0x2000>; + + kernel@0 { + reg = <0x0 0x400000>; + read-only; + }; + + fs@400000 { + reg = <0x400000 0x4000000>; + }; + + appli@4400000 { + reg = <0x4400000 0x3c00000>; + }; + }; + }; + + soc8313@e0000000 { + #address-cells = <1>; + #size-cells = <1>; + device_type = "soc"; + compatible = "simple-bus"; + ranges = <0x0 0xe0000000 0x00100000>; + reg = <0xe0000000 0x00000200>; + bus-frequency = <0>; + + wdt@200 { + device_type = "watchdog"; + compatible = "mpc83xx_wdt"; + reg = <0x200 0x100>; + }; + + sleep-nexus { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + sleep = <&pmc 0x03000000>; + ranges; + + i2c@3000 { + #address-cells = <1>; + #size-cells = <0>; + cell-index = <0>; + compatible = "fsl-i2c"; + reg = <0x3000 0x100>; + interrupts = <14 0x8>; + interrupt-parent = <&ipic>; + dfsrr; + rtc@6f { + compatible = "intersil,isl12024"; + reg = <0x6f>; + }; + dtt@49 { + compatible = "national,lm73"; + reg = <0x49>; + }; + at24@50 { + compatible = "at24,24c32"; + reg = <0x50>; + }; + at24@57 { + compatible = "at24,isl12024-eeprom"; + reg = <0x57>; + }; + }; + + crypto@30000 { + compatible = "fsl,sec2.2", "fsl,sec2.1", + "fsl,sec2.0"; + reg = <0x30000 0x10000>; + interrupts = <11 0x8>; + interrupt-parent = <&ipic>; + fsl,num-channels = <1>; + fsl,channel-fifo-len = <24>; + fsl,exec-units-mask = <0x4c>; + fsl,descriptor-types-mask = <0x0122003f>; + }; + }; + + i2c@3100 { + #address-cells = <1>; + #size-cells = <0>; + cell-index = <1>; + compatible = "fsl-i2c"; + reg = <0x3100 0x100>; + interrupts = <15 0x8>; + interrupt-parent = <&ipic>; + dfsrr; + capsense@25 { + compatible = "cypress,capsense"; + reg = <0x25>; + }; + }; + + spi@7000 { + cell-index = <0>; + compatible = "fsl,spi"; + reg = <0x7000 0x1000>; + interrupts = <16 0x8>; + interrupt-parent = <&ipic>; + mode = "cpu"; + }; + + /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ + usb@23000 { + compatible = "fsl-usb2-dr"; + reg = <0x23000 0x1000>; + #address-cells = <1>; + #size-cells = <0>; + interrupt-parent = <&ipic>; + interrupts = <38 0x8>; + phy_type = "utmi_wide"; + sleep = <&pmc 0x00300000>; + }; + + enet1: ethernet@25000 { + cell-index = <1>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <0x25000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <34 0x8 33 0x8 32 0x8>; + interrupt-parent = <&ipic>; + fixed-link = <1 1 100 0 0>; + sleep = <&pmc 0x10000000>; + fsl,magic-packet; + }; + + serial0: serial@4600 { + cell-index = <0>; + device_type = "serial"; + compatible = "ns16550"; + reg = <0x4600 0x100>; + clock-frequency = <0>; + interrupts = <10 0x8>; + interrupt-parent = <&ipic>; + }; + + /* IPIC + * interrupts cell = <intr #, sense> + * sense values match linux IORESOURCE_IRQ_* defines: + * sense == 8: Level, low assertion + * sense == 2: Edge, high-to-low change + */ + ipic: pic@700 { + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <2>; + reg = <0x700 0x100>; + device_type = "ipic"; + }; + + pmc: power@b00 { + compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc"; + reg = <0xb00 0x100 0xa00 0x100>; + interrupts = <80 8>; + interrupt-parent = <&ipic>; + fsl,mpc8313-wakeup-timer = <>m1>; + + /* Remove this (or change to "okay") if you have + * a REVA3 or later board, if you apply one of the + * workarounds listed in section 8.5 of the board + * manual, or if you are adapting this device tree + * to a different board. + */ + status = "okay"; + }; + + gtm1: timer@500 { + compatible = "fsl,mpc8313-gtm", "fsl,gtm"; + reg = <0x500 0x100>; + interrupts = <72 8 78 8 84 8 90 8>; + interrupt-parent = <&ipic>; + }; + + timer@600 { + compatible = "fsl,mpc8313-gtm", "fsl,gtm"; + reg = <0x600 0x100>; + interrupts = <91 8 79 8 85 8 73 8>; + interrupt-parent = <&ipic>; + }; + + wakeup@27000 { + compatible = "fsl,wakeup-it", "fsl,gtm"; + reg = <0x27000 0x100>; + interrupts = <17 8 19 8>; + interrupt-parent = <&ipic>; + }; + + }; + + sleep-nexus { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + sleep = <&pmc 0x00010000>; + ranges; + + pci0: pci@e0008500 { + cell-index = <1>; + interrupt-map-mask = <0xf800 0x0 0x0 0x7>; + interrupt-map = < + /* IDSEL 0x0F - PCI slot */ + 0x7800 0x0 0x0 0x1 &ipic 48 0x8 + 0x7800 0x0 0x0 0x2 &ipic 48 0x8 + 0x7800 0x0 0x0 0x3 &ipic 48 0x8 + 0x7800 0x0 0x0 0x4 &ipic 48 0x8>; + interrupt-parent = <&ipic>; + interrupts = <66 0x8>; + bus-range = <0x0 0x0>; + ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000 + 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000 + 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>; + clock-frequency = <66666666>; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <0xe0008500 0x100>; + compatible = "fsl,mpc8349-pci"; + device_type = "pci"; + }; + + dma@82a8 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8313-dma", "fsl,elo-dma"; + reg = <0xe00082a8 4>; + ranges = <0 0xe0008100 0x1a8>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + + dma-channel@0 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <0>; + }; + + dma-channel@80 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0x80 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <1>; + }; + + dma-channel@100 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0x100 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <2>; + }; + + dma-channel@180 { + compatible = "fsl,mpc8313-dma-channel", + "fsl,elo-dma-channel"; + reg = <0x180 0x28>; + interrupt-parent = <&ipic>; + interrupts = <71 8>; + cell-index = <3>; + }; + }; + }; +}; diff --git a/recipes/linux/linux-2.6.31/boc01/defconfig b/recipes/linux/linux-2.6.31/boc01/defconfig new file mode 100644 index 0000000000..3b84e431f0 --- /dev/null +++ b/recipes/linux/linux-2.6.31/boc01/defconfig @@ -0,0 +1,2126 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.31.3 +# Tue Oct 20 14:52:00 2009 +# +# CONFIG_PPC64 is not set + +# +# Processor support +# +CONFIG_PPC_BOOK3S_32=y +# CONFIG_PPC_85xx is not set +# CONFIG_PPC_8xx is not set +# CONFIG_40x is not set +# CONFIG_44x is not set +# CONFIG_E200 is not set +CONFIG_PPC_BOOK3S=y +CONFIG_6xx=y +CONFIG_PPC_FPU=y +# CONFIG_FSL_EMB_PERFMON is not set +# CONFIG_ALTIVEC is not set +CONFIG_PPC_STD_MMU=y +CONFIG_PPC_STD_MMU_32=y +# CONFIG_PPC_MM_SLICES is not set +CONFIG_PPC_HAVE_PMU_SUPPORT=y +CONFIG_PPC_PERF_CTRS=y +# CONFIG_SMP is not set +CONFIG_PPC32=y +CONFIG_WORD_SIZE=32 +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_MMU=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +CONFIG_IRQ_PER_CPU=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_ARCH_HAS_ILOG2_U32=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_FIND_NEXT_BIT=y +CONFIG_GENERIC_GPIO=y +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set +CONFIG_PPC=y +CONFIG_EARLY_PRINTK=y +CONFIG_GENERIC_NVRAM=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_PPC_OF=y +CONFIG_OF=y +CONFIG_PPC_UDBG_16550=y +# CONFIG_GENERIC_TBSYNC is not set +CONFIG_AUDIT_ARCH=y +CONFIG_GENERIC_BUG=y +CONFIG_DTC=y +CONFIG_DEFAULT_UIMAGE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_PPC_DCR_NATIVE is not set +# CONFIG_PPC_DCR_MMIO is not set +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_CONSTRUCTORS=y + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set + +# +# RCU Subsystem +# +CONFIG_CLASSIC_RCU=y +# CONFIG_TREE_RCU is not set +# CONFIG_PREEMPT_RCU is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_PREEMPT_RCU_TRACE is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_USER_SCHED=y +# CONFIG_CGROUP_SCHED is not set +# CONFIG_CGROUPS is not set +CONFIG_SYSFS_DEPRECATED=y +CONFIG_SYSFS_DEPRECATED_V2=y +# CONFIG_RELAY is not set +# CONFIG_NAMESPACES is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +# CONFIG_RD_BZIP2 is not set +CONFIG_RD_LZMA=y +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_EMBEDDED=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_KALLSYMS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +# CONFIG_EPOLL is not set +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +# CONFIG_AIO is not set +CONFIG_HAVE_PERF_COUNTERS=y + +# +# Performance Counters +# +CONFIG_PERF_COUNTERS=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_PCI_QUIRKS=y +# CONFIG_STRIP_ASM_SYMS is not set +CONFIG_COMPAT_BRK=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_PROFILING=y +# CONFIG_MARKERS is not set +# CONFIG_OPROFILE is not set +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_ARCH_TRACEHOOK=y + +# +# GCOV-based kernel profiling +# +# CONFIG_SLOW_WORK is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_BLOCK=y +CONFIG_LBDAF=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" +CONFIG_FREEZER=y + +# +# Platform support +# +# CONFIG_PPC_CHRP is not set +# CONFIG_MPC5121_ADS is not set +# CONFIG_MPC5121_GENERIC is not set +# CONFIG_PPC_MPC52xx is not set +# CONFIG_PPC_PMAC is not set +# CONFIG_PPC_CELL is not set +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PPC_82xx is not set +# CONFIG_PQ2ADS is not set +CONFIG_PPC_83xx=y +CONFIG_MPC831x_RDB=y +# CONFIG_MPC832x_MDS is not set +# CONFIG_MPC832x_RDB is not set +# CONFIG_MPC834x_MDS is not set +# CONFIG_MPC834x_ITX is not set +# CONFIG_MPC836x_MDS is not set +# CONFIG_MPC836x_RDK is not set +# CONFIG_MPC837x_MDS is not set +# CONFIG_MPC837x_RDB is not set +# CONFIG_SBC834x is not set +# CONFIG_ASP834x is not set +# CONFIG_KMETER1 is not set +CONFIG_PPC_MPC831x=y +# CONFIG_PPC_86xx is not set +# CONFIG_EMBEDDED6xx is not set +# CONFIG_AMIGAONE is not set +CONFIG_PPC_OF_BOOT_TRAMPOLINE=y +CONFIG_IPIC=y +# CONFIG_MPIC is not set +# CONFIG_MPIC_WEIRD is not set +# CONFIG_PPC_I8259 is not set +# CONFIG_PPC_RTAS is not set +# CONFIG_MMIO_NVRAM is not set +# CONFIG_PPC_MPC106 is not set +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_INDIRECT_IO is not set +# CONFIG_GENERIC_IOMAP is not set +# CONFIG_CPU_FREQ is not set +# CONFIG_TAU is not set +# CONFIG_QUICC_ENGINE is not set +# CONFIG_FSL_ULI1575 is not set +CONFIG_MPC8xxx_GPIO=y +# CONFIG_SIMPLE_GPIO is not set +# CONFIG_MCU_MPC8349EMITX is not set + +# +# Kernel options +# +# CONFIG_HIGHMEM is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +# CONFIG_SCHED_HRTICK is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_BINFMT_MISC is not set +# CONFIG_IOMMU_HELPER is not set +# CONFIG_SWIOTLB is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_HAS_WALK_MEMORY=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_MIGRATION=y +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +CONFIG_VIRT_TO_BUS=y +CONFIG_HAVE_MLOCK=y +CONFIG_HAVE_MLOCKED_PAGE_BIT=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_PPC_4K_PAGES=y +# CONFIG_PPC_16K_PAGES is not set +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_256K_PAGES is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_PROC_DEVICETREE=y +# CONFIG_CMDLINE_BOOL is not set +CONFIG_EXTRA_TARGETS="" +CONFIG_PM=y +CONFIG_PM_DEBUG=y +CONFIG_PM_VERBOSE=y +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_SUSPEND_FREEZER=y +CONFIG_SECCOMP=y +CONFIG_ISA_DMA_API=y + +# +# Bus options +# +CONFIG_ZONE_DMA=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_PPC_INDIRECT_PCI=y +CONFIG_FSL_SOC=y +CONFIG_FSL_PCI=y +CONFIG_FSL_LBC=y +CONFIG_PPC_PCI_CHOICE=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCI_SYSCALL=y +# CONFIG_PCIEPORTBUS is not set +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_PCI_MSI is not set +CONFIG_PCI_LEGACY=y +# CONFIG_PCI_STUB is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCCARD is not set +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HAS_RAPIDIO is not set + +# +# Advanced setup +# +# CONFIG_ADVANCED_OPTIONS is not set + +# +# Default settings for advanced configuration options are used +# +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_PAGE_OFFSET=0xc0000000 +CONFIG_KERNEL_START=0xc0000000 +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_TASK_SIZE=0xc0000000 +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_MMAP is not set +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=m +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE=m +# CONFIG_NET_IPGRE_BROADCAST is not set +# CONFIG_IP_MROUTE is not set +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_NETWORK_SECMARK is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CT_ACCT=y +CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_EVENTS is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +CONFIG_NF_CT_PROTO_GRE=m +CONFIG_NF_CT_PROTO_SCTP=m +CONFIG_NF_CT_PROTO_UDPLITE=m +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NETFILTER_TPROXY=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PROTO_GRE=m +CONFIG_NF_NAT_PROTO_UDPLITE=m +CONFIG_NF_NAT_PROTO_SCTP=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_NF_NAT_SIP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +# CONFIG_BRIDGE_EBT_ULOG is not set +# CONFIG_BRIDGE_EBT_NFLOG is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_STP=m +CONFIG_BRIDGE=m +# CONFIG_NET_DSA is not set +CONFIG_VLAN_8021Q=m +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_DECNET is not set +CONFIG_LLC=m +CONFIG_LLC2=m +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +CONFIG_WAN_ROUTER=m +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_ATM=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_CLS_IND=y +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_CFG80211=m +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_WIRELESS_OLD_REGULATORY=y +CONFIG_WIRELESS_EXT=y +# CONFIG_WIRELESS_EXT_SYSFS is not set +CONFIG_LIB80211=m +CONFIG_LIB80211_CRYPT_WEP=m +CONFIG_LIB80211_CRYPT_CCMP=m +CONFIG_LIB80211_CRYPT_TKIP=m +# CONFIG_LIB80211_DEBUG is not set +CONFIG_MAC80211=m +CONFIG_MAC80211_DEFAULT_PS=y +CONFIG_MAC80211_DEFAULT_PS_VALUE=1 + +# +# Rate control algorithm selection +# +CONFIG_MAC80211_RC_PID=y +CONFIG_MAC80211_RC_MINSTREL=y +CONFIG_MAC80211_RC_DEFAULT_PID=y +# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set +CONFIG_MAC80211_RC_DEFAULT="pid" +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_DEBUG_MENU is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_CONCAT is not set +CONFIG_MTD_PARTITIONS=y +CONFIG_MTD_TESTS=m +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_OF_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_PHYSMAP_COMPAT=y +CONFIG_MTD_PHYSMAP_START=0xfe000000 +CONFIG_MTD_PHYSMAP_LEN=0x0800000 +CONFIG_MTD_PHYSMAP_BANKWIDTH=2 +# CONFIG_MTD_PHYSMAP_OF is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_ALAUDA is not set +CONFIG_MTD_NAND_FSL_ELBC=y +CONFIG_MTD_NAND_FSL_UPM=y +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set +CONFIG_OF_DEVICE=y +CONFIG_OF_GPIO=y +CONFIG_OF_I2C=y +CONFIG_OF_SPI=y +CONFIG_OF_MDIO=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UB is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_HD is not set +CONFIG_MISC_DEVICES=y +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_HP_ILO is not set +# CONFIG_ISL29003 is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=y +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_CB710_CORE is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# CONFIG_SCSI_LOWLEVEL is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +# CONFIG_FUSION is not set + +# +# IEEE 1394 (FireWire) support +# + +# +# You can enable one or both FireWire driver stacks. +# + +# +# See the help texts for more information. +# +# CONFIG_FIREWIRE is not set +# CONFIG_IEEE1394 is not set +# CONFIG_I2O is not set +# CONFIG_MACINTOSH_DRIVERS is not set +CONFIG_NETDEVICES=y +# CONFIG_IFB is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +# CONFIG_ARCNET is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_STE10XP is not set +# CONFIG_LSI_ET1011C_PHY is not set +CONFIG_FIXED_PHY=y +# CONFIG_MDIO_BITBANG is not set +# CONFIG_NET_ETHERNET is not set +CONFIG_MII=y +CONFIG_NETDEV_1000=y +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_IP1000 is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_VIA_VELOCITY is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2 is not set +# CONFIG_CNIC is not set +CONFIG_FSL_PQ_MDIO=y +CONFIG_GIANFAR=y +# CONFIG_MV643XX_ETH is not set +# CONFIG_QLA3XXX is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL1C is not set +# CONFIG_JME is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_TR is not set + +# +# Wireless LAN +# +CONFIG_WLAN_PRE80211=y +# CONFIG_STRIP is not set +CONFIG_WLAN_80211=y +# CONFIG_LIBERTAS is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_AIRO is not set +# CONFIG_ATMEL is not set +# CONFIG_AT76C50X_USB is not set +# CONFIG_PRISM54 is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +# CONFIG_ADM8211 is not set +# CONFIG_MAC80211_HWSIM is not set +# CONFIG_MWL8K is not set +# CONFIG_P54_COMMON is not set +CONFIG_ATH_COMMON=m +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +CONFIG_ATH9K=m +# CONFIG_ATH9K_DEBUG is not set +CONFIG_AR9170_USB=m +CONFIG_AR9170_LEDS=y +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_IWLWIFI is not set +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_HOSTAP_PLX=m +CONFIG_HOSTAP_PCI=m +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_ZD1211RW is not set +# CONFIG_RT2X00 is not set +# CONFIG_HERMES is not set +# CONFIG_WL12XX is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +CONFIG_USB_USBNET=y +# CONFIG_USB_NET_AX8817X is not set +CONFIG_USB_NET_CDCETHER=y +# CONFIG_USB_NET_CDC_EEM is not set +# CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_MCS7830 is not set +# CONFIG_USB_NET_RNDIS_HOST is not set +CONFIG_USB_NET_CDC_SUBSET=y +# CONFIG_USB_ALI_M5632 is not set +# CONFIG_USB_AN2720 is not set +CONFIG_USB_BELKIN=y +# CONFIG_USB_ARMLINUX is not set +# CONFIG_USB_EPSON2888 is not set +# CONFIG_USB_KC2190 is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_WAN is not set +# CONFIG_ATM_DRIVERS is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NET_FC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +CONFIG_INPUT_POLLDEV=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_EVBUG=y + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_ATI_REMOTE is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_UINPUT is not set +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +CONFIG_INPUT_CAPSENSE_BTNS=y + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_NOZOMI is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_PCI is not set +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_OF_PLATFORM is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_HVC_UDBG is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_NVRAM is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +CONFIG_GPIO_MPC8313=y +CONFIG_EXIO_MPC8313=y +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_DEVPORT=y +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_HELPER_AUTO=y + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_GPIO is not set +CONFIG_I2C_MPC=y +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Graphics adapter I2C/DDC channel drivers +# +# CONFIG_I2C_VOODOO3 is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_GPIO is not set +CONFIG_SPI_MPC8xxx=y + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=y +# CONFIG_SPI_TLE62X0 is not set + +# +# PPS support +# +# CONFIG_PPS is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_GPIO_SYSFS is not set + +# +# Memory mapped GPIO expanders: +# +# CONFIG_GPIO_XILINX is not set + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set + +# +# PCI GPIO expanders: +# +# CONFIG_GPIO_BT8XX is not set + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +CONFIG_POWER_SUPPLY_DEBUG=y +# CONFIG_PDA_POWER is not set +# CONFIG_BATTERY_DS2760 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_BQ27x00 is not set +# CONFIG_BATTERY_MAX17040 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7473 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +CONFIG_SENSORS_LM73=y +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_HWMON is not set +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_ALIM7101_WDT is not set +CONFIG_8xxx_WDT=y + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_TPS65010 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_AB3100_CORE is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_REGULATOR is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_CFB_FILLRECT is not set +# CONFIG_FB_CFB_COPYAREA is not set +# CONFIG_FB_CFB_IMAGEBLIT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_IMAGEBLIT=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_SYS_FOPS=y +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_CYBER2000 is not set +CONFIG_FB_NT7506=y +CONFIG_FB_NT7506_GRAYSCALE=y +# CONFIG_FB_OF is not set +# CONFIG_FB_CT65550 is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_S1D15605 is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_VIA is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_FSL_DIU is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_BROADSHEET is not set +CONFIG_BACKLIGHT_LCD_SUPPORT=y +CONFIG_LCD_CLASS_DEVICE=y +# CONFIG_LCD_LTV350QV is not set +# CONFIG_LCD_ILI9320 is not set +# CONFIG_LCD_TDO24M is not set +# CONFIG_LCD_VGG2432A4 is not set +# CONFIG_LCD_PLATFORM is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +# CONFIG_BACKLIGHT_GENERIC is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE is not set +# CONFIG_LOGO is not set +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_RAWMIDI=m +# CONFIG_SND_SEQUENCER is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_RAWMIDI_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +# CONFIG_SND_EMU10K1_SEQ is not set +# CONFIG_SND_DRIVERS is not set +# CONFIG_SND_PCI is not set +# CONFIG_SND_PPC is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +# CONFIG_SND_SOC is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=m +# CONFIG_HID_DEBUG is not set +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=m +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set + +# +# Special HID drivers +# +# CONFIG_HID_A4TECH is not set +CONFIG_HID_APPLE=m +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_KENSINGTON is not set +CONFIG_HID_LOGITECH=m +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +CONFIG_HID_MICROSOFT=m +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_ZEROPLUS is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_SUSPEND is not set +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=m +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +CONFIG_USB_EHCI_FSL=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +CONFIG_USB_OHCI_HCD_PPC_OF=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_WHCI_HCD is not set +# CONFIG_USB_HWA_HCD is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +# CONFIG_USB_ATM is not set +# CONFIG_USB_GADGET is not set + +# +# OTG and related infrastructure +# +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_UWB is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y + +# +# LED drivers +# +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_GPIO is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_BD2802 is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +# CONFIG_LEDS_TRIGGER_GPIO is not set +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +# CONFIG_EDAC is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +CONFIG_RTC_INTF_DEV_UIE_EMUL=y +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +CONFIG_RTC_DRV_ISL12024=y +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_GENERIC is not set +# CONFIG_DMADEVICES is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set + +# +# TI VLYNQ +# +# CONFIG_STAGING is not set + +# +# File systems +# +CONFIG_EXT2_FS=m +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=m +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT3_FS_POSIX_ACL is not set +# CONFIG_EXT3_FS_SECURITY is not set +# CONFIG_EXT4_FS is not set +CONFIG_JBD=m +CONFIG_FS_MBCACHE=m +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +CONFIG_FILE_LOCKING=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=m +# CONFIG_FUSE_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_NTFS_FS=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_RW=y + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +# CONFIG_JFFS2_FS_XATTR is not set +# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set +CONFIG_JFFS2_ZLIB=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_NILFS2_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +# CONFIG_NFS_V4_1 is not set +CONFIG_NFSD=m +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +CONFIG_NFSD_V4=y +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +# CONFIG_CIFS_WEAK_PW_HASH is not set +# CONFIG_CIFS_XATTR is not set +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_EXPERIMENTAL is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-15" +CONFIG_NLS_CODEPAGE_437=m +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +CONFIG_NLS_CODEPAGE_850=m +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +CONFIG_NLS_ISO8859_15=m +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=m +# CONFIG_DLM is not set +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_FIND_LAST_BIT=y +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +# CONFIG_CRC_T10DIF is not set +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_HAVE_LMB=y +CONFIG_NLATTR=y +CONFIG_GENERIC_ATOMIC64=y + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_KERNEL is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_LATENCYTOP is not set +CONFIG_SYSCTL_SYSCALL_CHECK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_PPC_DISABLE_WERROR is not set +CONFIG_PPC_WERROR=y +CONFIG_PRINT_STACK_DEPTH=64 +# CONFIG_IRQSTACKS is not set +# CONFIG_BOOTX_TEXT is not set +# CONFIG_PPC_EARLY_DEBUG is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +# CONFIG_CRYPTO_FIPS is not set +CONFIG_CRYPTO_ALGAPI=m +CONFIG_CRYPTO_ALGAPI2=m +CONFIG_CRYPTO_AEAD=m +CONFIG_CRYPTO_AEAD2=m +CONFIG_CRYPTO_BLKCIPHER=m +CONFIG_CRYPTO_BLKCIPHER2=m +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_HASH2=m +CONFIG_CRYPTO_RNG2=m +CONFIG_CRYPTO_PCOMP=m +CONFIG_CRYPTO_MANAGER=m +CONFIG_CRYPTO_MANAGER2=m +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_WORKQUEUE=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_TEST=m + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=m +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_MICHAEL_MIC=m +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=m +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +# CONFIG_CRYPTO_DEV_TALITOS is not set +# CONFIG_PPC_CLOCK is not set +# CONFIG_VIRTUALIZATION is not set diff --git a/recipes/linux/linux-bug_2.6.27.2.bb b/recipes/linux/linux-bug_2.6.27.2.bb index b5899a7235..8c83f9ab7f 100644 --- a/recipes/linux/linux-bug_2.6.27.2.bb +++ b/recipes/linux/linux-bug_2.6.27.2.bb @@ -2,12 +2,12 @@ DESCRIPTION = "Linux kernel for bug" PV_append = "+svnr${SRCREV}" KV = "2.6.27.2" -PR = "r28" +PR = "r29" COMPATIBLE_MACHINE = "bug" SVN_PRJ = "bug-linux-${KV}" -SRCREV = "10017" +SRCREV = "10199" SRC_URI = "svn://svn.buglabs.net/bug/branches/R1.4/qa;module=${SVN_PRJ};proto=svn \ file://defconfig \ @@ -21,10 +21,17 @@ UBOOT_ENTRYPOINT = "0x80008000" require linux.inc do_install_append() { -# install -m 0644 arch/${ARCH}/boot/uImage ${D}/${KERNEL_IMAGEDEST}/uImage-${KERNEL_VERSION} cd ${D}/${KERNEL_IMAGEDEST} && ln -sf uImage-${KERNEL_VERSION} uImage } +do_stage_append() { + cp -fR arch/arm/include/asm/* ${STAGING_KERNEL_DIR}/include/asm/ + if [ ! -e ${STAGING_KERNEL_DIR}/include/mach ]; then + mkdir ${STAGING_KERNEL_DIR}/include/mach + fi + cp -fR arch/arm/plat-mxc/include/mach/* ${STAGING_KERNEL_DIR}/include/mach/ +} + FILESDIR = "${WORKDIR}" FILES_kernel-image += "${KERNEL_IMAGEDEST}/uImage*" diff --git a/recipes/linux/linux-igep2-2.6.28.10-0/igep0020/defconfig b/recipes/linux/linux-igep2-2.6.28.10-0/igep0020/defconfig new file mode 100644 index 0000000000..8815d0c984 --- /dev/null +++ b/recipes/linux/linux-igep2-2.6.28.10-0/igep0020/defconfig @@ -0,0 +1,2082 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.28.10 +# Fri Aug 7 09:04:21 2009 +# +CONFIG_ARM=y +CONFIG_SYS_SUPPORTS_APM_EMULATION=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_TIME=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_MMU=y +# CONFIG_NO_IOPORT is not set +CONFIG_GENERIC_HARDIRQS=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y +CONFIG_OPROFILE_ARMV7=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# General setup +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_BSD_PROCESS_ACCT=y +# CONFIG_BSD_PROCESS_ACCT_V3 is not set +# CONFIG_TASKSTATS is not set +# CONFIG_AUDIT is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_CGROUPS is not set +CONFIG_GROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_USER_SCHED=y +# CONFIG_CGROUP_SCHED is not set +# CONFIG_SYSFS_DEPRECATED_V2 is not set +# CONFIG_RELAY is not set +# CONFIG_NAMESPACES is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_EMBEDDED=y +CONFIG_UID16=y +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set +CONFIG_PROFILING=y +# CONFIG_MARKERS is not set +CONFIG_OPROFILE=y +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_SLABINFO=y +CONFIG_RT_MUTEXES=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_KMOD=y +CONFIG_BLOCK=y +CONFIG_LBD=y +# CONFIG_BLK_DEV_IO_TRACE is not set +CONFIG_LSF=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_AS is not set +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_CLASSIC_RCU=y +CONFIG_FREEZER=y + +# +# System Type +# +# CONFIG_ARCH_AAEC2000 is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_CLPS7500 is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_IMX is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_L7200 is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_NS9XXX is not set +# CONFIG_ARCH_LOKI is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C2410 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_LH7A40X is not set +# CONFIG_ARCH_DAVINCI is not set +CONFIG_ARCH_OMAP=y +# CONFIG_ARCH_MSM is not set + +# +# TI OMAP Implementations +# +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP3=y + +# +# OMAP Feature Selections +# +# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set +# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set +CONFIG_OMAP_SMARTREFLEX=y +# CONFIG_OMAP_SMARTREFLEX_TESTING is not set +CONFIG_OMAP_RESET_CLOCKS=y +CONFIG_OMAP_BOOT_TAG=y +CONFIG_OMAP_BOOT_REASON=y +# CONFIG_OMAP_COMPONENT_VERSION is not set +# CONFIG_OMAP_GPIO_SWITCH is not set +# CONFIG_OMAP_MUX is not set +CONFIG_OMAP_MCBSP=y +# CONFIG_OMAP_MMU_FWK is not set +# CONFIG_OMAP_MBOX_FWK is not set +# CONFIG_OMAP_MPU_TIMER is not set +CONFIG_OMAP_32K_TIMER=y +CONFIG_OMAP_32K_TIMER_HZ=128 +CONFIG_OMAP_TICK_GPTIMER=12 +CONFIG_OMAP_DM_TIMER=y +# CONFIG_OMAP_LL_DEBUG_UART1 is not set +# CONFIG_OMAP_LL_DEBUG_UART2 is not set +CONFIG_OMAP_LL_DEBUG_UART3=y +CONFIG_ARCH_OMAP34XX=y +CONFIG_ARCH_OMAP3430=y + +# +# OMAP Board Type +# +# CONFIG_MACH_OMAP_LDP is not set +# CONFIG_MACH_OMAP_3430SDP is not set +# CONFIG_MACH_OMAP3EVM is not set +# CONFIG_MACH_OMAP3_BEAGLE is not set +# CONFIG_MACH_OVERO is not set +# CONFIG_MACH_OMAP3_PANDORA is not set +CONFIG_MACH_IGEP0020=y + +# +# Boot options +# + +# +# Power management +# + +# +# Processor Type +# +CONFIG_CPU_32=y +CONFIG_CPU_32v6K=y +CONFIG_CPU_V7=y +CONFIG_CPU_32v7=y +CONFIG_CPU_ABRT_EV7=y +CONFIG_CPU_PABRT_IFAR=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +CONFIG_ARM_THUMB=y +CONFIG_ARM_THUMBEE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_HAS_TLS_REG=y +# CONFIG_OUTER_CACHE is not set + +# +# Bus support +# +# CONFIG_PCI_SYSCALL is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xB0000000 +# CONFIG_PREEMPT is not set +CONFIG_HZ=128 +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_ARCH_FLATMEM_HAS_HOLES=y +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_RESOURCES_64BIT is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +CONFIG_UNEVICTABLE_LRU=y +# CONFIG_LEDS is not set +CONFIG_ALIGNMENT_TRAP=y + +# +# Boot options +# +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_CMDLINE=" debug " +# CONFIG_XIP_KERNEL is not set +CONFIG_KEXEC=y +CONFIG_ATAGS_PROC=y + +# +# CPU Power Management +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_FREQ_DEBUG=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +# CONFIG_CPU_IDLE is not set + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +CONFIG_NEON=y + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_HAVE_AOUT=y +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_MISC=y + +# +# Power management options +# +CONFIG_PM=y +CONFIG_PM_DEBUG=y +# CONFIG_PM_VERBOSE is not set +CONFIG_CAN_PM_TRACE=y +CONFIG_PM_SLEEP=y +CONFIG_SUSPEND=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_SUSPEND_FREEZER=y +# CONFIG_APM_EMULATION is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +CONFIG_INET_TUNNEL=m +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +CONFIG_IPV6_SIT=m +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +# CONFIG_BT_HCIUSB is not set +# CONFIG_BT_HCIBTUSB is not set +# CONFIG_BT_HCIBTSDIO is not set +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_LL=y +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIBRF6150 is not set +# CONFIG_BT_HCIH4P is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_PHONET is not set +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_NL80211=y +CONFIG_WIRELESS_OLD_REGULATORY=y +CONFIG_WIRELESS_EXT=y +CONFIG_WIRELESS_EXT_SYSFS=y +CONFIG_MAC80211=y + +# +# Rate control algorithm selection +# +CONFIG_MAC80211_RC_PID=y +# CONFIG_MAC80211_RC_MINSTREL is not set +CONFIG_MAC80211_RC_DEFAULT_PID=y +# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set +CONFIG_MAC80211_RC_DEFAULT="pid" +CONFIG_MAC80211_MESH=y +# CONFIG_MAC80211_LEDS is not set +# CONFIG_MAC80211_DEBUGFS is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +CONFIG_IEEE80211=y +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=y +CONFIG_IEEE80211_CRYPT_CCMP=y +CONFIG_IEEE80211_CRYPT_TKIP=y +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_CONCAT=y +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +CONFIG_MTD_NAND=y +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_GPIO is not set +CONFIG_MTD_NAND_OMAP2=y +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_NANDSIM is not set +CONFIG_MTD_NAND_PLATFORM=y +# CONFIG_MTD_ALAUDA is not set +CONFIG_MTD_ONENAND=y +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +# CONFIG_MTD_ONENAND_GENERIC is not set +CONFIG_MTD_ONENAND_OMAP2=y +# CONFIG_MTD_ONENAND_OTP is not set +CONFIG_MTD_ONENAND_2X_PROGRAM=y +# CONFIG_MTD_ONENAND_SIM is not set + +# +# UBI - Unsorted block images +# +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_RESERVE=1 +# CONFIG_MTD_UBI_GLUEBI is not set + +# +# UBI debugging options +# +# CONFIG_MTD_UBI_DEBUG is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=16384 +# CONFIG_BLK_DEV_XIP is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +CONFIG_MISC_DEVICES=y +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_ICS932S401 is not set +# CONFIG_OMAP_STI is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_C2PORT is not set +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=y +CONFIG_CHR_DEV_OSST=y +CONFIG_BLK_DEV_SR=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_SCH=y + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_ISCSI_TCP is not set +# CONFIG_SCSI_DEBUG is not set +CONFIG_SCSI_DH=y +# CONFIG_SCSI_DH_RDAC is not set +# CONFIG_SCSI_DH_HP_SW is not set +# CONFIG_SCSI_DH_EMC is not set +# CONFIG_SCSI_DH_ALUA is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +CONFIG_NETDEVICES=y +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_MACVLAN is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_VETH is not set +CONFIG_PHYLIB=y + +# +# MII PHY device drivers +# +# CONFIG_MARVELL_PHY is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_LXT_PHY is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_VITESSE_PHY is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_BROADCOM_PHY is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_FIXED_PHY is not set +# CONFIG_MDIO_BITBANG is not set +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_AX88796 is not set +# CONFIG_SMC91X is not set +# CONFIG_DM9000 is not set +# CONFIG_ENC28J60 is not set +# CONFIG_SMC911X is not set +CONFIG_SMSC911X=y +# CONFIG_IBM_NEW_EMAC_ZMII is not set +# CONFIG_IBM_NEW_EMAC_RGMII is not set +# CONFIG_IBM_NEW_EMAC_TAH is not set +# CONFIG_IBM_NEW_EMAC_EMAC4 is not set +# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set +# CONFIG_B44 is not set +# CONFIG_NETDEV_1000 is not set +# CONFIG_NETDEV_10000 is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +CONFIG_WLAN_80211=y +CONFIG_LIBERTAS=m +# CONFIG_LIBERTAS_USB is not set +CONFIG_LIBERTAS_SDIO=m +# CONFIG_LIBERTAS_SPI is not set +# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_RTL8187 is not set +# CONFIG_MAC80211_HWSIM is not set +# CONFIG_P54_COMMON is not set +# CONFIG_IWLWIFI_LEDS is not set +# CONFIG_HOSTAP is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_ZD1211RW is not set +# CONFIG_RT2X00 is not set + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_WAN is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +# CONFIG_SLIP is not set +CONFIG_SLHC=m +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_TWL4030 is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_GPIO is not set +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_ELANTECH is not set +# CONFIG_MOUSE_PS2_TOUCHKIT is not set +# CONFIG_MOUSE_SERIAL is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_BCM5974 is not set +# CONFIG_MOUSE_VSXXXAA is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_DEVKMEM=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_IPMI_HANDLER is not set +CONFIG_HW_RANDOM=y +# CONFIG_NVRAM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_HELPER_AUTO=y + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_OCORES is not set +CONFIG_I2C_OMAP=y +# CONFIG_I2C_SIMTEC is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_STUB is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_DS1682 is not set +# CONFIG_AT24 is not set +CONFIG_SENSORS_EEPROM=y +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_PCF8575 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_TPS65010 is not set +CONFIG_TWL4030_MADC=m +CONFIG_TWL4030_PWRBUTTON=y +CONFIG_TWL4030_POWEROFF=y +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_LP5521 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_OMAP24XX is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_AT25 is not set +# CONFIG_SPI_TSC210X is not set +# CONFIG_SPI_TSC2301 is not set +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_GPIOLIB=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y + +# +# Memory mapped GPIO expanders: +# + +# +# I2C GPIO expanders: +# +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +CONFIG_GPIO_TWL4030=y + +# +# PCI GPIO expanders: +# + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7473 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_TSC210X is not set +CONFIG_SENSORS_OMAP34XX=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_HWMON=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_NOWAYOUT=y + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +CONFIG_OMAP_WATCHDOG=y + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_PASIC3 is not set +CONFIG_TWL4030_CORE=y +# CONFIG_TWL4030_POWER is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8350_I2C is not set + +# +# Multimedia devices +# + +# +# Multimedia core support +# +CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_ALLOW_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_DVB_CORE=m +CONFIG_VIDEO_MEDIA=m + +# +# Multimedia drivers +# +CONFIG_MEDIA_ATTACH=y +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC5000=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L1=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_WM8775=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_CX25840=m +CONFIG_VIDEO_CX2341X=m +# CONFIG_VIDEO_VIVI is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CPIA2 is not set +# CONFIG_VIDEO_SAA5246A is not set +# CONFIG_VIDEO_SAA5249 is not set +# CONFIG_VIDEO_AU0828 is not set +# CONFIG_SOC_CAMERA is not set +CONFIG_V4L_USB_DRIVERS=y +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_GSPCA=m +CONFIG_USB_M5602=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +# CONFIG_VIDEO_EM28XX is not set +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_USBVIDEO=m +CONFIG_USB_VICAM=m +CONFIG_USB_IBMCAM=m +CONFIG_USB_KONICAWC=m +CONFIG_USB_QUICKCAM_MESSENGER=m +# CONFIG_USB_ET61X251 is not set +CONFIG_VIDEO_OVCAMCHIP=m +CONFIG_USB_W9968CF=m +CONFIG_USB_OV511=m +CONFIG_USB_SE401=m +CONFIG_USB_SN9C102=m +CONFIG_USB_STV680=m +# CONFIG_USB_ZC0301 is not set +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_ZR364XX=m +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_S2255 is not set +CONFIG_RADIO_ADAPTERS=y +# CONFIG_USB_DSBR is not set +# CONFIG_USB_SI470X is not set +# CONFIG_USB_MR800 is not set +CONFIG_DVB_CAPTURE_DRIVERS=y +# CONFIG_TTPCI_EEPROM is not set + +# +# Supported USB Adapters +# +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_VP7045=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m +CONFIG_DVB_SIANO_SMS1XXX=m +CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y + +# +# Supported FlexCopII (B2C2) Adapters +# +# CONFIG_DVB_B2C2_FLEXCOP is not set + +# +# Supported DVB Frontends +# + +# +# Customise DVB Frontends +# +# CONFIG_DVB_FE_CUSTOMISE is not set + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_SI21XX=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_SP8870=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +# CONFIG_DVB_DRX397XD is not set +CONFIG_DVB_L64781=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_MT352=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_TDA10048=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_VES1820=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_STV0297=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_NXT200X=m +# CONFIG_DVB_OR51211 is not set +# CONFIG_DVB_OR51132 is not set +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_AU8522=m +CONFIG_DVB_S5H1411=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_LNBP21=m +# CONFIG_DVB_ISL6405 is not set +CONFIG_DVB_ISL6421=m +# CONFIG_DVB_LGS8GL5 is not set + +# +# Tools to develop new frontends +# +# CONFIG_DVB_DUMMY_FE is not set +CONFIG_DVB_AF9013=m +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_TILEBLITTING is not set + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set +CONFIG_OMAP2_DSS=y +CONFIG_OMAP2_DSS_VRAM_SIZE=4 +CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y +# CONFIG_OMAP2_DSS_RFBI is not set +# CONFIG_OMAP2_DSS_VENC is not set +# CONFIG_OMAP2_DSS_SDI is not set +CONFIG_OMAP2_DSS_DSI=y +CONFIG_OMAP2_DSS_USE_DSI_PLL=y +# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=1 + +# +# OMAP2/3 Display Device Drivers +# +CONFIG_PANEL_GENERIC=y +# CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set +# CONFIG_PANEL_SHARP_LS037V7DW01 is not set +CONFIG_FB_OMAP2=y +CONFIG_FB_OMAP2_DEBUG_SUPPORT=y +# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set +CONFIG_FB_OMAP2_NUM_FBS=3 +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +CONFIG_DISPLAY_SUPPORT=y + +# +# Display hardware drivers +# + +# +# Console display driver support +# +# CONFIG_VGA_CONSOLE is not set +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_LOGO is not set +CONFIG_SOUND=y +CONFIG_SOUND_OSS_CORE=y +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQ_DUMMY is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=y +CONFIG_SND_PCM_OSS=y +CONFIG_SND_PCM_OSS_PLUGINS=y +CONFIG_SND_SEQUENCER_OSS=y +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set +CONFIG_SND_ARM=y +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=y +CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_IGEP0020=y +# CONFIG_SND_SOC_ALL_CODECS is not set +CONFIG_SND_SOC_TWL4030=y +# CONFIG_SOUND_PRIME is not set +CONFIG_HID_SUPPORT=y +CONFIG_HID=y +CONFIG_HID_DEBUG=y +# CONFIG_HIDRAW is not set + +# +# USB Input Devices +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# Special HID drivers +# +# CONFIG_HID_COMPAT is not set +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_BRIGHT is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DELL is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_THRUSTMASTER_FF is not set +# CONFIG_ZEROPLUS_FF is not set +CONFIG_USB_SUPPORT=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +CONFIG_USB_DEVICE_CLASS=y +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_SUSPEND=y +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_MON=y +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_OMAP_EHCI_PHY_MODE=y +# CONFIG_OMAP_EHCI_TLL_MODE is not set +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HWA_HCD is not set +CONFIG_USB_MUSB_HDRC=y +CONFIG_USB_MUSB_SOC=y + +# +# OMAP 343x high speed USB support +# +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_PERIPHERAL is not set +CONFIG_USB_MUSB_OTG=y +CONFIG_USB_GADGET_MUSB_HDRC=y +CONFIG_USB_MUSB_HDRC_HCD=y +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_USB_INVENTRA_DMA=y +# CONFIG_USB_TI_CPPI_DMA is not set +# CONFIG_USB_MUSB_DEBUG is not set + +# +# USB Device Class drivers +# +# CONFIG_USB_ACM is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; +# + +# +# see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +CONFIG_USB_LIBUSUAL=y + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_VST is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_SELECTED=y +# CONFIG_USB_GADGET_AT91 is not set +# CONFIG_USB_GADGET_ATMEL_USBA is not set +# CONFIG_USB_GADGET_FSL_USB2 is not set +# CONFIG_USB_GADGET_LH7A40X is not set +# CONFIG_USB_GADGET_OMAP is not set +# CONFIG_USB_GADGET_PXA25X is not set +# CONFIG_USB_GADGET_PXA27X is not set +# CONFIG_USB_GADGET_S3C2410 is not set +# CONFIG_USB_GADGET_M66592 is not set +# CONFIG_USB_GADGET_AMD5536UDC is not set +# CONFIG_USB_GADGET_FSL_QE is not set +# CONFIG_USB_GADGET_NET2280 is not set +# CONFIG_USB_GADGET_GOKU is not set +# CONFIG_USB_GADGET_DUMMY_HCD is not set +CONFIG_USB_GADGET_DUALSPEED=y +# CONFIG_USB_ZERO is not set +CONFIG_USB_ETH=y +CONFIG_USB_ETH_RNDIS=y +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_G_SERIAL is not set +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set + +# +# OTG and related infrastructure +# +CONFIG_USB_OTG_UTILS=y +CONFIG_USB_GPIO_VBUS=y +# CONFIG_ISP1301_OMAP is not set +CONFIG_TWL4030_USB=y +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_UNSAFE_RESUME=y + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_SDHCI is not set +CONFIG_MMC_OMAP_HS=y +# CONFIG_MMC_SPI is not set +# CONFIG_MEMSTICK is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_NEW_LEDS is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_M41T80 is not set +CONFIG_RTC_DRV_TWL4030=y +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8581 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_V3020 is not set + +# +# on-CPU RTC drivers +# +# CONFIG_DMADEVICES is not set +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_BQ24022 is not set +CONFIG_REGULATOR_TWL4030=y +# CONFIG_UIO is not set + +# +# CBUS support +# +# CONFIG_CBUS is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_EXT4_FS=m +# CONFIG_EXT4DEV_COMPAT is not set +CONFIG_EXT4_FS_XATTR=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_JBD2=m +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=m +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +CONFIG_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +CONFIG_DNOTIFY=y +CONFIG_INOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_QUOTA=y +# CONFIG_QUOTA_NETLINK_INTERFACE is not set +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +CONFIG_FUSE_FS=m + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_SUMMARY=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +CONFIG_JFFS2_RUBIN=y +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY is not set +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_CMODE_FAVOURLZO=y +CONFIG_UBIFS_FS=y +# CONFIG_UBIFS_FS_XATTR is not set +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +# CONFIG_UBIFS_FS_DEBUG is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +# CONFIG_NFSD is not set +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +CONFIG_SUNRPC_GSS=y +# CONFIG_SUNRPC_REGISTER_V4 is not set +CONFIG_RPCSEC_GSS_KRB5=y +# CONFIG_RPCSEC_GSS_SPKM3 is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +CONFIG_PRINTK_TIME=y +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +CONFIG_DETECT_SOFTLOCKUP=y +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +CONFIG_DEBUG_MUTEXES=y +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_SG is not set +CONFIG_FRAME_POINTER=y +# CONFIG_BOOT_PRINTK_DELAY is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_CPU_STALL_DETECTOR is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_LATENCYTOP is not set +CONFIG_HAVE_FUNCTION_TRACER=y + +# +# Tracers +# +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_BOOT_TRACER is not set +# CONFIG_STACK_TRACER is not set +# CONFIG_DYNAMIC_PRINTK_DEBUG is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_ERRORS=y +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_LL is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_FILE_CAPABILITIES is not set +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +# CONFIG_CRYPTO_FIPS is not set +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=m +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_GF128MUL=m +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_CRYPTD=m +# CONFIG_CRYPTO_AUTHENC is not set +CONFIG_CRYPTO_TEST=m + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +CONFIG_CRYPTO_HMAC=m +CONFIG_CRYPTO_XCBC=m + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=y +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_WP512=m + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_KHAZAD=m +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_HW=y + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +CONFIG_CRC_T10DIF=y +CONFIG_CRC_ITU_T=y +CONFIG_CRC32=y +CONFIG_CRC7=y +CONFIG_LIBCRC32C=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y diff --git a/recipes/linux/linux-igep2_2.6.28.10-0.bb b/recipes/linux/linux-igep2_2.6.28.10-0.bb new file mode 100644 index 0000000000..ebe291807a --- /dev/null +++ b/recipes/linux/linux-igep2_2.6.28.10-0.bb @@ -0,0 +1,13 @@ +require linux.inc + +DESCRIPTION = "Linux kernel for OMAP processors" +KERNEL_IMAGETYPE = "uImage" + +COMPATIBLE_MACHINE = "igep0020" + +DEFAULT_PREFERENCE_igep0020 = "1" + +SRC_URI = "http://downloads.myigep.com/sources/kernel/linux-omap-2.6.28.10-igep0020b-0.tar.gz \ + file://defconfig" + +S = "${WORKDIR}/linux-omap-2.6.28.10-igep0020b-0" diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/board-omap3touchbook.c b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/board-omap3touchbook.c new file mode 100644 index 0000000000..0296944f83 --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/board-omap3touchbook.c @@ -0,0 +1,739 @@ +/* + * linux/arch/arm/mach-omap2/board-omap3touchbook.c + * + * Copyright (C) 2009 Always Innovating + * + * Modified from mach-omap2/board-omap3beagleboard.c + * + * Initial code: Grégoire Gentil, Tim Yamin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/platform_device.h> +#include <linux/delay.h> +#include <linux/err.h> +#include <linux/clk.h> +#include <linux/io.h> +#include <linux/leds.h> +#include <linux/gpio.h> +#include <linux/input.h> +#include <linux/gpio_keys.h> + +#include <linux/mtd/mtd.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/nand.h> + +#include <mach/mcspi.h> +#include <linux/spi/spi.h> +#include <linux/spi/ads7846.h> +#include <linux/mma7455l.h> + +#include <mach/dmtimer.h> +#include <linux/backlight.h> + +#include <linux/regulator/machine.h> +#include <linux/i2c/twl4030.h> +#include <linux/omapfb.h> + +#include <mach/hardware.h> +#include <asm/mach-types.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#include <asm/mach/flash.h> + +#include <mach/board.h> +#include <mach/usb.h> +#include <mach/common.h> +#include <mach/gpmc.h> +#include <mach/nand.h> +#include <mach/mux.h> +#include <mach/display.h> + +#include "twl4030-generic-scripts.h" +#include "mmc-twl4030.h" + + +#define GPMC_CS0_BASE 0x60 +#define GPMC_CS_SIZE 0x30 + +#define NAND_BLOCK_SIZE SZ_128K + +#define OMAP3_AC_GPIO 136 //Int1 DRDY +#define OMAP3_TS_GPIO 162 +#define TB_BL_PWM_TIMER 9 +#define TB_KILL_POWER_GPIO 168 + +static struct mtd_partition omap3touchbook_nand_partitions[] = { + /* All the partition sizes are listed in terms of NAND block size */ + { + .name = "X-Loader", + .offset = 0, + .size = 4 * NAND_BLOCK_SIZE, + .mask_flags = MTD_WRITEABLE, /* force read-only */ + }, + { + .name = "U-Boot", + .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ + .size = 15 * NAND_BLOCK_SIZE, + .mask_flags = MTD_WRITEABLE, /* force read-only */ + }, + { + .name = "U-Boot Env", + .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */ + .size = 1 * NAND_BLOCK_SIZE, + }, + { + .name = "Kernel", + .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */ + .size = 32 * NAND_BLOCK_SIZE, + }, + { + .name = "File System", + .offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */ + .size = MTDPART_SIZ_FULL, + }, +}; + +static struct omap_nand_platform_data omap3touchbook_nand_data = { + .options = NAND_BUSWIDTH_16, + .parts = omap3touchbook_nand_partitions, + .nr_parts = ARRAY_SIZE(omap3touchbook_nand_partitions), + .dma_channel = -1, /* disable DMA in OMAP NAND driver */ + .nand_setup = NULL, + .dev_ready = NULL, +}; + +static struct resource omap3touchbook_nand_resource = { + .flags = IORESOURCE_MEM, +}; + +static struct platform_device omap3touchbook_nand_device = { + .name = "omap2-nand", + .id = -1, + .dev = { + .platform_data = &omap3touchbook_nand_data, + }, + .num_resources = 1, + .resource = &omap3touchbook_nand_resource, +}; + +#include "sdram-micron-mt46h32m32lf-6.h" + +static struct omap_uart_config omap3_touchbook_uart_config __initdata = { + .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), +}; + +static struct twl4030_usb_data touchbook_usb_data = { + .usb_mode = T2_USB_MODE_ULPI, +}; + +static struct twl4030_hsmmc_info mmc[] = { + { + .mmc = 1, + .wires = 8, + .gpio_wp = 29, + }, + {} /* Terminator */ +}; + +static struct regulator_consumer_supply touchbook_vmmc1_supply = { + .supply = "vmmc", +}; + +static struct regulator_consumer_supply touchbook_vsim_supply = { + .supply = "vmmc_aux", +}; + +static struct gpio_led gpio_leds[]; + +static int touchbook_twl_gpio_setup(struct device *dev, + unsigned gpio, unsigned ngpio) +{ + /* gpio + 0 is "mmc0_cd" (input/IRQ) */ + omap_cfg_reg(AH8_34XX_GPIO29); + mmc[0].gpio_cd = gpio + 0; + twl4030_mmc_init(mmc); + + /* link regulators to MMC adapters */ + touchbook_vmmc1_supply.dev = mmc[0].dev; + touchbook_vsim_supply.dev = mmc[0].dev; + + /* REVISIT: need ehci-omap hooks for external VBUS + * power switch and overcurrent detect + */ + +#if 0 /* TODO: This needs to be modified to not rely on u-boot */ + gpio_request(gpio + 1, "EHCI_nOC"); + gpio_direction_input(gpio + 1); + + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); + + /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ + gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; +#endif + return 0; +} + +static struct twl4030_gpio_platform_data touchbook_gpio_data = { + .gpio_base = OMAP_MAX_GPIO_LINES, + .irq_base = TWL4030_GPIO_IRQ_BASE, + .irq_end = TWL4030_GPIO_IRQ_END, + .use_leds = true, + .pullups = BIT(1), + .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13) + | BIT(15) | BIT(16) | BIT(17), + .setup = touchbook_twl_gpio_setup, +}; + +static struct platform_device omap3_touchbook_lcd_device = { + .name = "omap3touchbook_lcd", + .id = -1, +}; + +static struct regulator_consumer_supply touchbook_vdac_supply = { + .supply = "vdac", + .dev = &omap3_touchbook_lcd_device.dev, +}; + +static struct regulator_consumer_supply touchbook_vdvi_supply = { + .supply = "vdvi", + .dev = &omap3_touchbook_lcd_device.dev, +}; + +/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ +static struct regulator_init_data touchbook_vmmc1 = { + .constraints = { + .min_uV = 1850000, + .max_uV = 3150000, + .valid_modes_mask = REGULATOR_MODE_NORMAL + | REGULATOR_MODE_STANDBY, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE + | REGULATOR_CHANGE_MODE + | REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = 1, + .consumer_supplies = &touchbook_vmmc1_supply, +}; + +/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */ +static struct regulator_init_data touchbook_vsim = { + .constraints = { + .min_uV = 1800000, + .max_uV = 3000000, + .valid_modes_mask = REGULATOR_MODE_NORMAL + | REGULATOR_MODE_STANDBY, + .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE + | REGULATOR_CHANGE_MODE + | REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = 1, + .consumer_supplies = &touchbook_vsim_supply, +}; + +/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */ +static struct regulator_init_data touchbook_vdac = { + .constraints = { + .min_uV = 1800000, + .max_uV = 1800000, + .valid_modes_mask = REGULATOR_MODE_NORMAL + | REGULATOR_MODE_STANDBY, + .valid_ops_mask = REGULATOR_CHANGE_MODE + | REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = 1, + .consumer_supplies = &touchbook_vdac_supply, +}; + +/* VPLL2 for digital video outputs */ +static struct regulator_init_data touchbook_vpll2 = { + .constraints = { + .name = "VDVI", + .min_uV = 1800000, + .max_uV = 1800000, + .valid_modes_mask = REGULATOR_MODE_NORMAL + | REGULATOR_MODE_STANDBY, + .valid_ops_mask = REGULATOR_CHANGE_MODE + | REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = 1, + .consumer_supplies = &touchbook_vdvi_supply, +}; + +static const struct twl4030_resconfig touchbook_resconfig[] = { + /* disable regulators that u-boot left enabled; the + * devices' drivers should be managing these. + */ + { .resource = RES_VAUX3, }, /* not even connected! */ + { .resource = RES_VMMC1, }, + { .resource = RES_VSIM, }, + { .resource = RES_VPLL2, }, + { .resource = RES_VDAC, }, + { .resource = RES_VUSB_1V5, }, + { .resource = RES_VUSB_1V8, }, + { .resource = RES_VUSB_3V1, }, + { 0, }, +}; + +static struct twl4030_power_data touchbook_power_data = { + .resource_config = touchbook_resconfig, + /* REVISIT can't use GENERIC3430_T2SCRIPTS_DATA; + * among other things, it makes reboot fail. + */ +}; + +static struct twl4030_bci_platform_data touchbook_bci_data = { + .tblsize = 0, + .no_backup_battery = 1, +}; + +static struct twl4030_platform_data touchbook_twldata = { + .irq_base = TWL4030_IRQ_BASE, + .irq_end = TWL4030_IRQ_END, + + /* platform_data for children goes here */ + .usb = &touchbook_usb_data, + .gpio = &touchbook_gpio_data, + .power = &touchbook_power_data, + .vmmc1 = &touchbook_vmmc1, + .vsim = &touchbook_vsim, + .vdac = &touchbook_vdac, + .vpll2 = &touchbook_vpll2, + + /* TouchBook BCI */ + .bci = &touchbook_bci_data, +}; + +static struct i2c_board_info __initdata touchbook_i2c_boardinfo[] = { + { + I2C_BOARD_INFO("twl4030", 0x48), + .flags = I2C_CLIENT_WAKE, + .irq = INT_34XX_SYS_NIRQ, + .platform_data = &touchbook_twldata, + }, +}; + +static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = { + { + I2C_BOARD_INFO("bq27200", 0x55), + }, +}; + +static int __init omap3_touchbook_i2c_init(void) +{ + /* Standard TouchBook bus */ + omap_register_i2c_bus(1, 2600, touchbook_i2c_boardinfo, + ARRAY_SIZE(touchbook_i2c_boardinfo)); + + /* Additional TouchBook bus */ + omap_register_i2c_bus(3, 100, touchBook_i2c_boardinfo, + ARRAY_SIZE(touchBook_i2c_boardinfo)); + + return 0; +} + +static void __init omap3_ads7846_init(void) +{ + if (gpio_request(OMAP3_TS_GPIO, "ads7846_pen_down")) { + printk(KERN_ERR "Failed to request GPIO %d for " + "ads7846 pen down IRQ\n", OMAP3_TS_GPIO); + return; + } + + gpio_direction_input(OMAP3_TS_GPIO); + omap_set_gpio_debounce(OMAP3_TS_GPIO, 1); + omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa); +} + +static struct ads7846_platform_data ads7846_config = { + .x_min = 100, + .y_min = 265, + .x_max = 3950, + .y_max = 3750, + .x_plate_ohms = 40, + .pressure_max = 255, + .debounce_max = 10, + .debounce_tol = 5, + .debounce_rep = 1, + .gpio_pendown = OMAP3_TS_GPIO, + .keep_vref_on = 1, +}; + +static struct omap2_mcspi_device_config ads7846_mcspi_config = { + .turbo_mode = 0, + .single_channel = 1, /* 0: slave, 1: master */ +}; + +static struct spi_board_info omap3_ads7846_spi_board_info[] __initdata = { + { + .modalias = "ads7846", + .bus_num = 4, + .chip_select = 0, + .max_speed_hz = 1500000, + .controller_data = &ads7846_mcspi_config, //(void *) 161, + .irq = OMAP_GPIO_IRQ(OMAP3_TS_GPIO), + .platform_data = &ads7846_config, + } +}; + +static void __init omap3_touchbook_init_irq(void) +{ + omap2_init_common_hw(mt46h32m32lf6_sdrc_params); + omap_init_irq(); + omap_gpio_init(); +} + +static struct gpio_led gpio_leds[] = { + { + .name = "touchbook::usr0", + .default_trigger = "heartbeat", + .gpio = 150, + }, + { + .name = "touchbook::usr1", + .default_trigger = "mmc0", + .gpio = 149, + }, + { + .name = "touchbook::pmu_stat", + .gpio = -EINVAL, /* gets replaced */ + .active_low = true, + }, +}; + +static struct gpio_led_platform_data gpio_led_info = { + .leds = gpio_leds, + .num_leds = ARRAY_SIZE(gpio_leds), +}; + +static struct platform_device leds_gpio = { + .name = "leds-gpio", + .id = -1, + .dev = { + .platform_data = &gpio_led_info, + }, +}; + +static struct gpio_keys_button gpio_buttons[] = { + { + .code = BTN_EXTRA, + .gpio = 7, + .desc = "user", + .wakeup = 1, + }, + { + .code = KEY_POWER, + .gpio = 183, + .desc = "power", + .wakeup = 1, + }, +}; + +static struct gpio_keys_platform_data gpio_key_info = { + .buttons = gpio_buttons, + .nbuttons = ARRAY_SIZE(gpio_buttons), +}; + +static struct platform_device keys_gpio = { + .name = "gpio-keys", + .id = -1, + .dev = { + .platform_data = &gpio_key_info, + }, +}; + +/* DSS */ + +static int touchbook_enable_dvi(struct omap_display *display) +{ + if (display->hw_config.panel_reset_gpio != -1) + gpio_set_value(display->hw_config.panel_reset_gpio, 1); + + return 0; +} + +static void touchbook_disable_dvi(struct omap_display *display) +{ + if (display->hw_config.panel_reset_gpio != -1) + gpio_set_value(display->hw_config.panel_reset_gpio, 0); +} + +static struct omap_dss_display_config touchbook_display_data_dvi = { + .type = OMAP_DISPLAY_TYPE_DPI, + .name = "dvi", + .panel_name = "panel-generic", + .u.dpi.data_lines = 24, + .panel_reset_gpio = 176, + .panel_enable = touchbook_enable_dvi, + .panel_disable = touchbook_disable_dvi, +}; + + +static int touchbook_panel_enable_tv(struct omap_display *display) +{ +#define ENABLE_VDAC_DEDICATED 0x03 +#define ENABLE_VDAC_DEV_GRP 0x20 + + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, + ENABLE_VDAC_DEDICATED, + TWL4030_VDAC_DEDICATED); + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, + ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP); + + return 0; +} + +static void touchbook_panel_disable_tv(struct omap_display *display) +{ + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, + TWL4030_VDAC_DEDICATED); + twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00, + TWL4030_VDAC_DEV_GRP); +} + +static struct omap_dss_display_config touchbook_display_data_tv = { + .type = OMAP_DISPLAY_TYPE_VENC, + .name = "tv", + .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, + .panel_enable = touchbook_panel_enable_tv, + .panel_disable = touchbook_panel_disable_tv, +}; + +static struct omap_dss_board_info touchbook_dss_data = { + .num_displays = 2, + .displays = { + &touchbook_display_data_dvi, + &touchbook_display_data_tv, + } +}; + +static struct platform_device touchbook_dss_device = { + .name = "omapdss", + .id = -1, + .dev = { + .platform_data = &touchbook_dss_data, + }, +}; + +static void __init touchbook_display_init(void) +{ + int r; + + r = gpio_request(touchbook_display_data_dvi.panel_reset_gpio, "DVI reset"); + if (r < 0) { + printk(KERN_ERR "Unable to get DVI reset GPIO\n"); + return; + } + + gpio_direction_output(touchbook_display_data_dvi.panel_reset_gpio, 0); +} + +static struct omap_board_config_kernel omap3_touchbook_config[] __initdata = { + { OMAP_TAG_UART, &omap3_touchbook_uart_config }, +}; + +static struct platform_device *omap3_touchbook_devices[] __initdata = { + &touchbook_dss_device, + &leds_gpio, + &keys_gpio, +}; + +static void __init omap3touchbook_flash_init(void) +{ + u8 cs = 0; + u8 nandcs = GPMC_CS_NUM + 1; + + u32 gpmc_base_add = OMAP34XX_GPMC_VIRT; + + /* find out the chip-select on which NAND exists */ + while (cs < GPMC_CS_NUM) { + u32 ret = 0; + ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1); + + if ((ret & 0xC00) == 0x800) { + printk(KERN_INFO "Found NAND on CS%d\n", cs); + if (nandcs > GPMC_CS_NUM) + nandcs = cs; + } + cs++; + } + + if (nandcs > GPMC_CS_NUM) { + printk(KERN_INFO "NAND: Unable to find configuration " + "in GPMC\n "); + return; + } + + if (nandcs < GPMC_CS_NUM) { + omap3touchbook_nand_data.cs = nandcs; + omap3touchbook_nand_data.gpmc_cs_baseaddr = (void *) + (gpmc_base_add + GPMC_CS0_BASE + nandcs * GPMC_CS_SIZE); + omap3touchbook_nand_data.gpmc_baseaddr = (void *) (gpmc_base_add); + + printk(KERN_INFO "Registering NAND on CS%d\n", nandcs); + if (platform_device_register(&omap3touchbook_nand_device) < 0) + printk(KERN_ERR "Unable to register NAND device\n"); + } +} + +static void __init omap3_mma7455l_init(void) +{ + int ret; + + ret = gpio_request(OMAP3_AC_GPIO, "mma7455l"); + if (ret < 0) { + printk(KERN_ERR "Failed to request GPIO %d for mma7455l IRQ\n", OMAP3_AC_GPIO); + return; + } + + gpio_direction_input(OMAP3_AC_GPIO); +} + +static struct mma7455l_platform_data mma7455l_config = { + .calibration_x = -4, //26 for Beagleboard + .calibration_y = 28, //44 for Beagleboard + .calibration_z = -28, //26 for Beagleboard +}; + +static struct omap2_mcspi_device_config mma7455l_mcspi_config = { + .turbo_mode = 0, + .single_channel = 1, /* 0: slave, 1: master */ +}; + +static struct spi_board_info omap3_mma7455l_spi_board_info[] __initdata = { + { + .modalias = "mma7455l", + .bus_num = 3, + .chip_select = 0, + .max_speed_hz = 200000, + .irq = OMAP_GPIO_IRQ(OMAP3_AC_GPIO), + .controller_data = &mma7455l_mcspi_config, //(void *) 135, + .platform_data = &mma7455l_config, + } +}; + +static int touchbook_backlight_brightness = 50; +static struct omap_dm_timer *touchbook_backlight_pwm; + +static int touchbook_backlight_read(struct backlight_device *bd) +{ + return touchbook_backlight_brightness; +} + +static int touchbook_backlight_update(struct backlight_device *bd) +{ + int value = bd->props.brightness; + touchbook_backlight_brightness = value; + + /* Frequency calculation: + - For 200Hz PWM, you want to load -164 (=> -32768Hz / 200Hz). + - Minimum duty cycle for the backlight is 15%. + - You have (164*0.85) => ~140 levels of brightness. + */ + + /* Convert from 0-100 range to 0-140 range */ + value = (value * 14) / 10 / 2; + + /* For maximum brightness, just stop the timer... */ + if(value != bd->props.max_brightness) + { + omap_dm_timer_set_load(touchbook_backlight_pwm, 1, -164); + omap_dm_timer_set_match(touchbook_backlight_pwm, 1, -24 - value); + omap_dm_timer_write_counter(touchbook_backlight_pwm, -1); + //omap_dm_timer_stop(touchbook_backlight_pwm); + omap_dm_timer_start(touchbook_backlight_pwm); + } + else + omap_dm_timer_stop(touchbook_backlight_pwm); + + + return 0; +} + +static struct backlight_ops touchbook_backlight_properties = { + .get_brightness = touchbook_backlight_read, + .update_status = touchbook_backlight_update, +}; + +static void __init omap3_touchbook_backlight_init(void) +{ + static struct backlight_device *bd; + bd = backlight_device_register("touchbook", NULL, NULL, &touchbook_backlight_properties); + + if(bd) + { + touchbook_backlight_pwm = omap_dm_timer_request_specific(TB_BL_PWM_TIMER); + omap_dm_timer_enable(touchbook_backlight_pwm); + omap_dm_timer_set_source(touchbook_backlight_pwm, OMAP_TIMER_SRC_32_KHZ); + omap_dm_timer_set_pwm(touchbook_backlight_pwm, 1, 1, OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE); + + bd->props.max_brightness = 100; + bd->props.brightness = touchbook_backlight_brightness; + } + + touchbook_backlight_update(bd); +} + +static void omap3_touchbook_poweroff(void) +{ + int r; + + r = gpio_request(TB_KILL_POWER_GPIO, "DVI reset"); + if (r < 0) { + printk(KERN_ERR "Unable to get kill power GPIO\n"); + return; + } + + gpio_direction_output(TB_KILL_POWER_GPIO, 0); +} + +static void __init omap3_touchbook_init(void) +{ + pm_power_off = omap3_touchbook_poweroff; + + omap3_touchbook_i2c_init(); + platform_add_devices(omap3_touchbook_devices, + ARRAY_SIZE(omap3_touchbook_devices)); + omap_board_config = omap3_touchbook_config; + omap_board_config_size = ARRAY_SIZE(omap3_touchbook_config); + omap_serial_init(); + + omap_cfg_reg(J25_34XX_GPIO170); + + omap3touchbook_flash_init(); + touchbook_display_init(); + omap3_touchbook_backlight_init(); + + /* Touch Book */ + spi_register_board_info(omap3_ads7846_spi_board_info, ARRAY_SIZE(omap3_ads7846_spi_board_info)); + spi_register_board_info(omap3_mma7455l_spi_board_info, ARRAY_SIZE(omap3_mma7455l_spi_board_info)); + + omap3_ads7846_init(); + omap3_mma7455l_init(); + + usb_musb_init(); + usb_ehci_init(); +} + +static void __init omap3_touchbook_map_io(void) +{ + omap2_set_globals_343x(); + omap2_map_common_io(); +} + +MACHINE_START(OMAP3_TOUCHBOOK, "OMAP3 Touch Book") + /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */ + .phys_io = 0x48000000, + .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, + .boot_params = 0x80000100, + .map_io = omap3_touchbook_map_io, + .init_irq = omap3_touchbook_init_irq, + .init_machine = omap3_touchbook_init, + .timer = &omap_timer, +MACHINE_END diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig index 2ff46a4832..c6fdd4a0a4 100644 --- a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig +++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.29-omap1 -# Fri May 29 14:47:52 2009 +# Thu Aug 13 12:58:49 2009 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -32,6 +32,7 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" # CONFIG_EXPERIMENTAL=y CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y CONFIG_INIT_ENV_ARG_LIMIT=32 CONFIG_LOCALVERSION="" # CONFIG_LOCALVERSION_AUTO is not set @@ -57,7 +58,7 @@ CONFIG_CLASSIC_RCU=y # CONFIG_PREEMPT_RCU_TRACE is not set CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y -CONFIG_LOG_BUF_SHIFT=14 +CONFIG_LOG_BUF_SHIFT=15 CONFIG_GROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y # CONFIG_RT_GROUP_SCHED is not set @@ -189,8 +190,7 @@ CONFIG_ARCH_OMAP3=y # # CONFIG_OMAP_DEBUG_POWERDOMAIN is not set # CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set -CONFIG_OMAP_SMARTREFLEX=y -# CONFIG_OMAP_SMARTREFLEX_TESTING is not set +# CONFIG_OMAP_SMARTREFLEX is not set CONFIG_OMAP_RESET_CLOCKS=y CONFIG_OMAP_BOOT_TAG=y CONFIG_OMAP_BOOT_REASON=y @@ -199,7 +199,7 @@ CONFIG_OMAP_BOOT_REASON=y # CONFIG_OMAP_MUX is not set CONFIG_OMAP_MCBSP=y # CONFIG_OMAP_MBOX_FWK is not set -# CONFIG_OMAP_IOMMU is not set +CONFIG_OMAP_IOMMU=m # CONFIG_OMAP_MPU_TIMER is not set CONFIG_OMAP_32K_TIMER=y CONFIG_OMAP_32K_TIMER_HZ=128 @@ -218,9 +218,10 @@ CONFIG_ARCH_OMAP3430=y # CONFIG_MACH_OMAP_LDP is not set # CONFIG_MACH_OMAP_3430SDP is not set # CONFIG_MACH_OMAP3EVM is not set -CONFIG_MACH_OMAP3_BEAGLE=y +# CONFIG_MACH_OMAP3_BEAGLE is not set # CONFIG_MACH_OVERO is not set # CONFIG_MACH_OMAP3_PANDORA is not set +CONFIG_MACH_OMAP3_TOUCHBOOK=y # # Processor Type @@ -264,15 +265,15 @@ CONFIG_TICK_ONESHOT=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_GENERIC_CLOCKEVENTS_BUILD=y -# CONFIG_VMSPLIT_3G is not set -CONFIG_VMSPLIT_2G=y +CONFIG_VMSPLIT_3G=y +CONFIG_VMSPLIT_2G is not set # CONFIG_VMSPLIT_1G is not set -CONFIG_PAGE_OFFSET=0x80000000 -# CONFIG_PREEMPT is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PREEMPT=y CONFIG_HZ=128 CONFIG_AEABI=y # CONFIG_OABI_COMPAT is not set -CONFIG_ARCH_FLATMEM_HAS_HOLES=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set CONFIG_SELECT_MEMORY_MODEL=y @@ -686,66 +687,8 @@ CONFIG_NET_SCH_FIFO=y # # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set -CONFIG_CAN=m -CONFIG_CAN_RAW=m -CONFIG_CAN_BCM=m - -# -# CAN Device Drivers -# -CONFIG_CAN_VCAN=m -# CONFIG_CAN_DEBUG_DEVICES is not set -CONFIG_IRDA=m - -# -# IrDA protocols -# -CONFIG_IRLAN=m -CONFIG_IRNET=m -CONFIG_IRCOMM=m -CONFIG_IRDA_ULTRA=y - -# -# IrDA options -# -CONFIG_IRDA_CACHE_LAST_LSAP=y -CONFIG_IRDA_FAST_RR=y -CONFIG_IRDA_DEBUG=y - -# -# Infrared-port device drivers -# - -# -# SIR device drivers -# -CONFIG_IRTTY_SIR=m - -# -# Dongle support -# -CONFIG_DONGLE=y -CONFIG_ESI_DONGLE=m -CONFIG_ACTISYS_DONGLE=m -CONFIG_TEKRAM_DONGLE=m -CONFIG_TOIM3232_DONGLE=m -CONFIG_LITELINK_DONGLE=m -CONFIG_MA600_DONGLE=m -CONFIG_GIRBIL_DONGLE=m -CONFIG_MCP2120_DONGLE=m -CONFIG_OLD_BELKIN_DONGLE=m -# CONFIG_ACT200L_DONGLE is not set -CONFIG_KINGSUN_DONGLE=m -CONFIG_KSDAZZLE_DONGLE=m -CONFIG_KS959_DONGLE=m - -# -# FIR device drivers -# -CONFIG_USB_IRDA=m -CONFIG_SIGMATEL_FIR=m -CONFIG_MCS_FIR=m -# CONFIG_OMAP_IR is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set CONFIG_BT=y CONFIG_BT_L2CAP=y CONFIG_BT_SCO=y @@ -777,18 +720,15 @@ CONFIG_AF_RXRPC=m # CONFIG_PHONET is not set CONFIG_FIB_RULES=y CONFIG_WIRELESS=y -CONFIG_CFG80211=y +CONFIG_CFG80211=m # CONFIG_CFG80211_REG_DEBUG is not set CONFIG_NL80211=y -CONFIG_WIRELESS_OLD_REGULATORY=y +# CONFIG_WIRELESS_OLD_REGULATORY is not set CONFIG_WIRELESS_EXT=y CONFIG_WIRELESS_EXT_SYSFS=y CONFIG_LIB80211=y -CONFIG_LIB80211_CRYPT_WEP=y -CONFIG_LIB80211_CRYPT_CCMP=y -CONFIG_LIB80211_CRYPT_TKIP=y # CONFIG_LIB80211_DEBUG is not set -CONFIG_MAC80211=y +CONFIG_MAC80211=m # # Rate control algorithm selection @@ -799,14 +739,13 @@ CONFIG_MAC80211_RC_DEFAULT_PID=y # CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set CONFIG_MAC80211_RC_DEFAULT="pid" # CONFIG_MAC80211_MESH is not set -CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_LEDS is not set # CONFIG_MAC80211_DEBUGFS is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_WIMAX=m CONFIG_WIMAX_DEBUG_LEVEL=8 # CONFIG_RFKILL is not set -CONFIG_NET_9P=m -# CONFIG_NET_9P_DEBUG is not set +# CONFIG_NET_9P is not set # # Device Drivers @@ -1021,7 +960,6 @@ CONFIG_EQUALIZER=m CONFIG_TUN=m CONFIG_VETH=m # CONFIG_NET_ETHERNET is not set -CONFIG_MII=y # CONFIG_NETDEV_1000 is not set # CONFIG_NETDEV_10000 is not set @@ -1030,36 +968,19 @@ CONFIG_MII=y # # CONFIG_WLAN_PRE80211 is not set CONFIG_WLAN_80211=y -CONFIG_LIBERTAS=y -CONFIG_LIBERTAS_USB=y -# CONFIG_LIBERTAS_SDIO is not set -# CONFIG_LIBERTAS_DEBUG is not set +# CONFIG_LIBERTAS is not set # CONFIG_LIBERTAS_THINFIRM is not set -CONFIG_USB_ZD1201=y -CONFIG_USB_NET_RNDIS_WLAN=y -CONFIG_RTL8187=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_RTL8187 is not set # CONFIG_MAC80211_HWSIM is not set -CONFIG_P54_COMMON=y -CONFIG_P54_USB=y +# CONFIG_P54_COMMON is not set # CONFIG_IWLWIFI_LEDS is not set -CONFIG_HOSTAP=y -CONFIG_HOSTAP_FIRMWARE=y -CONFIG_HOSTAP_FIRMWARE_NVRAM=y -CONFIG_B43=y -CONFIG_B43_LEDS=y -# CONFIG_B43_DEBUG is not set +# CONFIG_HOSTAP is not set +# CONFIG_B43 is not set # CONFIG_B43LEGACY is not set -CONFIG_ZD1211RW=y -# CONFIG_ZD1211RW_DEBUG is not set -CONFIG_RT2X00=y -CONFIG_RT2500USB=y -CONFIG_RT73USB=y -CONFIG_RT2X00_LIB_USB=y -CONFIG_RT2X00_LIB=y -CONFIG_RT2X00_LIB_FIRMWARE=y -CONFIG_RT2X00_LIB_CRYPTO=y -CONFIG_RT2X00_LIB_LEDS=y -# CONFIG_RT2X00_DEBUG is not set +# CONFIG_ZD1211RW is not set +# CONFIG_RT2X00 is not set # # WiMAX Wireless Broadband devices @@ -1070,32 +991,13 @@ CONFIG_RT2X00_LIB_LEDS=y # # USB Network Adapters # -CONFIG_USB_CATC=y -CONFIG_USB_KAWETH=y -CONFIG_USB_PEGASUS=y -CONFIG_USB_RTL8150=y -CONFIG_USB_USBNET=y -CONFIG_USB_NET_AX8817X=y -CONFIG_USB_NET_CDCETHER=y -CONFIG_USB_NET_DM9601=y -CONFIG_USB_NET_SMSC95XX=y -CONFIG_USB_NET_GL620A=y -CONFIG_USB_NET_NET1080=y -CONFIG_USB_NET_PLUSB=y -CONFIG_USB_NET_MCS7830=y -CONFIG_USB_NET_RNDIS_HOST=y -CONFIG_USB_NET_CDC_SUBSET=y -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_KC2190=y -CONFIG_USB_NET_ZAURUS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET is not set # CONFIG_WAN is not set -CONFIG_ATM_DRIVERS=y -# CONFIG_ATM_DUMMY is not set -# CONFIG_ATM_TCP is not set +# CONFIG_ATM_DRIVERS is not set CONFIG_PPP=m CONFIG_PPP_MULTILINK=y CONFIG_PPP_FILTER=y @@ -1299,7 +1201,7 @@ CONFIG_SPI_OMAP24XX=y # # CONFIG_SPI_TSC210X is not set # CONFIG_SPI_TSC2301 is not set -# CONFIG_SPI_SPIDEV is not set +CONFIG_SPI_SPIDEV=y # CONFIG_SPI_TLE62X0 is not set CONFIG_ARCH_REQUIRE_GPIOLIB=y CONFIG_GPIOLIB=y @@ -1413,9 +1315,7 @@ CONFIG_SSB_POSSIBLE=y # # Sonics Silicon Backplane # -CONFIG_SSB=y -# CONFIG_SSB_SILENT is not set -# CONFIG_SSB_DEBUG is not set +# CONFIG_SSB is not set # # Multifunction device drivers @@ -1459,21 +1359,17 @@ CONFIG_MEDIA_TUNER=m # CONFIG_MEDIA_TUNER_CUSTOMIZE is not set CONFIG_MEDIA_TUNER_SIMPLE=m CONFIG_MEDIA_TUNER_TDA8290=m -CONFIG_MEDIA_TUNER_TDA827X=m CONFIG_MEDIA_TUNER_TDA18271=m CONFIG_MEDIA_TUNER_TDA9887=m CONFIG_MEDIA_TUNER_TEA5761=m CONFIG_MEDIA_TUNER_TEA5767=m CONFIG_MEDIA_TUNER_MT20XX=m -CONFIG_MEDIA_TUNER_MT2060=m -CONFIG_MEDIA_TUNER_MT2266=m -CONFIG_MEDIA_TUNER_QT1010=m CONFIG_MEDIA_TUNER_XC2028=m CONFIG_MEDIA_TUNER_XC5000=m -CONFIG_MEDIA_TUNER_MXL5005S=m CONFIG_VIDEO_V4L2=m CONFIG_VIDEO_V4L1=m CONFIG_VIDEOBUF_GEN=m +CONFIG_VIDEOBUF_DMA_SG=m CONFIG_VIDEOBUF_VMALLOC=m CONFIG_VIDEOBUF_DVB=m CONFIG_VIDEO_IR=m @@ -1497,7 +1393,8 @@ CONFIG_VIDEO_VIVI=m # CONFIG_VIDEO_SAA5246A is not set # CONFIG_VIDEO_SAA5249 is not set # CONFIG_VIDEO_AU0828 is not set -# CONFIG_VIDEO_OMAP3 is not set +CONFIG_VIDEO_OMAP3=m +CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=m # CONFIG_SOC_CAMERA is not set CONFIG_V4L_USB_DRIVERS=y CONFIG_USB_VIDEO_CLASS=m @@ -1559,149 +1456,12 @@ CONFIG_RADIO_ADAPTERS=y # CONFIG_USB_MR800 is not set # CONFIG_RADIO_TEA5764 is not set CONFIG_DVB_DYNAMIC_MINORS=y -CONFIG_DVB_CAPTURE_DRIVERS=y -# CONFIG_TTPCI_EEPROM is not set - -# -# Supported USB Adapters -# -CONFIG_DVB_USB=m -# CONFIG_DVB_USB_DEBUG is not set -CONFIG_DVB_USB_A800=m -CONFIG_DVB_USB_DIBUSB_MB=m -# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set -CONFIG_DVB_USB_DIBUSB_MC=m -CONFIG_DVB_USB_DIB0700=m -CONFIG_DVB_USB_UMT_010=m -CONFIG_DVB_USB_CXUSB=m -CONFIG_DVB_USB_M920X=m -CONFIG_DVB_USB_GL861=m -CONFIG_DVB_USB_AU6610=m -CONFIG_DVB_USB_DIGITV=m -CONFIG_DVB_USB_VP7045=m -CONFIG_DVB_USB_VP702X=m -CONFIG_DVB_USB_GP8PSK=m -CONFIG_DVB_USB_NOVA_T_USB2=m -CONFIG_DVB_USB_TTUSB2=m -CONFIG_DVB_USB_DTT200U=m -CONFIG_DVB_USB_OPERA1=m -CONFIG_DVB_USB_AF9005=m -CONFIG_DVB_USB_AF9005_REMOTE=m -CONFIG_DVB_USB_DW2102=m -CONFIG_DVB_USB_CINERGY_T2=m -CONFIG_DVB_USB_ANYSEE=m -CONFIG_DVB_USB_DTV5100=m -CONFIG_DVB_USB_AF9015=m -CONFIG_DVB_SIANO_SMS1XXX=m -CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y - -# -# Supported FlexCopII (B2C2) Adapters -# -CONFIG_DVB_B2C2_FLEXCOP=m -CONFIG_DVB_B2C2_FLEXCOP_USB=m -# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set - -# -# Supported DVB Frontends -# - -# -# Customise DVB Frontends -# -# CONFIG_DVB_FE_CUSTOMISE is not set - -# -# Multistandard (satellite) frontends -# -CONFIG_DVB_STB0899=m -CONFIG_DVB_STB6100=m - -# -# DVB-S (satellite) frontends -# -CONFIG_DVB_CX24110=m -CONFIG_DVB_CX24123=m -CONFIG_DVB_MT312=m -CONFIG_DVB_S5H1420=m -CONFIG_DVB_STV0288=m -CONFIG_DVB_STB6000=m -CONFIG_DVB_STV0299=m -CONFIG_DVB_TDA8083=m -CONFIG_DVB_TDA10086=m -CONFIG_DVB_TDA8261=m -CONFIG_DVB_VES1X93=m -CONFIG_DVB_TUNER_ITD1000=m -CONFIG_DVB_TUNER_CX24113=m -CONFIG_DVB_TDA826X=m -CONFIG_DVB_TUA6100=m -CONFIG_DVB_CX24116=m -CONFIG_DVB_SI21XX=m - -# -# DVB-T (terrestrial) frontends -# -CONFIG_DVB_SP8870=m -CONFIG_DVB_SP887X=m -CONFIG_DVB_CX22700=m -CONFIG_DVB_CX22702=m -CONFIG_DVB_DRX397XD=m -CONFIG_DVB_L64781=m -CONFIG_DVB_TDA1004X=m -CONFIG_DVB_NXT6000=m -CONFIG_DVB_MT352=m +# CONFIG_DVB_CAPTURE_DRIVERS is not set CONFIG_DVB_ZL10353=m -CONFIG_DVB_DIB3000MB=m -CONFIG_DVB_DIB3000MC=m -CONFIG_DVB_DIB7000M=m -CONFIG_DVB_DIB7000P=m CONFIG_DVB_TDA10048=m - -# -# DVB-C (cable) frontends -# -CONFIG_DVB_VES1820=m -CONFIG_DVB_TDA10021=m -CONFIG_DVB_TDA10023=m -CONFIG_DVB_STV0297=m - -# -# ATSC (North American/Korean Terrestrial/Cable DTV) frontends -# -CONFIG_DVB_NXT200X=m -CONFIG_DVB_OR51211=m -CONFIG_DVB_OR51132=m -CONFIG_DVB_BCM3510=m CONFIG_DVB_LGDT330X=m -CONFIG_DVB_LGDT3304=m CONFIG_DVB_S5H1409=m -CONFIG_DVB_AU8522=m CONFIG_DVB_S5H1411=m - -# -# ISDB-T (terrestrial) frontends -# -CONFIG_DVB_S921=m - -# -# Digital terrestrial only tuners/PLL -# -CONFIG_DVB_PLL=m -CONFIG_DVB_TUNER_DIB0070=m - -# -# SEC control devices for DVB-S -# -CONFIG_DVB_LNBP21=m -# CONFIG_DVB_ISL6405 is not set -CONFIG_DVB_ISL6421=m -CONFIG_DVB_LGS8GL5=m - -# -# Tools to develop new frontends -# -# CONFIG_DVB_DUMMY_FE is not set -CONFIG_DVB_AF9013=m # CONFIG_DAB is not set # @@ -1823,7 +1583,7 @@ CONFIG_SND_USB_CAIAQ_INPUT=y CONFIG_SND_SOC=y CONFIG_SND_OMAP_SOC=y CONFIG_SND_OMAP_SOC_MCBSP=y -CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y +CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK=y CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_ALL_CODECS is not set CONFIG_SND_SOC_TWL4030=y @@ -1844,28 +1604,26 @@ CONFIG_USB_HID=y # Special HID drivers # CONFIG_HID_COMPAT=y -CONFIG_HID_A4TECH=y -CONFIG_HID_APPLE=y -CONFIG_HID_BELKIN=y -CONFIG_HID_CHERRY=y -CONFIG_HID_CHICONY=y -CONFIG_HID_CYPRESS=y -CONFIG_HID_EZKEY=y -CONFIG_HID_GYRATION=y -CONFIG_HID_LOGITECH=y -# CONFIG_LOGITECH_FF is not set -# CONFIG_LOGIRUMBLEPAD2_FF is not set -CONFIG_HID_MICROSOFT=y -CONFIG_HID_MONTEREY=y -CONFIG_HID_NTRIG=y -CONFIG_HID_PANTHERLORD=y -# CONFIG_PANTHERLORD_FF is not set -CONFIG_HID_PETALYNX=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SONY=y -CONFIG_HID_SUNPLUS=y -CONFIG_GREENASIA_FF=y -CONFIG_HID_TOPSEED=y +# CONFIG_HID_A4TECH is not set +CONFIG_HID_AI=y +# CONFIG_HID_APPLE is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_GREENASIA_FF is not set +# CONFIG_HID_TOPSEED is not set # CONFIG_THRUSTMASTER_FF is not set # CONFIG_ZEROPLUS_FF is not set CONFIG_USB_SUPPORT=y @@ -1902,7 +1660,6 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_OXU210HP_HCD=y # CONFIG_USB_ISP116X_HCD is not set # CONFIG_USB_OHCI_HCD is not set -# CONFIG_USB_U132_HCD is not set # CONFIG_USB_SL811_HCD is not set # CONFIG_USB_R8A66597_HCD is not set # CONFIG_USB_HWA_HCD is not set @@ -2028,32 +1785,25 @@ CONFIG_USB_EMI26=m # CONFIG_USB_ADUTUX is not set # CONFIG_USB_SEVSEG is not set # CONFIG_USB_RIO500 is not set -CONFIG_USB_LEGOTOWER=m -CONFIG_USB_LCD=m -CONFIG_USB_BERRY_CHARGE=m -CONFIG_USB_LED=m -CONFIG_USB_CYPRESS_CY7C63=m -CONFIG_USB_CYTHERM=m -CONFIG_USB_PHIDGET=m -CONFIG_USB_PHIDGETKIT=m -CONFIG_USB_PHIDGETMOTORCONTROL=m -CONFIG_USB_PHIDGETSERVO=m -CONFIG_USB_IDMOUSE=m -CONFIG_USB_FTDI_ELAN=m +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_BERRY_CHARGE is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGET is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set # CONFIG_USB_APPLEDISPLAY is not set CONFIG_USB_SISUSBVGA=m CONFIG_USB_SISUSBVGA_CON=y -CONFIG_USB_LD=m -CONFIG_USB_TRANCEVIBRATOR=m +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set # CONFIG_USB_IOWARRIOR is not set CONFIG_USB_TEST=m # CONFIG_USB_ISIGHTFW is not set -CONFIG_USB_VST=m -CONFIG_USB_ATM=m -CONFIG_USB_SPEEDTOUCH=m -CONFIG_USB_CXACRU=m -CONFIG_USB_UEAGLEATM=m -CONFIG_USB_XUSBATM=m +# CONFIG_USB_VST is not set +# CONFIG_USB_ATM is not set CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set @@ -2217,12 +1967,12 @@ CONFIG_STAGING=y # CONFIG_STAGING_EXCLUDE_BUILD is not set # CONFIG_MEILHAUS is not set # CONFIG_USB_IP_COMMON is not set -CONFIG_W35UND=m -CONFIG_PRISM2_USB=m +# CONFIG_W35UND is not set +# CONFIG_PRISM2_USB is not set # CONFIG_ECHO is not set -CONFIG_USB_ATMEL=m +# CONFIG_USB_ATMEL is not set # CONFIG_AGNX is not set -CONFIG_OTUS=m +# CONFIG_OTUS is not set # CONFIG_COMEDI is not set # CONFIG_ASUS_OLED is not set # CONFIG_INPUT_MIMIO is not set @@ -2285,17 +2035,9 @@ CONFIG_XFS_FS=m # CONFIG_XFS_POSIX_ACL is not set # CONFIG_XFS_RT is not set # CONFIG_XFS_DEBUG is not set -CONFIG_GFS2_FS=m -CONFIG_GFS2_FS_LOCKING_DLM=m -CONFIG_OCFS2_FS=m -CONFIG_OCFS2_FS_O2CB=m -CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m -CONFIG_OCFS2_FS_STATS=y -CONFIG_OCFS2_DEBUG_MASKLOG=y -# CONFIG_OCFS2_DEBUG_FS is not set -# CONFIG_OCFS2_FS_POSIX_ACL is not set -CONFIG_BTRFS_FS=m -# CONFIG_BTRFS_FS_POSIX_ACL is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set CONFIG_DNOTIFY=y CONFIG_INOTIFY=y CONFIG_INOTIFY_USER=y @@ -2343,16 +2085,14 @@ CONFIG_TMPFS=y # CONFIG_HUGETLB_PAGE is not set CONFIG_CONFIGFS_FS=m CONFIG_MISC_FILESYSTEMS=y -CONFIG_ADFS_FS=m -# CONFIG_ADFS_FS_RW is not set -CONFIG_AFFS_FS=m +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set # CONFIG_ECRYPT_FS is not set -CONFIG_HFS_FS=m -CONFIG_HFSPLUS_FS=m -CONFIG_BEFS_FS=m -# CONFIG_BEFS_DEBUG is not set -CONFIG_BFS_FS=m -CONFIG_EFS_FS=m +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_WRITEBUFFER=y @@ -2376,20 +2116,18 @@ CONFIG_UBIFS_FS_ADVANCED_COMPR=y CONFIG_UBIFS_FS_LZO=y CONFIG_UBIFS_FS_ZLIB=y # CONFIG_UBIFS_FS_DEBUG is not set -CONFIG_CRAMFS=m +# CONFIG_CRAMFS is not set CONFIG_SQUASHFS=y # CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 -CONFIG_VXFS_FS=m -CONFIG_MINIX_FS=m -CONFIG_OMFS_FS=m -CONFIG_HPFS_FS=m -CONFIG_QNX4FS_FS=m -CONFIG_ROMFS_FS=m -CONFIG_SYSV_FS=m -CONFIG_UFS_FS=m -# CONFIG_UFS_FS_WRITE is not set -# CONFIG_UFS_DEBUG is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set CONFIG_AUFS_FS=y CONFIG_AUFS_BRANCH_MAX_127=y # CONFIG_AUFS_BRANCH_MAX_511 is not set @@ -2422,8 +2160,7 @@ CONFIG_SUNRPC_GSS=y # CONFIG_SUNRPC_REGISTER_V4 is not set CONFIG_RPCSEC_GSS_KRB5=y # CONFIG_RPCSEC_GSS_SPKM3 is not set -CONFIG_SMB_FS=m -# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_SMB_FS is not set CONFIG_CIFS=m CONFIG_CIFS_STATS=y CONFIG_CIFS_STATS2=y @@ -2433,19 +2170,9 @@ CONFIG_CIFS_STATS2=y # CONFIG_CIFS_DEBUG2 is not set CONFIG_CIFS_EXPERIMENTAL=y # CONFIG_CIFS_DFS_UPCALL is not set -CONFIG_NCP_FS=m -# CONFIG_NCPFS_PACKET_SIGNING is not set -# CONFIG_NCPFS_IOCTL_LOCKING is not set -# CONFIG_NCPFS_STRONG is not set -# CONFIG_NCPFS_NFS_NS is not set -# CONFIG_NCPFS_OS2_NS is not set -# CONFIG_NCPFS_SMALLDOS is not set -# CONFIG_NCPFS_NLS is not set -# CONFIG_NCPFS_EXTRAS is not set -CONFIG_CODA_FS=m -CONFIG_AFS_FS=m -# CONFIG_AFS_DEBUG is not set -CONFIG_9P_FS=m +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set # # Partition Types @@ -2455,14 +2182,13 @@ CONFIG_PARTITION_ADVANCED=y # CONFIG_OSF_PARTITION is not set # CONFIG_AMIGA_PARTITION is not set # CONFIG_ATARI_PARTITION is not set -CONFIG_MAC_PARTITION=y +# CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y CONFIG_BSD_DISKLABEL=y CONFIG_MINIX_SUBPARTITION=y CONFIG_SOLARIS_X86_PARTITION=y CONFIG_UNIXWARE_DISKLABEL=y -CONFIG_LDM_PARTITION=y -CONFIG_LDM_DEBUG=y +# CONFIG_LDM_PARTITION is not set # CONFIG_SGI_PARTITION is not set # CONFIG_ULTRIX_PARTITION is not set # CONFIG_SUN_PARTITION is not set @@ -2509,8 +2235,7 @@ CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m CONFIG_NLS_UTF8=y -CONFIG_DLM=m -# CONFIG_DLM_DEBUG is not set +# CONFIG_DLM is not set # # Kernel hacking @@ -2533,6 +2258,7 @@ CONFIG_SCHEDSTATS=y CONFIG_TIMER_STATS=y # CONFIG_DEBUG_OBJECTS is not set # CONFIG_DEBUG_SLAB is not set +CONFIG_DEBUG_PREEMPT=y # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set # CONFIG_DEBUG_SPINLOCK is not set @@ -2570,6 +2296,7 @@ CONFIG_TRACING=y # # CONFIG_FUNCTION_TRACER is not set # CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set # CONFIG_SCHED_TRACER is not set # CONFIG_CONTEXT_SWITCH_TRACER is not set # CONFIG_BOOT_TRACER is not set diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/dss2-fix-rotation-offsets.patch b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/dss2-fix-rotation-offsets.patch new file mode 100644 index 0000000000..959110bc1d --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/dss2-fix-rotation-offsets.patch @@ -0,0 +1,54 @@ +--- a/drivers/video/omap2/omapfb/omapfb-main.c ++++ b/drivers/video/omap2/omapfb/omapfb-main.c +@@ -661,13 +661,15 @@ + u32 data_start_p; + void __iomem *data_start_v; + struct omap_overlay_info info; +- int xres, yres; ++ int xres, yres, xoff, yoff; + int screen_width; + int mirror; + + DBG("setup_overlay %d, posx %d, posy %d, outw %d, outh %d\n", ofbi->id, + posx, posy, outw, outh); + ++ xoff = var->xoffset; ++ yoff = var->yoffset; + if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_CCW) { + xres = var->yres; + yres = var->xres; +@@ -676,8 +678,32 @@ + yres = var->yres; + } + +- offset = ((var->yoffset * var->xres_virtual + +- var->xoffset) * var->bits_per_pixel) >> 3; ++ if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_UD) { ++ if (var->yres < var->yres_virtual) { ++ if (var->yoffset) ++ yoff = 0; ++ else ++ yoff = var->yres_virtual - var->yres; ++ } ++ } ++ ++ if (ofbi->rotation == FB_ROTATE_CCW || ofbi->rotation == FB_ROTATE_UD) { ++ if (var->xres < var->xres_virtual) { ++ if (var->xoffset) ++ xoff = 0; ++ else ++ xoff = var->xres_virtual - var->xres; ++ } ++ } ++ ++ if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_CCW) { ++ offset = ((xoff * fix->line_length) >> 1) + ++ ((yoff * var->bits_per_pixel) >> 2); ++ } else ++ { ++ offset = yoff * fix->line_length + ++ ((xoff * var->bits_per_pixel) >> 3); ++ } + + if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) { + data_start_p = omapfb_get_region_rot_paddr(ofbi); diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/keyboard-special-keys.patch b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/keyboard-special-keys.patch new file mode 100644 index 0000000000..030de12261 --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/keyboard-special-keys.patch @@ -0,0 +1,244 @@ +--- a/drivers/hid/Kconfig ++++ b/drivers/hid/Kconfig +@@ -89,6 +89,13 @@ config HID_A4TECH + ---help--- + Support for A4 tech X5 and WOP-35 / Trust 450L mice. + ++config HID_AI ++ tristate "Always Innovating" if EMBEDDED ++ depends on USB_HID ++ default !EMBEDDED ++ ---help--- ++ Support for Always Innovating Touch Book. ++ + config HID_APPLE + tristate "Apple" if EMBEDDED + depends on (USB_HID || BT_HIDP) +diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile +index fbd021f..88c0ead 100644 +--- a/drivers/hid/Makefile ++++ b/drivers/hid/Makefile +@@ -21,6 +21,7 @@ ifdef CONFIG_LOGIRUMBLEPAD2_FF + endif + + obj-$(CONFIG_HID_A4TECH) += hid-a4tech.o ++obj-$(CONFIG_HID_AI) += hid-ai.o + obj-$(CONFIG_HID_APPLE) += hid-apple.o + obj-$(CONFIG_HID_BELKIN) += hid-belkin.o + obj-$(CONFIG_HID_CHERRY) += hid-cherry.o +diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c +index 1cc9674..84b580e 100644 +--- a/drivers/hid/hid-core.c ++++ b/drivers/hid/hid-core.c +@@ -1222,6 +1222,7 @@ EXPORT_SYMBOL_GPL(hid_connect); + static const struct hid_device_id hid_blacklist[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) }, + { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) }, +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h +index 8851197..3d6fe8e 100644 +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -54,6 +54,9 @@ + #define USB_VENDOR_ID_ALPS 0x0433 + #define USB_DEVICE_ID_IBM_GAMEPAD 0x1101 + ++#define USB_VENDOR_ID_AI 0xa110 ++#define USB_DEVICE_ID_AI_TOUCH_BOOK 0x0002 ++ + #define USB_VENDOR_ID_APPLE 0x05ac + #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 + #define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e +--- a/drivers/hid/hid-ai.c 2009-07-15 08:30:35.000000000 -0700 ++++ b/drivers/hid/hid-ai.c 2009-09-04 21:58:06.000000000 -0700 +@@ -0,0 +1,187 @@ ++/* ++ * USB HID quirks support for the Always Innovating Touch Book ++ * Code borrowed from hid-apple.c ++ * ++ * Copyright (c) 2009 Tim Yamin <plasm@roo.me.uk> ++ */ ++ ++/* ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License as published by the Free ++ * Software Foundation; either version 2 of the License, or (at your option) ++ * any later version. ++ */ ++ ++#include <linux/device.h> ++#include <linux/hid.h> ++#include <linux/module.h> ++#include <linux/usb.h> ++ ++#include "hid-ids.h" ++ ++struct ai_sc { ++ unsigned long quirks; ++ unsigned int fn_on; ++ DECLARE_BITMAP(pressed_fn, KEY_CNT); ++}; ++ ++struct ai_key_translation { ++ u16 from; ++ u16 to; ++ u8 flags; ++}; ++ ++static struct ai_key_translation ai_fn_keys[] = { ++ { KEY_F6, KEY_BRIGHTNESSDOWN }, ++ { KEY_F7, KEY_BRIGHTNESSUP }, ++ ++ { KEY_F8, KEY_MUTE }, ++ { KEY_F9, KEY_VOLUMEDOWN }, ++ { KEY_F10, KEY_VOLUMEUP }, ++ ++ { KEY_UP, KEY_PAGEUP }, ++ { KEY_DOWN, KEY_PAGEDOWN }, ++ { } ++}; ++ ++static struct ai_key_translation *ai_find_translation( ++ struct ai_key_translation *table, u16 from) ++{ ++ struct ai_key_translation *trans; ++ ++ /* Look for the translation */ ++ for (trans = table; trans->from; trans++) ++ if (trans->from == from) ++ return trans; ++ ++ return NULL; ++} ++ ++static int ai_event(struct hid_device *hid, struct hid_field *field, ++ struct hid_usage *usage, __s32 value) ++{ ++ int do_translate; ++ ++ struct input_dev *input = field->hidinput->input; ++ struct ai_sc *asc = hid_get_drvdata(hid); ++ struct ai_key_translation *trans; ++ ++ if (usage->code == KEY_POWER) { ++ asc->fn_on = !!value; ++ input_event(input, usage->type, usage->code, value); ++ return 1; ++ } ++ ++ trans = ai_find_translation(ai_fn_keys, usage->code); ++ if (trans) { ++ if (test_bit(usage->code, asc->pressed_fn)) ++ do_translate = 1; ++ else ++ do_translate = asc->fn_on; ++ ++ if (do_translate) { ++ if (value) ++ set_bit(usage->code, asc->pressed_fn); ++ else ++ clear_bit(usage->code, asc->pressed_fn); ++ ++ input_event(input, usage->type, trans->to, ++ value); ++ ++ return 1; ++ } ++ } ++ ++ return 0; ++} ++ ++static int ai_input_mapping(struct hid_device *hdev, struct hid_input *hi, ++ struct hid_field *field, struct hid_usage *usage, ++ unsigned long **bit, int *max) ++{ ++ struct ai_key_translation *trans; ++ ++ /* Enable all other keys */ ++ for (trans = ai_fn_keys; trans->from; trans++) ++ set_bit(trans->to, hi->input->keybit); ++ ++ return 0; ++} ++ ++static int ai_probe(struct hid_device *hdev, ++ const struct hid_device_id *id) ++{ ++ unsigned long quirks = id->driver_data; ++ struct ai_sc *asc; ++ unsigned int connect_mask = HID_CONNECT_DEFAULT; ++ int ret; ++ ++ asc = kzalloc(sizeof(*asc), GFP_KERNEL); ++ if (asc == NULL) { ++ dev_err(&hdev->dev, "can't alloc ai descriptor\n"); ++ return -ENOMEM; ++ } ++ ++ asc->quirks = quirks; ++ hid_set_drvdata(hdev, asc); ++ ++ ret = hid_parse(hdev); ++ if (ret) { ++ dev_err(&hdev->dev, "parse failed\n"); ++ goto err_free; ++ } ++ ++ ret = hid_hw_start(hdev, connect_mask); ++ if (ret) { ++ dev_err(&hdev->dev, "hw start failed\n"); ++ goto err_free; ++ } ++ ++ return 0; ++err_free: ++ kfree(asc); ++ return ret; ++} ++ ++static void ai_remove(struct hid_device *hdev) ++{ ++ hid_hw_stop(hdev); ++ kfree(hid_get_drvdata(hdev)); ++} ++ ++static const struct hid_device_id ai_devices[] = { ++ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) }, ++ { } ++}; ++ ++MODULE_DEVICE_TABLE(hid, ai_devices); ++ ++static struct hid_driver ai_driver = { ++ .name = "ai", ++ .id_table = ai_devices, ++ .probe = ai_probe, ++ .remove = ai_remove, ++ .event = ai_event, ++ .input_mapping = ai_input_mapping, ++}; ++ ++static int ai_init(void) ++{ ++ int ret; ++ ++ ret = hid_register_driver(&ai_driver); ++ if (ret) ++ printk(KERN_ERR "can't register ai driver\n"); ++ ++ return ret; ++} ++ ++static void ai_exit(void) ++{ ++ hid_unregister_driver(&ai_driver); ++} ++ ++module_init(ai_init); ++module_exit(ai_exit); ++MODULE_LICENSE("GPL"); ++HID_COMPAT_LOAD_DRIVER(ai); diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/touchbook-config.patch b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/touchbook-config.patch new file mode 100644 index 0000000000..1482bf666d --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/touchbook-config.patch @@ -0,0 +1,60 @@ +--- a/arch/arm/mach-omap2/Kconfig 2009-10-13 15:19:17.000000000 -0700 ++++ b/arch/arm/mach-omap2/Kconfig 2009-10-13 15:19:51.000000000 -0700 +@@ -137,3 +137,9 @@ + config MACH_OMAP3_PANDORA + bool "OMAP3 Pandora" + depends on ARCH_OMAP3 && ARCH_OMAP34XX ++ ++config MACH_OMAP3_TOUCHBOOK ++ bool "OMAP3 Touch Book" ++ depends on ARCH_OMAP3 && ARCH_OMAP34XX ++ select BACKLIGHT_CLASS_DEVICE ++ +--- a/arch/arm/mach-omap2/Makefile 2009-10-13 15:22:26.000000000 -0700 ++++ b/arch/arm/mach-omap2/Makefile 2009-10-13 15:21:10.000000000 -0700 +@@ -87,6 +87,9 @@ + twl4030-generic-scripts.o + obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \ + mmc-twl4030.o ++obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK) += board-omap3touchbook.o \ ++ mmc-twl4030.o \ ++ twl4030-generic-scripts.o + + # Platform specific device init code + obj-$(CONFIG_USB_MUSB_SOC) += usb-musb.o +--- a/sound/soc/omap/Makefile 2009-10-15 21:07:27.000000000 +0200 ++++ b/sound/soc/omap/Makefile 2009-10-15 21:09:18.000000000 +0200 +@@ -13,6 +13,7 @@ + snd-soc-sdp3430-objs := sdp3430.o + snd-soc-omap3pandora-objs := omap3pandora.o + snd-soc-omap3beagle-objs := omap3beagle.o ++snd-soc-omap3touchbook-objs := omap3beagle.o + + obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o + obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o +@@ -21,3 +22,4 @@ + obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o + obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o + obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o ++obj-$(CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK) += snd-soc-omap3beagle.o +--- a/sound/soc/omap/Kconfig 2009-10-15 21:07:35.000000000 +0200 ++++ b/sound/soc/omap/Kconfig 2009-10-15 21:08:24.000000000 +0200 +@@ -64,4 +64,11 @@ + help + Say Y if you want to add support for SoC audio on the Beagleboard. + ++config SND_OMAP_SOC_OMAP3_TOUCHBOOK ++ tristate "SoC Audio support for OMAP3 Touch Book" ++ depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_TOUCHBOOK ++ select SND_OMAP_SOC_MCBSP ++ select SND_SOC_TWL4030 ++ help ++ Say Y if you want to add support for SoC audio on the Touch Book. + +--- a/arch/arm/tools/mach-types 2009-10-16 08:22:36.000000000 +0800 ++++ b/arch/arm/tools/mach-types 2009-10-16 08:23:13.000000000 +0800 +@@ -2124,3 +2124,4 @@ + fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134 + rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135 + smallogger MACH_SMALLOGGER SMALLOGGER 2136 ++omap3_touchbook MACH_OMAP3_TOUCHBOOK OMAP3_TOUCHBOOK 2393 diff --git a/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig b/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig index efe8e6d8dd..558d43b309 100644 --- a/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig +++ b/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.31-omap1 -# Thu Sep 17 17:27:43 2009 +# Wed Oct 21 10:08:46 2009 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -367,7 +367,6 @@ CONFIG_PM_DEBUG=y CONFIG_CAN_PM_TRACE=y CONFIG_PM_SLEEP=y CONFIG_SUSPEND=y -# CONFIG_PM_TEST_SUSPEND is not set CONFIG_SUSPEND_FREEZER=y # CONFIG_APM_EMULATION is not set CONFIG_ARCH_SUSPEND_POSSIBLE=y @@ -2196,10 +2195,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m # iptables trigger is under Netfilter config (LED target) # CONFIG_RTC_LIB=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_HCTOSYS=y -CONFIG_RTC_HCTOSYS_DEVICE="rtc0" -# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_CLASS=m # # RTC interfaces @@ -2213,7 +2209,7 @@ CONFIG_RTC_INTF_DEV=y # # I2C RTC drivers # -CONFIG_RTC_DRV_DS1307=y +CONFIG_RTC_DRV_DS1307=m # CONFIG_RTC_DRV_DS1374 is not set # CONFIG_RTC_DRV_DS1672 is not set # CONFIG_RTC_DRV_MAX6900 is not set diff --git a/recipes/linux/linux-omap_2.6.29.bb b/recipes/linux/linux-omap_2.6.29.bb index 48f94b06c3..8ded1a31f8 100644 --- a/recipes/linux/linux-omap_2.6.29.bb +++ b/recipes/linux/linux-omap_2.6.29.bb @@ -8,6 +8,7 @@ COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard| DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_overo = "1" DEFAULT_PREFERENCE_beagleboard = "1" +DEFAULT_PREFERENCE_omap3-touchbook = "1" DEFAULT_PREFERENCE_omap3evm = "1" SRCREV = "58cf2f1425abfd3a449f9fe985e48be2d2555022" @@ -175,8 +176,8 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \ file://beaglebug/beaglebug-full.patch;patch=1 \ " -SRC_URI_append_omap3-touchbook = " \ - file://beagle-asoc.patch;patch=1 \ +SRC_URI_append_omap3-touchbook = " file://logo_linux_clut224.ppm \ + file://../beagleboard/beagle-asoc.patch;patch=1 \ file://accelerometer-mma7455l.patch;patch=1 \ file://accelerometer-touchscreen-mux-spi.patch;patch=1 \ file://touchscreen-ads7846-export-settings.patch;patch=1 \ @@ -185,7 +186,6 @@ SRC_URI_append_omap3-touchbook = " \ file://battery2-bq27200-no-error-message.patch;patch=1 \ file://sound-headphone-detection.patch;patch=1 \ file://dss2-fix-XY-coordinates-when-rotating.patch;patch=1 \ - file://screen-backlight.patch;patch=1 \ file://battery1-tps65950-charging-management-1.patch;patch=1 \ file://dss2-fix-scaling-when-rotating.patch;patch=1 \ file://dss2-export-status.patch;patch=1 \ @@ -201,7 +201,11 @@ SRC_URI_append_omap3-touchbook = " \ file://boot-no-power-message.patch;patch=1 \ file://usb-lower-current-consumption-upon-insertion.patch;patch=1 \ file://battery2-bq27200-gpio-charged.patch;patch=1 \ - file://board-omap3beagle.c \ + file://keyboard-special-keys.patch;patch=1 \ + file://dss2-fix-rotation-offsets.patch;patch=1 \ + file://touchbook-config.patch;patch=1 \ + file://board-omap3touchbook.c \ +# file://boot-trace-for-optimization.patch;patch=1 \ " SRC_URI_append_omap3evm = " \ @@ -213,7 +217,7 @@ SRC_URI_append_omap3evm = " \ S = "${WORKDIR}/git" do_configure_prepend_omap3-touchbook() { - cp ${WORKDIR}/board-omap3beagle.c ${S}/arch/arm/mach-omap2 + cp ${WORKDIR}/board-*.c ${S}/arch/arm/mach-omap2 } do_install_append() { diff --git a/recipes/linux/linux_2.6.31.bb b/recipes/linux/linux_2.6.31.bb index 455ff19adc..30b152c8fd 100644 --- a/recipes/linux/linux_2.6.31.bb +++ b/recipes/linux/linux_2.6.31.bb @@ -13,6 +13,32 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \ http://maxim.org.za/AT91RM9200/2.6/2.6.31-at91.patch.gz;patch=1 \ file://defconfig" +SRC_URI_append_boc01 = "\ + file://boc01.dts \ + file://boc01.dts.v1 \ + file://004-081205-usb.patch;patch=1 \ + file://005-091008-isl12024.patch;patch=1 \ + file://007-091005-lm73.patch;patch=1 \ + file://008-091005-spi.patch;patch=1 \ + file://011-090115-gpio.patch;patch=1 \ + file://012-091019-capsense.patch;patch=1 \ + file://013-091015-lcd.patch;patch=1 \ + " + SRC_URI_append_ep93xx = " \ file://edb9301-fix-machine-id.patch;patch=1 \ " + +do_devicetree_image_append_boc01() { + dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree.v1 ${KERNEL_DEVICETREE}.v1 + install -m 0644 devicetree.v1 ${D}/boot/devicetree-${KERNEL_VERSION}.v1 +} + +pkg_postinst_kernel-devicetree_append_boc01 () { + cd /${KERNEL_IMAGEDEST}; update-alternatives --install /${KERNEL_IMAGEDEST}/devicetree.v1 devicetree.v1 devicetree-${KERNEL_VERSION}.v1 ${KERNEL_PRIORITY} || true +} + +pkg_postrm_kernel-devicetree_append_boc01 () { + cd /${KERNEL_IMAGEDEST}; update-alternatives --remove devicetree.v1 devicetree-${KERNEL_VERSION}.v1 || true +} + diff --git a/recipes/lm_sensors/lmsensors-apps_2.10.8.bb b/recipes/lm_sensors/lmsensors-apps_2.10.8.bb index 8947ffb5b3..af58136f2a 100644 --- a/recipes/lm_sensors/lmsensors-apps_2.10.8.bb +++ b/recipes/lm_sensors/lmsensors-apps_2.10.8.bb @@ -2,6 +2,7 @@ DESCRIPTION = "Hardware health monitoring applications" HOMEPAGE = "http://www.lm-sensors.org/" DEPENDS = "sysfsutils virtual/libiconv" LICENSE = "GPL" +PR = "r1" SRC_URI = "http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-${PV}.tar.gz \ file://prefix-fix.patch;patch=1 \ @@ -16,7 +17,7 @@ do_compile() { } do_install() { - oe_runmake user_install DESTDIR=${D} + oe_runmake user_install EXLDFLAGS="${LDFLAGS}" DESTDIR=${D} install -d ${D}/.usr mv ${D}/* ${D}/.usr @@ -31,7 +32,7 @@ do_install() { } do_stage() { - oe_runmake user_install DESTDIR=${STAGING_DIR_TARGET}/${layout_prefix} + oe_runmake user_install EXLDFLAGS="${LDFLAGS}" DESTDIR=${STAGING_DIR_TARGET}/${layout_prefix} } PACKAGES =+ "libsensors libsensors-dev libsensors-dbg libsensors-doc" diff --git a/recipes/maemo4/libgpsbt_0.1.bb b/recipes/maemo4/libgpsbt_0.1.bb index beca783a0b..2b2c0a1ee4 100644 --- a/recipes/maemo4/libgpsbt_0.1.bb +++ b/recipes/maemo4/libgpsbt_0.1.bb @@ -1,5 +1,7 @@ LICENSE = "nokia" +PR = "r1" + DEPENDS = "libgpsmgr dbus" # This is proprietary software in Chinook, so we have to stay with the last released @@ -8,6 +10,8 @@ SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-18.tar. inherit autotools pkgconfig +TARGET_CC_ARCH += "${LDFLAGS}" + do_stage() { autotools_stage_all } diff --git a/recipes/maemo4/libhildon.inc b/recipes/maemo4/libhildon.inc index bab16cf062..534603d640 100644 --- a/recipes/maemo4/libhildon.inc +++ b/recipes/maemo4/libhildon.inc @@ -1,7 +1,7 @@ DESCRIPTION = "Hildon widget library" LICENSE = "LGPL" -DEPENDS = "gconf-dbus esound gtk+" +DEPENDS = "gconf esound gtk+" inherit autotools pkgconfig lib_package diff --git a/recipes/makedevs/makedevs-1.0.0/makedevs.c b/recipes/makedevs/makedevs-1.0.0/makedevs.c index c7ad722f2e..80f21f0841 100644 --- a/recipes/makedevs/makedevs-1.0.0/makedevs.c +++ b/recipes/makedevs/makedevs-1.0.0/makedevs.c @@ -221,7 +221,7 @@ static int interpret_table_entry(char *line) dev_t rdev; char buf[80]; - for (i = start; i < count; i++) { + for (i = start; i < start+count; i++) { sprintf(buf, "%s%d", name, i); /* FIXME: MKDEV uses illicit insider knowledge of kernel * major/minor representation... */ diff --git a/recipes/makedevs/makedevs_1.0.0.bb b/recipes/makedevs/makedevs_1.0.0.bb index 5579e61bdd..cab1a4c1e5 100644 --- a/recipes/makedevs/makedevs_1.0.0.bb +++ b/recipes/makedevs/makedevs_1.0.0.bb @@ -6,7 +6,7 @@ PRIORITY = "required" SRC_URI = "file://makedevs.c" S = "${WORKDIR}/makedevs-${PV}" -PR = "r7" +PR = "r8" inherit update-alternatives diff --git a/recipes/moblin/mojito_git.bb b/recipes/moblin/mojito_git.bb index b29aaed33d..f9104a9371 100644 --- a/recipes/moblin/mojito_git.bb +++ b/recipes/moblin/mojito_git.bb @@ -1,9 +1,9 @@ SRC_URI = "git://git.moblin.org/${PN}.git;protocol=git" PV = "0.0+git${SRCREV}" -PR = "r2" +PR = "r3" -DEPENDS = "libsoup-2.4 gconf-dbus librest glib-2.0 twitter-glib sqlite3 gnome-keyring" +DEPENDS = "libsoup-2.4 gconf librest glib-2.0 twitter-glib sqlite3 gnome-keyring" S = "${WORKDIR}/git" diff --git a/recipes/mplayer/files/pld-onlyarm5-svn.patch b/recipes/mplayer/files/pld-onlyarm5-svn.patch deleted file mode 100644 index 349fb9df90..0000000000 --- a/recipes/mplayer/files/pld-onlyarm5-svn.patch +++ /dev/null @@ -1,405 +0,0 @@ -Index: trunk/libavcodec/arm/dsputil_arm_s.S -=================================================================== ---- trunk.orig/libavcodec/arm/dsputil_arm_s.S -+++ trunk/libavcodec/arm/dsputil_arm_s.S -@@ -18,6 +18,13 @@ - @ License along with FFmpeg; if not, write to the Free Software - @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - @ -+#if defined(__ARM_ARCH_5__) || \ -+ defined(__ARM_ARCH_5T__) || \ -+ defined(__ARM_ARCH_5TE__) -+#define PLD(code...) code -+#else -+#define PLD(code...) -+#endif - - #include "config.h" - #include "asm.S" -@@ -106,14 +113,14 @@ function ff_prefetch_arm, export=1 - function put_pixels16_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r11, lr} @ R14 is also called LR - JMP_ALIGN r5, r1 - 1: - ldmia r1, {r4-r7} - add r1, r1, r2 - stmia r0, {r4-r7} -- pld [r1] -+ PLD ( pld [r1] ) - subs r3, r3, #1 - add r0, r0, r2 - bne 1b -@@ -123,7 +130,7 @@ function put_pixels16_arm, export=1 - ldmia r1, {r4-r8} - add r1, r1, r2 - ADJ_ALIGN_QUADWORD_D 1, r9, r10, r11, r12, r4, r5, r6, r7, r8 -- pld [r1] -+ PLD ( pld [r1] ) - subs r3, r3, #1 - stmia r0, {r9-r12} - add r0, r0, r2 -@@ -134,7 +141,7 @@ function put_pixels16_arm, export=1 - ldmia r1, {r4-r8} - add r1, r1, r2 - ADJ_ALIGN_QUADWORD_D 2, r9, r10, r11, r12, r4, r5, r6, r7, r8 -- pld [r1] -+ PLD ( pld [r1] ) - subs r3, r3, #1 - stmia r0, {r9-r12} - add r0, r0, r2 -@@ -145,7 +152,7 @@ function put_pixels16_arm, export=1 - ldmia r1, {r4-r8} - add r1, r1, r2 - ADJ_ALIGN_QUADWORD_D 3, r9, r10, r11, r12, r4, r5, r6, r7, r8 -- pld [r1] -+ PLD ( pld [r1] ) - subs r3, r3, #1 - stmia r0, {r9-r12} - add r0, r0, r2 -@@ -158,14 +165,14 @@ function put_pixels16_arm, export=1 - function put_pixels8_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r5,lr} @ R14 is also called LR - JMP_ALIGN r5, r1 - 1: - ldmia r1, {r4-r5} - add r1, r1, r2 - subs r3, r3, #1 -- pld [r1] -+ PLD ( pld [r1] ) - stmia r0, {r4-r5} - add r0, r0, r2 - bne 1b -@@ -175,7 +182,7 @@ function put_pixels8_arm, export=1 - ldmia r1, {r4-r5, r12} - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r12 -- pld [r1] -+ PLD ( pld [r1] ) - subs r3, r3, #1 - stmia r0, {r4-r5} - add r0, r0, r2 -@@ -186,7 +193,7 @@ function put_pixels8_arm, export=1 - ldmia r1, {r4-r5, r12} - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r12 -- pld [r1] -+ PLD ( pld [r1] ) - subs r3, r3, #1 - stmia r0, {r4-r5} - add r0, r0, r2 -@@ -197,7 +204,7 @@ function put_pixels8_arm, export=1 - ldmia r1, {r4-r5, r12} - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r12 -- pld [r1] -+ PLD ( pld [r1] ) - subs r3, r3, #1 - stmia r0, {r4-r5} - add r0, r0, r2 -@@ -210,7 +217,7 @@ function put_pixels8_arm, export=1 - function put_pixels8_x2_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r10,lr} @ R14 is also called LR - ldr r12, =0xfefefefe - JMP_ALIGN r5, r1 -@@ -218,7 +225,7 @@ function put_pixels8_x2_arm, export=1 - ldmia r1, {r4-r5, r10} - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - RND_AVG32 r8, r9, r4, r5, r6, r7, r12 - subs r3, r3, #1 - stmia r0, {r8-r9} -@@ -231,7 +238,7 @@ function put_pixels8_x2_arm, export=1 - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 - ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - RND_AVG32 r4, r5, r6, r7, r8, r9, r12 - subs r3, r3, #1 - stmia r0, {r4-r5} -@@ -244,7 +251,7 @@ function put_pixels8_x2_arm, export=1 - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10 - ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - RND_AVG32 r4, r5, r6, r7, r8, r9, r12 - subs r3, r3, #1 - stmia r0, {r4-r5} -@@ -256,7 +263,7 @@ function put_pixels8_x2_arm, export=1 - ldmia r1, {r4-r5, r10} - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - RND_AVG32 r8, r9, r6, r7, r5, r10, r12 - subs r3, r3, #1 - stmia r0, {r8-r9} -@@ -269,7 +276,7 @@ function put_pixels8_x2_arm, export=1 - function put_no_rnd_pixels8_x2_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r10,lr} @ R14 is also called LR - ldr r12, =0xfefefefe - JMP_ALIGN r5, r1 -@@ -277,7 +284,7 @@ function put_no_rnd_pixels8_x2_arm, expo - ldmia r1, {r4-r5, r10} - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12 - subs r3, r3, #1 - stmia r0, {r8-r9} -@@ -290,7 +297,7 @@ function put_no_rnd_pixels8_x2_arm, expo - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10 - ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12 - subs r3, r3, #1 - stmia r0, {r4-r5} -@@ -303,7 +310,7 @@ function put_no_rnd_pixels8_x2_arm, expo - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10 - ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12 - subs r3, r3, #1 - stmia r0, {r4-r5} -@@ -315,7 +322,7 @@ function put_no_rnd_pixels8_x2_arm, expo - ldmia r1, {r4-r5, r10} - add r1, r1, r2 - ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10 -- pld [r1] -+ PLD ( pld [r1] ) - NO_RND_AVG32 r8, r9, r6, r7, r5, r10, r12 - subs r3, r3, #1 - stmia r0, {r8-r9} -@@ -330,7 +337,7 @@ function put_no_rnd_pixels8_x2_arm, expo - function put_pixels8_y2_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r11,lr} @ R14 is also called LR - mov r3, r3, lsr #1 - ldr r12, =0xfefefefe -@@ -340,13 +347,13 @@ function put_pixels8_y2_arm, export=1 - add r1, r1, r2 - 6: ldmia r1, {r6-r7} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - RND_AVG32 r8, r9, r4, r5, r6, r7, r12 - ldmia r1, {r4-r5} - add r1, r1, r2 - stmia r0, {r8-r9} - add r0, r0, r2 -- pld [r1] -+ PLD ( pld [r1] ) - RND_AVG32 r8, r9, r6, r7, r4, r5, r12 - subs r3, r3, #1 - stmia r0, {r8-r9} -@@ -357,18 +364,18 @@ function put_pixels8_y2_arm, export=1 - 2: - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 - 6: ldmia r1, {r7-r9} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9 - RND_AVG32 r10, r11, r4, r5, r7, r8, r12 - stmia r0, {r10-r11} - add r0, r0, r2 - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 - subs r3, r3, #1 - RND_AVG32 r10, r11, r7, r8, r4, r5, r12 -@@ -380,18 +387,18 @@ function put_pixels8_y2_arm, export=1 - 3: - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 - 6: ldmia r1, {r7-r9} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9 - RND_AVG32 r10, r11, r4, r5, r7, r8, r12 - stmia r0, {r10-r11} - add r0, r0, r2 - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 - subs r3, r3, #1 - RND_AVG32 r10, r11, r7, r8, r4, r5, r12 -@@ -403,18 +410,18 @@ function put_pixels8_y2_arm, export=1 - 4: - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 - 6: ldmia r1, {r7-r9} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9 - RND_AVG32 r10, r11, r4, r5, r7, r8, r12 - stmia r0, {r10-r11} - add r0, r0, r2 - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 - subs r3, r3, #1 - RND_AVG32 r10, r11, r7, r8, r4, r5, r12 -@@ -428,7 +435,7 @@ function put_pixels8_y2_arm, export=1 - function put_no_rnd_pixels8_y2_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r11,lr} @ R14 is also called LR - mov r3, r3, lsr #1 - ldr r12, =0xfefefefe -@@ -438,13 +445,13 @@ function put_no_rnd_pixels8_y2_arm, expo - add r1, r1, r2 - 6: ldmia r1, {r6-r7} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12 - ldmia r1, {r4-r5} - add r1, r1, r2 - stmia r0, {r8-r9} - add r0, r0, r2 -- pld [r1] -+ PLD ( pld [r1] ) - NO_RND_AVG32 r8, r9, r6, r7, r4, r5, r12 - subs r3, r3, #1 - stmia r0, {r8-r9} -@@ -455,18 +462,18 @@ function put_no_rnd_pixels8_y2_arm, expo - 2: - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 - 6: ldmia r1, {r7-r9} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9 - NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12 - stmia r0, {r10-r11} - add r0, r0, r2 - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6 - subs r3, r3, #1 - NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12 -@@ -478,18 +485,18 @@ function put_no_rnd_pixels8_y2_arm, expo - 3: - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 - 6: ldmia r1, {r7-r9} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9 - NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12 - stmia r0, {r10-r11} - add r0, r0, r2 - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6 - subs r3, r3, #1 - NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12 -@@ -501,18 +508,18 @@ function put_no_rnd_pixels8_y2_arm, expo - 4: - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 - 6: ldmia r1, {r7-r9} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9 - NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12 - stmia r0, {r10-r11} - add r0, r0, r2 - ldmia r1, {r4-r6} - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6 - subs r3, r3, #1 - NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12 -@@ -536,7 +543,7 @@ function put_no_rnd_pixels8_y2_arm, expo - ldmia r1, {r8-r10} - .endif - add r1, r1, r2 -- pld [r1] -+ PLD ( pld [r1] ) - .if \align == 0 - ADJ_ALIGN_DOUBLEWORD_D 1, r4, r5, r6, r7, r8 - .elseif \align == 1 -@@ -593,7 +600,7 @@ function put_no_rnd_pixels8_y2_arm, expo - function put_pixels8_xy2_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r11,lr} @ R14 is also called LR - JMP_ALIGN r5, r1 - 1: -@@ -616,7 +623,7 @@ function put_pixels8_xy2_arm, export=1 - function put_no_rnd_pixels8_xy2_arm, export=1 - @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h) - @ block = word aligned, pixles = unaligned -- pld [r1] -+ PLD ( pld [r1] ) - stmfd sp!, {r4-r11,lr} @ R14 is also called LR - JMP_ALIGN r5, r1 - 1: diff --git a/recipes/mplayer/mplayer_svn.bb b/recipes/mplayer/mplayer_svn.bb index 7c61cd00fe..1a434a5829 100644 --- a/recipes/mplayer/mplayer_svn.bb +++ b/recipes/mplayer/mplayer_svn.bb @@ -8,10 +8,10 @@ DEPENDS = "live555 libdvdread libtheora virtual/libsdl ffmpeg xsp zlib libpng jp RDEPENDS = "mplayer-common" LICENSE = "GPL" SRC_URI = "svn://svn.mplayerhq.hu/mplayer;module=trunk \ - file://pld-onlyarm5-svn.patch;patch=1 \ file://makefile-nostrip-svn.patch;patch=1 \ " +SRCREV = "29789" SRC_URI_append_armv7a = " \ file://omapfb.patch;patch=1 \ file://vo_omapfb.c \ diff --git a/recipes/networkmanager/network-manager-applet_0.7.1.997.bb b/recipes/networkmanager/network-manager-applet_0.7.1.997.bb new file mode 100644 index 0000000000..d1be602ef3 --- /dev/null +++ b/recipes/networkmanager/network-manager-applet_0.7.1.997.bb @@ -0,0 +1,26 @@ +DESCRIPTION = "GTK+ applet for NetworkManager" +LICENSE = "GPL" +DEPENDS = "policykit-gnome libnotify networkmanager dbus-glib libglade gconf gnome-keyring" +RDEPENDS = "networkmanager" + +inherit gnome + +SRC_URI += "file://nm-applet.conf" + +do_configure_append() { + rm config.log + # Sigh... --enable-compile-warnings=no doesn't actually turn off -Werror + for i in $(find ${S} -name "Makefile") ; do + sed -i -e s:-Werror::g $i + done +} + +# Hack around dbus a_console problems +do_install_append() { + install -m 0644 ${WORKDIR}/nm-applet.conf ${D}${sysconfdir}/dbus-1/system.d/ +} + +FILES_${PN} += "${datadir}/nm-applet/ \ + ${datadir}/gnome-vpn-properties/ \ + ${datadir}/gnome/autostart/ \ + " diff --git a/recipes/networkmanager/networkmanager.inc b/recipes/networkmanager/networkmanager.inc index ead854ca58..c159883bfd 100644 --- a/recipes/networkmanager/networkmanager.inc +++ b/recipes/networkmanager/networkmanager.inc @@ -3,7 +3,7 @@ SECTION = "net/misc" LICENSE = "GPL" HOMEPAGE = "http://www.gnome.org" PRIORITY = "optional" -DEPENDS = "libnl dbus dbus-glib hal gconf-dbus wireless-tools ppp" +DEPENDS = "libnl dbus dbus-glib hal gconf wireless-tools ppp" RDEPENDS = "hal wpa-supplicant iproute2 dhcp-client dhcdbd" SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.6/NetworkManager-${PV}.tar.bz2 \ diff --git a/recipes/networkmanager/networkmanager_0.6.4.bb b/recipes/networkmanager/networkmanager_0.6.4.bb index 737d9544d0..f41449c610 100644 --- a/recipes/networkmanager/networkmanager_0.6.4.bb +++ b/recipes/networkmanager/networkmanager_0.6.4.bb @@ -3,10 +3,10 @@ SECTION = "network/misc" LICENSE = "GPL" HOMEPAGE = "http://www.gnome.org" PRIORITY = "optional" -DEPENDS = "libnl dbus dbus-glib libhal-nm libgpewidget gnome-keyring gconf-dbus wireless-tools libglade" +DEPENDS = "libnl dbus dbus-glib libhal-nm libgpewidget gnome-keyring gconf wireless-tools libglade" RDEPENDS = "wpa-supplicant iproute2 dhcdbd gnome-keyring hicolor-icon-theme" -PR = "r5" +PR = "r6" SRC_URI="http://www.handhelds.org/~mmp/files/NetworkManager-${PV}-gpe.tar.gz \ file://dbus-api-fix.patch;patch=1 \ diff --git a/recipes/networkmanager/networkmanager_0.7.1.997.bb b/recipes/networkmanager/networkmanager_0.7.1.997.bb new file mode 100644 index 0000000000..fe90d7ed71 --- /dev/null +++ b/recipes/networkmanager/networkmanager_0.7.1.997.bb @@ -0,0 +1,26 @@ +require networkmanager-0.7.inc + +SRC_URI += " \ + file://remove-gtk-doc-make.patch;patch=1 \ + file://nm-system-settings.conf \ + file://NetworkManager \ + file://gtk-doc.make \ +" + + +do_configure_prepend() { + cp ${WORKDIR}/gtk-doc.make ${S}/ + echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make + sed -i -e 's:man \\:man:' -e s:docs::g ${S}/Makefile.am + sed -i -e /^docs/d ${S}/configure.ac +} + + +S = "${WORKDIR}/NetworkManager-${PV}" + +do_install_append () { + install -d ${D}/etc/NetworkManager/ + install -m 0644 ${WORKDIR}/nm-system-settings.conf ${D}/etc/NetworkManager/ + install -m 0755 ${WORKDIR}/NetworkManager ${D}/etc/init.d +} + diff --git a/recipes/openscada/files/rcc-moc.patch b/recipes/openscada/files/rcc-moc.patch new file mode 100644 index 0000000000..36d0236b77 --- /dev/null +++ b/recipes/openscada/files/rcc-moc.patch @@ -0,0 +1,15 @@ +Index: OpenSCADA/configure.in +=================================================================== +--- OpenSCADA.orig/configure.in 2009-10-21 01:41:21.813245199 -0700 ++++ OpenSCADA/configure.in 2009-10-21 01:42:25.163222573 -0700 +@@ -446,8 +446,8 @@ AC_MSG_RESULT(========================== + #QT4 check + if test ${QT4use} = true; then + AC_ARG_WITH(qt4-dir,[ --with-qt4-dir=DIR Path to directory where QT4 instaled (/usr/lib/qt4 - default) ], [QT4_DIR="$withval"], [QT4_DIR="/usr/lib/qt4"]) +- AC_CHECK_PROGS(QT4_MOC, moc-qt4 moc, false) +- AC_CHECK_PROGS(QT4_RCC, rcc-qt4 rcc, false) ++ AC_CHECK_PROGS(QT4_MOC, moc-qt4 moc4 moc, false) ++ AC_CHECK_PROGS(QT4_RCC, rcc-qt4 rcc4 rcc, false) + if test ${QT4_MOC} = false || test ${QT4_RCC} = false; + then if test -d ${QT4_DIR}; + then diff --git a/recipes/openscada/openscada_svn.bb b/recipes/openscada/openscada_svn.bb new file mode 100644 index 0000000000..acb700c0d1 --- /dev/null +++ b/recipes/openscada/openscada_svn.bb @@ -0,0 +1,51 @@ +# Copyright (C) 2009 Khem Raj <raj.khem@gmail.com> +# Released under the MIT license (see COPYING.MIT for the terms) + +DESCRIPTION = "OpenSCADA system is open implementation SCADA (Supervisory controll and data acquisition) systems" +HOMEPAGE = "http://oscada.org.ua/" +LICENSE = "GPL" +SECTION = "Applications" +DEPENDS = "gd mysql expat sqlite3 lmsensors-apps fftw qt4-x11-free" +#SRC_URI = "ftp://ftp.oscada.org/OpenSCADA/0.6.4/openscada-0.6.4.tar.gz" +SRC_URI = "svn://oscada.org.ua/trunk;module=OpenSCADA;rev=;proto=svn \ + file://rcc-moc.patch;patch=1 \ + " + +PV = "0.6.4" +PR = "svn" + +S = "${WORKDIR}/OpenSCADA" + +inherit autotools_stage + +EXTRA_OECONF = " \ + --includedir=${STAGING_INCDIR} \ + --oldincludedir=${STAGING_INCDIR} \ + --disable-SQLite \ + --disable-MySQL \ + --disable-FireBird \ + --without-sqlite3 \ + --without-firebird \ + --disable-SoundCard \ + --disable-Vision \ + --disable-WebVision \ + --disable-shared \ +" + +#do_configure_prepend() { +# autoconf +#} + +#do_configure() { +# oe_runconf +#} + + +do_install_prepend () { + mkdir -p -m 755 ${D}/etc + cp ${S}/data/oscada.xml ${D}/etc + mkdir -p -m 755 ${D}/var/spool/openscada/icons + cp ${S}/data/icons/* ${D}/var/spool/openscada/icons + install -p -m 777 -d ${D}/var/spool/openscada/ARCHIVES/{MESS,VAL} +} + diff --git a/recipes/packagekit/gnome-packagekit_2.27.1.bb b/recipes/packagekit/gnome-packagekit_2.27.1.bb index 2bb6f95e87..1949d3d3a2 100644 --- a/recipes/packagekit/gnome-packagekit_2.27.1.bb +++ b/recipes/packagekit/gnome-packagekit_2.27.1.bb @@ -1,9 +1,9 @@ DESCRIPTION = "GNOME frontend for packagekit" LICENSE = "GPL" -DEPENDS = "packagekit libsexy gconf-dbus policykit policykit-gnome libunique gnome-menus" +DEPENDS = "packagekit libsexy gconf policykit policykit-gnome libunique gnome-menus" -PR = "r1" +PR = "r2" inherit gnome diff --git a/recipes/pam/libpam_1.0.2.bb b/recipes/pam/libpam_1.0.2.bb index 17d8f3028f..0151a4691d 100644 --- a/recipes/pam/libpam_1.0.2.bb +++ b/recipes/pam/libpam_1.0.2.bb @@ -12,7 +12,7 @@ LICENSE = "GPLv2" DEPENDS = "flex flex-native" -PR = "r3" +PR = "r4" # The project is actually called Linux-PAM but that gives # a bad OE package name because of the upper case characters @@ -23,9 +23,7 @@ S = "${WORKDIR}/${p}" SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/pam/library/${p}.tar.bz2 \ file://pam-nodocs.patch;patch=1 " -SRC_URI_append_linux-uclibc = "file://pam-disable-nis-on-uclibc.patch;patch=1" -SRC_URI_append_linux-uclibceabi = "file://pam-disable-nis-on-uclibc.patch;patch=1" -SRC_URI_append_linux-uclibcspe = "file://pam-disable-nis-on-uclibc.patch;patch=1" +SRC_URI_append_libc-uclibc = "file://pam-disable-nis-on-uclibc.patch;patch=1" inherit autotools @@ -34,11 +32,12 @@ LEAD_SONAME = "libpam.so.*" # maintain the pam default layout EXTRA_OECONF += " --includedir=${includedir}/security" -PACKAGES_DYNAMIC += " pam-plugin-*" +PACKAGES_DYNAMIC += " libpam-meta pam-plugin-*" + python populate_packages_prepend () { import os.path - pam_libdir = bb.data.expand('${libdir}/security', d) + pam_libdir = bb.data.expand('${libdir}/security', d) pam_libdirdebug = bb.data.expand('${libdir}/security/.debug', d) pam_filterdir = bb.data.expand('${libdir}/security/pam_filter', d) do_split_packages(d, pam_libdir, '^pam(.*)\.so$', 'pam-plugin%s', 'PAM plugin for %s', extra_depends='') @@ -46,6 +45,21 @@ python populate_packages_prepend () { if os.path.exists(pam_libdirdebug): do_split_packages(d, pam_libdirdebug, '^pam(.*)\.so$', 'pam-plugin%s-dbg', 'PAM plugin for %s debugging symbols', extra_depends='') do_split_packages(d, pam_filterdir, '^(.*)$', 'pam-filter-%s', 'PAM filter for %s', extra_depends='') + + pn = bb.data.getVar('PN', d, 1) + metapkg = pn + '-meta' + bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d) + bb.data.setVar('FILES_' + metapkg, "", d) + blacklist = [ pn + '-locale', pn + '-dev', pn + '-dbg', pn + '-doc' ] + metapkg_rdepends = [] + packages = bb.data.getVar('PACKAGES', d, 1).split() + for pkg in packages[1:]: + if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.count('locale') and pkg.count('plugin'): + metapkg_rdepends.append(pkg) + bb.data.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends), d) + bb.data.setVar('DESCRIPTION_' + metapkg, pn + ' meta package', d) + packages.append(metapkg) + bb.data.setVar('PACKAGES', ' '.join(packages), d) } diff --git a/recipes/php/php-5.2.6/string.c.patch b/recipes/php/php-5.2.6/string.c.patch new file mode 100644 index 0000000000..a24b887ac2 --- /dev/null +++ b/recipes/php/php-5.2.6/string.c.patch @@ -0,0 +1,21 @@ +Index: php-5.2.6/ext/standard/string.c +=================================================================== +--- php-5.2.6.orig/ext/standard/string.c ++++ php-5.2.6/ext/standard/string.c +@@ -592,14 +592,12 @@ PHP_FUNCTION(nl_langinfo) + #endif + #ifdef DECIMAL_POINT + case DECIMAL_POINT: +-#endif +-#ifdef RADIXCHAR ++#elif RADIXCHAR + case RADIXCHAR: + #endif + #ifdef THOUSANDS_SEP + case THOUSANDS_SEP: +-#endif +-#ifdef THOUSEP ++#elif THOUSEP + case THOUSEP: + #endif + #ifdef GROUPING diff --git a/recipes/php/php.inc b/recipes/php/php.inc index e9d49a3269..0f9a42077a 100644 --- a/recipes/php/php.inc +++ b/recipes/php/php.inc @@ -10,7 +10,7 @@ S = "${WORKDIR}/php-${PV}" inherit autotools -CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED" +CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED -D_GNU_SOURCE" acpaths = "" diff --git a/recipes/php/php_5.2.6.bb b/recipes/php/php_5.2.6.bb index c6cb00fa0f..38e86568d8 100644 --- a/recipes/php/php_5.2.6.bb +++ b/recipes/php/php_5.2.6.bb @@ -2,9 +2,10 @@ require php.inc DEPENDS = "zlib libxml2 virtual/libiconv php-native lemon-native" -PR = "r5" +PR = "r6" -SRC_URI += "file://pear-makefile.patch;patch=1 " +SRC_URI += "file://pear-makefile.patch;patch=1 \ + file://string.c.patch;patch=1 " export THREADS="pthread" export LIBS=" -lpthread " diff --git a/recipes/poppler/poppler_0.12.1.bb b/recipes/poppler/poppler_0.12.1.bb new file mode 100644 index 0000000000..b94b1cc6e0 --- /dev/null +++ b/recipes/poppler/poppler_0.12.1.bb @@ -0,0 +1,7 @@ +require poppler.inc + +DEFAULT_PREFERENCE = "-1" +DEFAULT_PREFERENCE_angstrom = "1" + +EXTRA_OECONF_append = " --disable-abiword-output " + diff --git a/recipes/pulseaudio/libcanberra_0.17.bb b/recipes/pulseaudio/libcanberra_0.17.bb index 30b645ddd9..a0b63069f1 100644 --- a/recipes/pulseaudio/libcanberra_0.17.bb +++ b/recipes/pulseaudio/libcanberra_0.17.bb @@ -1,11 +1,11 @@ DESCRIPTION = "Libcanberra is an implementation of the XDG Sound Theme and Name \ Specifications, for generating event sounds on free desktops." LICENSE = "LGPL" -DEPENDS = "alsa-lib gstreamer gtk+ libvorbis pulseaudio" +DEPENDS = "alsa-lib gstreamer gtk+ libtool libvorbis" SECTION = "libs/multimedia" AUTHOR = "Lennart Poettering" HOMEPAGE = "http://0pointer.de/lennart/projects/libcanberra" -PR = "r1" +PR = "r2" inherit autotools_stage vala AUTOTOOLS_STAGE_PKGCONFIG = "1" diff --git a/recipes/ralink/rt3070_2.1.1.0.bb b/recipes/ralink/rt3070_2.1.1.0.bb index d7709fa91d..23b0de7d32 100644 --- a/recipes/ralink/rt3070_2.1.1.0.bb +++ b/recipes/ralink/rt3070_2.1.1.0.bb @@ -1,18 +1,22 @@ DESCRIPTION = "Ralink 3070" +SECTION = "kernel/modules" LICENSE = "GPLv2" +PR = "r1" inherit module SRC_URI = "http://www.ralinktech.com.tw/data/drivers/2009_0525_RT3070_Linux_STA_v${PV}.tar.bz2 \ file://makefile.patch;patch=1 \ - file://config.patch;patch=1 \ -" + file://config.patch;patch=1 \ + " EXTRA_OEMAKE = "LINUX_SRC=${STAGING_KERNEL_DIR}" S = "${WORKDIR}/2009_0525_RT3070_Linux_STA_v${PV}" do_install() { - mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless - cp ${S}/os/linux/rt3070sta.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless + install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless + install -m 0644 ${S}/os/linux/rt3070sta.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless + install -d ${D}/etc/Wireless/RT2870STA + install -m 0644 ${S}/RT2870STA.dat ${D}/etc/Wireless/RT2870STA } diff --git a/recipes/samba/samba_3.3.9.bb b/recipes/samba/samba_3.3.9.bb new file mode 100644 index 0000000000..87a7c5e7f7 --- /dev/null +++ b/recipes/samba/samba_3.3.9.bb @@ -0,0 +1,35 @@ +require samba.inc +require samba-basic.inc +LICENSE = "GPLv3" + +# 3.3.0 and newer will upgrade your tdb database to a +# new version that you can not downgrade to use with older +# releases. More testing will happen before this is removed +# should there be further issues. Appears to work though :) +DEFAULT_PREFERENCE = "-1" + +SRC_URI += "file://configure-3.3.0.patch;patch=1 \ + file://config-h.patch;patch=1 \ + file://mtab.patch;patch=1 \ + file://tdbheaderfix.patch;patch=1 " + +PR = "r3" + +EXTRA_OECONF += "\ + SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes \ + samba_cv_CC_NEGATIVE_ENUM_VALUES=yes \ + linux_getgrouplist_ok=no \ + samba_cv_HAVE_BROKEN_GETGROUPS=no \ + samba_cv_HAVE_FTRUNCATE_EXTEND=yes \ + samba_cv_have_setresuid=yes \ + samba_cv_have_setresgid=yes \ + samba_cv_HAVE_WRFILE_KEYTAB=yes \ + " + +do_configure() { + oe_runconf +} + +do_compile () { + base_do_compile +} diff --git a/recipes/serial-utils/pty-forward-native.bb b/recipes/serial-utils/pty-forward-native.bb index 54ff591928..c613276645 100644 --- a/recipes/serial-utils/pty-forward-native.bb +++ b/recipes/serial-utils/pty-forward-native.bb @@ -2,11 +2,11 @@ DESCRIPTION = "Receive a forwarded serial from serial-forward and provide a PTY" AUTHOR = "Holger 'Zecke' Freyther" LICENSE = "GPL" SECTION = "console/network" -PV = "1.0.0+svnr${SRCREV}"" +PV = "1.0.1+gitr${SRCREV}" PR = "r0" -SRC_URI = "svn://svn.openmoko.org/developers/zecke/;module=serial_forward;proto=http" -S = "${WORKDIR}/serial_forward" +SRC_URI = "${FREESMARTPHONE_GIT}/cornucopia.git;protocol=git" +S = "${WORKDIR}/git/tools/serial_forward" inherit native diff --git a/recipes/serial-utils/serial-forward.bb b/recipes/serial-utils/serial-forward.bb index c3b879a0ee..f5c1b1721d 100644 --- a/recipes/serial-utils/serial-forward.bb +++ b/recipes/serial-utils/serial-forward.bb @@ -2,11 +2,11 @@ DESCRIPTION = "Forward a serial using TCP/IP" AUTHOR = "Holger 'Zecke' Freyther'" LICENSE = "GPL" SECTION = "console/devel" -PV = "1.0.0+svnr${SRCREV}" +PV = "1.0.1+gitr${SRCREV}" PR = "r0" -SRC_URI = "svn://svn.openmoko.org/developers/zecke/;module=serial_forward;proto=http" -S = "${WORKDIR}/serial_forward" +SRC_URI = "${FREESMARTPHONE_GIT}/cornucopia.git/;protocol=git" +S = "${WORKDIR}/git/tools/serial_forward" do_compile() { cd ${S} diff --git a/recipes/tasks/task-cli-tools.bb b/recipes/tasks/task-cli-tools.bb index 0110a8d9b0..9c5e8615e0 100644 --- a/recipes/tasks/task-cli-tools.bb +++ b/recipes/tasks/task-cli-tools.bb @@ -2,7 +2,7 @@ DESCRIPTION = "A set of command line tools useful for debugging" SECTION = "console" LICENSE = "MIT" PV = "1.0" -PR = "r8" +PR = "r9" inherit task @@ -18,6 +18,7 @@ RDEPENDS_${PN} = "\ nfs-utils-client \ powertop \ screen \ + serial-forward \ socat \ sysstat \ tcpdump \ @@ -27,7 +28,7 @@ RDEPENDS_${PN}-debug = "\ evtest \ devmem2 \ i2c-tools \ -# ltrace \ + ltrace \ procps \ pxaregs \ s3c24xx-gpio \ diff --git a/recipes/tasks/task-fso2-compliance.bb b/recipes/tasks/task-fso2-compliance.bb index dbc298d670..0ab234dc5d 100644 --- a/recipes/tasks/task-fso2-compliance.bb +++ b/recipes/tasks/task-fso2-compliance.bb @@ -13,8 +13,10 @@ RDEPENDS_${PN} = "\ libfsobasics \ libfsotransport \ libfsoframework \ + libfsoresource \ \ fsodeviced \ + fsogsmd \ fsonetworkd \ fsotimed \ fsousaged \ @@ -24,7 +26,7 @@ RDEPENDS_${PN} = "\ fso-gpsd \ # fso-monitord \ connman \ - connman-scripts \ +# connman-scripts \ connman-plugin-bluetooth \ # connman-plugin-dhclient \ # connman-plugin-dnsproxy \ diff --git a/recipes/tasks/task-gmae.bb b/recipes/tasks/task-gmae.bb index 73710f8ffa..1638c98e33 100644 --- a/recipes/tasks/task-gmae.bb +++ b/recipes/tasks/task-gmae.bb @@ -1,5 +1,5 @@ DESCRIPTION = "GNOME Mobile & Embedded Initiative" -PR = "r1" +PR = "r2" inherit task @@ -28,7 +28,7 @@ RDEPENDS_gmae-user = " \ avahi-utils \ gstreamer \ matchbox-wm matchbox-panel \ - gconf-dbus \ + gconf \ gnome-vfs \ " diff --git a/recipes/tasks/task-perl-module-all.bb b/recipes/tasks/task-perl-module-all.bb index 0b39941348..432eb2dfcc 100644 --- a/recipes/tasks/task-perl-module-all.bb +++ b/recipes/tasks/task-perl-module-all.bb @@ -2,9 +2,9 @@ DESCRIPTION= "All perl modules" inherit task -PR = "r2" +PR = "r3" -RDEPENDS_${PN} = " \ +RRECOMMENDS_${PN} = " \ perl-module-abbrev \ perl-module-anydbm-file \ perl-module-assert \ diff --git a/recipes/tasks/task-sdk-extra.bb b/recipes/tasks/task-sdk-extra.bb index 98234cea1c..db6a2fb3f8 100644 --- a/recipes/tasks/task-sdk-extra.bb +++ b/recipes/tasks/task-sdk-extra.bb @@ -1,5 +1,5 @@ DESCRIPTION = "SDK packages" -PR = "r10" +PR = "r11" LICENSE = "MIT" ALLOW_EMPTY = "1" @@ -11,7 +11,7 @@ PACKAGES = "\ RDEPENDS_task-sdk-x11 = "\ atk-dev \ cairo-dev \ - gconf-dbus-dev \ + gconf-dev \ gtk+-dev \ gtk-engines-dev \ libsvg-cairo-dev \ @@ -50,4 +50,4 @@ RDEPENDS_task-sdk-gpe = "\ libgpewidget-dev \ libhandoff-dev \ libxi-dev \ - gconf-dbus-dev" + gconf-dev" diff --git a/recipes/ti/ti-dmai/touchbook-support.patch b/recipes/ti/ti-dmai/touchbook-support.patch index a63bb17e7a..da64c5b0d1 100644 --- a/recipes/ti/ti-dmai/touchbook-support.patch +++ b/recipes/ti/ti-dmai/touchbook-support.patch @@ -1,10 +1,11 @@ --- /tmp/Cpu.c 2009-09-25 12:41:08.000000000 +0200 +++ davinci_multimedia_application_interface/dmai/packages/ti/sdo/dmai/linux/Cpu.c 2009-09-25 12:41:36.000000000 +0200 -@@ -107,6 +107,7 @@ +@@ -107,6 +107,8 @@ } else if ((strcmp(valBuf,"OMAP3EVM Board") == 0) || (strcmp(valBuf, "OMAP3 EVM") == 0) || + (strcmp(valBuf, "OMAP3 Touch Book") == 0) || ++ (strcmp(valBuf, "IGEP v2.x board") == 0) || (strcmp(valBuf, "OMAP3 Beagle Board") == 0)) { *device = Cpu_Device_OMAP3530; } diff --git a/recipes/ti/ti-dmai_svn.bb b/recipes/ti/ti-dmai_svn.bb index b050034d5d..a204120fc2 100644 --- a/recipes/ti/ti-dmai_svn.bb +++ b/recipes/ti/ti-dmai_svn.bb @@ -4,7 +4,7 @@ require ti-paths.inc inherit module-base #This is a kernel module, don't set PR directly -MACHINE_KERNEL_PR_append = "b" +MACHINE_KERNEL_PR_append = "c" # compile time dependencies DEPENDS_omap3evm += "alsa-lib ti-codec-engine ti-xdctools-native ti-dspbios-native ti-cgt6x-native ti-cs1-omap3530 virtual/kernel ti-dsplink-module" diff --git a/recipes/tinymail/libtinymail.inc b/recipes/tinymail/libtinymail.inc index 29c3f4d1d1..7abb8a6df7 100644 --- a/recipes/tinymail/libtinymail.inc +++ b/recipes/tinymail/libtinymail.inc @@ -1,7 +1,7 @@ DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices" SECTION = "x11/utils" LICENSE = "LGPL" -DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui" +DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libgnomeui" EXTRA_OECONF=" --disable-gnome --with-platform=gpe --with-html-component=none" diff --git a/recipes/tinymail/libtinymail_0.0.1.bb b/recipes/tinymail/libtinymail_0.0.1.bb index 06f53d3799..77c20097f8 100644 --- a/recipes/tinymail/libtinymail_0.0.1.bb +++ b/recipes/tinymail/libtinymail_0.0.1.bb @@ -1,7 +1,8 @@ DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices" SECTION = "x11/utils" LICENSE = "LGPL" -DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui" +DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libgnomeui" +PR = "r1" EXTRA_OECONF=" --disable-gnome --with-platform=gpe --with-html-component=none" diff --git a/recipes/tinymail/libtinymail_svn.bb b/recipes/tinymail/libtinymail_svn.bb index 7d396fe968..06cc447af5 100644 --- a/recipes/tinymail/libtinymail_svn.bb +++ b/recipes/tinymail/libtinymail_svn.bb @@ -1,9 +1,9 @@ DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices" SECTION = "x11/utils" LICENSE = "LGPL" -DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui" +DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libgnomeui" PV = "0.0.5+svnr${SRCREV}" -PR = "r3" +PR = "r4" DEFAULT_PREFERENCE = "-1" diff --git a/recipes/tinymail/tmut_1.1.0.bb b/recipes/tinymail/tmut_1.1.0.bb index d3f84f057a..69f69a401f 100644 --- a/recipes/tinymail/tmut_1.1.0.bb +++ b/recipes/tinymail/tmut_1.1.0.bb @@ -1,8 +1,8 @@ DESCRIPTION = "Tmut is a really small E-Mail client based on Tinymail" SECTION = "x11/utils" LICENSE = "LGPL" -DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libtinymail" -PR = "r0" +DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libtinymail" +PR = "r1" SRC_URI = "http://tinymail.org/files/tmut/releases/v1.1/v${PV}/${PN}-${PV}.tar.bz2" diff --git a/recipes/tinymail/tmut_svn.bb b/recipes/tinymail/tmut_svn.bb index abe7417898..11fcb0a1f0 100644 --- a/recipes/tinymail/tmut_svn.bb +++ b/recipes/tinymail/tmut_svn.bb @@ -1,9 +1,9 @@ DESCRIPTION = "Tmut is a really small E-Mail client based on Tinymail" SECTION = "x11/utils" LICENSE = "LGPL" -DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libtinymail" +DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libtinymail" PV = "0.0.0+svnr${SRCREV}" -PR = "r2" +PR = "r3" DEFAULT_PREFERENCE = "-1" diff --git a/recipes/totem/files/cflags.patch b/recipes/totem/files/cflags.patch deleted file mode 100644 index a03247332f..0000000000 --- a/recipes/totem/files/cflags.patch +++ /dev/null @@ -1,33 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- totem-1.0.4/src/Makefile.am~cflags -+++ totem-1.0.4/src/Makefile.am -@@ -1,4 +1,4 @@ --noinst_PROGRAMS = bvw-test list_v4l test-parser disc-test metadata-test -+#noinst_PROGRAMS = bvw-test list_v4l test-parser disc-test metadata-test - - if TOTEM_VANITY - VANITY=vanity -@@ -179,8 +179,10 @@ - list_v4l_SOURCES = list_v4l.c $(BACON_V4L_SELECTION) - list_v4l_LDADD = $(GTK_LIBS) - -+test_parser_CFLAGS = $(TOTEM_PLPARSER_CFLAGS) - test_parser_SOURCES = test-parser.c - test_parser_LDADD = \ -+ $(TOTEM_PLPARSER_LIBS) - $(EXTRA_GNOME_LIBS) \ - libtotem-plparser.la - -@@ -224,6 +226,8 @@ - totem-disc.h \ - totem-pl-parser.h - -+libtotem_plparser_la_CFLAGS = $(TOTEM_PLPARSER_CFLAGS) -+ - libtotem_plparser_la_LDFLAGS = \ - -version-info $(PLPARSER_LT_VERSION) \ - -no-undefined \ diff --git a/recipes/totem/files/gtkonly.patch b/recipes/totem/files/gtkonly.patch deleted file mode 100644 index 8a7fbd2a0b..0000000000 --- a/recipes/totem/files/gtkonly.patch +++ /dev/null @@ -1,38 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- totem-1.0.4/src/totem.c~gtkonly -+++ totem-1.0.4/src/totem.c -@@ -1667,8 +1667,10 @@ - totem_action_set_mrl_and_play (totem, mrl); - g_free (mrl); - -+#ifndef HAVE_GTK_ONLY - gnome_entry_append_history (GNOME_ENTRY (gentry), - TRUE, uri); -+#endif - } - } - -@@ -3593,7 +3595,9 @@ - /* Properties */ - totem->properties = bacon_video_widget_properties_new (); - -+#ifndef HAVE_GTK_ONLY - totem_session_setup (totem, argv); -+#endif - totem_setup_recent (totem); - totem_callback_connect (totem); - totem_setup_window (totem); -@@ -3617,7 +3621,9 @@ - /* Command-line handling */ - if (totem_options_process_late (totem, &argc, &argv) != FALSE) - { -+#ifndef HAVE_GTK_ONLY - totem_session_restore (totem, argv); -+#endif - } else if (argc >= 1 && totem_action_open_files (totem, argv)) { - totem_action_play_pause (totem); - } else { diff --git a/recipes/totem/files/include.patch b/recipes/totem/files/include.patch deleted file mode 100644 index 6e99c4e21e..0000000000 --- a/recipes/totem/files/include.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- totem-0.99.15/src/video-utils.c 2004-07-03 16:54:31.000000000 -0700 -+++ totem-0.99.15.new/src/video-utils.c 2004-08-04 11:03:30.822669856 -0700 -@@ -4,7 +4,7 @@ - #include "video-utils.h" - - #include <glib/gi18n.h> --#include <libintl.h> -+/* #include <libintl.h> */ - - #include <gdk/gdk.h> - #include <gdk/gdkx.h> diff --git a/recipes/totem/files/intl.patch b/recipes/totem/files/intl.patch deleted file mode 100644 index 2a1a32cc2d..0000000000 --- a/recipes/totem/files/intl.patch +++ /dev/null @@ -1,33 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- totem-1.0.4/src/totem.c~intl -+++ totem-1.0.4/src/totem.c -@@ -35,6 +35,25 @@ - #include <gtk/gtk.h> - #include <gdk/gdkkeysyms.h> - #include <stdlib.h> -+#ifdef ENABLE_NLS -+# include <libintl.h> -+# define _(String) dgettext (GETTEXT_PACKAGE, String) -+# ifdef gettext_noop -+# define N_(String) gettext_noop (String) -+# else -+# define N_(String) (String) -+# endif -+#else -+/* Stubs that do something close enough. */ -+# define textdomain(String) (String) -+# define gettext(String) (String) -+# define dgettext(Domain,Message) (Message) -+# define dcgettext(Domain,Message,Type) (Message) -+# define ngettext(Singular, Plural, IsPlural) (Singular) -+# define bindtextdomain(Domain,Directory) (Domain) -+# define _(String) (String) -+# define N_(String) (String) -+#endif - #endif /* !HAVE_GTK_ONLY */ - - #include <string.h> diff --git a/recipes/totem/files/nonautilus.patch b/recipes/totem/files/nonautilus.patch deleted file mode 100644 index 3cfce7c9aa..0000000000 --- a/recipes/totem/files/nonautilus.patch +++ /dev/null @@ -1,16 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- totem-1.0.4/configure.in~nonautilus -+++ totem-1.0.4/configure.in -@@ -144,7 +144,7 @@ - PKG_CHECK_MODULES(EXTRA_GNOME, glib-2.0 >= 2.6.3 gtk+-2.0 >= 2.5.6 libgnomeui-2.0 >= 2.3.3 libglade-2.0 gnome-vfs-2.0 >= 2.1.6 gnome-vfs-module-2.0 >= 2.1.6 gnome-desktop-2.0 >= 2.1.5 $MM) - HAVE_GNOME=yes - else -- PKG_CHECK_MODULES(EXTRA_GNOME, glib-2.0 >= 2.6.3 gtk+-2.0 >= 2.5.6 libglade-2.0 gnome-vfs-2.0 >= 2.1.6 gnome-vfs-module-2.0 >= 2.1.6 libnautilus-burn >= 2.9.0 $MM) -+ PKG_CHECK_MODULES(EXTRA_GNOME, glib-2.0 >= 2.6.3 gtk+-2.0 >= 2.5.6 libglade-2.0 gnome-vfs-2.0 >= 2.1.6 gnome-vfs-module-2.0 >= 2.1.6 $MM) - AC_DEFINE(USE_STABLE_LIBGNOMEUI, 1, [defined if we don't have GNOME]) - AC_DEFINE(HAVE_GTK_ONLY, 1, [defined if GNOME isn't used]) - HAVE_GNOME=no diff --git a/recipes/totem/files/omf.patch b/recipes/totem/files/omf.patch deleted file mode 100644 index a889db10ba..0000000000 --- a/recipes/totem/files/omf.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- totem-0.99.12/omf.make 2003-11-08 18:04:41.000000000 -0700 -+++ totem-0.99.12.new/omf.make 2004-06-30 09:39:58.765495480 -0700 -@@ -41,7 +41,9 @@ - install-data-hook-omf: - $(mkinstalldirs) $(DESTDIR)$(omf_dest_dir) - for file in $(omffile); do \ -- $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ -+ if [ -f $$file.out ]; then \ -+ $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \ -+ fi; \ - done - -scrollkeeper-update -o $(DESTDIR)$(omf_dest_dir) - diff --git a/recipes/totem/totem-2.24.2/gst-detect.diff b/recipes/totem/totem-2.24.2/gst-detect.diff deleted file mode 100644 index 57c2a3cedf..0000000000 --- a/recipes/totem/totem-2.24.2/gst-detect.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- /tmp/configure.in 2008-08-10 15:27:06.000000000 +0200 -+++ totem-2.23.4/configure.in 2008-08-10 20:37:08.743198000 +0200 -@@ -142,11 +142,7 @@ - if $gst010_inspect $base_element >/dev/null 2>/dev/null; then - AC_MSG_RESULT([yes]) - else -- AC_MSG_RESULT([no]) -- AC_MSG_ERROR([ -- Cannot find required GStreamer-0.10 plugin '$base_element'. -- It should be part of gst-plugins-base. Please install it. -- ]) -+ AC_MSG_RESULT([yes, we assume OE has already built them]) - fi - done - -@@ -157,11 +153,7 @@ - if $gst010_inspect $good_element >/dev/null 2>/dev/null; then - AC_MSG_RESULT([yes]) - else -- AC_MSG_RESULT([no]) -- AC_MSG_ERROR([ -- Cannot find required GStreamer-0.10 plugin '$good_element'. -- It should be part of gst-plugins-good. Please install it. -- ]) -+ AC_MSG_RESULT([yes, we assume OE has already built them]) - fi - done - diff --git a/recipes/totem/totem-2.28.1/gst-detect.diff b/recipes/totem/totem-2.28.1/gst-detect.diff new file mode 100644 index 0000000000..6ac4455ad0 --- /dev/null +++ b/recipes/totem/totem-2.28.1/gst-detect.diff @@ -0,0 +1,46 @@ +--- /tmp/configure.in 2009-10-21 11:43:19.000000000 +0200 ++++ totem-2.28.1/configure.in 2009-10-21 11:47:21.000000000 +0200 +@@ -110,10 +110,6 @@ + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +- AC_MSG_ERROR([ +- Cannot find required GStreamer-0.10 tool 'gst-inspect-0.10'. +- It should be part of gstreamer-0_10-utils. Please install it. +- ]) + fi + + dnl Check for elements from gst-plugins-base +@@ -124,10 +120,6 @@ + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +- AC_MSG_ERROR([ +- Cannot find required GStreamer-0.10 plugin '$base_element'. +- It should be part of gst-plugins-base. Please install it. +- ]) + fi + done + +@@ -139,10 +131,6 @@ + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +- AC_MSG_ERROR([ +- Cannot find required GStreamer-0.10 plugin '$good_element'. +- It should be part of gst-plugins-good. Please install it. +- ]) + fi + done + +@@ -570,10 +558,6 @@ + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +- AC_MSG_ERROR([ +- Cannot find required GStreamer-0.10 plugin 'souphttpsrc'. +- It should be part of gst-plugins-good. Please install it. +- ]) + fi + ;; + esac diff --git a/recipes/totem/totem-pl-parser_2.23.3.bb b/recipes/totem/totem-pl-parser_2.23.3.bb deleted file mode 100644 index 7f3cd861e9..0000000000 --- a/recipes/totem/totem-pl-parser_2.23.3.bb +++ /dev/null @@ -1,15 +0,0 @@ -DESCRIPTION = "Playlist parser for Totem, a GTK2 based media player" -HOMEPAGE = "http://www.gnome.org/projects/totem/" -LICENSE = "GPL" - -DEPENDS = "eds-dbus" - -inherit gnome - -AUTOTOOLS_STAGE_PKGCONFIG = "1" - -do_stage() { - autotools_stage_all -} - - diff --git a/recipes/totem/totem-pl-parser_2.24.1.bb b/recipes/totem/totem-pl-parser_2.24.1.bb deleted file mode 100644 index 7f3cd861e9..0000000000 --- a/recipes/totem/totem-pl-parser_2.24.1.bb +++ /dev/null @@ -1,15 +0,0 @@ -DESCRIPTION = "Playlist parser for Totem, a GTK2 based media player" -HOMEPAGE = "http://www.gnome.org/projects/totem/" -LICENSE = "GPL" - -DEPENDS = "eds-dbus" - -inherit gnome - -AUTOTOOLS_STAGE_PKGCONFIG = "1" - -do_stage() { - autotools_stage_all -} - - diff --git a/recipes/totem/totem-pl-parser_2.26.2.bb b/recipes/totem/totem-pl-parser_2.28.1.bb index f9694b05d8..c59a2ed051 100644 --- a/recipes/totem/totem-pl-parser_2.26.2.bb +++ b/recipes/totem/totem-pl-parser_2.28.1.bb @@ -2,7 +2,7 @@ DESCRIPTION = "Playlist parser for Totem, a GTK2 based media player" HOMEPAGE = "http://www.gnome.org/projects/totem/" LICENSE = "GPL" -DEPENDS = "eds-dbus" +DEPENDS = "gmime eds-dbus" inherit gnome diff --git a/recipes/totem/totem/gst-detect.diff b/recipes/totem/totem/gst-detect.diff deleted file mode 100644 index 6d37515995..0000000000 --- a/recipes/totem/totem/gst-detect.diff +++ /dev/null @@ -1,37 +0,0 @@ ---- /tmp/configure.in 2008-08-10 15:27:06.000000000 +0200 -+++ totem-2.23.4/configure.in 2008-08-10 20:37:08.743198000 +0200 -@@ -142,11 +142,7 @@ - if $gst010_inspect $base_element >/dev/null 2>/dev/null; then - AC_MSG_RESULT([yes]) - else -- AC_MSG_RESULT([no]) -- AC_MSG_ERROR([ -- Cannot find required GStreamer-0.10 plugin '$base_element'. -- It should be part of gst-plugins-base. Please install it. -- ]) -+ AC_MSG_RESULT([yes, we assume OE has already built them]) - fi - done - -@@ -157,11 +153,7 @@ - if $gst010_inspect $good_element >/dev/null 2>/dev/null; then - AC_MSG_RESULT([yes]) - else -- AC_MSG_RESULT([no]) -- AC_MSG_ERROR([ -- Cannot find required GStreamer-0.10 plugin '$good_element'. -- It should be part of gst-plugins-good. Please install it. -- ]) -+ AC_MSG_RESULT([yes, we assume OE has already built them]) - fi - done - -@@ -565,7 +557,7 @@ - fi - ;; - mythtv) -- PKG_CHECK_MODULES(GMYTH, gmyth >= 0.7 gmyth-upnp >= 0.7.1, -+ PKG_CHECK_MODULES(GMYTH, gmyth >= 0.7.0 gmyth-upnp, - [HAVE_GMYTH=yes], [HAVE_GMYTH=no]) - if test "${HAVE_GMYTH}" != "yes"; then - plugin_error_or_ignore "you need GMyth >= 0.7 installed for the MythTV plugin" diff --git a/recipes/totem/totem_0.99.15.bb b/recipes/totem/totem_0.99.15.bb deleted file mode 100644 index ed182b7d5a..0000000000 --- a/recipes/totem/totem_0.99.15.bb +++ /dev/null @@ -1,30 +0,0 @@ -SECTION = "x11/multimedia" -# totem OE build file -# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved -# Released under the MIT license (see packages/COPYING) - -DESCRIPTION="A GTK2 based media player" -HOMEPAGE="http://www.hadess.net/totem.php3" -LICENSE="GPL" - -SRC_URI="http://ftp.acc.umu.se/pub/GNOME/sources/totem/0.99/totem-${PV}.tar.gz \ - file://include.patch;patch=1 \ - file://omf.patch;patch=1" - -DEPENDS="gtk+ libglade gnome-vfs gconf libxine libgnomeui" -RDEPENDS += " libgnomeui" - -inherit autotools - -EXTRA_OECONF="--disable-schemas-install --disable-nvtv --enable-gtk --disable-debug --disable-gstreamer --disable-mozilla" - -#SELECTED_OPTIMIZATION="-O0 -g" -LDFLAGS_append = " -Wl,--export-dynamic" - -pkg_postinst_totem() { -#!/bin/sh -if [ -n "$D" ]; then exit 1; fi; -SOURCE=`gconftool-2 --get-default-source` -GCONF_CONFIG_SOURCE=$SOURCE gconftool-2 --makefile-install-rule \ -/etc/gconf/schemas/totem.schemas > /dev/null -} diff --git a/recipes/totem/totem_1.0.4.bb b/recipes/totem/totem_1.0.4.bb deleted file mode 100644 index 8694bcb8d3..0000000000 --- a/recipes/totem/totem_1.0.4.bb +++ /dev/null @@ -1,33 +0,0 @@ -SECTION = "x11/multimedia" -# totem OE build file -# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved -# Released under the MIT license (see packages/COPYING) - -DESCRIPTION="A GTK2 based media player" -HOMEPAGE="http://www.gnome.org/projects/totem/" -LICENSE="GPL" - -SRC_URI="http://ftp.gnome.org/pub/GNOME/sources/totem/1.0/totem-${PV}.tar.gz \ - file://include.patch;patch=1 \ - file://omf.patch;patch=1 \ - file://nonautilus.patch;patch=1 \ - file://intl.patch;patch=1 \ - file://cflags.patch;patch=1 \ - file://gtkonly.patch;patch=1" - -DEPENDS="gtk+ libglade gnome-vfs gconf libxine libxml2" - -inherit autotools - -EXTRA_OECONF="--disable-schemas-install --disable-nvtv --enable-gtk --disable-debug --disable-gstreamer --disable-mozilla" - -#SELECTED_OPTIMIZATION="-O0 -g" -LDFLAGS_append = " -Wl,--export-dynamic" - -pkg_postinst_totem() { -#!/bin/sh -if [ -n "$D" ]; then exit 1; fi; -SOURCE=`gconftool-2 --get-default-source` -GCONF_CONFIG_SOURCE=$SOURCE gconftool-2 --makefile-install-rule \ -/etc/gconf/schemas/totem.schemas > /dev/null -} diff --git a/recipes/totem/totem_2.23.4.bb b/recipes/totem/totem_2.23.4.bb deleted file mode 100644 index f2e945fd87..0000000000 --- a/recipes/totem/totem_2.23.4.bb +++ /dev/null @@ -1,72 +0,0 @@ -# totem OE build file -# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved -# Released under the MIT license (see packages/COPYING) - -DESCRIPTION = "A GTK2 based media player" -HOMEPAGE = "http://www.gnome.org/projects/totem/" -LICENSE = "GPL" - -PR = "r3" - -DEPENDS = " totem-pl-parser gtk+ dbus bluez-libs libglade gconf libxml2 gst-ffmpeg gst-plugins-bad gst-plugins-base" -RDEPENDS_${PN} += "iso-codes" -RRECOMMENDS_${PN} += "gst-plugin-playbin \ - gst-plugin-gconfelements \ - gst-plugin-decodebin \ - gst-plugin-decodebin2 \ - gst-ffmpeg \ - gst-plugin-audioresample \ - gst-plugin-ximagesink \ - gst-plugin-xvimagesink \ - gst-plugin-alsa \ - gst-plugin-avi \ - gst-plugin-ffmpegcolorspace \ - gst-plugin-flvdemux \ - gst-plugin-nuvdemux \ - gst-plugin-videoscale \ - gst-plugin-a52dec \ - gst-plugin-mpegaudioparse \ - gst-plugin-ossaudio \ - gst-plugin-pulse \ - gst-plugin-autodetect \ - " - -inherit gnome - -SRC_URI += "file://gst-detect.diff;patch=1" - -EXTRA_OECONF=" --disable-schemas-install \ - --enable-gtk \ - --disable-iso-codes \ - --disable-debug \ - --enable-gstreamer \ - --enable-browser-plugins \ - --disable-run-in-source-tree \ - --disable-python \ - --disable-vala \ - --with-dbus \ - " - -do_configure_prepend() { - sed -i -e s:help::g ${S}/Makefile.am -} - -PACKAGES += "totem-plugin-bemused totem-plugin-gromit totem-plugin-lirc totem-plugin-media-player-keys totem-plugin-mythtv totem-plugin-ontop totem-plugin-properties totem-plugin-screensaver totem-plugin-skipto totem-plugin-thumbnail totem-plugin-youtube totem-browser-plugin-dbg totem-browser-plugin" - -FILES_totem-plugin-bemused += "${libdir}/totem/plugins/bemused/*" -FILES_totem-plugin-gromit += "${libdir}/totem/plugins/gromit/*" -FILES_totem-plugin-lirc += "${libdir}/totem/plugins/lirc/*" -FILES_totem-plugin-media-player-keys += "${libdir}/totem/plugins/media-player-keys/*" -FILES_totem-plugin-mythtv += "${libdir}/totem/plugins/mythtv/*" -FILES_totem-plugin-ontop += "${libdir}/totem/plugins/ontop/*" -FILES_totem-plugin-properties += "${libdir}/totem/plugins/properties/*" -FILES_totem-plugin-screensaver += "${libdir}/totem/plugins/screensaver/*" -FILES_totem-plugin-skipto += "${libdir}/totem/plugins/skipto/*" -FILES_totem-plugin-thumbnail += "${libdir}/totem/plugins/thumbnail/*" -FILES_totem-plugin-youtube += "${libdir}/totem/plugins/youtube/*" - -FILES_${PN} = "${bindir}/* ${sysconfdir} ${libdir}/lib*.so.* ${libexecdir} ${datadir}/icons ${datadir}/totem ${datadir}/applications" -FILES_${PN}-dbg += "${libdir}/totem/plugins/*/.debug" -FILES_${PN}-dev += "${libdir}/totem/plugins/*/*a" -FILES_totem-browser-plugin-dbg += "${libdir}/mozilla/plugins/.debug" -FILES_totem-browser-plugin += "${libdir}/mozilla/plugins/" diff --git a/recipes/totem/totem_2.24.2.bb b/recipes/totem/totem_2.28.1.bb index a0de5705cf..35b077c025 100644 --- a/recipes/totem/totem_2.24.2.bb +++ b/recipes/totem/totem_2.28.1.bb @@ -6,7 +6,7 @@ DESCRIPTION = "A GTK2 based media player" HOMEPAGE = "http://www.gnome.org/projects/totem/" LICENSE = "GPL" -DEPENDS = " totem-pl-parser gtk+ dbus bluez-libs libglade gconf libxml2 gst-ffmpeg gst-plugins-bad gst-plugins-base" +DEPENDS = " libgdata totem-pl-parser gtk+ dbus bluez-libs libglade gconf libxml2 gst-ffmpeg gst-plugins-bad gst-plugins-base" RDEPENDS_${PN} += "iso-codes" RRECOMMENDS_${PN} += "gst-plugin-playbin \ gst-plugin-gconfelements \ @@ -27,7 +27,7 @@ RRECOMMENDS_${PN} += "gst-plugin-playbin \ gst-plugin-ossaudio \ gst-plugin-pulse \ gst-plugin-autodetect \ - " + totem-plugin-youtube totem-plugin-thumbnail totem-plugin-dbus totem-plugin-screensaver" inherit gnome @@ -49,22 +49,25 @@ do_configure_prepend() { sed -i -e s:help::g ${S}/Makefile.am } -PACKAGES += "totem-plugin-bemused totem-plugin-gromit totem-plugin-lirc totem-plugin-media-player-keys totem-plugin-mythtv totem-plugin-ontop totem-plugin-properties totem-plugin-screensaver totem-plugin-skipto totem-plugin-thumbnail totem-plugin-youtube totem-browser-plugin-dbg totem-browser-plugin" - -FILES_totem-plugin-bemused += "${libdir}/totem/plugins/bemused/*" -FILES_totem-plugin-gromit += "${libdir}/totem/plugins/gromit/*" -FILES_totem-plugin-lirc += "${libdir}/totem/plugins/lirc/*" -FILES_totem-plugin-media-player-keys += "${libdir}/totem/plugins/media-player-keys/*" -FILES_totem-plugin-mythtv += "${libdir}/totem/plugins/mythtv/*" -FILES_totem-plugin-ontop += "${libdir}/totem/plugins/ontop/*" -FILES_totem-plugin-properties += "${libdir}/totem/plugins/properties/*" -FILES_totem-plugin-screensaver += "${libdir}/totem/plugins/screensaver/*" -FILES_totem-plugin-skipto += "${libdir}/totem/plugins/skipto/*" -FILES_totem-plugin-thumbnail += "${libdir}/totem/plugins/thumbnail/*" -FILES_totem-plugin-youtube += "${libdir}/totem/plugins/youtube/*" - -FILES_${PN} = "${bindir}/* ${sysconfdir} ${libdir}/lib*.so.* ${libexecdir} ${datadir}/icons ${datadir}/totem ${datadir}/applications" +PACKAGES_DYNAMIC += " totem-plugin-* " + +python populate_packages_prepend () { + totem_libdir = bb.data.expand('${libdir}/totem/plugins/', d) + + do_split_packages(d, totem_libdir, '^(.*)', 'totem-plugin-%s', 'totem plugin for %s', allow_dirs=True, extra_depends='') +} + +FILES_${PN} = "${bindir}/* ${sysconfdir} ${libdir}/lib*.so.* ${libexecdir} ${datadir}/icons ${datadir}/totem ${datadir}/applications \ +" + +PACKAGES =+ "totem-nautilus-extension totem-browser-plugin-dbg totem-browser-plugin" + FILES_${PN}-dbg += "${libdir}/totem/plugins/*/.debug" FILES_${PN}-dev += "${libdir}/totem/plugins/*/*a" FILES_totem-browser-plugin-dbg += "${libdir}/mozilla/plugins/.debug" FILES_totem-browser-plugin += "${libdir}/mozilla/plugins/" + +FILES_totem-nautilus-extension += "${libdir}/nautilus/extensions-2.0/*.so" + + + diff --git a/recipes/u-boot/files/beagleboard/fw_env.config b/recipes/u-boot/files/beagleboard/fw_env.config new file mode 100644 index 0000000000..8fc96f7572 --- /dev/null +++ b/recipes/u-boot/files/beagleboard/fw_env.config @@ -0,0 +1,8 @@ +# Configuration file for fw_(printenv/saveenv) utility. +# Up to two entries are valid, in this case the redundant +# environment sector is assumed present. +# Notice, that the "Number of sectors" is ignored on NOR. + +# MTD device name Device offset Env. size Flash sector size Number of sectors +/dev/mtd2 0x0000 0x20000 0x40000 + diff --git a/recipes/u-boot/files/fw_env.config b/recipes/u-boot/files/fw_env.config new file mode 100644 index 0000000000..940308f28b --- /dev/null +++ b/recipes/u-boot/files/fw_env.config @@ -0,0 +1,7 @@ +# Configuration file for fw_(printenv/saveenv) utility. +# Up to two entries are valid, in this case the redundand +# environment sector is assumed present. + +# MTD device name Device offset Env. size Flash sector size +#/dev/mtd1 0x0000 0x4000 0x4000 +#/dev/mtd2 0x0000 0x4000 0x4000 diff --git a/recipes/u-boot/files/omap3-touchbook/fw_env.config b/recipes/u-boot/files/omap3-touchbook/fw_env.config new file mode 100644 index 0000000000..a7bfec1ebb --- /dev/null +++ b/recipes/u-boot/files/omap3-touchbook/fw_env.config @@ -0,0 +1,6 @@ +# Configuration file for fw_(printenv/saveenv) utility. +# Up to two entries are valid, in this case the redundand +# environment sector is assumed present. + +# MTD device name Device offset Env. size Flash sector size +/dev/mtd2 0x0000 0x20000 0x20000 diff --git a/recipes/u-boot/files/rootfs.patch b/recipes/u-boot/files/rootfs.patch new file mode 100644 index 0000000000..655c040500 --- /dev/null +++ b/recipes/u-boot/files/rootfs.patch @@ -0,0 +1,62 @@ +--- git/include/configs/omap3_overo.h-orig 2009-09-17 13:06:08.000000000 -0700 ++++ git/include/configs/omap3_overo.h 2009-09-17 13:06:49.000000000 -0700 +@@ -158,20 +158,24 @@ + "vram=12M\0" \ + "dvimode=1024x768MR-16@60\0" \ + "defaultdisplay=dvi\0" \ ++ "mmcroot=/dev/mmcblk0p2 rw\0" \ ++ "mmcrootfstype=ext3 rootwait\0" \ ++ "nandroot=/dev/mtdblock4 rw\0" \ ++ "nandrootfstype=jffs2\0" \ + "mmcargs=setenv bootargs console=${console} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ +- "root=/dev/mmcblk0p2 rw " \ +- "rootfstype=ext3 rootwait\0" \ ++ "root=${mmcroot} " \ ++ "rootfstype=${mmcrootfstype}\0" \ + "nandargs=setenv bootargs console=${console} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ +- "root=/dev/mtdblock4 rw " \ +- "rootfstype=jffs2\0" \ ++ "root=${nandroot} " \ ++ "rootfstype=${nandrootfstype}\0" \ + "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \ + "bootscript=echo Running bootscript from mmc ...; " \ + "source ${loadaddr}\0" \ +--- git/include/configs/omap3_beagle.h-orig 2009-09-17 14:48:55.000000000 -0700 ++++ git/include/configs/omap3_beagle.h 2009-09-19 22:15:01.000000000 -0700 +@@ -167,20 +167,24 @@ + "vram=12M\0" \ + "dvimode=1024x768MR-16@60\0" \ + "defaultdisplay=dvi\0" \ ++ "mmcroot=/dev/mmcblk0p2 rw\0" \ ++ "mmcrootfstype=ext3 rootwait\0" \ ++ "nandroot=/dev/mtdblock4 rw\0" \ ++ "nandrootfstype=jffs2\0" \ + "mmcargs=setenv bootargs console=${console} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ +- "root=/dev/mmcblk0p2 rw " \ +- "rootfstype=ext3 rootwait\0" \ ++ "root=${mmcroot} " \ ++ "rootfstype=${mmcrootfstype}\0" \ + "nandargs=setenv bootargs console=${console} " \ + "vram=${vram} " \ + "omapfb.mode=dvi:${dvimode} " \ + "omapfb.debug=y " \ + "omapdss.def_disp=${defaultdisplay} " \ +- "root=/dev/mtdblock4 rw " \ +- "rootfstype=jffs2\0" \ ++ "root=${nandroot} " \ ++ "rootfstype=${nandrootfstype}\0" \ + "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \ + "bootscript=echo Running bootscript from mmc ...; " \ + "source ${loadaddr}\0" \ diff --git a/recipes/u-boot/u-boot-git/600mhz.patch b/recipes/u-boot/u-boot-git/600mhz.patch new file mode 100644 index 0000000000..65b1a439a6 --- /dev/null +++ b/recipes/u-boot/u-boot-git/600mhz.patch @@ -0,0 +1,11 @@ +--- a/include/asm-arm/arch-omap3/clocks_omap3.h ++++ b/include/asm-arm/arch-omap3/clocks_omap3.h +@@ -71,7 +71,7 @@ + #define MPU_FSEL_13_ES1 0x03 + #define MPU_M2_13_ES1 0x01 + +-#define MPU_M_13_ES2 0x1F4 ++#define MPU_M_13_ES2 0x258 + #define MPU_N_13_ES2 0x0C + #define MPU_FSEL_13_ES2 0x03 + #define MPU_M2_13_ES2 0x01 diff --git a/recipes/u-boot/u-boot-git/ai-logo.patch b/recipes/u-boot/u-boot-git/ai-logo.patch new file mode 100644 index 0000000000..0a8087fc9c --- /dev/null +++ b/recipes/u-boot/u-boot-git/ai-logo.patch @@ -0,0 +1,1336 @@ +diff -Nur a/board/omap3/beagle/beagle.c b/board/omap3/beagle/beagle.c +--- a/board/omap3/beagle/beagle.c 2009-04-09 02:05:04.000000000 -0700 ++++ b/board/omap3/beagle/beagle.c 2009-04-14 14:40:45.000000000 -0700 +@@ -35,9 +35,147 @@ + #include <asm/arch/sys_proto.h> + #include <asm/mach-types.h> + #include "beagle.h" ++#include "logo.h" ++ ++#define LOGO_SCREEN_WIDTH 1024 ++#define LOGO_SCREEN_HEIGHT 600 ++#define LOGO_FILL_COLOUR 0x0 + + static int beagle_revision_c; + ++void dss_init(void) ++{ ++ unsigned int i, k=0; ++ unsigned char pixel[3]; ++ int offset = 0; ++ ++ /* Fill up to the logo */ ++ for (i = 0; i < 2 * (LOGO_SCREEN_WIDTH * ((LOGO_SCREEN_HEIGHT/2) - (height/2))); i += 2) { ++ *((unsigned short *)(0x80500000 + i)) = LOGO_FILL_COLOUR; ++ } ++ offset += i; ++ ++ /* Paint the image data */ ++ for (i = 0; i < height; i++) { ++ for (k = 0; k < LOGO_SCREEN_WIDTH; k++) { ++ if(k < (LOGO_SCREEN_WIDTH / 2 - width / 2) || k >= (LOGO_SCREEN_WIDTH / 2 + width / 2)) ++ *((unsigned short *)(0x80500000 + offset + 2*k)) = LOGO_FILL_COLOUR; ++ else { ++ HEADER_PIXEL(header_data, pixel); ++ *((unsigned short *)(0x80500000 + offset + 2*k)) = ++ ((((pixel[0])&0xf8) << 8) | ++ (((pixel[1])&0xfc) << 3) | ++ (((pixel[2])&0xf8) >> 3)); ++ } ++ } ++ ++ offset += 2 * LOGO_SCREEN_WIDTH; ++ } ++ ++ /* Fill the rest */ ++ for (i = 0; i < 2 * (LOGO_SCREEN_WIDTH * ((LOGO_SCREEN_HEIGHT/2) - (height/2))); i += 2) { ++ *((unsigned short *)(0x80500000 + offset + i)) = LOGO_FILL_COLOUR; ++ } ++ ++ *((uint *) 0x48310034) = 0xfefffedf; ++ *((uint *) 0x48310094) = 0x01000120; ++ *((uint *) 0x48004D44) = 0x0001b00c; ++ *((uint *) 0x48004E40) = 0x00001002; ++ *((uint *) 0x48004D00) = 0x00370037; ++ ++ *((uint *) 0x48050C00) = 0x00000002; ++ *((uint *) 0x48050C04) = 0x0000001B; ++ *((uint *) 0x48050C08) = 0x00000040; ++ *((uint *) 0x48050C0C) = 0x00000000; ++ *((uint *) 0x48050C10) = 0x00000000; ++ *((uint *) 0x48050C14) = 0x00008000; ++ *((uint *) 0x48050C18) = 0x00000000; ++ *((uint *) 0x48050C1C) = 0x00008359; ++ *((uint *) 0x48050C20) = 0x0000020C; ++ *((uint *) 0x48050C24) = 0x00000000; ++ *((uint *) 0x48050C28) = 0x043F2631; ++ *((uint *) 0x48050C2C) = 0x00000024; ++ *((uint *) 0x48050C30) = 0x00000130; ++ *((uint *) 0x48050C34) = 0x00000198; ++ *((uint *) 0x48050C38) = 0x000001C0; ++ *((uint *) 0x48050C3C) = 0x0000006A; ++ *((uint *) 0x48050C40) = 0x0000005C; ++ *((uint *) 0x48050C44) = 0x00000000; ++ *((uint *) 0x48050C48) = 0x00000001; ++ *((uint *) 0x48050C4C) = 0x0000003F; ++ *((uint *) 0x48050C50) = 0x21F07C1F; ++ *((uint *) 0x48050C54) = 0x00000000; ++ *((uint *) 0x48050C58) = 0x00000015; ++ *((uint *) 0x48050C5C) = 0x00001400; ++ *((uint *) 0x48050C60) = 0x00000000; ++ *((uint *) 0x48050C64) = 0x069300F4; ++ *((uint *) 0x48050C68) = 0x0016020C; ++ *((uint *) 0x48050C6C) = 0x00060107; ++ *((uint *) 0x48050C70) = 0x008D034E; ++ *((uint *) 0x48050C74) = 0x000F0359; ++ *((uint *) 0x48050C78) = 0x01A00000; ++ *((uint *) 0x48050C7C) = 0x020501A0; ++ *((uint *) 0x48050C80) = 0x01AC0024; ++ *((uint *) 0x48050C84) = 0x020D01AC; ++ *((uint *) 0x48050C88) = 0x00000006; ++ *((uint *) 0x48050C8C) = 0x00000000; ++ *((uint *) 0x48050C90) = 0x03480079; ++ *((uint *) 0x48050C94) = 0x02040024; ++ *((uint *) 0x48050C98) = 0x00000000; ++ *((uint *) 0x48050C9C) = 0x00000000; ++ *((uint *) 0x48050CA0) = 0x0001008A; ++ *((uint *) 0x48050CA4) = 0x01AC0106; ++ *((uint *) 0x48050CA8) = 0x01060006; ++ *((uint *) 0x48050CAC) = 0x00000000; ++ *((uint *) 0x48050CB0) = 0x00140001; ++ *((uint *) 0x48050CB4) = 0x00010001; ++ *((uint *) 0x48050CB8) = 0x00FF0000; ++ *((uint *) 0x48050CBC) = 0x00000000; ++ *((uint *) 0x48050CC0) = 0x00000000; ++ *((uint *) 0x48050CC4) = 0x0000000D; ++ *((uint *) 0x48050CC8) = 0x00000000; ++ *((uint *) 0x48050010) = 0x00000001; ++ *((uint *) 0x48050040) = 0x00000078; ++ *((uint *) 0x48050044) = 0x00000000; ++ *((uint *) 0x48050048) = 0x00000000; ++ *((uint *) 0x48050050) = 0x00000000; ++ *((uint *) 0x48050058) = 0x00000000; ++ *((uint *) 0x48050410) = 0x00002015; ++ *((uint *) 0x48050414) = 0x00000001; ++ *((uint *) 0x48050444) = 0x00000004; ++ *((uint *) 0x4805044c) = 0xFFFFFFFF; ++ *((uint *) 0x48050450) = 0x00000000; ++ *((uint *) 0x48050454) = 0x00000000; ++ *((uint *) 0x48050458) = 0x00000000; ++ *((uint *) 0x48050464) = 0x02600202; ++ *((uint *) 0x48050468) = 0x00700200; ++ *((uint *) 0x4805046c) = 0x00000000; ++ *((uint *) 0x48050470) = 0x00010007; ++ *((uint *) 0x48050478) = 0x00ef027f; ++ *((uint *) 0x4805047c) = 0x02ff03ff; ++ *((uint *) 0x48050480) = 0x80500000; ++ *((uint *) 0x48050484) = 0x80500000; ++ *((uint *) 0x48050488) = 0x00000000; ++ *((uint *) 0x4805048c) = 0x02ff03ff; ++ *((uint *) 0x480504a0) = 0x0000008d; ++ *((uint *) 0x480504a4) = 0x03fc03bc; ++ *((uint *) 0x480504a8) = 0x00000400; ++ *((uint *) 0x480504ac) = 0x00000001; ++ *((uint *) 0x480504b0) = 0x00000001; ++ *((uint *) 0x480504b4) = 0x00000000; ++ *((uint *) 0x480504b8) = 0x807ff000; ++ udelay(1000); ++ *((uint *) 0x48050440) = 0x0001836b; ++ udelay(1000); ++ *((uint *) 0x48050440) = 0x0001836b; ++ udelay(1000); ++ *((uint *) 0x48050440) = 0x0001836b; ++ udelay(1000); ++ ++ /* Turn on GPT9 PWM */ ++ *((uint *) 0x49040024) = 0x80; ++} ++ + /* + * Routine: board_init + * Description: Early hardware init. +@@ -118,6 +252,9 @@ + + dieid_num_r(); + ++ /* Touch Book logo */ ++ dss_init(); ++ + return 0; + } + +diff -Nur a/board/omap3/beagle/logo.h b/board/omap3/beagle/logo.h +--- a/board/omap3/beagle/logo.h 1969-12-31 16:00:00.000000000 -0800 ++++ b/board/omap3/beagle/logo.h 2009-04-14 14:10:52.000000000 -0700 +@@ -0,0 +1,1171 @@ ++/* GIMP header image file format (RGB): /Documents/Desktop/u-boot-black.h */ ++ ++static unsigned int width = 136; ++static unsigned int height = 136; ++ ++/* Call this macro repeatedly. After each use, the pixel data can be extracted */ ++ ++#define HEADER_PIXEL(data,pixel) {\ ++ pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \ ++ pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \ ++ pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \ ++ data += 4; \ ++} ++static char *header_data = ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?7VB9F:+3YO$A````````````" ++ "````````O,;WB)'#1E\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?" ++ "B)'\"````````````````````````````````````````````````Y?$@:W2E%2%2" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!%2%2>H.S````````````````````````````````````" ++ "````````````````````````````YO(A1E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIKO,;W````````" ++ "````````````````````````````````````````````````````````````````" ++ "````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!+SEJY?$@````````````````````````````````````````````" ++ "````````````````````````````````````````JK3D%B)3!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?YO$@````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````B9+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!O<;W````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````;'6E!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "(RY?YO$A````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````JK3E!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "YO$@````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````B9+#!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!1E!`````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````YO$A!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````+SIK" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````:W2E" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````:W2E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````:W2E" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D1U.T5U.T5V.T5U" ++ ".T5V.T5V.T5U.T5U%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````7F>8" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.T5U:W6E" ++ "F:+3JK3D````````````````````````````````````````````````T-L+JK/D" ++ ":W2E1E!`(R]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!(R]?7FB8JK3E````````````````````````````````````````````" ++ "````````````````````````````````````````````O<;W>H*S+SIK!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1D]`" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)24ER,O<;W````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````T-L,>H*S)\"]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)2````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````F:+3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@B)'\"YO(A" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````J[3E.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "B)'\"````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````1E\"!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!)\"]@B)'\"````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````J[3E.T5V!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJ````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````T-H+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2EYO$A````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````FJ/3(RY?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!B)'\"````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````1D]`!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ ".T5VT-L+````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````YO$A7VB9" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2YO$A````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````F:+3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````J[3E(RY?!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!+SIJ````````````````````````````````````````````````````" ++ "````````````````````````````````````````````O<;W%2%2!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2O<;W````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````YO$A.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````O<;W%B%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!+SEJYO$A````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````4ER,!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!1E!`YO$A````````````````````````````````````````" ++ "````````````````````````````````````O<;W%B)2!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJYO$A````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJO<;W````" ++ "````````````````````````````````````````````````````````````````" ++ ">H*S%B)3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!1D]`YO$A````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````B)'\"!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4UR,T=L,````````````````````````````" ++ "````````````````````````JK/D.T5V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIKYO$@````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!1D]`B)'\"YO$@````````````````````````````T-L,>8*S+SIK!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ ",#IKYO$A````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````4UR," ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@.T5V.D5U.T5V" ++ ".T5U.T5U%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2T-L+````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````1D]`!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "Y?$@)\"]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!7F>8````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?YO$A````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````7F>8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````YO$A(R]?!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1D]`````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!T-L+````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````+SEJ!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!O<;W````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````(R]?!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!(R]@7F>8F:+3T=L,````````````O<;WB9+#4ER,%B)3!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````YO$AJ[3E:W2E:W2E" ++ ";'6F:W2EFJ+3T-L+````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````>8*S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?B9+#````````````````````````" ++ "````````````````YO$@;'6E%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!B)'\"````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````F:+31E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,#IK>H*SYO$@````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````Y?$@!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E" ++ "````````````````````````````````````````````````````````YO$A.T5V" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO(A````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````O<;W.T5V!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!%2%2>8*S````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````1E\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````````````````````````````````" ++ "````````````````````````````````4ER,!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!.T5U````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````B)'\"" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "1E!`Y?$@````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````>8*S!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````" ++ "````````````````````````````````````````````````````````````````" ++ "````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````4ER,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJYO$A````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!:W2E````````````````````````````````````````````" ++ "````````````````````````````````````````+SIK!!!!!!!!!!!!!!!!!!!!" ++ "!!!!JK3D````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````B9+#!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!.T5V````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````%2%2" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````T-H+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!B)'\"````````````````````````````````````````````````" ++ "````````````````````````````````````````````4EN,!!!!!!!!!!!!!!!!" ++ "+SIK````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````.D1U!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!%2%2YO(A````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````:W2E" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````T=L,!!!!!!!!!!!!!!!!.T5U````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````T=L,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!7F>8````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````+SIK!!!!!!!!!!!!" ++ "7F>8````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````;'6F!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!+SIJ````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````J[3E" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````7F>8!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````.T5V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO$A````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!O<;W````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````>8*S!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````+SIJ!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````O<;W" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK3E!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3E!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````J[3E!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````J[3E!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK3D!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````J[3E!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````J[3E!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3E!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````JK3D!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````JK3E!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````:W2E!!!!!!!!!!!!;'6E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````1E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!7F>8````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````;'6F!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;X````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````7FB8!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1E!`````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````(RY?!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ ".T5U````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````.D1U!!!!!!!!!!!!" ++ ";'6F````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!+SIK````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````%2%2!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO$A````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````7F>8!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````T=L,!!!!!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````B)'\"!!!!!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!7F>8````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````;'6F!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````1E\"!!!!!!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!(RY?````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````JK3E.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!.T5UO<;W````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````%2%2!!!!!!!!!!!!!!!!;'6F````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````JK3E" ++ "1E!`%2%2!!!!!!!!!!!!!!!!!!!!!!!!%2%24UR,JK3D````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````F:+3!!!!!!!!!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4ER,````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````O<?XF:+3;'6E:W2EJ[3EO<;W" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````1D]`!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)2" ++ "YO$A````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!" ++ ";'6E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````4UR,!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "%B%2YO(A````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````T=L,!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!T-H+````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ ":W2E````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.T5V````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````+SIJ" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D5U````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!>8*S````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "%B)2````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````>8*S!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)3O,;W````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````JK3E!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+2````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!(RY?YO$@````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````T-L+%B)3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!.D1U````````````````````````````````````````````````````````" ++ "````````````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````YO$A+SIK!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!%2%2YO$@````````````````````````````````````````````````" ++ "````````````````````````````````>8*S!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN," ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````4EN,!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````" ++ "````````````````````````````````````````````````````````````JK3E" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4UR,````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "YO$@+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!.T5UYO$A````````````````````````````````````````" ++ "````````````````````````F:+2%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!+SIKYO(A````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````YO$@+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJO<;W````" ++ "````````````````````````````````````````````````````;'6E!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@O<;W````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````JK/D%B)3" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4ER,T=L,````````````````````````````" ++ "````````````B9+#(R]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!%2%2>8*S````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!1E!`>H*SJK/DT-L+````````JK3EF:+37F>8(R]?!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D1UT-L+````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````O<;W+SIJ!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!%B)2:W2EYO$A````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````Y?$@:W2E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "(R]?B)'\"````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````YO$@:W2E%B)2!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?>8*SYO$@````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````````````````````````````````````````````YO$@;'6E%2%2" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!%2%24UR,JK/D````````````````````````````````````" ++ "````````````````````````````````````````````````````````````````" ++ "````````````F:+34EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?" ++ "4EN,F:+3YO(A````````````````````````````````````````````````````" ++ "````````````````````````````YO(AF:+34ER,%B)2!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJ4ER,>8*SJK/DT=L," ++ "````````````````````````````````````````T-L+JK/D>8*S4ER,+SEJ!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK.T5U.D1U.T5V.T5U(R]?" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" ++ ""; diff --git a/recipes/u-boot/u-boot-git/mmcinit.patch b/recipes/u-boot/u-boot-git/mmcinit.patch new file mode 100644 index 0000000000..8aee768e54 --- /dev/null +++ b/recipes/u-boot/u-boot-git/mmcinit.patch @@ -0,0 +1,20 @@ +--- a/common/cmd_mmc.c 2009-09-02 23:02:48.000000000 -0700 ++++ b/common/cmd_mmc.c 2009-09-02 23:01:09.000000000 -0700 +@@ -92,6 +92,17 @@ + "init [dev] - init MMC sub system\n" + "mmc device [dev] - show or set current device\n" + ); ++int do_mmcinit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) ++{ ++ char *argv2[] = {"mmc", "init"}; ++ return do_mmc (cmdtp, flag, 2, argv2); ++} ++ ++U_BOOT_CMD( ++ mmcinit, 1, 0, do_mmcinit, ++ "mmcinit - init mmc card\n", ++ NULL ++); + #else /* !CONFIG_GENERIC_MMC */ + + static void print_mmcinfo(struct mmc *mmc) diff --git a/recipes/u-boot/u-boot-git/new-pinmux.patch b/recipes/u-boot/u-boot-git/new-pinmux.patch index 1c8fa16598..4e2be64d98 100644 --- a/recipes/u-boot/u-boot-git/new-pinmux.patch +++ b/recipes/u-boot/u-boot-git/new-pinmux.patch @@ -1,75 +1,73 @@ -diff --git a/board/omap3/beagle/beagle.h b/board/omap3/beagle/beagle.h -index 00b15cb..36eae5c 100644 ---- a/board/omap3/beagle/beagle.h -+++ b/board/omap3/beagle/beagle.h +--- git/board/ti/beagle/beagle.h-orig 2009-09-29 16:39:34.000000000 -0700 ++++ git/board/ti/beagle/beagle.h 2009-09-29 16:40:03.000000000 -0700 @@ -201,16 +201,16 @@ const omap3_sysinfo sysinfo = { - MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\ - MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\ + MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\ + MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\ /*Wireless LAN */\ -- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\ -- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\ -- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\ -- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\ -- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\ -- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\ -- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\ -- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\ -- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\ -- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\ -+ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ -+ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ -+ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ -+ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ -+ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\ -+ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\ -+ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\ -+ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\ -+ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\ -+ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\ +- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\ +- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\ +- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\ +- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\ +- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\ +- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\ +- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\ +- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\ +- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\ +- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\ ++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ ++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\ ++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\ ++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\ /*Bluetooth*/\ - MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\ - MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\ + MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\ + MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\ @@ -229,13 +229,13 @@ const omap3_sysinfo sysinfo = { - MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\ - MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\ - MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\ -- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\ -- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\ -- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\ -- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\ -+ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\ -+ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\ -+ MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\ -+ MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\ - MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\ -- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\ -- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\ -+ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\ -+ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\ + MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\ + MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\ + MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\ +- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\ +- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\ +- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\ +- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\ ++ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\ ++ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\ ++ MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\ ++ MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\ + MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\ +- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\ +- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\ ++ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\ ++ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\ /*Serial Interface*/\ - MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTD | EN | M0)) /*UART3_CTS_RCTX*/\ - MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\ + MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTD | EN | M0)) /*UART3_CTS_RCTX*/\ + MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\ @@ -255,8 +255,8 @@ const omap3_sysinfo sysinfo = { - MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\ - MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\ - MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\ -- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\ -- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\ -+ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\ -+ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\ - MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\ - MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\ - MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\ + MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\ + MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\ + MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\ +- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\ +- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\ ++ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\ ++ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\ + MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\ + MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\ + MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\ @@ -374,9 +374,9 @@ const omap3_sysinfo sysinfo = { - MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/ + MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/ #define MUX_BEAGLE_C() \ -- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ -- MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ -- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ -+ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ -+ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ -+ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ - MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\ - MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\ - MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/ +- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ +- MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ +- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ ++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ ++ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ ++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ + MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\ + MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\ + MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/ diff --git a/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch b/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch new file mode 100644 index 0000000000..4e2be64d98 --- /dev/null +++ b/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch @@ -0,0 +1,73 @@ +--- git/board/ti/beagle/beagle.h-orig 2009-09-29 16:39:34.000000000 -0700 ++++ git/board/ti/beagle/beagle.h 2009-09-29 16:40:03.000000000 -0700 +@@ -201,16 +201,16 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\ + MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\ + /*Wireless LAN */\ +- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\ +- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\ +- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\ +- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\ +- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\ +- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\ +- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\ +- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\ +- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\ +- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\ ++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ ++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\ ++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\ ++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\ ++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\ ++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\ + /*Bluetooth*/\ + MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\ + MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\ +@@ -229,13 +229,13 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\ + MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\ + MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\ +- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\ +- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\ +- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\ +- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\ ++ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\ ++ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\ ++ MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\ ++ MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\ + MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\ +- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\ +- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\ ++ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\ ++ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\ + /*Serial Interface*/\ + MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTD | EN | M0)) /*UART3_CTS_RCTX*/\ + MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\ +@@ -255,8 +255,8 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\ + MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\ + MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\ +- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\ +- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\ ++ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\ ++ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\ + MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\ + MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\ + MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\ +@@ -374,9 +374,9 @@ const omap3_sysinfo sysinfo = { + MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/ + + #define MUX_BEAGLE_C() \ +- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ +- MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ +- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ ++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\ ++ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\ ++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\ + MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\ + MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\ + MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/ diff --git a/recipes/u-boot/u-boot-git/power.patch b/recipes/u-boot/u-boot-git/power.patch new file mode 100644 index 0000000000..f73d74e5f7 --- /dev/null +++ b/recipes/u-boot/u-boot-git/power.patch @@ -0,0 +1,13 @@ +--- a/board/omap3/beagle/beagle.h 2009-09-06 10:28:33.000000000 -0700 ++++ b/board/omap3/beagle/beagle.h 2009-09-06 10:29:16.000000000 -0700 +@@ -255,8 +255,8 @@ + MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\ + MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\ + MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\ +- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\ +- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\ ++ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\ ++ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\ + MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\ + MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\ + MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\ diff --git a/recipes/u-boot/u-boot-git/spi3.patch b/recipes/u-boot/u-boot-git/spi3.patch index 57f60b5daf..0b8bae9d11 100644 --- a/recipes/u-boot/u-boot-git/spi3.patch +++ b/recipes/u-boot/u-boot-git/spi3.patch @@ -1,20 +1,29 @@ --- a/board/omap3/beagle/beagle.h 2009-02-19 13:30:50.000000000 -0800 +++ b/board/omap3/beagle/beagle.h 2009-02-19 13:12:16.000000000 -0800 -@@ -205,12 +205,12 @@ +@@ -201,16 +201,16 @@ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\ /*Wireless LAN */\ -- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\ -- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\ -- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\ +- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\ +- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\ +- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\ +- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\ +- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\ +- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\ +- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\ +- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\ +- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\ +- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\ + MUX_VAL(CP(MMC2_CLK), (IEN | PTU | DIS | M1)) /*MCSPI3_CLK*/\ + MUX_VAL(CP(MMC2_CMD), (IEN | PTU | DIS | M1)) /*MCSPI3_SIMO*/\ + MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M1)) /*MCSPI3_SOMI*/\ - MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\ -- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\ -- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\ ++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\ + MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M1)) /*MCSPI3_CS1*/\ + MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M1)) /*MCSPI3_CS0*/\ - MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\ - MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\ - MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\ ++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\ ++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\ ++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\ ++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\ + /*Bluetooth*/\ + MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\ + MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\ diff --git a/recipes/u-boot/u-boot-git/spi4.patch b/recipes/u-boot/u-boot-git/spi4.patch index 3b0781f999..bf35964a99 100644 --- a/recipes/u-boot/u-boot-git/spi4.patch +++ b/recipes/u-boot/u-boot-git/spi4.patch @@ -1,20 +1,20 @@ --- a/board/omap3/beagle/beagle.h 2009-02-19 13:30:50.000000000 -0800 +++ b/board/omap3/beagle/beagle.h 2009-02-19 13:12:16.000000000 -0800 -@@ -233,13 +233,13 @@ +@@ -229,13 +229,13 @@ MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\ MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\ MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\ -- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\ -- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\ +- MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\ +- MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\ +- MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\ +- MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\ + MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | DIS | M1)) /*MCSPI4_CLK*/\ + MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\ -- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\ -- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\ + MUX_VAL(CP(MCBSP1_DX), (IEN | PTU | DIS | M1)) /*MCSPI4_SIMO*/\ + MUX_VAL(CP(MCBSP1_DR), (IEN | PTU | EN | M1)) /*MCSPI4_SOMI*/\ MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\ -- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\ -- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\ +- MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\ +- MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\ + MUX_VAL(CP(MCBSP1_FSX), (IEN | PTU | EN | M1)) /*MCSPI4_CS0*/\ + MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTU | EN | M4)) /*GPIO_162*/\ /*Serial Interface*/\ diff --git a/recipes/u-boot/u-boot-git/touchbook-config.patch b/recipes/u-boot/u-boot-git/touchbook-config.patch new file mode 100644 index 0000000000..712a313251 --- /dev/null +++ b/recipes/u-boot/u-boot-git/touchbook-config.patch @@ -0,0 +1,11 @@ +--- a/board/omap3/beagle/beagle.c 2009-10-18 05:31:23.000000000 +0800 ++++ b/board/omap3/beagle/beagle.c 2009-10-18 05:31:34.000000000 +0800 +@@ -186,7 +186,7 @@ + + gpmc_init(); /* in SRAM or SDRAM, finish GPMC */ + /* board id for Linux */ +- gd->bd->bi_arch_number = MACH_TYPE_OMAP3_BEAGLE; ++ gd->bd->bi_arch_number = 2393; + /* boot param addr */ + gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); + diff --git a/recipes/u-boot/u-boot.inc b/recipes/u-boot/u-boot.inc index 6c8566fb28..8ab0282743 100644 --- a/recipes/u-boot/u-boot.inc +++ b/recipes/u-boot/u-boot.inc @@ -5,6 +5,8 @@ PRIORITY = "optional" LICENSE = "GPL" PROVIDES = "virtual/bootloader" +DEPENDS = "mtd-utils" + PACKAGE_ARCH = "${MACHINE_ARCH}" PARALLEL_MAKE="" @@ -14,18 +16,20 @@ UBOOT_MACHINE ?= "${MACHINE}_config" UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.bin" UBOOT_SYMLINK ?= "u-boot-${MACHINE}.bin" +INSANE_SKIP_${PN} = True + do_compile () { unset LDFLAGS unset CFLAGS unset CPPFLAGS oe_runmake ${UBOOT_MACHINE} oe_runmake all - oe_runmake tools + oe_runmake tools env } do_install () { if [ -e ${WORKDIR}/fw_env.config ] ; then - install -d ${D}$base_sbindir} + install -d ${D}${base_sbindir} install -d ${D}${sysconfdir} install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv diff --git a/recipes/u-boot/u-boot_git.bb b/recipes/u-boot/u-boot_git.bb index 1a5a4e2ed8..9958475130 100644 --- a/recipes/u-boot/u-boot_git.bb +++ b/recipes/u-boot/u-boot_git.bb @@ -1,5 +1,5 @@ require u-boot.inc -PR ="r30" +PR ="r32" FILESPATHPKG =. "u-boot-git:" @@ -14,20 +14,24 @@ SRCREV_palmpre = "6b8edfde22acc574b5532e9f086e6a7287a9bc78" SRC_URI_append_afeb9260 = " file://AFEB9260-network-fix.patch;patch=1" SRC_URI_append_afeb9260-180 = " file://AFEB9260-network-fix.patch;patch=1" -SRC_URI_beagleboard = "git://gitorious.org/u-boot-omap3/mainline.git;branch=omap3-dev;protocol=git \ - file://fw-env.patch;patch=1 \ - file://dss2.patch;patch=1 \ +SRC_URI_beagleboard = "git://git.denx.de/u-boot-ti.git;protocol=git \ + file://fw_env.config \ file://new-pinmux.patch;patch=1 \ " -SRCREV_beagleboard = "d363f9cb0918a1b6b92e2e20d01543d0c4f53274" -PV_beagleboard = "2009.05+${PR}+gitr${SRCREV}" +SRCREV_beagleboard = "1590f84007e2b50ad346a482fff89195cb04ff4e" +PV_beagleboard = "2009.08+${PR}+gitr${SRCREV}" SRC_URI_omap3-touchbook = "git://gitorious.org/u-boot-omap3/mainline.git;branch=omap3-dev;protocol=git \ - file://fw-env.patch;patch=1 \ + file://fw_env.config \ file://dss2.patch;patch=1 \ + file://600mhz.patch;patch=1 \ file://spi3.patch;patch=1 \ file://spi4.patch;patch=1 \ file://headphone.patch;patch=1 \ + file://power.patch;patch=1 \ + file://ai-logo.patch;patch=1 \ + file://mmcinit.patch;patch=1 \ + file://touchbook-config.patch;patch=1 \ " SRCREV_omap3-touchbook = "d363f9cb0918a1b6b92e2e20d01543d0c4f53274" PV_omap3-touchbook = "2009.05+${PR}+gitr${SRCREV}" diff --git a/recipes/vala/vala-native_0.7.6-fso2.bb b/recipes/vala/vala-native_0.7.6-fso2.bb deleted file mode 100644 index b7ff8a7dad..0000000000 --- a/recipes/vala/vala-native_0.7.6-fso2.bb +++ /dev/null @@ -1,6 +0,0 @@ -require vala.inc -inherit native -DEPENDS = "glib-2.0-native" - -PR = "${INC_PR}.0" - diff --git a/recipes/vala/vala-native_0.7.7+fso5.bb b/recipes/vala/vala-native_0.7.7+fso5.bb new file mode 100644 index 0000000000..b3d147dd69 --- /dev/null +++ b/recipes/vala/vala-native_0.7.7+fso5.bb @@ -0,0 +1,8 @@ +require vala.inc +inherit native + +PR = "r0" + +DEPENDS = "glib-2.0-native" + +SRC_URI = "http://www.freesmartphone.org/sources/vala-${PV}.tar.bz2" diff --git a/recipes/vala/vala.inc b/recipes/vala/vala.inc index 7c1e70a456..f45d557c88 100644 --- a/recipes/vala/vala.inc +++ b/recipes/vala/vala.inc @@ -4,12 +4,12 @@ SECTION = "devel" DEPENDS = "glib-2.0 dbus" HOMEPAGE = "http://vala-project.org" LICENSE = "LGPL" -INC_PR = "r0" +INC_PR = "r1" SRC_URI = "http://www.freesmartphone.org/sources/vala-${PV}.tar.gz" inherit autotools_stage -EXTRA_OECONF = "--enable-vapigen" +EXTRA_OECONF = "--disable-vapigen" FILES_${PN}-doc += ${datadir}/devhelp diff --git a/recipes/vala/vala_0.7.7+fso5.bb b/recipes/vala/vala_0.7.7+fso5.bb new file mode 100644 index 0000000000..df0b593ec3 --- /dev/null +++ b/recipes/vala/vala_0.7.7+fso5.bb @@ -0,0 +1,4 @@ +require vala.inc +PR = "r0" + +SRC_URI = "http://www.freesmartphone.org/sources/vala-${PV}.tar.bz2" diff --git a/recipes/xdg-utils/xdg-utils_1.0.2.bb b/recipes/xdg-utils/xdg-utils_1.0.2.bb new file mode 100644 index 0000000000..d14208bbcf --- /dev/null +++ b/recipes/xdg-utils/xdg-utils_1.0.2.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "xdg-utils: command line tools for desktop integration tasks" +LICENSE = "MIT" + +SRC_URI = "http://portland.freedesktop.org/download/${PN}-${PV}.tgz" + +inherit autotools + diff --git a/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch b/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch new file mode 100644 index 0000000000..227b95e87d --- /dev/null +++ b/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch @@ -0,0 +1,830 @@ +From 2761591638f8c56732398b1fc6cf4bc7ca5005fd Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Mon, 27 Jul 2009 01:21:26 +0300 +Subject: [PATCH 1/7] ARM: Removal of unused/broken NEON code + +--- + pixman/pixman-arm-neon.c | 786 ---------------------------------------------- + 1 files changed, 0 insertions(+), 786 deletions(-) + +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 0a29e50..9caef61 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -1901,710 +1901,6 @@ pixman_fill_neon (uint32_t *bits, + #endif + } + +-/* TODO: is there a more generic way of doing this being introduced? */ +-#define NEON_SCANLINE_BUFFER_PIXELS (1024) +- +-static inline void +-neon_quadword_copy (void * dst, +- void * src, +- uint32_t count, /* of quadwords */ +- uint32_t trailer_count /* of bytes */) +-{ +- uint8_t *t_dst = dst, *t_src = src; +- +- /* Uses aligned multi-register loads to maximise read bandwidth +- * on uncached memory such as framebuffers +- * The accesses do not have the aligned qualifiers, so that the copy +- * may convert between aligned-uncached and unaligned-cached memory. +- * It is assumed that the CPU can infer alignedness from the address. +- */ +- +-#ifdef USE_GCC_INLINE_ASM +- +- asm volatile ( +- " cmp %[count], #8 \n" +- " blt 1f @ skip oversized fragments \n" +- "0: @ start with eight quadwords at a time \n" +- " sub %[count], %[count], #8 \n" +- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" +- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n" +- " vld1.8 {d24, d25, d26, d27}, [%[src]]! \n" +- " vld1.8 {d28, d29, d30, d31}, [%[src]]! \n" +- " cmp %[count], #8 \n" +- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" +- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n" +- " vst1.8 {d24, d25, d26, d27}, [%[dst]]! \n" +- " vst1.8 {d28, d29, d30, d31}, [%[dst]]! \n" +- " bge 0b \n" +- "1: @ four quadwords \n" +- " tst %[count], #4 \n" +- " beq 2f @ skip oversized fragment \n" +- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" +- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n" +- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" +- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n" +- "2: @ two quadwords \n" +- " tst %[count], #2 \n" +- " beq 3f @ skip oversized fragment \n" +- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n" +- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n" +- "3: @ one quadword \n" +- " tst %[count], #1 \n" +- " beq 4f @ skip oversized fragment \n" +- " vld1.8 {d16, d17}, [%[src]]! \n" +- " vst1.8 {d16, d17}, [%[dst]]! \n" +- "4: @ end \n" +- +- /* Clobbered input registers marked as input/outputs */ +- : [dst] "+r" (t_dst), [src] "+r" (t_src), [count] "+r" (count) +- +- /* No unclobbered inputs */ +- : +- +- /* Clobbered vector registers */ +- : "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", "d25", +- "d26", "d27", "d28", "d29", "d30", "d31", "cc", "memory"); +- +-#else +- +- while (count >= 8) +- { +- uint8x16x4_t t1 = vld4q_u8 (t_src); +- uint8x16x4_t t2 = vld4q_u8 (t_src + sizeof(uint8x16x4_t)); +- +- t_src += sizeof(uint8x16x4_t) * 2; +- vst4q_u8 (t_dst, t1); +- vst4q_u8 (t_dst + sizeof(uint8x16x4_t), t2); +- t_dst += sizeof(uint8x16x4_t) * 2; +- count -= 8; +- } +- +- if (count & 4) +- { +- uint8x16x4_t t1 = vld4q_u8 (t_src); +- +- t_src += sizeof(uint8x16x4_t); +- vst4q_u8 (t_dst, t1); +- t_dst += sizeof(uint8x16x4_t); +- } +- +- if (count & 2) +- { +- uint8x8x4_t t1 = vld4_u8 (t_src); +- +- t_src += sizeof(uint8x8x4_t); +- vst4_u8 (t_dst, t1); +- t_dst += sizeof(uint8x8x4_t); +- } +- +- if (count & 1) +- { +- uint8x16_t t1 = vld1q_u8 (t_src); +- +- t_src += sizeof(uint8x16_t); +- vst1q_u8 (t_dst, t1); +- t_dst += sizeof(uint8x16_t); +- } +- +-#endif /* !USE_GCC_INLINE_ASM */ +- +- if (trailer_count) +- { +- if (trailer_count & 8) +- { +- uint8x8_t t1 = vld1_u8 (t_src); +- +- t_src += sizeof(uint8x8_t); +- vst1_u8 (t_dst, t1); +- t_dst += sizeof(uint8x8_t); +- } +- +- if (trailer_count & 4) +- { +- *((uint32_t*) t_dst) = *((uint32_t*) t_src); +- +- t_dst += 4; +- t_src += 4; +- } +- +- if (trailer_count & 2) +- { +- *((uint16_t*) t_dst) = *((uint16_t*) t_src); +- +- t_dst += 2; +- t_src += 2; +- } +- +- if (trailer_count & 1) +- { +- *t_dst++ = *t_src++; +- } +- } +-} +- +-static inline void +-solid_over_565_8_pix_neon (uint32_t glyph_colour, +- uint16_t *dest, +- uint8_t * in_mask, +- uint32_t dest_stride, /* bytes, not elements */ +- uint32_t mask_stride, +- uint32_t count /* 8-pixel groups */) +-{ +- /* Inner loop of glyph blitter (solid colour, alpha mask) */ +- +-#ifdef USE_GCC_INLINE_ASM +- +- asm volatile ( +- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[glyph_colour]] @ splat solid colour components \n" +- "0: @ loop \n" +- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n" +- " vld1.8 {d17}, [%[in_mask]] @ load alpha mask of glyph \n" +- " vmull.u8 q9, d17, d23 @ apply glyph colour alpha to mask \n" +- " vshrn.u16 d17, q9, #8 @ reformat it to match original mask \n" +- " vmvn d18, d17 @ we need the inverse mask for the background \n" +- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" +- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" +- " vshrn.u16 d4, q0, #3 @ unpack green \n" +- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" +- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" +- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" +- " vmull.u8 q1, d2, d18 @ apply inverse mask to background red... \n" +- " vmull.u8 q2, d4, d18 @ ...green... \n" +- " vmull.u8 q3, d6, d18 @ ...blue \n" +- " subs %[count], %[count], #1 @ decrement/test loop counter \n" +- " vmlal.u8 q1, d17, d22 @ add masked foreground red... \n" +- " vmlal.u8 q2, d17, d21 @ ...green... \n" +- " vmlal.u8 q3, d17, d20 @ ...blue \n" +- " add %[in_mask], %[in_mask], %[mask_stride] @ advance mask pointer, while we wait \n" +- " vsri.16 q1, q2, #5 @ pack green behind red \n" +- " vsri.16 q1, q3, #11 @ pack blue into pixels \n" +- " vst1.16 {d2, d3}, [%[dest]] @ store composited pixels \n" +- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n" +- " bne 0b @ next please \n" +- +- /* Clobbered registers marked as input/outputs */ +- : [dest] "+r" (dest), [in_mask] "+r" (in_mask), [count] "+r" (count) +- +- /* Inputs */ +- : [dest_stride] "r" (dest_stride), [mask_stride] "r" (mask_stride), [glyph_colour] "r" (&glyph_colour) +- +- /* Clobbers, including the inputs we modify, and potentially lots of memory */ +- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d19", +- "d20", "d21", "d22", "d23", "d24", "d25", "cc", "memory" +- ); +- +-#else +- +- uint8x8x4_t solid_colour = vld4_dup_u8 ((uint8_t*) &glyph_colour); +- +- while (count--) +- { +- uint16x8_t pixels = vld1q_u16 (dest); +- uint8x8_t mask = vshrn_n_u16 (vmull_u8 (solid_colour.val[3], vld1_u8 (in_mask)), 8); +- uint8x8_t mask_image = vmvn_u8 (mask); +- +- uint8x8_t t_red = vshrn_n_u16 (pixels, 8); +- uint8x8_t t_green = vshrn_n_u16 (pixels, 3); +- uint8x8_t t_blue = vshrn_n_u16 (vsli_n_u8 (pixels, pixels, 5), 2); +- +- uint16x8_t s_red = vmull_u8 (vsri_n_u8 (t_red, t_red, 5), mask_image); +- uint16x8_t s_green = vmull_u8 (vsri_n_u8 (t_green, t_green, 6), mask_image); +- uint16x8_t s_blue = vmull_u8 (t_blue, mask_image); +- +- s_red = vmlal (s_red, mask, solid_colour.val[2]); +- s_green = vmlal (s_green, mask, solid_colour.val[1]); +- s_blue = vmlal (s_blue, mask, solid_colour.val[0]); +- +- pixels = vsri_n_u16 (s_red, s_green, 5); +- pixels = vsri_n_u16 (pixels, s_blue, 11); +- vst1q_u16 (dest, pixels); +- +- dest += dest_stride; +- mask += mask_stride; +- } +- +-#endif +-} +- +-#if 0 /* this is broken currently */ +-static void +-neon_composite_over_n_8_0565 (pixman_implementation_t * impl, +- pixman_op_t op, +- pixman_image_t * src_image, +- pixman_image_t * mask_image, +- pixman_image_t * dst_image, +- int32_t src_x, +- int32_t src_y, +- int32_t mask_x, +- int32_t mask_y, +- int32_t dest_x, +- int32_t dest_y, +- int32_t width, +- int32_t height) +-{ +- uint32_t src, srca; +- uint16_t *dst_line, *aligned_line; +- uint8_t *mask_line; +- uint32_t dst_stride, mask_stride; +- uint32_t kernel_count, copy_count, copy_tail; +- uint8_t kernel_offset, copy_offset; +- +- src = _pixman_image_get_solid (src_image, dst_image->bits.format); +- +- /* bail out if fully transparent or degenerate */ +- srca = src >> 24; +- if (src == 0) +- return; +- +- if (width == 0 || height == 0) +- return; +- +- if (width > NEON_SCANLINE_BUFFER_PIXELS) +- { +- /* split the blit, so we can use a fixed-size scanline buffer +- * TODO: there must be a more elegant way of doing this. +- */ +- int x; +- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) +- { +- neon_composite_over_n_8_0565 ( +- impl, op, +- src_image, mask_image, dst_image, +- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, +- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); +- } +- +- return; +- } +- +- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); +- PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, mask_stride, mask_line, 1); +- +- /* keep within minimum number of aligned quadwords on width +- * while also keeping the minimum number of columns to process +- */ +- { +- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; +- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; +- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; +- +- /* the fast copy should be quadword aligned */ +- copy_offset = dst_line - ((uint16_t*) aligned_left); +- aligned_line = dst_line - copy_offset; +- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); +- copy_tail = 0; +- +- if (aligned_right - aligned_left > ceiling_length) +- { +- /* unaligned routine is tightest */ +- kernel_count = (uint32_t) (ceiling_length >> 4); +- kernel_offset = copy_offset; +- } +- else +- { +- /* aligned routine is equally tight, so it is safer to align */ +- kernel_count = copy_count; +- kernel_offset = 0; +- } +- +- /* We should avoid reading beyond scanline ends for safety */ +- if (aligned_line < (dst_line - dest_x) || +- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) +- { +- /* switch to precise read */ +- copy_offset = kernel_offset = 0; +- aligned_line = dst_line; +- kernel_count = (uint32_t) (ceiling_length >> 4); +- copy_count = (width * sizeof(*dst_line)) >> 4; +- copy_tail = (width * sizeof(*dst_line)) & 0xF; +- } +- } +- +- { +- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ +- uint8_t glyph_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; +- int y = height; +- +- /* row-major order */ +- /* left edge, middle block, right edge */ +- for ( ; y--; mask_line += mask_stride, aligned_line += dst_stride, dst_line += dst_stride) +- { +- /* We don't want to overrun the edges of the glyph, +- * so realign the edge data into known buffers +- */ +- neon_quadword_copy (glyph_line + copy_offset, mask_line, width >> 4, width & 0xF); +- +- /* Uncached framebuffer access is really, really slow +- * if we do it piecemeal. It should be much faster if we +- * grab it all at once. One scanline should easily fit in +- * L1 cache, so this should not waste RAM bandwidth. +- */ +- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); +- +- /* Apply the actual filter */ +- solid_over_565_8_pix_neon ( +- src, scan_line + kernel_offset, +- glyph_line + kernel_offset, 8 * sizeof(*dst_line), +- 8, kernel_count); +- +- /* Copy the modified scanline back */ +- neon_quadword_copy (dst_line, scan_line + copy_offset, +- width >> 3, (width & 7) * 2); +- } +- } +-} +-#endif +- +-#ifdef USE_GCC_INLINE_ASM +- +-static inline void +-plain_over_565_8_pix_neon (uint32_t colour, +- uint16_t *dest, +- uint32_t dest_stride, /* bytes, not elements */ +- uint32_t count /* 8-pixel groups */) +-{ +- /* Inner loop for plain translucent rects +- * (solid colour without alpha mask) +- */ +- asm volatile ( +- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[colour]] @ solid colour load/splat \n" +- " vmull.u8 q12, d23, d22 @ premultiply alpha red \n" +- " vmull.u8 q13, d23, d21 @ premultiply alpha green \n" +- " vmull.u8 q14, d23, d20 @ premultiply alpha blue \n" +- " vmvn d18, d23 @ inverse alpha for background \n" +- "0: @ loop\n" +- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n" +- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" +- " vshrn.u16 d4, q0, #3 @ unpack green \n" +- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" +- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" +- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" +- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" +- " vmov q0, q12 @ retrieve foreground red \n" +- " vmlal.u8 q0, d2, d18 @ blend red - my kingdom for a four-operand MLA \n" +- " vmov q1, q13 @ retrieve foreground green \n" +- " vmlal.u8 q1, d4, d18 @ blend green \n" +- " vmov q2, q14 @ retrieve foreground blue \n" +- " vmlal.u8 q2, d6, d18 @ blend blue \n" +- " subs %[count], %[count], #1 @ decrement/test loop counter \n" +- " vsri.16 q0, q1, #5 @ pack green behind red \n" +- " vsri.16 q0, q2, #11 @ pack blue into pixels \n" +- " vst1.16 {d0, d1}, [%[dest]] @ store composited pixels \n" +- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n" +- " bne 0b @ next please \n" +- +- /* Clobbered registers marked as input/outputs */ +- : [dest] "+r" (dest), [count] "+r" (count) +- +- /* Inputs */ +- : [dest_stride] "r" (dest_stride), [colour] "r" (&colour) +- +- /* Clobbers, including the inputs we modify, and +- * potentially lots of memory +- */ +- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d18", "d19", +- "d20", "d21", "d22", "d23", "d24", "d25", "d26", "d27", "d28", "d29", +- "cc", "memory" +- ); +-} +- +-static void +-neon_composite_over_n_0565 (pixman_implementation_t * impl, +- pixman_op_t op, +- pixman_image_t * src_image, +- pixman_image_t * mask_image, +- pixman_image_t * dst_image, +- int32_t src_x, +- int32_t src_y, +- int32_t mask_x, +- int32_t mask_y, +- int32_t dest_x, +- int32_t dest_y, +- int32_t width, +- int32_t height) +-{ +- uint32_t src, srca; +- uint16_t *dst_line, *aligned_line; +- uint32_t dst_stride; +- uint32_t kernel_count, copy_count, copy_tail; +- uint8_t kernel_offset, copy_offset; +- +- src = _pixman_image_get_solid (src_image, dst_image->bits.format); +- +- /* bail out if fully transparent */ +- srca = src >> 24; +- if (src == 0) +- return; +- +- if (width == 0 || height == 0) +- return; +- +- if (width > NEON_SCANLINE_BUFFER_PIXELS) +- { +- /* split the blit, so we can use a fixed-size scanline buffer * +- * TODO: there must be a more elegant way of doing this. +- */ +- int x; +- +- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) +- { +- neon_composite_over_n_0565 ( +- impl, op, +- src_image, mask_image, dst_image, +- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, +- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); +- } +- return; +- } +- +- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); +- +- /* keep within minimum number of aligned quadwords on width +- * while also keeping the minimum number of columns to process +- */ +- { +- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; +- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; +- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; +- +- /* the fast copy should be quadword aligned */ +- copy_offset = dst_line - ((uint16_t*) aligned_left); +- aligned_line = dst_line - copy_offset; +- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); +- copy_tail = 0; +- +- if (aligned_right - aligned_left > ceiling_length) +- { +- /* unaligned routine is tightest */ +- kernel_count = (uint32_t) (ceiling_length >> 4); +- kernel_offset = copy_offset; +- } +- else +- { +- /* aligned routine is equally tight, so it is safer to align */ +- kernel_count = copy_count; +- kernel_offset = 0; +- } +- +- /* We should avoid reading beyond scanline ends for safety */ +- if (aligned_line < (dst_line - dest_x) || +- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) +- { +- /* switch to precise read */ +- copy_offset = kernel_offset = 0; +- aligned_line = dst_line; +- kernel_count = (uint32_t) (ceiling_length >> 4); +- copy_count = (width * sizeof(*dst_line)) >> 4; +- copy_tail = (width * sizeof(*dst_line)) & 0xF; +- } +- } +- +- { +- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ +- +- /* row-major order */ +- /* left edge, middle block, right edge */ +- for ( ; height--; aligned_line += dst_stride, dst_line += dst_stride) +- { +- /* Uncached framebuffer access is really, really slow if we do it piecemeal. +- * It should be much faster if we grab it all at once. +- * One scanline should easily fit in L1 cache, so this should +- * not waste RAM bandwidth. +- */ +- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); +- +- /* Apply the actual filter */ +- plain_over_565_8_pix_neon ( +- src, scan_line + kernel_offset, 8 * sizeof(*dst_line), kernel_count); +- +- /* Copy the modified scanline back */ +- neon_quadword_copy ( +- dst_line, scan_line + copy_offset, width >> 3, (width & 7) * 2); +- } +- } +-} +- +-static inline void +-ARGB8_over_565_8_pix_neon (uint32_t *src, +- uint16_t *dest, +- uint32_t src_stride, /* bytes, not elements */ +- uint32_t count /* 8-pixel groups */) +-{ +- asm volatile ( +- "0: @ loop\n" +- " pld [%[src], %[src_stride]] @ preload from next scanline \n" +- " vld1.16 {d0, d1}, [%[dest]] @ load pixels from framebuffer \n" +- " vld4.8 {d20, d21, d22, d23},[%[src]]! @ load source image pixels \n" +- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n" +- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n" +- " vshrn.u16 d4, q0, #3 @ unpack green \n" +- " vmvn d18, d23 @ we need the inverse alpha for the background \n" +- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n" +- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n" +- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n" +- " vmull.u8 q1, d2, d18 @ apply inverse alpha to background red... \n" +- " vmull.u8 q2, d4, d18 @ ...green... \n" +- " vmull.u8 q3, d6, d18 @ ...blue \n" +- " subs %[count], %[count], #1 @ decrement/test loop counter \n" +- " vmlal.u8 q1, d23, d22 @ add blended foreground red... \n" +- " vmlal.u8 q2, d23, d21 @ ...green... \n" +- " vmlal.u8 q3, d23, d20 @ ...blue \n" +- " vsri.16 q1, q2, #5 @ pack green behind red \n" +- " vsri.16 q1, q3, #11 @ pack blue into pixels \n" +- " vst1.16 {d2, d3}, [%[dest]]! @ store composited pixels \n" +- " bne 0b @ next please \n" +- +- /* Clobbered registers marked as input/outputs */ +- : [dest] "+r" (dest), [src] "+r" (src), [count] "+r" (count) +- +- /* Inputs */ +- : [src_stride] "r" (src_stride) +- +- /* Clobbers, including the inputs we modify, and potentially lots of memory */ +- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d20", +- "d21", "d22", "d23", "cc", "memory" +- ); +-} +- +-static void +-neon_composite_over_8888_0565 (pixman_implementation_t * impl, +- pixman_op_t op, +- pixman_image_t * src_image, +- pixman_image_t * mask_image, +- pixman_image_t * dst_image, +- int32_t src_x, +- int32_t src_y, +- int32_t mask_x, +- int32_t mask_y, +- int32_t dest_x, +- int32_t dest_y, +- int32_t width, +- int32_t height) +-{ +- uint32_t *src_line; +- uint16_t *dst_line, *aligned_line; +- uint32_t dst_stride, src_stride; +- uint32_t kernel_count, copy_count, copy_tail; +- uint8_t kernel_offset, copy_offset; +- +- /* we assume mask is opaque +- * so the only alpha to deal with is embedded in src +- */ +- if (width > NEON_SCANLINE_BUFFER_PIXELS) +- { +- /* split the blit, so we can use a fixed-size scanline buffer */ +- int x; +- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS) +- { +- neon_composite_over_8888_0565 ( +- impl, op, +- src_image, mask_image, dst_image, +- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y, +- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height); +- } +- return; +- } +- +- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1); +- PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1); +- +- /* keep within minimum number of aligned quadwords on width +- * while also keeping the minimum number of columns to process +- */ +- { +- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF; +- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF; +- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF; +- +- /* the fast copy should be quadword aligned */ +- copy_offset = dst_line - ((uint16_t*) aligned_left); +- aligned_line = dst_line - copy_offset; +- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4); +- copy_tail = 0; +- +- if (aligned_right - aligned_left > ceiling_length) +- { +- /* unaligned routine is tightest */ +- kernel_count = (uint32_t) (ceiling_length >> 4); +- kernel_offset = copy_offset; +- } +- else +- { +- /* aligned routine is equally tight, so it is safer to align */ +- kernel_count = copy_count; +- kernel_offset = 0; +- } +- +- /* We should avoid reading beyond scanline ends for safety */ +- if (aligned_line < (dst_line - dest_x) || +- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width)) +- { +- /* switch to precise read */ +- copy_offset = kernel_offset = 0; +- aligned_line = dst_line; +- kernel_count = (uint32_t) (ceiling_length >> 4); +- copy_count = (width * sizeof(*dst_line)) >> 4; +- copy_tail = (width * sizeof(*dst_line)) & 0xF; +- } +- } +- +- /* Preload the first input scanline */ +- { +- uint8_t *src_ptr = (uint8_t*) src_line; +- uint32_t count = (width + 15) / 16; +- +-#ifdef USE_GCC_INLINE_ASM +- asm volatile ( +- "0: @ loop \n" +- " subs %[count], %[count], #1 \n" +- " pld [%[src]] \n" +- " add %[src], %[src], #64 \n" +- " bgt 0b \n" +- +- /* Clobbered input registers marked as input/outputs */ +- : [src] "+r" (src_ptr), [count] "+r" (count) +- : /* no unclobbered inputs */ +- : "cc" +- ); +-#else +- do +- { +- __pld (src_ptr); +- src_ptr += 64; +- } +- while (--count); +-#endif +- } +- +- { +- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */ +- +- /* row-major order */ +- /* left edge, middle block, right edge */ +- for ( ; height--; src_line += src_stride, aligned_line += dst_stride) +- { +- /* Uncached framebuffer access is really, really slow if we do +- * it piecemeal. It should be much faster if we grab it all at +- * once. One scanline should easily fit in L1 cache, so this +- * should not waste RAM bandwidth. +- */ +- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail); +- +- /* Apply the actual filter */ +- ARGB8_over_565_8_pix_neon ( +- src_line, scan_line + kernel_offset, +- src_stride * sizeof(*src_line), kernel_count); +- +- /* Copy the modified scanline back */ +- neon_quadword_copy (dst_line, +- scan_line + copy_offset, +- width >> 3, (width & 7) * 2); +- } +- } +-} +- +-#endif /* USE_GCC_INLINE_ASM */ +- + static const pixman_fast_path_t arm_neon_fast_path_array[] = + { + { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, +@@ -2618,12 +1914,6 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] = + #ifdef USE_GCC_INLINE_ASM + { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_16_16, 0 }, + { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_16_16, 0 }, +-#if 0 /* this code has some bugs */ +- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_n_0565, 0 }, +- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_n_0565, 0 }, +- { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, +- { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, +-#endif + #endif + { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 }, + { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 }, +@@ -2674,79 +1964,6 @@ arm_neon_composite (pixman_implementation_t *imp, + } + + static pixman_bool_t +-pixman_blt_neon (void *src_bits, +- void *dst_bits, +- int src_stride, +- int dst_stride, +- int src_bpp, +- int dst_bpp, +- int src_x, +- int src_y, +- int dst_x, +- int dst_y, +- int width, +- int height) +-{ +- if (!width || !height) +- return TRUE; +- +- /* accelerate only straight copies involving complete bytes */ +- if (src_bpp != dst_bpp || (src_bpp & 7)) +- return FALSE; +- +- { +- uint32_t bytes_per_pixel = src_bpp >> 3; +- uint32_t byte_width = width * bytes_per_pixel; +- /* parameter is in words for some reason */ +- int32_t src_stride_bytes = src_stride * 4; +- int32_t dst_stride_bytes = dst_stride * 4; +- uint8_t *src_bytes = ((uint8_t*) src_bits) + +- src_y * src_stride_bytes + src_x * bytes_per_pixel; +- uint8_t *dst_bytes = ((uint8_t*) dst_bits) + +- dst_y * dst_stride_bytes + dst_x * bytes_per_pixel; +- uint32_t quadword_count = byte_width / 16; +- uint32_t offset = byte_width % 16; +- +- while (height--) +- { +- neon_quadword_copy (dst_bytes, src_bytes, quadword_count, offset); +- src_bytes += src_stride_bytes; +- dst_bytes += dst_stride_bytes; +- } +- } +- +- return TRUE; +-} +- +-static pixman_bool_t +-arm_neon_blt (pixman_implementation_t *imp, +- uint32_t * src_bits, +- uint32_t * dst_bits, +- int src_stride, +- int dst_stride, +- int src_bpp, +- int dst_bpp, +- int src_x, +- int src_y, +- int dst_x, +- int dst_y, +- int width, +- int height) +-{ +- if (pixman_blt_neon ( +- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, +- src_x, src_y, dst_x, dst_y, width, height)) +- { +- return TRUE; +- } +- +- return _pixman_implementation_blt ( +- imp->delegate, +- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp, +- src_x, src_y, dst_x, dst_y, width, height); +-} +- +-static pixman_bool_t + arm_neon_fill (pixman_implementation_t *imp, + uint32_t * bits, + int stride, +@@ -2771,9 +1988,6 @@ _pixman_implementation_create_arm_neon (void) + pixman_implementation_t *imp = _pixman_implementation_create (general); + + imp->composite = arm_neon_composite; +-#if 0 /* this code has some bugs */ +- imp->blt = arm_neon_blt; +-#endif + imp->fill = arm_neon_fill; + + return imp; +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch b/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch new file mode 100644 index 0000000000..af0a8aa7a0 --- /dev/null +++ b/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch @@ -0,0 +1,1061 @@ +From d9d9173581331a3bf7e5d123db32025588b7f044 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Sat, 10 Oct 2009 00:20:51 +0300 +Subject: [PATCH 2/7] ARM: Introduction of the new framework for NEON fast path optimizations + +GNU assembler and its macro preprocessor is now used to generate +NEON optimized functions from a common template. This automatically +takes care of nuisances like ensuring optimal alignment, dealing with +leading/trailing pixels, doing prefetch, etc. + +As the first use for this framework, this commit also includes an +implementation of pixman_composite_over_8888_0565_asm_neon function. +--- + configure.ac | 1 + + pixman/Makefile.am | 4 +- + pixman/pixman-arm-neon-asm.S | 309 +++++++++++++++++++++ + pixman/pixman-arm-neon-asm.h | 620 ++++++++++++++++++++++++++++++++++++++++++ + pixman/pixman-arm-neon.c | 55 ++++ + 5 files changed, 988 insertions(+), 1 deletions(-) + create mode 100644 pixman/pixman-arm-neon-asm.S + create mode 100644 pixman/pixman-arm-neon-asm.h + +diff --git a/configure.ac b/configure.ac +index c548174..522af15 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -71,6 +71,7 @@ AC_CANONICAL_HOST + test_CFLAGS=${CFLAGS+set} # We may override autoconf default CFLAGS. + + AC_PROG_CC ++AM_PROG_AS + AC_PROG_LIBTOOL + AC_CHECK_FUNCS([getisax]) + AC_C_BIGENDIAN +diff --git a/pixman/Makefile.am b/pixman/Makefile.am +index 6020623..2543c6a 100644 +--- a/pixman/Makefile.am ++++ b/pixman/Makefile.am +@@ -109,7 +109,9 @@ endif + if USE_ARM_NEON + noinst_LTLIBRARIES += libpixman-arm-neon.la + libpixman_arm_neon_la_SOURCES = \ +- pixman-arm-neon.c ++ pixman-arm-neon.c \ ++ pixman-arm-neon-asm.S \ ++ pixman-arm-neon-asm.h + libpixman_arm_neon_la_CFLAGS = $(DEP_CFLAGS) $(ARM_NEON_CFLAGS) + libpixman_arm_neon_la_LIBADD = $(DEP_LIBS) + libpixman_1_la_LIBADD += libpixman-arm-neon.la +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +new file mode 100644 +index 0000000..843899f +--- /dev/null ++++ b/pixman/pixman-arm-neon-asm.S +@@ -0,0 +1,309 @@ ++/* ++ * Copyright © 2009 Nokia Corporation ++ * ++ * Permission to use, copy, modify, distribute, and sell this software and its ++ * documentation for any purpose is hereby granted without fee, provided that ++ * the above copyright notice appear in all copies and that both that ++ * copyright notice and this permission notice appear in supporting ++ * documentation, and that the name of Nokia Corporation not be used in ++ * advertising or publicity pertaining to distribution of the software without ++ * specific, written prior permission. Nokia Corporation makes no ++ * representations about the suitability of this software for any purpose. ++ * It is provided "as is" without express or implied warranty. ++ * ++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS ++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND ++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ++ * SOFTWARE. ++ * ++ * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com) ++ */ ++ ++/* Prevent the stack from becoming executable for no reason... */ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",%progbits ++#endif ++ ++ .text ++ .fpu neon ++ .altmacro ++ ++#include "pixman-arm-neon-asm.h" ++ ++/* ++ * This file contains implementations of NEON optimized pixel processing ++ * functions functions. There is no full and detailed tutorial, but some ++ * functions (those which are exposing some new or interesting features) ++ * are extensively commented and can be used as examples. ++ * ++ * You may want to have a look at the following functions: ++ * - pixman_composite_over_8888_0565_asm_neon ++ */ ++ ++/* ++ * Implementation of pixman_composite_over_8888_0565_asm_neon ++ * ++ * This function takes a8r8g8b8 source buffer, r5g6b5 destination buffer and ++ * performs OVER compositing operation. Function fast_composite_over_8888_0565 ++ * from pixman-fast-path.c does the same in C and can be used as a reference. ++ * ++ * First we need to have some NEON assembly code which can do the actual ++ * operation on the pixels and provide it to the template macro ++ * ++ * Template macro quite conveniently takes care of all the necessary code for ++ * memory reading and writing (including quite tricky cases of handling ++ * unaligned leading/trailing pixels), so we only need to deal with the data ++ * in NEON registers. ++ * ++ * NEON registers allocation in general is recommented to be the following: ++ * d0, d1, d2, d3 - contain loaded source pixel data ++ * d4, d5, d6, d7 - contain loaded destination pixels (if they are needed) ++ * d24, d25, d26, d27 - contain loading mask pixel data (if mask is used) ++ * d28, d29, d30, d31 - place for storing the result (destination pixels) ++ * ++ * As can be seen above, four 64-bit NEON registers are used for keeping ++ * intermediate pixel data and up to 8 pixels can be processed in one step ++ * for 32bpp formats (16 pixels for 16bpp, 32 pixels for 8bpp). ++ * ++ * This particular function uses the following allocation: ++ * d0, d1, d2, d3 - contain loaded source pixel data ++ * d4, d5 - contain loaded destination pixels (they are needed) ++ * d28, d29 - place for storing the result (destination pixels) ++ */ ++ ++/* ++ * Step one. We need to have some code to do some arithmetics on pixel data. ++ * This is implemented as a pair of macros: '*_head' and '*_tail'. When used ++ * back-to-back, they take pixel data from {d0, d1, d2, d3} and {d4, d5}, ++ * perform all the needed calculations and write the result to {d28, d29}. ++ * The rationale for having two macros and not just one will be explained ++ * later. In practice, any single monolitic function which does the work can ++ * be split into two parts in any arbitrary way without affecting correctness. ++ * ++ * There is one special trick here too. Common template macro already makes ++ * our life a bit easier by doing R, G, B, A color components deinterleaving ++ * for 32bpp pixel formats. So it means that instead of having 8 packed ++ * pixels in {d0, d1, d2, d3} registers, we actually use d0 register for ++ * blue channel (a vector of eight 8-bit values), d1 register for green, ++ * d2 for red and d3 for alpha. There is no magic and simple conversion ++ * can be done with a few NEON instructions. ++ * ++ * Packed to planar conversion: ++ * vuzp.8 d0, d1 ++ * vuzp.8 d2, d3 ++ * vuzp.8 d1, d3 ++ * vuzp.8 d0, d2 ++ * ++ * Planar to packed conversion: ++ * vzip.8 d0, d2 ++ * vzip.8 d1, d3 ++ * vzip.8 d2, d3 ++ * vzip.8 d0, d1 ++ * ++ * Pixel can be loaded directly in planar format using VLD4.8 NEON ++ * instruction. But it is 1 cycle slower than VLD1.32 and sometimes ++ * code can be scheduled so that four extra VUZP.8 after VLD1.32 may ++ * be dual-issued with the other instructions resulting in overal ++ * 1 cycle improvement. ++ * ++ * But anyway, here is the code: ++ */ ++.macro pixman_composite_over_8888_0565_process_pixblock_head ++ /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format ++ and put data into d6 - red, d7 - green, d30 - blue */ ++ vshrn.u16 d6, q2, #8 ++ vshrn.u16 d7, q2, #3 ++ vsli.u16 q2, q2, #5 ++ vsri.u8 d6, d6, #5 ++ vmvn.8 d3, d3 /* invert source alpha */ ++ vsri.u8 d7, d7, #6 ++ vshrn.u16 d30, q2, #2 ++ /* now do alpha blending, storing results in 8-bit planar format ++ into d16 - red, d19 - green, d18 - blue */ ++ vmull.u8 q10, d3, d6 ++ vmull.u8 q11, d3, d7 ++ vmull.u8 q12, d3, d30 ++ vrshr.u16 q13, q10, #8 ++ vrshr.u16 q3, q11, #8 ++ vrshr.u16 q15, q12, #8 ++ vraddhn.u16 d20, q10, q13 ++ vraddhn.u16 d23, q11, q3 ++ vraddhn.u16 d22, q12, q15 ++.endm ++ ++.macro pixman_composite_over_8888_0565_process_pixblock_tail ++ /* ... continue alpha blending */ ++ vqadd.u8 d16, d2, d20 ++ vqadd.u8 q9, q0, q11 ++ /* convert the result to r5g6b5 and store it into {d28, d29} */ ++ vshll.u8 q14, d16, #8 ++ vshll.u8 q8, d19, #8 ++ vshll.u8 q9, d18, #8 ++ vsri.u16 q14, q8, #5 ++ vsri.u16 q14, q9, #11 ++.endm ++ ++/* ++ * OK, now we got almost everything that we need. Using the above two ++ * macros, the work can be done right. But now we want to optimize ++ * it a bit. ARM Cortex-A8 is an in-order core, and benefits really ++ * a lot from good code scheduling and software pipelining. ++ * ++ * Let's construct some code, which will run in the core main loop. ++ * Some pseudo-code of the main loop will look like this: ++ * head ++ * while (...) { ++ * tail ++ * head ++ * } ++ * tail ++ * ++ * It may look a bit weird, but this setup allows to hide instruction ++ * latencies better and also utilize dual-issue capability more efficiently. ++ * ++ * So what we need now is a '*_tail_head' macro, which will be used ++ * in the core main loop. A trivial straightforward implementation ++ * of this macro would look like this: ++ * ++ * pixman_composite_over_8888_0565_process_pixblock_tail ++ * vst1.16 {d28, d29}, [DST_W, :128]! ++ * vld1.16 {d4, d5}, [DST_R, :128]! ++ * vld4.32 {d0, d1, d2, d3}, [SRC]! ++ * pixman_composite_over_8888_0565_process_pixblock_head ++ * cache_preload 8, 8 ++ * ++ * Now it also got some VLD/VST instructions. We simply can't move from ++ * processing one block of pixels to the other one with just arithmetics. ++ * The previously processed data needs to be written to memory and new ++ * data needs to be fetched. Fortunately, this main loop does not deal ++ * with partial leading/trailing pixels and can load/store a full block ++ * of pixels in a bulk. Additionally, destination buffer is 16 bytes ++ * aligned here (which is good for performance). ++ * ++ * New things here are DST_R, DST_W, SRC and MASK identifiers. These ++ * are the aliases for ARM registers which are used as pointers for ++ * accessing data. We maintain separate pointers for reading and writing ++ * destination buffer. ++ * ++ * Another new thing is 'cache_preload' macro. It is used for prefetching ++ * data into CPU cache and improve performance when dealing with large ++ * images which are far larger than cache size. It uses one argument ++ * (actually two, but they need to be the same here) - number of pixels ++ * in a block. Looking into 'pixman-arm-neon-asm.h' can provide some ++ * details about this macro. Moreover, if good performance is needed ++ * the code from this macro needs to be copied into '*_tail_head' macro ++ * and mixed with the rest of code for optimal instructions scheduling. ++ * We are actually doing it below. ++ * ++ * Now after all the explanations, here is the optimized code. ++ * Different instruction streams (originaling from '*_head', '*_tail' ++ * and 'cache_preload' macro) use different indentation levels for ++ * better readability. Actually taking the code from one of these ++ * indentation levels and ignoring a few VLD/VST instructions would ++ * result in exactly the code from '*_head', '*_tail' or 'cache_preload' ++ * macro! ++ */ ++ ++#if 1 ++ ++.macro pixman_composite_over_8888_0565_process_pixblock_tail_head ++ vqadd.u8 d16, d2, d20 ++ vld1.16 {d4, d5}, [DST_R, :128]! ++ vqadd.u8 q9, q0, q11 ++ vshrn.u16 d6, q2, #8 ++ vld4.8 {d0, d1, d2, d3}, [SRC]! ++ vshrn.u16 d7, q2, #3 ++ vsli.u16 q2, q2, #5 ++ vshll.u8 q14, d16, #8 ++ add PF_X, PF_X, #8 ++ vshll.u8 q8, d19, #8 ++ tst PF_CTL, #0xF ++ vsri.u8 d6, d6, #5 ++ addne PF_X, PF_X, #8 ++ vmvn.8 d3, d3 ++ subne PF_CTL, PF_CTL, #1 ++ vsri.u8 d7, d7, #6 ++ vshrn.u16 d30, q2, #2 ++ vmull.u8 q10, d3, d6 ++ pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ vmull.u8 q11, d3, d7 ++ vmull.u8 q12, d3, d30 ++ pld [PF_DST, PF_X, lsl #dst_bpp_shift] ++ vsri.u16 q14, q8, #5 ++ cmp PF_X, ORIG_W ++ vshll.u8 q9, d18, #8 ++ vrshr.u16 q13, q10, #8 ++ subge PF_X, PF_X, ORIG_W ++ vrshr.u16 q3, q11, #8 ++ vrshr.u16 q15, q12, #8 ++ subges PF_CTL, PF_CTL, #0x10 ++ vsri.u16 q14, q9, #11 ++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ vraddhn.u16 d20, q10, q13 ++ vraddhn.u16 d23, q11, q3 ++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ vraddhn.u16 d22, q12, q15 ++ vst1.16 {d28, d29}, [DST_W, :128]! ++.endm ++ ++#else ++ ++/* If we did not care much about the performance, we would just use this... */ ++.macro pixman_composite_over_8888_0565_process_pixblock_tail_head ++ pixman_composite_over_8888_0565_process_pixblock_tail ++ vst1.16 {d28, d29}, [DST_W, :128]! ++ vld1.16 {d4, d5}, [DST_R, :128]! ++ vld4.32 {d0, d1, d2, d3}, [SRC]! ++ pixman_composite_over_8888_0565_process_pixblock_head ++ cache_preload 8, 8 ++.endm ++ ++#endif ++ ++/* ++ * And now the final part. We are using 'generate_composite_function' macro ++ * to put all the stuff together. We are specifying the name of the function ++ * which we want to get, number of bits per pixel for the source, mask and ++ * destination (0 if unused, like mask in this case). Next come some bit ++ * flags: ++ * FLAG_DST_READWRITE - tells that the destination buffer is both read ++ * and written, for write-only buffer we would use ++ * FLAG_DST_WRITEONLY flag instead ++ * FLAG_DEINTERLEAVE_32BPP - tells that we prefer to work with planar data ++ * and separate color channels for 32bpp format. ++ * The next things are: ++ * - the number of pixels processed per iteration (8 in this case, because ++ * that' the maximum what can fit into four 64-bit NEON registers). ++ * - prefetch distance, measured in pixel blocks. In this case it is 5 times ++ * by 8 pixels. That would be 40 pixels, or up to 160 bytes. Optimal ++ * prefetch distance can be selected by running some benchmarks. ++ * ++ * After that we specify some macros, these are 'default_init', ++ * 'default_cleanup' (it is possible to have custom init/cleanup to be ++ * able to save/restore some extra NEON registers like d8-d15 or do ++ * anything else) followed by ++ * 'pixman_composite_over_8888_0565_process_pixblock_head', ++ * 'pixman_composite_over_8888_0565_process_pixblock_tail' and ++ * 'pixman_composite_over_8888_0565_process_pixblock_tail_head' ++ * which we got implemented above. ++ * ++ * The last part is the NEON registers allocation scheme. ++ */ ++generate_composite_function \ ++ pixman_composite_over_8888_0565_asm_neon, 32, 0, 16, \ ++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ default_init, \ ++ default_cleanup, \ ++ pixman_composite_over_8888_0565_process_pixblock_head, \ ++ pixman_composite_over_8888_0565_process_pixblock_tail, \ ++ pixman_composite_over_8888_0565_process_pixblock_tail_head, \ ++ 28, /* dst_w_basereg */ \ ++ 4, /* dst_r_basereg */ \ ++ 0, /* src_basereg */ \ ++ 24 /* mask_basereg */ +diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h +new file mode 100644 +index 0000000..d276ab9 +--- /dev/null ++++ b/pixman/pixman-arm-neon-asm.h +@@ -0,0 +1,620 @@ ++/* ++ * Copyright © 2009 Nokia Corporation ++ * ++ * Permission to use, copy, modify, distribute, and sell this software and its ++ * documentation for any purpose is hereby granted without fee, provided that ++ * the above copyright notice appear in all copies and that both that ++ * copyright notice and this permission notice appear in supporting ++ * documentation, and that the name of Nokia Corporation not be used in ++ * advertising or publicity pertaining to distribution of the software without ++ * specific, written prior permission. Nokia Corporation makes no ++ * representations about the suitability of this software for any purpose. ++ * It is provided "as is" without express or implied warranty. ++ * ++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS ++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND ++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING ++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ++ * SOFTWARE. ++ * ++ * Author: Siarhei Siamashka (siarhei.siamashka@nokia.com) ++ */ ++ ++/* ++ * This file contains a macro ('generate_composite_function') which can ++ * construct 2D image processing functions, based on a common template. ++ * Any combinations of source, destination and mask images with 8bpp, ++ * 16bpp, 32bpp color formats are supported. ++ * ++ * This macro takes care of: ++ * - handling of leading and trailing unaligned pixels ++ * - doing most of the work related to L2 cache preload ++ * - encourages the use of software pipelining for better instructions ++ * scheduling ++ * ++ * The user of this macro has to provide some configuration parameters ++ * (bit depths for the images, prefetch distance, etc.) and a set of ++ * macros, which should implement basic code chunks responsible for ++ * pixels processing. See 'pixman-arm-neon-asm.S' file for the usage ++ * examples. ++ * ++ * TODO: ++ * - support for 24bpp formats ++ * - try overlapped pixel method (from Ian Rickards) when processing ++ * exactly two blocks of pixels ++ */ ++ ++.set FLAG_DST_WRITEONLY, 0 ++.set FLAG_DST_READWRITE, 1 ++.set FLAG_DEINTERLEAVE_32BPP, 2 ++ ++/* ++ * It is possible to set this to 0 and improve performance a bit if unaligned ++ * memory accesses are supported ++ */ ++#define RESPECT_STRICT_ALIGNMENT 1 ++ ++/* ++ * Definitions of supplementary pixld/pixst macros (for partial load/store of ++ * pixel data) ++ */ ++ ++.macro pixldst1 op, elem_size, reg1, mem_operand, abits ++.if abits > 0 ++ op&.&elem_size {d®1}, [&mem_operand&, :&abits&]! ++.else ++ op&.&elem_size {d®1}, [&mem_operand&]! ++.endif ++.endm ++ ++.macro pixldst2 op, elem_size, reg1, reg2, mem_operand, abits ++.if abits > 0 ++ op&.&elem_size {d®1, d®2}, [&mem_operand&, :&abits&]! ++.else ++ op&.&elem_size {d®1, d®2}, [&mem_operand&]! ++.endif ++.endm ++ ++.macro pixldst4 op, elem_size, reg1, reg2, reg3, reg4, mem_operand, abits ++.if abits > 0 ++ op&.&elem_size {d®1, d®2, d®3, d®4}, [&mem_operand&, :&abits&]! ++.else ++ op&.&elem_size {d®1, d®2, d®3, d®4}, [&mem_operand&]! ++.endif ++.endm ++ ++.macro pixldst0 op, elem_size, reg1, idx, mem_operand, abits ++ op&.&elem_size {d®1[idx]}, [&mem_operand&]! ++.endm ++ ++.macro pixldst numbytes, op, elem_size, basereg, mem_operand, abits ++.if numbytes == 32 ++ pixldst4 op, elem_size, %(basereg+4), %(basereg+5), \ ++ %(basereg+6), %(basereg+7), mem_operand, abits ++.elseif numbytes == 16 ++ pixldst2 op, elem_size, %(basereg+2), %(basereg+3), mem_operand, abits ++.elseif numbytes == 8 ++ pixldst1 op, elem_size, %(basereg+1), mem_operand, abits ++.elseif numbytes == 4 ++ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 32) ++ pixldst0 op, 32, %(basereg+0), 1, mem_operand, abits ++ .elseif elem_size == 16 ++ pixldst0 op, 16, %(basereg+0), 2, mem_operand, abits ++ pixldst0 op, 16, %(basereg+0), 3, mem_operand, abits ++ .else ++ pixldst0 op, 8, %(basereg+0), 4, mem_operand, abits ++ pixldst0 op, 8, %(basereg+0), 5, mem_operand, abits ++ pixldst0 op, 8, %(basereg+0), 6, mem_operand, abits ++ pixldst0 op, 8, %(basereg+0), 7, mem_operand, abits ++ .endif ++.elseif numbytes == 2 ++ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 16) ++ pixldst0 op, 16, %(basereg+0), 1, mem_operand, abits ++ .else ++ pixldst0 op, 8, %(basereg+0), 2, mem_operand, abits ++ pixldst0 op, 8, %(basereg+0), 3, mem_operand, abits ++ .endif ++.elseif numbytes == 1 ++ pixldst0 op, 8, %(basereg+0), 1, mem_operand, abits ++.else ++ .error "unsupported size: numbytes" ++.endif ++.endm ++ ++.macro pixld numpix, bpp, basereg, mem_operand, abits=0 ++.if bpp > 0 ++.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0) ++ pixldst4 vld4, 8, %(basereg+4), %(basereg+5), \ ++ %(basereg+6), %(basereg+7), mem_operand, abits ++.else ++ pixldst %(numpix * bpp / 8), vld1, %(bpp), basereg, mem_operand, abits ++.endif ++.endif ++.endm ++ ++.macro pixst numpix, bpp, basereg, mem_operand, abits=0 ++.if bpp > 0 ++.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0) ++ pixldst4 vst4, 8, %(basereg+4), %(basereg+5), \ ++ %(basereg+6), %(basereg+7), mem_operand, abits ++.else ++ pixldst %(numpix * bpp / 8), vst1, %(bpp), basereg, mem_operand, abits ++.endif ++.endif ++.endm ++ ++.macro pixld_a numpix, bpp, basereg, mem_operand ++.if (bpp * numpix) <= 128 ++ pixld numpix, bpp, basereg, mem_operand, %(bpp * numpix) ++.else ++ pixld numpix, bpp, basereg, mem_operand, 128 ++.endif ++.endm ++ ++.macro pixst_a numpix, bpp, basereg, mem_operand ++.if (bpp * numpix) <= 128 ++ pixst numpix, bpp, basereg, mem_operand, %(bpp * numpix) ++.else ++ pixst numpix, bpp, basereg, mem_operand, 128 ++.endif ++.endm ++ ++.macro vuzp8 reg1, reg2 ++ vuzp.8 d®1, d®2 ++.endm ++ ++.macro vzip8 reg1, reg2 ++ vzip.8 d®1, d®2 ++.endm ++ ++/* deinterleave B, G, R, A channels for eight 32bpp pixels in 4 registers */ ++.macro pixdeinterleave bpp, basereg ++.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0) ++ vuzp8 %(basereg+0), %(basereg+1) ++ vuzp8 %(basereg+2), %(basereg+3) ++ vuzp8 %(basereg+1), %(basereg+3) ++ vuzp8 %(basereg+0), %(basereg+2) ++.endif ++.endm ++ ++/* interleave B, G, R, A channels for eight 32bpp pixels in 4 registers */ ++.macro pixinterleave bpp, basereg ++.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0) ++ vzip8 %(basereg+0), %(basereg+2) ++ vzip8 %(basereg+1), %(basereg+3) ++ vzip8 %(basereg+2), %(basereg+3) ++ vzip8 %(basereg+0), %(basereg+1) ++.endif ++.endm ++ ++/* ++ * This is a macro for implementing cache preload. The main idea is that ++ * cache preload logic is mostly independent from the rest of pixels ++ * processing code. It starts at the top left pixel and moves forward ++ * across pixels and can jump across lines. Prefetch distance is handled ++ * in an 'incremental' way: it starts from 0 and advances to the optimal ++ * distance over time. After reaching optimal prefetch distance, it is ++ * kept constant. There are some checks which prevent prefetching ++ * unneeded pixel lines below the image (but it still prefetch a bit ++ * more data on the right side of the image - not a big issue and may ++ * be actually helpful when rendering text glyphs). Additional trick is ++ * the use of LDR instruction for prefetch instead of PLD when moving to ++ * the next line, the point is that we have a high chance of getting TLB ++ * miss in this case, and PLD would be useless. ++ * ++ * This sounds like it may introduce a noticeable overhead (when working with ++ * fully cached data). But in reality, due to having a separate pipeline and ++ * instruction queue for NEON unit in ARM Cortex-A8, normal ARM code can ++ * execute simultaneously with NEON and be completely shadowed by it. Thus ++ * we get no performance overhead at all (*). This looks like a very nice ++ * feature of Cortex-A8, if used wisely. We don't have a hardware hardware ++ * prefetcher, but still can implement some rather advanced prefetch logic ++ * in sofware for almost zero cost! ++ * ++ * (*) The overhead of the prefetcher is visible when running some trivial ++ * pixels processing like simple copy. Anyway, having prefetch is a must ++ * when working with graphics data. ++ */ ++.macro cache_preload std_increment, boost_increment ++.if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0) ++.if regs_shortage ++ ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */ ++.endif ++.if std_increment != 0 ++ add PF_X, PF_X, #std_increment ++.endif ++ tst PF_CTL, #0xF ++ addne PF_X, PF_X, #boost_increment ++ subne PF_CTL, PF_CTL, #1 ++ cmp PF_X, ORIG_W ++.if src_bpp_shift >= 0 ++ pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++.endif ++.if dst_r_bpp != 0 ++ pld [PF_DST, PF_X, lsl #dst_bpp_shift] ++.endif ++.if mask_bpp_shift >= 0 ++ pld [PF_MASK, PF_X, lsl #mask_bpp_shift] ++.endif ++ subge PF_X, PF_X, ORIG_W ++ subges PF_CTL, PF_CTL, #0x10 ++.if src_bpp_shift >= 0 ++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++.endif ++.if dst_r_bpp != 0 ++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++.endif ++.if mask_bpp_shift >= 0 ++ ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]! ++.endif ++.endif ++.endm ++ ++/* ++ * Registers are allocated in the following way by default: ++ * d0, d1, d2, d3 - reserved for loading source pixel data ++ * d4, d5, d6, d7 - reserved for loading destination pixel data ++ * d24, d25, d26, d27 - reserved for loading mask pixel data ++ * d28, d29, d30, d31 - final destination pixel data for writeback to memory ++ */ ++.macro generate_composite_function fname, \ ++ src_bpp, \ ++ mask_bpp, \ ++ dst_w_bpp, \ ++ flags, \ ++ pixblock_size, \ ++ prefetch_distance, \ ++ init, \ ++ cleanup, \ ++ process_pixblock_head, \ ++ process_pixblock_tail, \ ++ process_pixblock_tail_head, \ ++ dst_w_basereg = 28, \ ++ dst_r_basereg = 4, \ ++ src_basereg = 0, \ ++ mask_basereg = 24 ++ ++ .global fname ++fname: ++ ++ W .req r0 /* width (is updated during processing) */ ++ H .req r1 /* height (is updated during processing) */ ++ DST_W .req r2 /* destination buffer pointer for writes */ ++ DST_STRIDE .req r3 /* destination image stride */ ++ SRC .req r4 /* source buffer pointer */ ++ SRC_STRIDE .req r5 /* source image stride */ ++ DST_R .req r6 /* destination buffer pointer for reads */ ++ ++ MASK .req r7 /* mask pointer */ ++ MASK_STRIDE .req r8 /* mask stride */ ++ ++ PF_CTL .req r9 ++ PF_X .req r10 ++ PF_SRC .req r11 ++ PF_DST .req r12 ++ PF_MASK .req r14 ++ ++.if mask_bpp == 0 ++ ORIG_W .req r7 /* saved original width */ ++ DUMMY .req r8 /* temporary register */ ++ .set regs_shortage, 0 ++.elseif src_bpp == 0 ++ ORIG_W .req r4 /* saved original width */ ++ DUMMY .req r5 /* temporary register */ ++ .set regs_shortage, 0 ++.else ++ ORIG_W .req r1 /* saved original width */ ++ DUMMY .req r1 /* temporary register */ ++ .set regs_shortage, 1 ++.endif ++ ++ push {r4-r12, lr} ++ ++ .set mask_bpp_shift, -1 ++ ++.if src_bpp == 32 ++ .set src_bpp_shift, 2 ++.elseif src_bpp == 16 ++ .set src_bpp_shift, 1 ++.elseif src_bpp == 8 ++ .set src_bpp_shift, 0 ++.elseif src_bpp == 0 ++ .set src_bpp_shift, -1 ++.else ++ .error "requested src bpp (src_bpp) is not supported" ++.endif ++.if mask_bpp == 32 ++ .set mask_bpp_shift, 2 ++.elseif mask_bpp == 8 ++ .set mask_bpp_shift, 0 ++.elseif mask_bpp == 0 ++ .set mask_bpp_shift, -1 ++.else ++ .error "requested mask bpp (mask_bpp) is not supported" ++.endif ++.if dst_w_bpp == 32 ++ .set dst_bpp_shift, 2 ++.elseif dst_w_bpp == 16 ++ .set dst_bpp_shift, 1 ++.elseif dst_w_bpp == 8 ++ .set dst_bpp_shift, 0 ++.else ++ .error "requested dst bpp (dst_w_bpp) is not supported" ++.endif ++ ++.if (((flags) & FLAG_DST_READWRITE) != 0) ++ .set dst_r_bpp, dst_w_bpp ++.else ++ .set dst_r_bpp, 0 ++.endif ++.if (((flags) & FLAG_DEINTERLEAVE_32BPP) != 0) ++ .set DEINTERLEAVE_32BPP_ENABLED, 1 ++.else ++ .set DEINTERLEAVE_32BPP_ENABLED, 0 ++.endif ++ ++.if prefetch_distance < 0 || prefetch_distance > 15 ++ .error "invalid prefetch distance (prefetch_distance)" ++.endif ++ ++.if src_bpp > 0 ++ ldr SRC, [sp, #40] ++.endif ++.if mask_bpp > 0 ++ ldr MASK, [sp, #48] ++.endif ++ mov PF_X, #0 ++.if src_bpp > 0 ++ ldr SRC_STRIDE, [sp, #44] ++.endif ++.if mask_bpp > 0 ++ ldr MASK_STRIDE, [sp, #52] ++.endif ++ mov DST_R, DST_W ++ mov PF_SRC, SRC ++ mov PF_DST, DST_R ++ mov PF_MASK, MASK ++ mov PF_CTL, H, lsl #4 ++ /* pf_ctl = 10 | ((h - 1) << 4) */ ++ add PF_CTL, #(prefetch_distance - 0x10) ++ ++ init ++.if regs_shortage ++ push {r0, r1} ++.endif ++ subs H, H, #1 ++.if regs_shortage ++ str H, [sp, #4] /* save updated height to stack */ ++.else ++ mov ORIG_W, W ++.endif ++ blt 9f ++ cmp W, #(pixblock_size * 2) ++ blt 8f ++0: ++ /* ensure 16 byte alignment of the destination buffer */ ++ tst DST_R, #0xF ++ beq 2f ++ ++.irp lowbit, 1, 2, 4, 8, 16 ++.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp)) ++.if lowbit < 16 /* we don't need more than 16-byte alignment */ ++ tst DST_R, #lowbit ++ beq 1f ++.endif ++ pixld (lowbit * 8 / dst_w_bpp), src_bpp, src_basereg, SRC ++ pixld (lowbit * 8 / dst_w_bpp), mask_bpp, mask_basereg, MASK ++.if dst_r_bpp > 0 ++ pixld_a (lowbit * 8 / dst_r_bpp), dst_r_bpp, dst_r_basereg, DST_R ++.else ++ add DST_R, DST_R, #lowbit ++.endif ++ add PF_X, PF_X, #(lowbit * 8 / dst_w_bpp) ++ sub W, W, #(lowbit * 8 / dst_w_bpp) ++1: ++.endif ++.endr ++ pixdeinterleave src_bpp, src_basereg ++ pixdeinterleave mask_bpp, mask_basereg ++ pixdeinterleave dst_r_bpp, dst_r_basereg ++ ++ process_pixblock_head ++ cache_preload 0, pixblock_size ++ process_pixblock_tail ++ ++ pixinterleave dst_w_bpp, dst_w_basereg ++.irp lowbit, 1, 2, 4, 8, 16 ++.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp)) ++.if lowbit < 16 /* we don't need more than 16-byte alignment */ ++ tst DST_W, #lowbit ++ beq 1f ++.endif ++ pixst_a (lowbit * 8 / dst_w_bpp), dst_w_bpp, dst_w_basereg, DST_W ++1: ++.endif ++.endr ++2: ++ ++ pixld_a pixblock_size, dst_r_bpp, \ ++ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R ++ pixld pixblock_size, src_bpp, \ ++ (src_basereg - pixblock_size * src_bpp / 64), SRC ++ pixld pixblock_size, mask_bpp, \ ++ (mask_basereg - pixblock_size * mask_bpp / 64), MASK ++ add PF_X, PF_X, #pixblock_size ++ process_pixblock_head ++ cache_preload 0, pixblock_size ++ subs W, W, #(pixblock_size * 2) ++ blt 2f ++1: /* innermost pipelined loop */ ++ process_pixblock_tail_head ++ subs W, W, #pixblock_size ++ bge 1b ++2: ++ process_pixblock_tail ++ pixst_a pixblock_size, dst_w_bpp, \ ++ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W ++ ++ /* process up to (pixblock_size - 1) remaining pixels */ ++ tst W, #(pixblock_size - 1) ++ beq 2f ++.irp chunk_size, 16, 8, 4, 2, 1 ++.if pixblock_size > chunk_size ++ tst W, #chunk_size ++ beq 1f ++ pixld chunk_size, src_bpp, src_basereg, SRC ++ pixld chunk_size, mask_bpp, mask_basereg, MASK ++ pixld_a chunk_size, dst_r_bpp, dst_r_basereg, DST_R ++ add PF_X, PF_X, #chunk_size ++1: ++.endif ++.endr ++ pixdeinterleave src_bpp, src_basereg ++ pixdeinterleave mask_bpp, mask_basereg ++ pixdeinterleave dst_r_bpp, dst_r_basereg ++ ++ process_pixblock_head ++ cache_preload 0, pixblock_size ++ process_pixblock_tail ++ ++ pixinterleave dst_w_bpp, dst_w_basereg ++.irp chunk_size, 16, 8, 4, 2, 1 ++.if pixblock_size > chunk_size ++ tst W, #chunk_size ++ beq 1f ++ pixst_a chunk_size, dst_w_bpp, dst_w_basereg, DST_W ++1: ++.endif ++.endr ++2: ++ ++.if regs_shortage ++ ldrd W, [sp] /* load W and H (width and height) from stack */ ++.else ++ mov W, ORIG_W ++.endif ++ add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift ++.if src_bpp != 0 ++ add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift ++.endif ++.if mask_bpp != 0 ++ add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift ++.endif ++ sub DST_W, DST_W, W, lsl #dst_bpp_shift ++.if src_bpp != 0 ++ sub SRC, SRC, W, lsl #src_bpp_shift ++.endif ++.if mask_bpp != 0 ++ sub MASK, MASK, W, lsl #mask_bpp_shift ++.endif ++ subs H, H, #1 ++ mov DST_R, DST_W ++.if regs_shortage ++ str H, [sp, #4] /* save updated height to stack */ ++.endif ++ bge 0b ++.if regs_shortage ++ pop {r0, r1} ++.endif ++ cleanup ++ pop {r4-r12, pc} /* exit */ ++ ++8: /* handle small rectangle, width up to 15 pixels */ ++ tst W, #pixblock_size ++ beq 1f ++ pixld pixblock_size, dst_r_bpp, \ ++ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R ++ pixld pixblock_size, src_bpp, \ ++ (src_basereg - pixblock_size * src_bpp / 64), SRC ++ pixld pixblock_size, mask_bpp, \ ++ (mask_basereg - pixblock_size * mask_bpp / 64), MASK ++ process_pixblock_head ++ process_pixblock_tail ++ pixst pixblock_size, dst_w_bpp, \ ++ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W ++1: /* process the remaining pixels, which do not fully fill one block */ ++ tst W, #(pixblock_size - 1) ++ beq 2f ++.irp chunk_size, 16, 8, 4, 2, 1 ++.if pixblock_size > chunk_size ++ tst W, #chunk_size ++ beq 1f ++ pixld chunk_size, src_bpp, src_basereg, SRC ++ pixld chunk_size, mask_bpp, mask_basereg, MASK ++ pixld chunk_size, dst_r_bpp, dst_r_basereg, DST_R ++1: ++.endif ++.endr ++ pixdeinterleave src_bpp, src_basereg ++ pixdeinterleave mask_bpp, mask_basereg ++ pixdeinterleave dst_r_bpp, dst_r_basereg ++ process_pixblock_head ++ process_pixblock_tail ++ pixinterleave dst_w_bpp, dst_w_basereg ++.irp chunk_size, 16, 8, 4, 2, 1 ++.if pixblock_size > chunk_size ++ tst W, #chunk_size ++ beq 1f ++ pixst chunk_size, dst_w_bpp, dst_w_basereg, DST_W ++1: ++.endif ++.endr ++2: ++.if regs_shortage ++ ldrd W, [sp] /* load W and H (width and height) from stack */ ++.else ++ mov W, ORIG_W ++.endif ++ add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift ++.if src_bpp != 0 ++ add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift ++.endif ++.if mask_bpp != 0 ++ add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift ++.endif ++ sub DST_W, DST_W, W, lsl #dst_bpp_shift ++.if src_bpp != 0 ++ sub SRC, SRC, W, lsl #src_bpp_shift ++.endif ++.if mask_bpp != 0 ++ sub MASK, MASK, W, lsl #mask_bpp_shift ++.endif ++ subs H, H, #1 ++ mov DST_R, DST_W ++.if regs_shortage ++ str H, [sp, #4] /* save updated height to stack */ ++.endif ++ bge 8b ++9: ++.if regs_shortage ++ pop {r0, r1} ++.endif ++ cleanup ++ pop {r4-r12, pc} /* exit */ ++ ++ .unreq SRC ++ .unreq MASK ++ .unreq DST_R ++ .unreq DST_W ++ .unreq ORIG_W ++ .unreq W ++ .unreq H ++ .unreq SRC_STRIDE ++ .unreq DST_STRIDE ++ .unreq MASK_STRIDE ++ .unreq PF_CTL ++ .unreq PF_X ++ .unreq PF_SRC ++ .unreq PF_DST ++ .unreq PF_MASK ++ .unreq DUMMY ++.endm ++ ++.macro default_init ++.endm ++ ++.macro default_cleanup ++.endm +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index 9caef61..fe57daa 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -1901,8 +1901,63 @@ pixman_fill_neon (uint32_t *bits, + #endif + } + ++/* ++ * Use GNU assembler optimizations only if we are completely sure that ++ * the target system has compatible ABI and calling conventions. This ++ * check can be updated/extended if more systems turn out to be actually ++ * compatible. ++ */ ++#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM) ++#define USE_GNU_ASSEMBLER_ASM ++#endif ++ ++#ifdef USE_GNU_ASSEMBLER_ASM ++ ++void ++pixman_composite_over_8888_0565_asm_neon (int32_t w, ++ int32_t h, ++ uint16_t *dst, ++ int32_t dst_stride, ++ uint32_t *src, ++ int32_t src_stride); ++ ++static void ++neon_composite_over_8888_0565 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint16_t *dst_line; ++ uint32_t *src_line; ++ int32_t dst_stride, src_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, ++ dst_stride, dst_line, 1); ++ ++ pixman_composite_over_8888_0565_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride); ++} ++ ++#endif ++ + static const pixman_fast_path_t arm_neon_fast_path_array[] = + { ++#ifdef USE_GNU_ASSEMBLER_ASM ++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, ++#endif + { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, + { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 }, + { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 }, +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch b/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch new file mode 100644 index 0000000000..00b682e34d --- /dev/null +++ b/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch @@ -0,0 +1,63 @@ +From b17297cf15122e5b38c082c9fe6f1ff708b7efa4 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Mon, 12 Oct 2009 21:50:37 +0300 +Subject: [PATCH 3/7] ARM: Added pixman_composite_src_8888_0565_asm_neon function + +--- + pixman/pixman-arm-neon-asm.S | 43 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 43 insertions(+), 0 deletions(-) + +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index 843899f..20d2587 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -307,3 +307,46 @@ generate_composite_function \ + 4, /* dst_r_basereg */ \ + 0, /* src_basereg */ \ + 24 /* mask_basereg */ ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_src_8888_0565_process_pixblock_head ++ vshll.u8 q8, d1, #8 ++ vshll.u8 q14, d2, #8 ++ vshll.u8 q9, d0, #8 ++.endm ++ ++.macro pixman_composite_src_8888_0565_process_pixblock_tail ++ vsri.u16 q14, q8, #5 ++ vsri.u16 q14, q9, #11 ++.endm ++ ++.macro pixman_composite_src_8888_0565_process_pixblock_tail_head ++ vsri.u16 q14, q8, #5 ++ add PF_X, PF_X, #8 ++ tst PF_CTL, #0xF ++ vld4.8 {d0, d1, d2, d3}, [SRC]! ++ addne PF_X, PF_X, #8 ++ subne PF_CTL, PF_CTL, #1 ++ vsri.u16 q14, q9, #11 ++ cmp PF_X, ORIG_W ++ pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ vshll.u8 q8, d1, #8 ++ vst1.16 {d28, d29}, [DST_W, :128]! ++ subge PF_X, PF_X, ORIG_W ++ subges PF_CTL, PF_CTL, #0x10 ++ vshll.u8 q14, d2, #8 ++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ vshll.u8 q9, d0, #8 ++.endm ++ ++generate_composite_function \ ++ pixman_composite_src_8888_0565_asm_neon, 32, 0, 16, \ ++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 10, /* prefetch distance */ \ ++ default_init, \ ++ default_cleanup, \ ++ pixman_composite_src_8888_0565_process_pixblock_head, \ ++ pixman_composite_src_8888_0565_process_pixblock_tail, \ ++ pixman_composite_src_8888_0565_process_pixblock_tail_head +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch b/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch new file mode 100644 index 0000000000..445697a84f --- /dev/null +++ b/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch @@ -0,0 +1,60 @@ +From 9cfedd684bdeabe9e97303e6f432c3ffb440426c Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Mon, 12 Oct 2009 21:51:54 +0300 +Subject: [PATCH 4/7] ARM: Added pixman_composite_add_8000_8000_asm_neon function + +--- + pixman/pixman-arm-neon-asm.S | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 40 insertions(+), 0 deletions(-) + +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index 20d2587..373cbd0 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -350,3 +350,43 @@ generate_composite_function \ + pixman_composite_src_8888_0565_process_pixblock_head, \ + pixman_composite_src_8888_0565_process_pixblock_tail, \ + pixman_composite_src_8888_0565_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_add_8000_8000_process_pixblock_head ++ vqadd.u8 q14, q0, q2 ++ vqadd.u8 q15, q1, q3 ++.endm ++ ++.macro pixman_composite_add_8000_8000_process_pixblock_tail ++.endm ++ ++.macro pixman_composite_add_8000_8000_process_pixblock_tail_head ++ vld1.8 {d0, d1, d2, d3}, [SRC]! ++ add PF_X, PF_X, #32 ++ tst PF_CTL, #0xF ++ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! ++ addne PF_X, PF_X, #32 ++ subne PF_CTL, PF_CTL, #1 ++ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! ++ cmp PF_X, ORIG_W ++ pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ pld [PF_DST, PF_X, lsl #dst_bpp_shift] ++ subge PF_X, PF_X, ORIG_W ++ subges PF_CTL, PF_CTL, #0x10 ++ vqadd.u8 q14, q0, q2 ++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ vqadd.u8 q15, q1, q3 ++.endm ++ ++generate_composite_function \ ++ pixman_composite_add_8000_8000_asm_neon, 8, 0, 8, \ ++ FLAG_DST_READWRITE, \ ++ 32, /* number of pixels, processed in a single block */ \ ++ 10, /* prefetch distance */ \ ++ default_init, \ ++ default_cleanup, \ ++ pixman_composite_add_8000_8000_process_pixblock_head, \ ++ pixman_composite_add_8000_8000_process_pixblock_tail, \ ++ pixman_composite_add_8000_8000_process_pixblock_tail_head +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch b/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch new file mode 100644 index 0000000000..e4c8936c84 --- /dev/null +++ b/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch @@ -0,0 +1,87 @@ +From 9eb4ecf68cf5609240222d10f1a4c9dfebdb3498 Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Mon, 12 Oct 2009 21:52:49 +0300 +Subject: [PATCH 5/7] ARM: Added pixman_composite_over_8888_8888_asm_neon function + +--- + pixman/pixman-arm-neon-asm.S | 67 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 67 insertions(+), 0 deletions(-) + +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index 373cbd0..b11a9a7 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -390,3 +390,70 @@ generate_composite_function \ + pixman_composite_add_8000_8000_process_pixblock_head, \ + pixman_composite_add_8000_8000_process_pixblock_tail, \ + pixman_composite_add_8000_8000_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_over_8888_8888_process_pixblock_head ++ vmvn.8 d24, d3 /* get inverted alpha */ ++ /* do alpha blending */ ++ vmull.u8 q8, d24, d4 ++ vmull.u8 q9, d24, d5 ++ vmull.u8 q10, d24, d6 ++ vmull.u8 q11, d24, d7 ++.endm ++ ++.macro pixman_composite_over_8888_8888_process_pixblock_tail ++ vrshr.u16 q14, q8, #8 ++ vrshr.u16 q15, q9, #8 ++ vrshr.u16 q12, q10, #8 ++ vrshr.u16 q13, q11, #8 ++ vraddhn.u16 d28, q14, q8 ++ vraddhn.u16 d29, q15, q9 ++ vraddhn.u16 d30, q12, q10 ++ vraddhn.u16 d31, q13, q11 ++ vqadd.u8 q14, q0, q14 ++ vqadd.u8 q15, q1, q15 ++.endm ++ ++.macro pixman_composite_over_8888_8888_process_pixblock_tail_head ++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! ++ vrshr.u16 q14, q8, #8 ++ add PF_X, PF_X, #8 ++ tst PF_CTL, #0xF ++ vrshr.u16 q15, q9, #8 ++ vrshr.u16 q12, q10, #8 ++ vrshr.u16 q13, q11, #8 ++ addne PF_X, PF_X, #8 ++ subne PF_CTL, PF_CTL, #1 ++ vraddhn.u16 d28, q14, q8 ++ vraddhn.u16 d29, q15, q9 ++ cmp PF_X, ORIG_W ++ vraddhn.u16 d30, q12, q10 ++ vraddhn.u16 d31, q13, q11 ++ vqadd.u8 q14, q0, q14 ++ vqadd.u8 q15, q1, q15 ++ vld4.8 {d0, d1, d2, d3}, [SRC]! ++ pld [PF_SRC, PF_X, lsl #src_bpp_shift] ++ vmvn.8 d22, d3 ++ pld [PF_DST, PF_X, lsl #dst_bpp_shift] ++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! ++ subge PF_X, PF_X, ORIG_W ++ vmull.u8 q8, d22, d4 ++ subges PF_CTL, PF_CTL, #0x10 ++ vmull.u8 q9, d22, d5 ++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]! ++ vmull.u8 q10, d22, d6 ++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]! ++ vmull.u8 q11, d22, d7 ++.endm ++ ++generate_composite_function \ ++ pixman_composite_over_8888_8888_asm_neon, 32, 0, 32, \ ++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ default_init, \ ++ default_cleanup, \ ++ pixman_composite_over_8888_8888_process_pixblock_head, \ ++ pixman_composite_over_8888_8888_process_pixblock_tail, \ ++ pixman_composite_over_8888_8888_process_pixblock_tail_head +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch b/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch new file mode 100644 index 0000000000..0f89c88fef --- /dev/null +++ b/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch @@ -0,0 +1,540 @@ +From 606a73203318e44af4362684368bc24d2aed841d Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Mon, 12 Oct 2009 21:57:17 +0300 +Subject: [PATCH 6/7] ARM: Added a set of NEON functions (not fully optimized) + +--- + pixman/pixman-arm-neon-asm.S | 520 ++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 520 insertions(+), 0 deletions(-) + +diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S +index b11a9a7..bca499a 100644 +--- a/pixman/pixman-arm-neon-asm.S ++++ b/pixman/pixman-arm-neon-asm.S +@@ -457,3 +457,523 @@ generate_composite_function \ + pixman_composite_over_8888_8888_process_pixblock_head, \ + pixman_composite_over_8888_8888_process_pixblock_tail, \ + pixman_composite_over_8888_8888_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_over_n_8_0565_process_pixblock_head ++ /* in */ ++ vmull.u8 q0, d24, d8 ++ vmull.u8 q1, d24, d9 ++ vmull.u8 q6, d24, d10 ++ vmull.u8 q7, d24, d11 ++ vrshr.u16 q10, q0, #8 ++ vrshr.u16 q11, q1, #8 ++ vrshr.u16 q12, q6, #8 ++ vrshr.u16 q13, q7, #8 ++ vraddhn.u16 d0, q0, q10 ++ vraddhn.u16 d1, q1, q11 ++ vraddhn.u16 d2, q6, q12 ++ vraddhn.u16 d3, q7, q13 ++ ++ vshrn.u16 d6, q2, #8 ++ vshrn.u16 d7, q2, #3 ++ vsli.u16 q2, q2, #5 ++ vsri.u8 d6, d6, #5 ++ vmvn.8 d3, d3 ++ vsri.u8 d7, d7, #6 ++ vshrn.u16 d30, q2, #2 ++ /* now do alpha blending */ ++ vmull.u8 q10, d3, d6 ++ vmull.u8 q11, d3, d7 ++ vmull.u8 q12, d3, d30 ++ vrshr.u16 q13, q10, #8 ++ vrshr.u16 q3, q11, #8 ++ vrshr.u16 q15, q12, #8 ++ vraddhn.u16 d20, q10, q13 ++ vraddhn.u16 d23, q11, q3 ++ vraddhn.u16 d22, q12, q15 ++.endm ++ ++.macro pixman_composite_over_n_8_0565_process_pixblock_tail ++ vqadd.u8 d16, d2, d20 ++ vqadd.u8 q9, q0, q11 ++ /* convert to r5g6b5 */ ++ vshll.u8 q14, d16, #8 ++ vshll.u8 q8, d19, #8 ++ vshll.u8 q9, d18, #8 ++ vsri.u16 q14, q8, #5 ++ vsri.u16 q14, q9, #11 ++.endm ++ ++/* TODO: expand macros and do better instructions scheduling */ ++.macro pixman_composite_over_n_8_0565_process_pixblock_tail_head ++ pixman_composite_over_n_8_0565_process_pixblock_tail ++ vst1.16 {d28, d29}, [DST_W, :128]! ++ vld1.16 {d4, d5}, [DST_R, :128]! ++ vld1.8 {d24}, [MASK]! ++ cache_preload 8, 8 ++ pixman_composite_over_n_8_0565_process_pixblock_head ++.endm ++ ++.macro pixman_composite_over_n_8_0565_init ++ add DUMMY, sp, #40 ++ vpush {d8-d15} ++ vld1.32 {d11[0]}, [DUMMY] ++ vdup.8 d8, d11[0] ++ vdup.8 d9, d11[1] ++ vdup.8 d10, d11[2] ++ vdup.8 d11, d11[3] ++.endm ++ ++.macro pixman_composite_over_n_8_0565_cleanup ++ vpop {d8-d15} ++.endm ++ ++generate_composite_function \ ++ pixman_composite_over_n_8_0565_asm_neon, 0, 8, 16, \ ++ FLAG_DST_READWRITE, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ pixman_composite_over_n_8_0565_init, \ ++ pixman_composite_over_n_8_0565_cleanup, \ ++ pixman_composite_over_n_8_0565_process_pixblock_head, \ ++ pixman_composite_over_n_8_0565_process_pixblock_tail, \ ++ pixman_composite_over_n_8_0565_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_src_0565_0565_process_pixblock_head ++.endm ++ ++.macro pixman_composite_src_0565_0565_process_pixblock_tail ++.endm ++ ++.macro pixman_composite_src_0565_0565_process_pixblock_tail_head ++ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! ++ vld1.16 {d0, d1, d2, d3}, [SRC]! ++ cache_preload 16, 16 ++.endm ++ ++generate_composite_function \ ++ pixman_composite_src_0565_0565_asm_neon, 16, 0, 16, \ ++ FLAG_DST_WRITEONLY, \ ++ 16, /* number of pixels, processed in a single block */ \ ++ 10, /* prefetch distance */ \ ++ default_init, \ ++ default_cleanup, \ ++ pixman_composite_src_0565_0565_process_pixblock_head, \ ++ pixman_composite_src_0565_0565_process_pixblock_tail, \ ++ pixman_composite_src_0565_0565_process_pixblock_tail_head, \ ++ 0, /* dst_w_basereg */ \ ++ 0, /* dst_r_basereg */ \ ++ 0, /* src_basereg */ \ ++ 0 /* mask_basereg */ ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_src_n_8_process_pixblock_head ++.endm ++ ++.macro pixman_composite_src_n_8_process_pixblock_tail ++.endm ++ ++.macro pixman_composite_src_n_8_process_pixblock_tail_head ++ vst1.8 {d0, d1, d2, d3}, [DST_W, :128]! ++.endm ++ ++.macro pixman_composite_src_n_8_init ++ add DUMMY, sp, #40 ++ vld1.32 {d0[0]}, [DUMMY] ++ vsli.u64 d0, d0, #8 ++ vsli.u64 d0, d0, #16 ++ vsli.u64 d0, d0, #32 ++ vmov d1, d0 ++ vmov q1, q0 ++.endm ++ ++.macro pixman_composite_src_n_8_cleanup ++.endm ++ ++generate_composite_function \ ++ pixman_composite_src_n_8_asm_neon, 0, 0, 8, \ ++ FLAG_DST_WRITEONLY, \ ++ 32, /* number of pixels, processed in a single block */ \ ++ 0, /* prefetch distance */ \ ++ pixman_composite_src_n_8_init, \ ++ pixman_composite_src_n_8_cleanup, \ ++ pixman_composite_src_n_8_process_pixblock_head, \ ++ pixman_composite_src_n_8_process_pixblock_tail, \ ++ pixman_composite_src_n_8_process_pixblock_tail_head, \ ++ 0, /* dst_w_basereg */ \ ++ 0, /* dst_r_basereg */ \ ++ 0, /* src_basereg */ \ ++ 0 /* mask_basereg */ ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_src_n_0565_process_pixblock_head ++.endm ++ ++.macro pixman_composite_src_n_0565_process_pixblock_tail ++.endm ++ ++.macro pixman_composite_src_n_0565_process_pixblock_tail_head ++ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]! ++.endm ++ ++.macro pixman_composite_src_n_0565_init ++ add DUMMY, sp, #40 ++ vld1.32 {d0[0]}, [DUMMY] ++ vsli.u64 d0, d0, #16 ++ vsli.u64 d0, d0, #32 ++ vmov d1, d0 ++ vmov q1, q0 ++.endm ++ ++.macro pixman_composite_src_n_0565_cleanup ++.endm ++ ++generate_composite_function \ ++ pixman_composite_src_n_0565_asm_neon, 0, 0, 16, \ ++ FLAG_DST_WRITEONLY, \ ++ 16, /* number of pixels, processed in a single block */ \ ++ 0, /* prefetch distance */ \ ++ pixman_composite_src_n_0565_init, \ ++ pixman_composite_src_n_0565_cleanup, \ ++ pixman_composite_src_n_0565_process_pixblock_head, \ ++ pixman_composite_src_n_0565_process_pixblock_tail, \ ++ pixman_composite_src_n_0565_process_pixblock_tail_head, \ ++ 0, /* dst_w_basereg */ \ ++ 0, /* dst_r_basereg */ \ ++ 0, /* src_basereg */ \ ++ 0 /* mask_basereg */ ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_src_n_8888_process_pixblock_head ++.endm ++ ++.macro pixman_composite_src_n_8888_process_pixblock_tail ++.endm ++ ++.macro pixman_composite_src_n_8888_process_pixblock_tail_head ++ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! ++.endm ++ ++.macro pixman_composite_src_n_8888_init ++ add DUMMY, sp, #40 ++ vld1.32 {d0[0]}, [DUMMY] ++ vsli.u64 d0, d0, #32 ++ vmov d1, d0 ++ vmov q1, q0 ++.endm ++ ++.macro pixman_composite_src_n_8888_cleanup ++.endm ++ ++generate_composite_function \ ++ pixman_composite_src_n_8888_asm_neon, 0, 0, 32, \ ++ FLAG_DST_WRITEONLY, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 0, /* prefetch distance */ \ ++ pixman_composite_src_n_8888_init, \ ++ pixman_composite_src_n_8888_cleanup, \ ++ pixman_composite_src_n_8888_process_pixblock_head, \ ++ pixman_composite_src_n_8888_process_pixblock_tail, \ ++ pixman_composite_src_n_8888_process_pixblock_tail_head, \ ++ 0, /* dst_w_basereg */ \ ++ 0, /* dst_r_basereg */ \ ++ 0, /* src_basereg */ \ ++ 0 /* mask_basereg */ ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_src_8888_8888_process_pixblock_head ++.endm ++ ++.macro pixman_composite_src_8888_8888_process_pixblock_tail ++.endm ++ ++.macro pixman_composite_src_8888_8888_process_pixblock_tail_head ++ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]! ++ vld1.32 {d0, d1, d2, d3}, [SRC]! ++ cache_preload 8, 8 ++.endm ++ ++generate_composite_function \ ++ pixman_composite_src_8888_8888_asm_neon, 32, 0, 32, \ ++ FLAG_DST_WRITEONLY, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 10, /* prefetch distance */ \ ++ default_init, \ ++ default_cleanup, \ ++ pixman_composite_src_8888_8888_process_pixblock_head, \ ++ pixman_composite_src_8888_8888_process_pixblock_tail, \ ++ pixman_composite_src_8888_8888_process_pixblock_tail_head, \ ++ 0, /* dst_w_basereg */ \ ++ 0, /* dst_r_basereg */ \ ++ 0, /* src_basereg */ \ ++ 0 /* mask_basereg */ ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_over_n_8_8888_process_pixblock_head ++ /* expecting deinterleaved source data in {d8, d9, d10, d11} */ ++ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ ++ /* and destination data in {d4, d5, d6, d7} */ ++ /* mask is in d24 (d25, d26, d27 are unused) */ ++ ++ /* in */ ++ vmull.u8 q0, d24, d8 ++ vmull.u8 q1, d24, d9 ++ vmull.u8 q6, d24, d10 ++ vmull.u8 q7, d24, d11 ++ vrshr.u16 q10, q0, #8 ++ vrshr.u16 q11, q1, #8 ++ vrshr.u16 q12, q6, #8 ++ vrshr.u16 q13, q7, #8 ++ vraddhn.u16 d0, q0, q10 ++ vraddhn.u16 d1, q1, q11 ++ vraddhn.u16 d2, q6, q12 ++ vraddhn.u16 d3, q7, q13 ++ vmvn.8 d24, d3 /* get inverted alpha */ ++ /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */ ++ /* destination: d4 - blue, d5 - green, d6 - red, d7 - alpha */ ++ /* now do alpha blending */ ++ vmull.u8 q8, d24, d4 ++ vmull.u8 q9, d24, d5 ++ vmull.u8 q10, d24, d6 ++ vmull.u8 q11, d24, d7 ++.endm ++ ++.macro pixman_composite_over_n_8_8888_process_pixblock_tail ++ vrshr.u16 q14, q8, #8 ++ vrshr.u16 q15, q9, #8 ++ vrshr.u16 q12, q10, #8 ++ vrshr.u16 q13, q11, #8 ++ vraddhn.u16 d28, q14, q8 ++ vraddhn.u16 d29, q15, q9 ++ vraddhn.u16 d30, q12, q10 ++ vraddhn.u16 d31, q13, q11 ++ vqadd.u8 q14, q0, q14 ++ vqadd.u8 q15, q1, q15 ++.endm ++ ++/* TODO: expand macros and do better instructions scheduling */ ++.macro pixman_composite_over_n_8_8888_process_pixblock_tail_head ++ pixman_composite_over_n_8_8888_process_pixblock_tail ++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! ++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! ++ vld1.8 {d24}, [MASK]! ++ cache_preload 8, 8 ++ pixman_composite_over_n_8_8888_process_pixblock_head ++.endm ++ ++.macro pixman_composite_over_n_8_8888_init ++ add DUMMY, sp, #40 ++ vpush {d8-d15} ++ vld1.32 {d11[0]}, [DUMMY] ++ vdup.8 d8, d11[0] ++ vdup.8 d9, d11[1] ++ vdup.8 d10, d11[2] ++ vdup.8 d11, d11[3] ++.endm ++ ++.macro pixman_composite_over_n_8_8888_cleanup ++ vpop {d8-d15} ++.endm ++ ++generate_composite_function \ ++ pixman_composite_over_n_8_8888_asm_neon, 0, 8, 32, \ ++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ pixman_composite_over_n_8_8888_init, \ ++ pixman_composite_over_n_8_8888_cleanup, \ ++ pixman_composite_over_n_8_8888_process_pixblock_head, \ ++ pixman_composite_over_n_8_8888_process_pixblock_tail, \ ++ pixman_composite_over_n_8_8888_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_add_n_8_8_process_pixblock_head ++ /* expecting source data in {d8, d9, d10, d11} */ ++ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */ ++ /* and destination data in {d4, d5, d6, d7} */ ++ /* mask is in d24, d25, d26, d27 */ ++ vmull.u8 q0, d24, d11 ++ vmull.u8 q1, d25, d11 ++ vmull.u8 q6, d26, d11 ++ vmull.u8 q7, d27, d11 ++ vrshr.u16 q10, q0, #8 ++ vrshr.u16 q11, q1, #8 ++ vrshr.u16 q12, q6, #8 ++ vrshr.u16 q13, q7, #8 ++ vraddhn.u16 d0, q0, q10 ++ vraddhn.u16 d1, q1, q11 ++ vraddhn.u16 d2, q6, q12 ++ vraddhn.u16 d3, q7, q13 ++ vqadd.u8 q14, q0, q2 ++ vqadd.u8 q15, q1, q3 ++.endm ++ ++.macro pixman_composite_add_n_8_8_process_pixblock_tail ++.endm ++ ++/* TODO: expand macros and do better instructions scheduling */ ++.macro pixman_composite_add_n_8_8_process_pixblock_tail_head ++ pixman_composite_add_n_8_8_process_pixblock_tail ++ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! ++ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! ++ vld1.8 {d24, d25, d26, d27}, [MASK]! ++ cache_preload 32, 32 ++ pixman_composite_add_n_8_8_process_pixblock_head ++.endm ++ ++.macro pixman_composite_add_n_8_8_init ++ add DUMMY, sp, #40 ++ vpush {d8-d15} ++ vld1.32 {d11[0]}, [DUMMY] ++ vdup.8 d11, d11[3] ++.endm ++ ++.macro pixman_composite_add_n_8_8_cleanup ++ vpop {d8-d15} ++.endm ++ ++generate_composite_function \ ++ pixman_composite_add_n_8_8_asm_neon, 0, 8, 8, \ ++ FLAG_DST_READWRITE, \ ++ 32, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ pixman_composite_add_n_8_8_init, \ ++ pixman_composite_add_n_8_8_cleanup, \ ++ pixman_composite_add_n_8_8_process_pixblock_head, \ ++ pixman_composite_add_n_8_8_process_pixblock_tail, \ ++ pixman_composite_add_n_8_8_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_add_8_8_8_process_pixblock_head ++ /* expecting source data in {d0, d1, d2, d3} */ ++ /* destination data in {d4, d5, d6, d7} */ ++ /* mask in {d24, d25, d26, d27} */ ++ vmull.u8 q8, d24, d0 ++ vmull.u8 q9, d25, d1 ++ vmull.u8 q10, d26, d2 ++ vmull.u8 q11, d27, d3 ++ vrshr.u16 q0, q8, #8 ++ vrshr.u16 q1, q9, #8 ++ vrshr.u16 q12, q10, #8 ++ vrshr.u16 q13, q11, #8 ++ vraddhn.u16 d0, q0, q8 ++ vraddhn.u16 d1, q1, q9 ++ vraddhn.u16 d2, q12, q10 ++ vraddhn.u16 d3, q13, q11 ++ vqadd.u8 q14, q0, q2 ++ vqadd.u8 q15, q1, q3 ++.endm ++ ++.macro pixman_composite_add_8_8_8_process_pixblock_tail ++.endm ++ ++/* TODO: expand macros and do better instructions scheduling */ ++.macro pixman_composite_add_8_8_8_process_pixblock_tail_head ++ pixman_composite_add_8_8_8_process_pixblock_tail ++ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]! ++ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]! ++ vld1.8 {d24, d25, d26, d27}, [MASK]! ++ vld1.8 {d0, d1, d2, d3}, [SRC]! ++ cache_preload 32, 32 ++ pixman_composite_add_8_8_8_process_pixblock_head ++.endm ++ ++.macro pixman_composite_add_8_8_8_init ++.endm ++ ++.macro pixman_composite_add_8_8_8_cleanup ++.endm ++ ++generate_composite_function \ ++ pixman_composite_add_8_8_8_asm_neon, 8, 8, 8, \ ++ FLAG_DST_READWRITE, \ ++ 32, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ pixman_composite_add_8_8_8_init, \ ++ pixman_composite_add_8_8_8_cleanup, \ ++ pixman_composite_add_8_8_8_process_pixblock_head, \ ++ pixman_composite_add_8_8_8_process_pixblock_tail, \ ++ pixman_composite_add_8_8_8_process_pixblock_tail_head ++ ++/******************************************************************************/ ++ ++.macro pixman_composite_over_8888_n_8888_process_pixblock_head ++ /* expecting source data in {d0, d1, d2, d3} */ ++ /* destination data in {d4, d5, d6, d7} */ ++ /* solid mask is in d15 */ ++ ++ /* 'in' */ ++ vmull.u8 q8, d15, d3 ++ vmull.u8 q6, d15, d2 ++ vmull.u8 q5, d15, d1 ++ vmull.u8 q4, d15, d0 ++ vrshr.u16 q13, q8, #8 ++ vrshr.u16 q12, q6, #8 ++ vrshr.u16 q11, q5, #8 ++ vrshr.u16 q10, q4, #8 ++ vraddhn.u16 d3, q8, q13 ++ vraddhn.u16 d2, q6, q12 ++ vraddhn.u16 d1, q5, q11 ++ vraddhn.u16 d0, q4, q10 ++ vmvn.8 d24, d3 /* get inverted alpha */ ++ /* now do alpha blending */ ++ vmull.u8 q8, d24, d4 ++ vmull.u8 q9, d24, d5 ++ vmull.u8 q10, d24, d6 ++ vmull.u8 q11, d24, d7 ++.endm ++ ++.macro pixman_composite_over_8888_n_8888_process_pixblock_tail ++ vrshr.u16 q14, q8, #8 ++ vrshr.u16 q15, q9, #8 ++ vrshr.u16 q12, q10, #8 ++ vrshr.u16 q13, q11, #8 ++ vraddhn.u16 d28, q14, q8 ++ vraddhn.u16 d29, q15, q9 ++ vraddhn.u16 d30, q12, q10 ++ vraddhn.u16 d31, q13, q11 ++ vqadd.u8 q14, q0, q14 ++ vqadd.u8 q15, q1, q15 ++.endm ++ ++/* TODO: expand macros and do better instructions scheduling */ ++.macro pixman_composite_over_8888_n_8888_process_pixblock_tail_head ++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]! ++ pixman_composite_over_8888_n_8888_process_pixblock_tail ++ vld4.8 {d0, d1, d2, d3}, [SRC]! ++ cache_preload 8, 8 ++ pixman_composite_over_8888_n_8888_process_pixblock_head ++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]! ++.endm ++ ++.macro pixman_composite_over_8888_n_8888_init ++ add DUMMY, sp, #48 ++ vpush {d8-d15} ++ vld1.32 {d15[0]}, [DUMMY] ++ vdup.8 d15, d15[3] ++.endm ++ ++.macro pixman_composite_over_8888_n_8888_cleanup ++ vpop {d8-d15} ++.endm ++ ++generate_composite_function \ ++ pixman_composite_over_8888_n_8888_asm_neon, 32, 0, 32, \ ++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \ ++ 8, /* number of pixels, processed in a single block */ \ ++ 5, /* prefetch distance */ \ ++ pixman_composite_over_8888_n_8888_init, \ ++ pixman_composite_over_8888_n_8888_cleanup, \ ++ pixman_composite_over_8888_n_8888_process_pixblock_head, \ ++ pixman_composite_over_8888_n_8888_process_pixblock_tail, \ ++ pixman_composite_over_8888_n_8888_process_pixblock_tail_head +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch b/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch new file mode 100644 index 0000000000..c14bac153c --- /dev/null +++ b/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch @@ -0,0 +1,592 @@ +From 98d458dea913d7d76c48c48de9ef3aee85cced3a Mon Sep 17 00:00:00 2001 +From: Siarhei Siamashka <siarhei.siamashka@nokia.com> +Date: Mon, 12 Oct 2009 22:25:38 +0300 +Subject: [PATCH 7/7] ARM: Enabled new NEON optimizations + +--- + pixman/pixman-arm-neon.c | 535 ++++++++++++++++++++++++++++++++++++++++++++-- + 1 files changed, 520 insertions(+), 15 deletions(-) + +diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c +index fe57daa..2811099 100644 +--- a/pixman/pixman-arm-neon.c ++++ b/pixman/pixman-arm-neon.c +@@ -34,6 +34,18 @@ + #include <string.h> + #include "pixman-private.h" + ++/* ++ * Use GNU assembler optimizations only if we are completely sure that ++ * the target system has compatible ABI and calling conventions. This ++ * check can be updated/extended if more systems turn out to be actually ++ * compatible. ++ */ ++#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM) ++#define USE_GNU_ASSEMBLER_ARM_NEON ++#endif ++ ++#ifndef USE_GNU_ASSEMBLER_ARM_NEON ++ + /* Deal with an intrinsic that is defined differently in GCC */ + #if !defined(__ARMCC_VERSION) && !defined(__pld) + #define __pld(_x) __builtin_prefetch (_x) +@@ -1901,17 +1913,7 @@ pixman_fill_neon (uint32_t *bits, + #endif + } + +-/* +- * Use GNU assembler optimizations only if we are completely sure that +- * the target system has compatible ABI and calling conventions. This +- * check can be updated/extended if more systems turn out to be actually +- * compatible. +- */ +-#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM) +-#define USE_GNU_ASSEMBLER_ASM +-#endif +- +-#ifdef USE_GNU_ASSEMBLER_ASM ++#else /* USE_GNU_ASSEMBLER_ARM_NEON */ + + void + pixman_composite_over_8888_0565_asm_neon (int32_t w, +@@ -1941,23 +1943,525 @@ neon_composite_over_8888_0565 (pixman_implementation_t *imp, + int32_t dst_stride, src_stride; + + PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, +- src_stride, src_line, 1); ++ src_stride, src_line, 1); + PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, +- dst_stride, dst_line, 1); ++ dst_stride, dst_line, 1); + + pixman_composite_over_8888_0565_asm_neon (width, height, + dst_line, dst_stride, + src_line, src_stride); + } + ++void ++pixman_composite_src_8888_0565_asm_neon (int32_t w, ++ int32_t h, ++ uint16_t *dst, ++ int32_t dst_stride, ++ uint32_t *src, ++ int32_t src_stride); ++ ++static void ++neon_composite_src_8888_0565 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint16_t *dst_line; ++ uint32_t *src_line; ++ int32_t dst_stride, src_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, ++ dst_stride, dst_line, 1); ++ ++ pixman_composite_src_8888_0565_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride); ++} ++ ++void ++pixman_composite_src_0565_0565_asm_neon (int32_t w, ++ int32_t h, ++ uint16_t *dst, ++ int32_t dst_stride, ++ uint16_t *src, ++ int32_t src_stride); ++ ++static void ++neon_composite_src_0565_0565 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint16_t *dst_line; ++ uint16_t *src_line; ++ int32_t dst_stride, src_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint16_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, ++ dst_stride, dst_line, 1); ++ ++ pixman_composite_src_0565_0565_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride); ++} ++ ++ ++void ++pixman_composite_src_8888_8888_asm_neon (int32_t w, ++ int32_t h, ++ uint32_t *dst, ++ int32_t dst_stride, ++ uint32_t *src, ++ int32_t src_stride); ++ ++static void ++neon_composite_src_8888_8888 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint32_t *dst_line; ++ uint32_t *src_line; ++ int32_t dst_stride, src_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, ++ dst_stride, dst_line, 1); ++ ++ pixman_composite_src_8888_8888_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride); ++} ++ ++void ++pixman_composite_over_8888_8888_asm_neon (int32_t w, ++ int32_t h, ++ uint32_t *dst, ++ int32_t dst_stride, ++ uint32_t *src, ++ int32_t src_stride); ++ ++static void ++neon_composite_over_8888_8888 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint32_t *dst_line; ++ uint32_t *src_line; ++ int32_t dst_stride, src_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, ++ dst_stride, dst_line, 1); ++ ++ pixman_composite_over_8888_8888_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride); ++} ++ ++void ++pixman_composite_add_8000_8000_asm_neon (int32_t w, ++ int32_t h, ++ uint8_t *dst, ++ int32_t dst_stride, ++ uint8_t *src, ++ int32_t src_stride); ++ ++static void ++neon_composite_add_8000_8000 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint8_t *dst_line; ++ uint8_t *src_line; ++ int32_t dst_stride, src_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint8_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t, ++ dst_stride, dst_line, 1); ++ ++ pixman_composite_add_8000_8000_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride); ++} ++ ++void ++pixman_composite_over_n_8_0565_asm_neon (int32_t w, ++ int32_t h, ++ uint16_t *dst, ++ int32_t dst_stride, ++ uint32_t src, ++ int32_t unused, ++ uint8_t *mask, ++ int32_t mask_stride); ++ ++static void ++neon_composite_over_n_8_0565 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint16_t *dst_line; ++ uint8_t *mask_line; ++ int32_t dst_stride, mask_stride; ++ uint32_t src; ++ ++ src = _pixman_image_get_solid (src_image, dst_image->bits.format); ++ ++ if (src == 0) ++ return; ++ ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, ++ dst_stride, dst_line, 1); ++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, ++ mask_stride, mask_line, 1); ++ ++ pixman_composite_over_n_8_0565_asm_neon (width, height, ++ dst_line, dst_stride, ++ src, 0, ++ mask_line, mask_stride); ++} ++ ++void ++pixman_composite_over_n_8_8888_asm_neon (int32_t w, ++ int32_t h, ++ uint32_t *dst, ++ int32_t dst_stride, ++ uint32_t src, ++ int32_t unused, ++ uint8_t *mask, ++ int32_t mask_stride); ++ ++static void ++neon_composite_over_n_8_8888 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint32_t *dst_line; ++ uint8_t *mask_line; ++ int32_t dst_stride, mask_stride; ++ uint32_t src; ++ ++ src = _pixman_image_get_solid (src_image, dst_image->bits.format); ++ ++ if (src == 0) ++ return; ++ ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, ++ dst_stride, dst_line, 1); ++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, ++ mask_stride, mask_line, 1); ++ ++ pixman_composite_over_n_8_8888_asm_neon (width, height, ++ dst_line, dst_stride, ++ src, 0, ++ mask_line, mask_stride); ++} ++ ++void ++pixman_composite_add_8_8_8_asm_neon (int32_t w, ++ int32_t h, ++ uint8_t *dst, ++ int32_t dst_stride, ++ uint8_t *src, ++ int32_t src_stride, ++ uint8_t *mask, ++ int32_t mask_stride); ++ ++static void ++neon_composite_add_8_8_8 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint8_t *src_line; ++ uint8_t *dst_line; ++ uint8_t *mask_line; ++ int32_t src_stride, dst_stride, mask_stride; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint8_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t, ++ dst_stride, dst_line, 1); ++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, ++ mask_stride, mask_line, 1); ++ ++ pixman_composite_add_8_8_8_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride, ++ mask_line, mask_stride); ++} ++ ++void ++pixman_composite_add_n_8_8_asm_neon (int32_t w, ++ int32_t h, ++ uint8_t *dst, ++ int32_t dst_stride, ++ uint32_t src, ++ int32_t unused, ++ uint8_t *mask, ++ int32_t mask_stride); ++ ++static void ++neon_composite_add_n_8_8 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint8_t *dst_line; ++ uint8_t *mask_line; ++ int32_t dst_stride, mask_stride; ++ uint32_t src; ++ ++ src = _pixman_image_get_solid (src_image, dst_image->bits.format); ++ ++ if (src == 0) ++ return; ++ ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t, ++ dst_stride, dst_line, 1); ++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, ++ mask_stride, mask_line, 1); ++ ++ pixman_composite_add_n_8_8_asm_neon (width, height, ++ dst_line, dst_stride, ++ src, 0, ++ mask_line, mask_stride); ++} ++ ++void ++pixman_composite_over_8888_n_8888_asm_neon (int32_t w, ++ int32_t h, ++ uint32_t *dst, ++ int32_t dst_stride, ++ uint32_t *src, ++ int32_t src_stride, ++ uint32_t mask); ++ ++static void ++neon_composite_over_8888_n_8888 (pixman_implementation_t *imp, ++ pixman_op_t op, ++ pixman_image_t * src_image, ++ pixman_image_t * mask_image, ++ pixman_image_t * dst_image, ++ int32_t src_x, ++ int32_t src_y, ++ int32_t mask_x, ++ int32_t mask_y, ++ int32_t dest_x, ++ int32_t dest_y, ++ int32_t width, ++ int32_t height) ++{ ++ uint32_t *dst_line; ++ uint32_t *src_line; ++ int32_t dst_stride, src_stride; ++ uint32_t mask; ++ ++ mask = _pixman_image_get_solid (mask_image, dst_image->bits.format); ++ ++ if (mask == 0) ++ return; ++ ++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, ++ src_stride, src_line, 1); ++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t, ++ dst_stride, dst_line, 1); ++ ++ pixman_composite_over_8888_n_8888_asm_neon (width, height, ++ dst_line, dst_stride, ++ src_line, src_stride, ++ mask); ++} ++ ++void ++pixman_composite_src_n_8_asm_neon (int32_t w, ++ int32_t h, ++ uint8_t *dst, ++ int32_t dst_stride, ++ uint8_t src); ++ ++void ++pixman_composite_src_n_0565_asm_neon (int32_t w, ++ int32_t h, ++ uint16_t *dst, ++ int32_t dst_stride, ++ uint16_t src); ++ ++void ++pixman_composite_src_n_8888_asm_neon (int32_t w, ++ int32_t h, ++ uint32_t *dst, ++ int32_t dst_stride, ++ uint32_t src); ++ ++static pixman_bool_t ++pixman_fill_neon (uint32_t *bits, ++ int stride, ++ int bpp, ++ int x, ++ int y, ++ int width, ++ int height, ++ uint32_t _xor) ++{ ++ /* stride is always multiple of 32bit units in pixman */ ++ uint32_t byte_stride = stride * sizeof(uint32_t); ++ ++ switch (bpp) ++ { ++ case 8: ++ pixman_composite_src_n_8_asm_neon ( ++ width, ++ height, ++ (uint8_t *)(((char *) bits) + y * byte_stride + x), ++ byte_stride, ++ _xor & 0xff); ++ return TRUE; ++ case 16: ++ pixman_composite_src_n_0565_asm_neon ( ++ width, ++ height, ++ (uint16_t *)(((char *) bits) + y * byte_stride + x * 2), ++ byte_stride / 2, ++ _xor & 0xffff); ++ return TRUE; ++ case 32: ++ pixman_composite_src_n_8888_asm_neon ( ++ width, ++ height, ++ (uint32_t *)(((char *) bits) + y * byte_stride + x * 4), ++ byte_stride / 4, ++ _xor); ++ return TRUE; ++ default: ++ return FALSE; ++ } ++} ++ + #endif + + static const pixman_fast_path_t arm_neon_fast_path_array[] = + { +-#ifdef USE_GNU_ASSEMBLER_ASM ++#ifdef USE_GNU_ASSEMBLER_ARM_NEON ++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_0565_0565, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_8888_0565, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_8888_0565, 0 }, ++ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_a8, PIXMAN_a8, neon_composite_add_8_8_8, 0 }, ++ { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, ++ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_b5g6r5, neon_composite_over_n_8_0565, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_8888_0565, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_8888_0565, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_src_8888_8888, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_src_8888_8888, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 }, ++ { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_0565_0565, 0 }, + { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 }, + { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 }, +-#endif ++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, neon_composite_over_8888_8888, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_over_8888_8888, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, neon_composite_over_8888_n_8888, NEED_SOLID_MASK }, ++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_8888_n_8888, NEED_SOLID_MASK }, ++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8r8g8b8, neon_composite_over_n_8_8888, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_n_8_8888, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, neon_composite_over_n_8_8888, 0 }, ++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, neon_composite_over_n_8_8888, 0 }, ++#else + { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 }, + { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 }, + { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 }, +@@ -1980,6 +2484,7 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] = + { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_n_8_8888, 0 }, + { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, neon_composite_over_n_8_8888, 0 }, + { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, neon_composite_over_n_8_8888, 0 }, ++#endif + { PIXMAN_OP_NONE }, + }; + +-- +1.6.2.4 + diff --git a/recipes/xorg-lib/pixman_0.15.18.bb b/recipes/xorg-lib/pixman_0.15.18.bb new file mode 100644 index 0000000000..2517f8f354 --- /dev/null +++ b/recipes/xorg-lib/pixman_0.15.18.bb @@ -0,0 +1,13 @@ +SECTION = "libs" +PRIORITY = "optional" +DESCRIPTION = "Low-level pixel manipulation library." +LICENSE = "X11" + +DEFAULT_PREFERENCE = "-1" + +SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz \ + " + +inherit autotools_stage +AUTOTOOLS_STAGE_PKGCONFIG = "1" + diff --git a/recipes/xorg-lib/pixman_0.16.2.bb b/recipes/xorg-lib/pixman_0.16.2.bb new file mode 100644 index 0000000000..2517f8f354 --- /dev/null +++ b/recipes/xorg-lib/pixman_0.16.2.bb @@ -0,0 +1,13 @@ +SECTION = "libs" +PRIORITY = "optional" +DESCRIPTION = "Low-level pixel manipulation library." +LICENSE = "X11" + +DEFAULT_PREFERENCE = "-1" + +SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz \ + " + +inherit autotools_stage +AUTOTOOLS_STAGE_PKGCONFIG = "1" + diff --git a/recipes/xorg-lib/pixman_git.bb b/recipes/xorg-lib/pixman_git.bb index b8aa2a43c6..8a0ee265fd 100644 --- a/recipes/xorg-lib/pixman_git.bb +++ b/recipes/xorg-lib/pixman_git.bb @@ -7,15 +7,20 @@ PV = "0.17.1" PR = "r2" PR_append = "+gitr${SRCREV}" -SRCREV = "7af985a69a9147e54dd5946a8062dbc2e534b735" +SRCREV = "dc46ad274a47d351bacf3c2167c359d23dbaf8b3" DEFAULT_PREFERENCE = "-1" DEFAULT_PREFERENCE_angstrom = "1" SRC_URI = "git://anongit.freedesktop.org/pixman;protocol=git \ +file://0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch;patch=1 \ +file://0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch;patch=1 \ +file://0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch;patch=1 \ +file://0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch;patch=1 \ +file://0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch;patch=1 \ +file://0007-ARM-Enabled-new-NEON-optimizations.patch;patch=1 \ file://pixman-28986.patch;patch=1 \ file://nearest-neighbour.patch;patch=1 \ - file://remove-broken.patch;patch=1 \ file://over-8888-0565.patch;patch=1 \ " diff --git a/recipes/xorg-xserver/xserver-xorg-conf/at91sam9263ek/xorg.conf b/recipes/xorg-xserver/xserver-xorg-conf/at91sam9263ek/xorg.conf new file mode 100644 index 0000000000..7f3eb7797f --- /dev/null +++ b/recipes/xorg-xserver/xserver-xorg-conf/at91sam9263ek/xorg.conf @@ -0,0 +1,11 @@ +Section "ServerLayout" + Identifier "default" + InputDevice "atmel-ts" "CorePointer" +EndSection + +Section "InputDevice" + Identifier "atmel-ts" + Driver "evdev" + Option "SwapAxes" "1" + Option "Device" "/dev/input/touchscreen0" +EndSection diff --git a/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb b/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb index 995cd8b20f..ba52376ab2 100644 --- a/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb +++ b/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb @@ -1,5 +1,5 @@ DESCRIPTION = "Machine specific xorg.conf files" -PR = "r10" +PR = "r11" SRC_URI = "file://xorg.conf" |