diff mbox

[resend] owl-linux: new package

Message ID 1340651389-7856-1-git-send-email-spdawson@gmail.com
State Superseded
Headers show

Commit Message

Simon Dawson June 25, 2012, 7:09 p.m. UTC
From: Simon Dawson <spdawson@gmail.com>

Signed-off-by: Simon Dawson <spdawson@gmail.com>
---
 package/Config.in                                  |    1 +
 package/owl-linux/Config.in                        |   18 ++++++++++++++++
 ...1.0.6-fix-CROSS_COMPILE-usage-in-Makefile.patch |   15 +++++++++++++
 .../owl-linux-1.0.6-fix-for-linux-3.3.x.patch      |   22 ++++++++++++++++++++
 package/owl-linux/owl-linux.mk                     |   20 ++++++++++++++++++
 5 files changed, 76 insertions(+)
 create mode 100644 package/owl-linux/Config.in
 create mode 100644 package/owl-linux/owl-linux-1.0.6-fix-CROSS_COMPILE-usage-in-Makefile.patch
 create mode 100644 package/owl-linux/owl-linux-1.0.6-fix-for-linux-3.3.x.patch
 create mode 100644 package/owl-linux/owl-linux.mk

Comments

Thomas Petazzoni June 26, 2012, 7:35 a.m. UTC | #1
Le Mon, 25 Jun 2012 20:09:49 +0100,
spdawson@gmail.com a écrit :

> From: Simon Dawson <spdawson@gmail.com>
> 
> Signed-off-by: Simon Dawson <spdawson@gmail.com>

This looks pretty good. The patches of the package should have a
Signed-off-by line, but otherwise, I'm not seeing any other issue.

I am also a bit worried about all the comment "owl-linux is only
supported blabla", because those warnings will also appear for anyone
not even doing something for ARM, and there will be two of such
warnings.

Maybe group the ARM9 and EABI checks into one comment? And maybe make
it visible only on ARM?

comment "owl-linux is only supported on ARM9 architecture with EABI"
	depends on !(BR2_arm920t || BR2_arm922t || BR2_arm926t)	|| !BR2_ARM_EABI
	depends on BR2_arm

or something like that.

> +define OWL_LINUX_INSTALL_TARGET_CMDS
> +	$(MAKE) -C $(LINUX_DIR) $(LINUX_MAKE_FLAGS) M="$(@D)" modules_install
> +endef

At some point in the discussion, it was mentioned that this driver
might only work with one particular CodeSourcery toolchain, which would
suggest that it uses the C library, and therefore contain userspace
code. But here you're only installing the kernel module itself. Could
you clarify this point, just for our (my?) knowledge?

Thanks!

Thomas
Simon Dawson June 26, 2012, 8:07 a.m. UTC | #2
Thanks for the feedback Thomas.

On 26 June 2012 08:35, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> The patches of the package should have a
> Signed-off-by line, but otherwise, I'm not seeing any other issue.

Okay; I'll fix that and resubmit.

> Maybe group the ARM9 and EABI checks into one comment? And maybe make
> it visible only on ARM?
>
> comment "owl-linux is only supported on ARM9 architecture with EABI"
>        depends on !(BR2_arm920t || BR2_arm922t || BR2_arm926t) || !BR2_ARM_EABI
>        depends on BR2_arm
>
> or something like that.

Good idea; I will do this.

> At some point in the discussion, it was mentioned that this driver
> might only work with one particular CodeSourcery toolchain, which would
> suggest that it uses the C library, and therefore contain userspace
> code. But here you're only installing the kernel module itself. Could
> you clarify this point, just for our (my?) knowledge?

I'm using the Buildroot-generated uClibc-based toolchain, and have had
no problems so far. The kernel module installed by this package is all
that is required to make the H&D Wireless hardware work.

Simon.
Thomas Petazzoni June 26, 2012, 8:37 a.m. UTC | #3
Le Tue, 26 Jun 2012 09:07:46 +0100,
Simon Dawson <spdawson@gmail.com> a écrit :

> > Maybe group the ARM9 and EABI checks into one comment? And maybe make
> > it visible only on ARM?
> >
> > comment "owl-linux is only supported on ARM9 architecture with EABI"
> >        depends on !(BR2_arm920t || BR2_arm922t || BR2_arm926t) || !BR2_ARM_EABI
> >        depends on BR2_arm
> >
> > or something like that.
> 
> Good idea; I will do this.

Thanks!

> > At some point in the discussion, it was mentioned that this driver
> > might only work with one particular CodeSourcery toolchain, which would
> > suggest that it uses the C library, and therefore contain userspace
> > code. But here you're only installing the kernel module itself. Could
> > you clarify this point, just for our (my?) knowledge?
> 
> I'm using the Buildroot-generated uClibc-based toolchain, and have had
> no problems so far. The kernel module installed by this package is all
> that is required to make the H&D Wireless hardware work.

Ok, if there's only kernel code, then I guess the only problem is the
ABI, which you've already handled by requiring EABI, so that looks good.

Thanks!

Thomas
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 99257b4..cb8771d 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -216,6 +216,7 @@  source "package/ntfs-3g/Config.in"
 source "package/ofono/Config.in"
 source "package/open2300/Config.in"
 source "package/openocd/Config.in"
