+++ /dev/null
-/*
- * 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 <linux/module.h> /* needed by all kernel modules */
-#include <linux/init.h> /* needed for custom init/exit functions */
-#include <linux/kernel.h> /* needed for KERN_ALERT macro */
-#include <linux/netfilter.h> /* Hook register/unregister */
-#include <linux/netfilter_ipv4.h> /* nf_hook_priorities */
-#include <linux/ip.h> /* Ip header */
-#include <linux/tcp.h> /* Tcp Header */
-#include <linux/udp.h> /* Udp Header */
-#include <net/inet_hashtables.h> /* __inet_lookup() */
-#include <net/inet_sock.h> /* struct inet_sock */
-
-
-/* Special macro to indicate license (to avoid tainting the kernel) */
-
-MODULE_LICENSE( "Dual MIT/GPL" );
-MODULE_AUTHOR ( "JoikuSoft Oy Ltd <info@joikusoft.com>" );
-
-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 );
-
+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 <maemo@tannerlab.com> 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
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,
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.
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
--- /dev/null
+/*
+ * 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 <linux/module.h> /* needed by all kernel modules */
+#include <linux/init.h> /* needed for custom init/exit functions */
+#include <linux/kernel.h> /* needed for KERN_ALERT macro */
+#include <linux/netfilter.h> /* Hook register/unregister */
+#include <linux/netfilter_ipv4.h> /* nf_hook_priorities */
+#include <linux/ip.h> /* Ip header */
+#include <linux/tcp.h> /* Tcp Header */
+#include <linux/udp.h> /* Udp Header */
+#include <net/inet_hashtables.h> /* __inet_lookup() */
+#include <net/inet_sock.h> /* struct inet_sock */
+
+
+/* Special macro to indicate license (to avoid tainting the kernel) */
+
+MODULE_LICENSE( "Dual MIT/GPL" );
+MODULE_AUTHOR ( "JoikuSoft Oy Ltd <info@joikusoft.com>" );
+
+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 );
+
--- /dev/null
+
+obj-m := JoikuSpot_Bouncer.o
--- /dev/null
+--- 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 <mach/omap-pm.h>
+
+ /* 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;
block2mtd-yoush.diff
gentoo-fsfixes.diff
kexec.diff
+overclock.diff
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
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
#
# 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
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
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
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
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
# 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