From: tanner Date: Thu, 15 Apr 2010 09:52:11 +0000 (+0200) Subject: old version maemo19 X-Git-Url: http://vcs.maemo.org/git/?p=kernel-bfs;a=commitdiff_plain;h=deccf9b38dfe8c5f6689612480fc10f9b65acf89 old version maemo19 --- diff --git a/kernel-maemo-2.6.28/debian/JoikuSpot_Bouncer.c b/kernel-maemo-2.6.28/debian/JoikuSpot_Bouncer.c deleted file mode 100644 index 8ff74a8..0000000 --- a/kernel-maemo-2.6.28/debian/JoikuSpot_Bouncer.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Implementation of JoikuSpotBouncer module - * JoikuSpot_Bouncer.c - * - * 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 /* needed by all kernel modules */ -#include /* needed for custom init/exit functions */ -#include /* needed for KERN_ALERT macro */ -#include /* Hook register/unregister */ -#include /* nf_hook_priorities */ -#include /* Ip header */ -#include /* Tcp Header */ -#include /* Udp Header */ -#include /* __inet_lookup() */ -#include /* struct inet_sock */ - - -/* Special macro to indicate license (to avoid tainting the kernel) */ - -MODULE_LICENSE( "Dual MIT/GPL" ); -MODULE_AUTHOR ( "JoikuSoft Oy Ltd " ); - -extern struct inet_hashinfo tcp_hashinfo; -extern struct proto udp_prot; -extern struct rwlock_t udp_hash_lock; - -static struct sock *__udp4_lib_lookup( struct net *net , - unsigned long int saddr , - unsigned short int sport , - unsigned long int daddr , - unsigned short int dport , - int dif , - struct hlist_head udptable[] ) - { - struct sock *sk , *result = NULL; - struct hlist_node *node; - unsigned short int hnum = ntohs( dport ); - int badness = -1; - - read_lock( &udp_hash_lock ); - - sk_for_each ( sk , node , &udptable[ udp_hashfn ( net , hnum ) ] ) - { - struct inet_sock *inet = inet_sk( sk ); - - if ( net_eq ( sock_net( sk ) , net ) && sk->sk_hash == hnum && - !ipv6_only_sock( sk ) ) - { - - int score = ( sk->sk_family == PF_INET ? 1 : 0 ); - - if ( inet->rcv_saddr ) - { - if ( inet->rcv_saddr != daddr ) - { - continue; - } - score += 2; - } - if ( inet->daddr ) - { - if ( inet->daddr != saddr ) - { - continue; - } - score += 2; - } - if ( inet->dport ) - { - if ( inet->dport != sport ) - { - continue; - } - score += 2; - } - if ( sk->sk_bound_dev_if ) - { - if ( sk->sk_bound_dev_if != dif ) - { - continue; - } - score += 2; - } - if ( score == 9 ) - { - result = sk; - break; - } - else if ( score > badness ) - { - result = sk; - badness = score; - } - } - } - if ( result ) - { - sock_hold ( result ); - } - read_unlock ( &udp_hash_lock ); - return result; - } - - -static unsigned int joikuspot_nf_hook ( unsigned int hook , - struct sk_buff *pskb , - const struct net_device *in , - const struct net_device *out , - int ( *okfn ) ( struct sk_buff * ) ) - { - struct sock *sk; - struct iphdr *iph = ipip_hdr ( pskb ); - - if ( iph->protocol == 6 ) - { - struct tcphdr *th, tcph; - - th = skb_header_pointer ( - pskb , iph->ihl << 2 , sizeof( tcph ) , &tcph ); - - sk = __inet_lookup( dev_net ( pskb->dst->dev ) , &tcp_hashinfo , - iph->saddr , th->source , iph->daddr , th->dest , inet_iif ( pskb ) ); - - if( !sk ) - { - return NF_DROP; - } - else - { - return NF_ACCEPT; - } - } - - if ( iph->protocol == 17 ) - { - struct udphdr *uh, udph; - - uh = skb_header_pointer ( - pskb , iph->ihl << 2 , sizeof( udph ) , &udph ); - - sk = __udp4_lib_lookup( dev_net ( pskb->dst->dev ) , iph->saddr , uh->source , - iph->daddr , uh->dest , inet_iif ( pskb ) , udp_prot.h.udp_hash ); - - if ( sk != NULL ) - { - return NF_ACCEPT; - } - else - { - return NF_DROP; - } - } - - return NF_ACCEPT; - } - - -static struct nf_hook_ops joikuspot_ops = - { - .hook = joikuspot_nf_hook, - .owner = THIS_MODULE, - .pf = PF_INET, - .hooknum = NF_INET_LOCAL_IN, - .priority = NF_IP_PRI_FIRST - }; - -static int joikuspot_init( void ) - { - int retval = 0; - - printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module init\n" ); - - retval = nf_register_hook( &joikuspot_ops ); - - if ( retval < 0 ) - { - return retval; - } - - return retval; - } - -static void joikuspot_exit( void ) - { - nf_unregister_hook ( &joikuspot_ops ); - printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module exit\n" ); - } - -module_init( joikuspot_init ); -module_exit( joikuspot_exit ); - diff --git a/kernel-maemo-2.6.28/debian/changelog b/kernel-maemo-2.6.28/debian/changelog index 9d4dd75..7e9f727 100644 --- a/kernel-maemo-2.6.28/debian/changelog +++ b/kernel-maemo-2.6.28/debian/changelog @@ -1,3 +1,11 @@ +kernel-maemo (2.6.28-maemo19) fremantle; urgency=low + + * added overclocking (up to 1.2GHz) support, set default max to 600MHz + * added Joikuspot module and SLIP support + * control: added Provides for new features + + -- Thomas Tanner Sun, 04 Apr 2010 00:00:00 +0100 + kernel-maemo (2.6.28-maemo18) fremantle; urgency=low * add kexec patches to enable kexec support on N900 diff --git a/kernel-maemo-2.6.28/debian/control b/kernel-maemo-2.6.28/debian/control index 811e59e..7b71e03 100644 --- a/kernel-maemo-2.6.28/debian/control +++ b/kernel-maemo-2.6.28/debian/control @@ -20,10 +20,10 @@ Architecture: armel Pre-Depends: kernel-maemo (= ${binary:Version}), kernel-modules-maemo (= ${binary:Version}), softupd (>= 0.4.0) Recommends: usbip, iptables, mtd-utils, kexec-tools Description: Linux kernel updater for an enhanced Maemo 5 kernel 2.6.28.10 - This package will flash the kernel image upon installation - and eat kernel's files from /boot. If you want to revert to the stock - kernel, run "apt-get install --reinstall kernel kernel-flasher" as root + This package will flash the kernel image upon installation. If you want to revert to the + stock Nokia kernel, run "apt-get install --reinstall kernel kernel-flasher" as root or use the flasher to flash the extracted zImage from the firmware image. + For discussion and support please visit http://talk.maemo.org/showthread.php?t=43420 . This custom kernel contains additional modules for IPv6, packet filtering, QoS, NAT, tunneling, kernel configuration, Wifi mesh networking, @@ -31,8 +31,10 @@ Description: Linux kernel updater for an enhanced Maemo 5 kernel 2.6.28.10 NTFS read support, ISO9660, UDF, CIFS, automounter, UNIONFS, device mapper and dm-loop, cryptography, cryptoloop, EFI partitions, UTF8 codepages, mouse+joystick input, PPP, - serial support, USB/IP and generic USB device drivers - and kexec support. + serial support, USB/IP and generic USB device drivers, + overclocking and kexec support. + . + Warning: Overclocking may damage your device and is at your own risk! . Known bugs: Touchscreen calibration (osso-applet-screencalibration) is incompatible with the enabled evdev modules. You need to use the stock Nokia kernel for calibration. @@ -124,6 +126,7 @@ Depends: module-init-tools (>= 3.3), kernel-maemo (= ${binary:Version}) Provides: kernel-feature-netfilter, kernel-feature-ipv6, kernel-feature-ext4, kernel-feature-xfs, kernel-feature-reiserfs, kernel-feature-ntfs-read, kernel-feature-udf, kernel-feature-cifs, kernel-feature-automounter, kernel-feature-unionfs, kernel-feature-crypto, kernel-feature-dmloop, kernel-feature-utf8, kernel-feature-mousejoy, - kernel-feature-usbip, kernel-feature-ppp, kernel-feature-qos, kernel-feature-block2mtd + kernel-feature-usbip, kernel-feature-ppp, kernel-feature-qos, kernel-feature-block2mtd, kernel-feature-kexec, + kernel-feature-overclock, kernel-feature-joikuspot, kernel-feature-slip Description: Linux kernel modules This package provides kernel modules for the enhanced Maemo 5 kernel 2.6.28.10 diff --git a/kernel-maemo-2.6.28/debian/joikuspot/JoikuSpot_Bouncer.c b/kernel-maemo-2.6.28/debian/joikuspot/JoikuSpot_Bouncer.c new file mode 100644 index 0000000..8ff74a8 --- /dev/null +++ b/kernel-maemo-2.6.28/debian/joikuspot/JoikuSpot_Bouncer.c @@ -0,0 +1,196 @@ +/* + * Implementation of JoikuSpotBouncer module + * JoikuSpot_Bouncer.c + * + * 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 /* needed by all kernel modules */ +#include /* needed for custom init/exit functions */ +#include /* needed for KERN_ALERT macro */ +#include /* Hook register/unregister */ +#include /* nf_hook_priorities */ +#include /* Ip header */ +#include /* Tcp Header */ +#include /* Udp Header */ +#include /* __inet_lookup() */ +#include /* struct inet_sock */ + + +/* Special macro to indicate license (to avoid tainting the kernel) */ + +MODULE_LICENSE( "Dual MIT/GPL" ); +MODULE_AUTHOR ( "JoikuSoft Oy Ltd " ); + +extern struct inet_hashinfo tcp_hashinfo; +extern struct proto udp_prot; +extern struct rwlock_t udp_hash_lock; + +static struct sock *__udp4_lib_lookup( struct net *net , + unsigned long int saddr , + unsigned short int sport , + unsigned long int daddr , + unsigned short int dport , + int dif , + struct hlist_head udptable[] ) + { + struct sock *sk , *result = NULL; + struct hlist_node *node; + unsigned short int hnum = ntohs( dport ); + int badness = -1; + + read_lock( &udp_hash_lock ); + + sk_for_each ( sk , node , &udptable[ udp_hashfn ( net , hnum ) ] ) + { + struct inet_sock *inet = inet_sk( sk ); + + if ( net_eq ( sock_net( sk ) , net ) && sk->sk_hash == hnum && + !ipv6_only_sock( sk ) ) + { + + int score = ( sk->sk_family == PF_INET ? 1 : 0 ); + + if ( inet->rcv_saddr ) + { + if ( inet->rcv_saddr != daddr ) + { + continue; + } + score += 2; + } + if ( inet->daddr ) + { + if ( inet->daddr != saddr ) + { + continue; + } + score += 2; + } + if ( inet->dport ) + { + if ( inet->dport != sport ) + { + continue; + } + score += 2; + } + if ( sk->sk_bound_dev_if ) + { + if ( sk->sk_bound_dev_if != dif ) + { + continue; + } + score += 2; + } + if ( score == 9 ) + { + result = sk; + break; + } + else if ( score > badness ) + { + result = sk; + badness = score; + } + } + } + if ( result ) + { + sock_hold ( result ); + } + read_unlock ( &udp_hash_lock ); + return result; + } + + +static unsigned int joikuspot_nf_hook ( unsigned int hook , + struct sk_buff *pskb , + const struct net_device *in , + const struct net_device *out , + int ( *okfn ) ( struct sk_buff * ) ) + { + struct sock *sk; + struct iphdr *iph = ipip_hdr ( pskb ); + + if ( iph->protocol == 6 ) + { + struct tcphdr *th, tcph; + + th = skb_header_pointer ( + pskb , iph->ihl << 2 , sizeof( tcph ) , &tcph ); + + sk = __inet_lookup( dev_net ( pskb->dst->dev ) , &tcp_hashinfo , + iph->saddr , th->source , iph->daddr , th->dest , inet_iif ( pskb ) ); + + if( !sk ) + { + return NF_DROP; + } + else + { + return NF_ACCEPT; + } + } + + if ( iph->protocol == 17 ) + { + struct udphdr *uh, udph; + + uh = skb_header_pointer ( + pskb , iph->ihl << 2 , sizeof( udph ) , &udph ); + + sk = __udp4_lib_lookup( dev_net ( pskb->dst->dev ) , iph->saddr , uh->source , + iph->daddr , uh->dest , inet_iif ( pskb ) , udp_prot.h.udp_hash ); + + if ( sk != NULL ) + { + return NF_ACCEPT; + } + else + { + return NF_DROP; + } + } + + return NF_ACCEPT; + } + + +static struct nf_hook_ops joikuspot_ops = + { + .hook = joikuspot_nf_hook, + .owner = THIS_MODULE, + .pf = PF_INET, + .hooknum = NF_INET_LOCAL_IN, + .priority = NF_IP_PRI_FIRST + }; + +static int joikuspot_init( void ) + { + int retval = 0; + + printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module init\n" ); + + retval = nf_register_hook( &joikuspot_ops ); + + if ( retval < 0 ) + { + return retval; + } + + return retval; + } + +static void joikuspot_exit( void ) + { + nf_unregister_hook ( &joikuspot_ops ); + printk( KERN_DEBUG "JoikuSpot Bouncer Kernel Module exit\n" ); + } + +module_init( joikuspot_init ); +module_exit( joikuspot_exit ); + diff --git a/kernel-maemo-2.6.28/debian/joikuspot/Makefile b/kernel-maemo-2.6.28/debian/joikuspot/Makefile new file mode 100644 index 0000000..4e53dd3 --- /dev/null +++ b/kernel-maemo-2.6.28/debian/joikuspot/Makefile @@ -0,0 +1,2 @@ + +obj-m := JoikuSpot_Bouncer.o diff --git a/kernel-maemo-2.6.28/debian/patches/overclock.diff b/kernel-maemo-2.6.28/debian/patches/overclock.diff new file mode 100644 index 0000000..f399c29 --- /dev/null +++ b/kernel-maemo-2.6.28/debian/patches/overclock.diff @@ -0,0 +1,104 @@ +--- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h ++++ kernel-maemo-2.6.28/arch/arm/mach-omap2/omap3-opp.h +@@ -4,6 +4,15 @@ + #include + + /* MPU speeds */ ++#define S1200M 1200000000 ++#define S1100M 1100000000 ++#define S1000M 1000000000 ++#define S950M 950000000 ++#define S900M 900000000 ++#define S850M 850000000 ++#define S800M 800000000 ++#define S750M 750000000 ++#define S700M 700000000 + #define S600M 600000000 + #define S550M 550000000 + #define S500M 500000000 +@@ -33,6 +42,16 @@ + {S550M, VDD1_OPP4, 0x36}, + /*OPP5*/ + {S600M, VDD1_OPP5, 0x3C}, ++ /*overclocking*/ ++ {S700M, 6, 0x3C}, ++ {S750M, 7, 0x3C}, ++ {S800M, 8, 0x3C}, ++ {S850M, 9, 0x3C}, ++ {S900M, 10, 0x3C}, ++ {S950M, 11, 0x3C}, ++ {S1000M, 12, 0x3C}, ++ {S1100M, 13, 0x3C}, ++ {S1200M, 14, 0x3C}, + }; + + static struct omap_opp omap3_l3_rate_table[] = { +@@ -57,6 +76,16 @@ + {S400M, VDD1_OPP4, 0x36}, + /*OPP5*/ + {S430M, VDD1_OPP5, 0x3C}, ++ /*overclocking*/ ++ {S430M, 6, 0x3C}, ++ {S430M, 7, 0x3C}, ++ {S430M, 8, 0x3C},/*800MHz*/ ++ {S500M, 9, 0x3C}, ++ {S500M, 10, 0x3C}, ++ {S500M, 11, 0x3C}, ++ {S500M, 12, 0x3C}, ++ {S500M, 13, 0x3C}, ++ {S500M, 14, 0x3C}, + }; + + #endif +--- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h ++++ kernel-maemo-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h +@@ -114,7 +114,8 @@ + #define VDD2_OPP3 0x3 + + #define MIN_VDD1_OPP VDD1_OPP1 +-#define MAX_VDD1_OPP VDD1_OPP5 ++/*#define MAX_VDD1_OPP VDD1_OPP5*/ ++#define MAX_VDD1_OPP 14 + #define MIN_VDD2_OPP VDD2_OPP1 + #define MAX_VDD2_OPP VDD2_OPP3 + +--- kernel-maemo-2.6.28.orig/drivers/cpufreq/cpufreq.c ++++ kernel-maemo-2.6.28/drivers/cpufreq/cpufreq.c +@@ -823,7 +823,8 @@ + goto err_out; + } + policy->user_policy.min = policy->cpuinfo.min_freq; +- policy->user_policy.max = policy->cpuinfo.max_freq; ++ /*policy->user_policy.max = policy->cpuinfo.max_freq;*/ ++ policy->user_policy.max = 600000; /*N900 hack: set default max to 600MHz */ + + blocking_notifier_call_chain(&cpufreq_policy_notifier_list, + CPUFREQ_START, policy); +--- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c ++++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.c +@@ -513,7 +513,7 @@ + sr->req_opp_no = target_opp_no; + + if (sr->srid == SR1) { +- switch (target_opp_no) { ++ switch (min(target_opp_no,5)) { + case 5: + nvalue_reciprocal = sr->opp5_nvalue; + break; +--- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c ++++ kernel-maemo-2.6.28/arch/arm/plat-omap/cpu-omap.c +@@ -148,10 +148,12 @@ + VERY_HI_RATE) / 1000; + } + +- clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000); ++ /*clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);*/ ++ clk_set_rate(mpu_clk, 600000 * 1000); /*N900 hack: set default max to 600MHz */ + + policy->min = policy->cpuinfo.min_freq; +- policy->max = policy->cpuinfo.max_freq; ++ /*policy->max = policy->cpuinfo.max_freq;*/ ++ policy->max = 600000; /*N900 hack: set default max to 600MHz */ + policy->cur = omap_getspeed(0); + + policy->cpuinfo.transition_latency = 300 * 1000; diff --git a/kernel-maemo-2.6.28/debian/patches/series b/kernel-maemo-2.6.28/debian/patches/series index 65229c6..98dca90 100644 --- a/kernel-maemo-2.6.28/debian/patches/series +++ b/kernel-maemo-2.6.28/debian/patches/series @@ -12,3 +12,4 @@ ppp_async_matan.diff block2mtd-yoush.diff gentoo-fsfixes.diff kexec.diff +overclock.diff diff --git a/kernel-maemo-2.6.28/debian/rules b/kernel-maemo-2.6.28/debian/rules index 35361ba..ec04988 100644 --- a/kernel-maemo-2.6.28/debian/rules +++ b/kernel-maemo-2.6.28/debian/rules @@ -63,6 +63,7 @@ kernel-stamp: configure-stamp modules-stamp: configure-stamp echo "compile $(PRODUCT) kernel modules" cd $(KSRC) && $(MAKE) $(NJOBS) $(EXTRAVERSION) modules + $(MAKE) -C $(KSRC) M=debian/joikuspot EXTRAVERSION=$(EXTRAVERSION) modules touch $@ modules-extra: configure-stamp @@ -80,8 +81,8 @@ clean: dh_testroot mkdir -p $(BUILDTMP) - $(MAKE) clean - -rm -f scripts/basic/{docproc,fixdep,hash} scripts/kconfig/mconf + $(MAKE) mrproper + -rm -f scripts/basic/{docproc,fixdep,hash} scripts/kconfig/mconf scripts/kconfig/*.o scripts/kconfig/lxdialog/*.o rm -f modules/modversions.h modules/ksyms.ver debian/files conf.vars scripts/cramfs/cramfsck \ scripts/cramfs/mkcramfs applied_patches debian/buildinfo stamp-* .config* \ debian/$(FLASHER_PACKAGE).postinst diff --git a/kernel-maemo-2.6.28/debian/rx51maemo_defconfig b/kernel-maemo-2.6.28/debian/rx51maemo_defconfig index e9cb0ec..ae2191f 100644 --- a/kernel-maemo-2.6.28/debian/rx51maemo_defconfig +++ b/kernel-maemo-2.6.28/debian/rx51maemo_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.28maemo-omap1 -# Tue Mar 9 09:28:49 2010 +# Linux kernel version: 2.6.28.10maemo-omap1 +# Mon Apr 5 13:00:41 2010 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -70,6 +70,7 @@ 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=y @@ -80,10 +81,8 @@ CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y CONFIG_ELF_CORE=y -CONFIG_COMPAT_BRK=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y -CONFIG_ANON_INODES=y CONFIG_EPOLL=y CONFIG_SIGNALFD=y CONFIG_TIMERFD=y @@ -92,6 +91,7 @@ CONFIG_SHMEM=y CONFIG_AIO=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLUB_DEBUG=y +CONFIG_COMPAT_BRK=y # CONFIG_SLAB is not set CONFIG_SLUB=y # CONFIG_SLOB is not set @@ -964,8 +964,11 @@ CONFIG_PPP_BSDCOMP=m CONFIG_PPP_MPPE=m CONFIG_PPPOE=m CONFIG_PPPOL2TP=m -# CONFIG_SLIP is not set +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y CONFIG_SLHC=m +CONFIG_SLIP_SMART=y +# CONFIG_SLIP_MODE_SLIP6 is not set # CONFIG_NETCONSOLE is not set # CONFIG_NETPOLL is not set # CONFIG_NET_POLL_CONTROLLER is not set @@ -1953,7 +1956,6 @@ CONFIG_XFS_FS=m # CONFIG_XFS_POSIX_ACL is not set # CONFIG_XFS_RT is not set # CONFIG_XFS_DEBUG is not set -# CONFIG_NILFS2_FS is not set # CONFIG_OCFS2_FS is not set CONFIG_DNOTIFY=y CONFIG_INOTIFY=y