+source "package/owl-linux/Config.in"
 source "package/parted/Config.in"
 source "package/pciutils/Config.in"
 source "package/picocom/Config.in"
diff --git a/package/owl-linux/Config.in b/package/owl-linux/Config.in
new file mode 100644
index 0000000..a5ab8e8
--- /dev/null
+++ b/package/owl-linux/Config.in
@@ -0,0 +1,18 @@ 
+config BR2_PACKAGE_OWL_LINUX
+	bool "H&D Wireless SPB104 SD-card WiFi SIP"
+	depends on BR2_LINUX_KERNEL
+	depends on (BR2_arm920t || BR2_arm922t || BR2_arm926t)
+	depends on BR2_ARM_EABI
+	help
+	  Linux kernel driver for the H&D Wireless SPB104 SD-card WiFi SIP.
+
+	  http://linux.hd-wireless.se/bin/view/Linux/GettingStarted
+
+comment "owl-linux requires a Linux kernel"
+	depends on !BR2_LINUX_KERNEL
+
+comment "owl-linux is only supported on the ARM9 architecture"
+	depends on !(BR2_arm920t || BR2_arm922t || BR2_arm926t)
+
+comment "owl-linux requires the ARM EABI"
+	depends on !BR2_ARM_EABI
diff --git a/package/owl-linux/owl-linux-1.0.6-fix-CROSS_COMPILE-usage-in-Makefile.patch b/package/owl-linux/owl-linux-1.0.6-fix-CROSS_COMPILE-usage-in-Makefile.patch
new file mode 100644
index 0000000..a644406
--- /dev/null
+++ b/package/owl-linux/owl-linux-1.0.6-fix-CROSS_COMPILE-usage-in-Makefile.patch
@@ -0,0 +1,15 @@ 
+Fix the owl-linux Makefile so that it protects spaces in the CROSS_COMPILE
+variable. For example, this variable will contain spaces if ccache is used.
+
+diff -Nur a/Makefile b/Makefile
+--- a/Makefile	2011-09-15 12:20:37.000000000 +0100
++++ b/Makefile	2012-05-10 08:53:55.727706424 +0100
+@@ -35,7 +35,7 @@
+ 	PWD := $(shell pwd)
+ 
+ default:
+-	$(MAKE) -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) M=$(PWD) MODE=$(MODE) modules
++	$(MAKE) -C $(KERNELDIR) ARCH=$(ARCH) CROSS_COMPILE="$(CROSS_COMPILE)" M=$(PWD) MODE=$(MODE) modules
+ 
+ clean: 
+ 	-rm -f *.o *.mod.c *.ko modules.order Module.symvers
diff --git a/package/owl-linux/owl-linux-1.0.6-fix-for-linux-3.3.x.patch b/package/owl-linux/owl-linux-1.0.6-fix-for-linux-3.3.x.patch
new file mode 100644
index 0000000..a474d4f
--- /dev/null
+++ b/package/owl-linux/owl-linux-1.0.6-fix-for-linux-3.3.x.patch
@@ -0,0 +1,22 @@ 
+Kernel commit b81693d9149c598302e8eb9c20cb20330d922c8e changed the
+net_device_ops structure, removing the ndo_set_multicast_list callback. The
+ndo_set_rx_mode has also been added to this structure.
+
+The upshot of these changes is that owl-linux fails to compile with 3.3.x
+and later kernels.
+
+diff -Nurp a/owl_net.c b/owl_net.c
+--- a/owl_net.c	2011-09-15 12:20:37.000000000 +0100
++++ b/owl_net.c	2012-06-05 07:42:47.839807834 +0100
+@@ -376,7 +376,11 @@ static const struct net_device_ops netde
+ #endif /* OWL_CONFIG_IFUPDOWN */
+         .ndo_start_xmit         = owl_net_tx,
+         .ndo_get_stats          = owl_net_get_stats,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0)
+         .ndo_set_multicast_list = NULL,
++#else
++        .ndo_set_rx_mode = NULL,
++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,3,0) */
+         .ndo_tx_timeout         = owl_net_tx_timeout,
+         .ndo_set_mac_address    = NULL,
+ };
diff --git a/package/owl-linux/owl-linux.mk b/package/owl-linux/owl-linux.mk
new file mode 100644
index 0000000..8aa8709
--- /dev/null
+++ b/package/owl-linux/owl-linux.mk
@@ -0,0 +1,20 @@ 
+#############################################################
+#
+# owl-linux
+#
+#############################################################
+OWL_LINUX_VERSION = 1.0.6
+OWL_LINUX_SITE = http://linux.hd-wireless.se/pub/Linux/DownloadDrivers
+OWL_LINUX_SOURCE = owl-linux-$(OWL_LINUX_VERSION).tar.gz
+
+OWL_LINUX_DEPENDENCIES = linux
+
+define OWL_LINUX_BUILD_CMDS
+	$(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) KERNELDIR=$(LINUX_DIR)
+endef
+
+define OWL_LINUX_INSTALL_TARGET_CMDS
+	$(MAKE) -C $(LINUX_DIR) $(LINUX_MAKE_FLAGS) M="$(@D)" modules_install
+endef
+
+$(eval $(call GENTARGETS))