-DESCRIPTION = "cx3110x wifi support as found in the Nokia 770/800"
-SECTION = "kernel/modules"
-LICENSE = "GPL"
-PR = "r0"
-
-export KERNEL_SRC_DIR = ${STAGING_KERNEL_DIR}
-export LDFLAGS = ""
-
-SRC_URI = "https://garage.maemo.org/frs/download.php/939/cx3110x-1.1.tar.gz"
-
-S = "${WORKDIR}/cx3110x-${PV}"
-
-inherit module
-
-do_compile() {
- oe_runmake modules
-}
-
+DESCRIPTION = "cx3110x wifi support as found in the Nokia 770/800"\r
+SECTION = "kernel/modules"\r
+LICENSE = "GPL"\r
+PR = "r4"\r
+\r
+COMPATIBLE_MACHINE = "(nokia770|nokia800)"\r
+\r
+export KERNEL_SRC_DIR = ${STAGING_KERNEL_DIR}\r
+export LDFLAGS = ""\r
+\r
+SRC_URI = "https://garage.maemo.org/frs/download.php/939/cx3110x-1.1.tar.gz \\r
+ file://umac_binary.patch;patch=1 \\r
+ http://use.the.umac.ko.from.your.own.nokia800/umac.ko"\r
+\r
+S = "${WORKDIR}/cx3110x-${PV}"\r
+\r
+inherit module\r
+\r
+do_compile() {\r
+ cp ${WORKDIR}/umac.ko ${S}/src/binary_umac.o\r
+ ${OBJCOPY} ${S}/src/binary_umac.o -R __ksymtab\r
+ ${OBJCOPY} ${S}/src/binary_umac.o -R __ksymtab_strings\r
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .gnu.linkonce.this_module\r
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .modinfo\r
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .init.text\r
+ ${OBJCOPY} ${S}/src/binary_umac.o -R .exit.text\r
+\r
+ oe_runmake modules \r
+}\r
+\r
--- /dev/null
+ src/Makefile.k26 | 4 ++--\r
+ src/dummy_umac.c | 38 ++------------------------------------\r
+ 2 files changed, 4 insertions(+), 38 deletions(-)\r
+\r
+Index: cx3110x-1.1/src/Makefile.k26\r
+===================================================================\r
+--- cx3110x-1.1.orig/src/Makefile.k26 2007-05-25 17:51:15.000000000 +0100\r
++++ cx3110x-1.1/src/Makefile.k26 2007-05-25 22:44:36.000000000 +0100\r
+@@ -8,8 +8,8 @@ cx3110x-objs = $(SM_OBJECTS) $(SM_UMAC_O\r
+ #MTUM module\r
+ cx3110x_mt-objs = $(SM_OBJECTS) $(SM_MTUM_OBJECTS)\r
+ \r
+-umac-objs = dummy_umac.o\r
+-mtum-objs = dummy_umac.o\r
++umac-objs = dummy_umac.o binary_umac.o\r
++mtum-objs = dummy_umac.o binary_umac.o\r
+ \r
+ obj-$(CONFIG_CX3110X_STA) += cx3110x.o umac.o\r
+ obj-$(CONFIG_CX3110X_PROD) += cx3110x_mt.o mtum.o\r
+Index: cx3110x-1.1/src/dummy_umac.c\r
+===================================================================\r
+--- cx3110x-1.1.orig/src/dummy_umac.c 2007-05-25 17:51:15.000000000 +0100\r
++++ cx3110x-1.1/src/dummy_umac.c 2007-05-25 22:50:59.000000000 +0100\r
+@@ -15,43 +15,9 @@\r
+ */\r
+ #include <linux/module.h>\r
+ #include "softmac2.h"\r
++#include "sm_drv.h"\r
+ \r
+-SM_API int32_t SM_FDECL prism_softmac_parse_bra(const uint8_t* bra, \r
+- struct s_sm_initdata *data) { return 0; }\r
+-\r
+-SM_API int32_t SM_FDECL prism_softmac_describe(struct s_sm_descr *descr, \r
+- struct s_sm_initdata *data) { return 0; }\r
+-\r
+-SM_API int32_t SM_FDECL prism_softmac_create(uint32_t *context, \r
+- struct s_sm_setup *setup, \r
+- struct s_pda *pda, \r
+- struct s_sm_initdata *data) { return 0; }\r
+-\r
+-SM_API int32_t SM_FDECL prism_softmac_destroy(uint32_t *context) { return 0; }\r
+-\r
+-SM_API int32_t SM_FDECL prism_softmac_conf( uint32_t *context, struct s_sm_conf *conf ){ return 0; }\r
+-SM_API int32_t SM_FDECL prism_softmac_trap( uint32_t *context, struct s_sm_conf *conf ){ return 0; }\r
+-\r
+-SM_API int32_t SM_FDECL prism_softmac_frame_tx(uint32_t *context, struct s_sm_frame *frame){ return 0; }\r
+-SM_API int32_t SM_FDECL prism_softmac_frame_tx_done(uint32_t *context, struct s_sm_frame **frame){ return 0; }\r
+-SM_API int32_t SM_FDECL prism_softmac_frame_rx(uint32_t *context, struct s_sm_frame **frame){ return 0; }\r
+-SM_API int32_t SM_FDECL prism_softmac_service(uint32_t *context) { return 0; }\r
+-\r
+-SM_API int32_t SM_FDECL prism_interconnect_message_query(uint32_t *context, \r
+- uint32_t mask, \r
+- struct s_ic_msg **msg){ return 0; }\r
+-SM_API int32_t SM_FDECL prism_interconnect_message_handle(uint32_t *context, struct s_ic_msg *msg){ return 0; }\r
+-SM_API int32_t SM_FDECL prism_interconnect_trigger(uint32_t *context){ return 0;}\r
+-\r
+-void prism_driver_free(uint32_t *context, void *buffer){}\r
+-void prism_driver_frame_free(uint32_t *context, struct s_sm_frame *frame){}\r
+-\r
+-int sm_net_device;\r
+-void sm_drv_get_device(void) {}\r
+-void frame_skb_alloc(void) {}\r
+-void frame_skb_free(void) {}\r
+-void frame_to_skb(void) {}\r
+-void skb_to_frame(void) {}\r
++extern int sm_net_device;\r
+ \r
+ EXPORT_SYMBOL(prism_driver_free);\r
+ EXPORT_SYMBOL(prism_driver_frame_free);\r