Patchwork [resend] owl-linux: new package

login
register
mail settings
Submitter Simon Dawson
Date May 25, 2012, 12:51 p.m.
Message ID <1337950319-19104-1-git-send-email-spdawson@gmail.com>
Download mbox | patch
Permalink /patch/161336/
State Superseded
Headers show

Comments

Simon Dawson - May 25, 2012, 12:51 p.m.
From: Simon Dawson <spdawson@gmail.com>

Signed-off-by: Simon Dawson <spdawson@gmail.com>
---
 package/Config.in                                  |    1 +
 package/owl-linux/Config.in                        |   10 ++++++++++
 ...1.0.6-fix-CROSS_COMPILE-usage-in-Makefile.patch |   15 +++++++++++++++
 .../owl-linux-1.0.6-fix-for-linux-3.3.x.patch      |   19 +++++++++++++++++++
 package/owl-linux/owl-linux.mk                     |   20 ++++++++++++++++++++
 5 files changed, 65 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
Peter Korsgaard - May 25, 2012, 8:08 p.m.
>>>>> "spdawson" == spdawson  <spdawson@gmail.com> writes:

Hi,

 spdawson> diff --git a/package/owl-linux/Config.in b/package/owl-linux/Config.in
 spdawson> new file mode 100644
 spdawson> index 0000000..6ee0f95
 spdawson> --- /dev/null
 spdawson> +++ b/package/owl-linux/Config.in
 spdawson> @@ -0,0 +1,10 @@
 spdawson> +config BR2_PACKAGE_OWL_LINUX
 spdawson> +	bool "H&D Wireless SPB104 SD-card WiFi SIP"
 spdawson> +	depends on BR2_LINUX_KERNEL
 spdawson> +	help
 spdawson> +	  Linux kernel driver for the H&D Wireless SPB104 SD-card WiFi SIP.
 spdawson> +
 spdawson> +	  http://linux.hd-wireless.se/bin/view/Linux/GettingStarted

I don't know anything about this non-mainline driver, but a quick look
from that page shows me:

The driver is split into a binary part and a source part. The binary
part is a kernel-version and kernel-configuration independent
kernel-space library which also holds the device firmware. The source
part is basically the implementation of the adaptation layers
interfacing the SDIO stack, the TCP/IP stack and the wireless
extensions. This code is dependent on kernel version and configuration,
so it must be compiled for a particular kernel.

Currently, the included library has been compiled for ARM architectures
only. In version 1.0.6 and later, the library has been compiled with the
CodeSourcery GNU EABI toolchain 2011.03-42


So it seems like this should depend on atleast ARM, maybe some processor
variants and perhaps even the codesourcery 2011.03 toolchain?
aldot - May 25, 2012, 8:33 p.m.
M= might contain spaces too, please make them fix this also.
TIA,

On 25 May 2012 22:08, "Peter Korsgaard" <jacmet@uclibc.org> wrote:

>>>>> "spdawson" == spdawson  <spdawson@gmail.com> writes:

Hi,

 spdawson> diff --git a/package/owl-linux/Config.in
b/package/owl-linux/Config.in
 spdawson> new file mode 100644
 spdawson> index 0000000..6ee0f95
 spdawson> --- /dev/null
 spdawson> +++ b/package/owl-linux/Config.in
 spdawson> @@ -0,0 +1,10 @@
 spdawson> +config BR2_PACKAGE_OWL_LINUX
 spdawson> +    bool "H&D Wireless SPB104 SD-card WiFi SIP"
 spdawson> +    depends on BR2_LINUX_KERNEL
 spdawson> +    help
 spdawson> +      Linux kernel driver for the H&D Wireless SPB104 SD-card
WiFi SIP.
 spdawson> +
 spdawson> +      http://linux.hd-wireless.se/bin/view/Linux/GettingStarted

I don't know anything about this non-mainline driver, but a quick look
from that page shows me:

The driver is split into a binary part and a source part. The binary
part is a kernel-version and kernel-configuration independent
kernel-space library which also holds the device firmware. The source
part is basically the implementation of the adaptation layers
interfacing the SDIO stack, the TCP/IP stack and the wireless
extensions. This code is dependent on kernel version and configuration,
so it must be compiled for a particular kernel.

Currently, the included library has been compiled for ARM architectures
only. In version 1.0.6 and later, the library has been compiled with the
CodeSourcery GNU EABI toolchain 2011.03-42


So it seems like this should depend on atleast ARM, maybe some processor
variants and perhaps even the codesourcery 2011.03 toolchain?

--
Bye, Peter Korsgaard
Simon Dawson - May 25, 2012, 9:01 p.m.
> Currently, the included library has been compiled for ARM architectures
> only. In version 1.0.6 and later, the library has been compiled with the
> CodeSourcery GNU EABI toolchain 2011.03-42
>
> So it seems like this should depend on atleast ARM, maybe some processor
> variants and perhaps even the codesourcery 2011.03 toolchain?

Thanks for the detailed and insightful comments. You're certainly
right about the need for an ARM dependency --- probably requiring an
ARM9 architecture variant will be safest.

I worry about adding a dependency on the codesourcery toolchain
though: this will break my own particular use case, in which the
internal buildroot toolchain seems to be working fine.

> M= might contain spaces too, please make them fix this also.

Thanks for pointing this out; I shall fix it.

Patch

diff --git a/package/Config.in b/package/Config.in
index fb1b08f..971b106 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -208,6 +208,7 @@  source "package/mtd/Config.in"
 source "package/ntfs-3g/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..6ee0f95
--- /dev/null
+++ b/package/owl-linux/Config.in
@@ -0,0 +1,10 @@ 
+config BR2_PACKAGE_OWL_LINUX
+	bool "H&D Wireless SPB104 SD-card WiFi SIP"
+	depends on BR2_LINUX_KERNEL
+	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
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..2d4ea48
--- /dev/null
+++ b/package/owl-linux/owl-linux-1.0.6-fix-for-linux-3.3.x.patch
@@ -0,0 +1,19 @@ 
+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
+kernels.
+
+diff -Nur 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-05-01 11:39:14.617658349 +0100
+@@ -376,7 +376,7 @@
+ #endif /* OWL_CONFIG_IFUPDOWN */
+         .ndo_start_xmit         = owl_net_tx,
+         .ndo_get_stats          = owl_net_get_stats,
+-        .ndo_set_multicast_list = NULL,
++        .ndo_set_rx_mode = NULL,
+         .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..6cf8e96
--- /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))