rtl8188eu: new package
PATCH v2 1/1 rtl8188eu: new package
---
This standalone driver needs a few small patches to properly build and install within Buildroot.
Pathces sent upstream: https://github.com/lwfinger/rtl8188eu/pull/128
Changes v1 -> v2:
- use the kernel-module infra;
- mention binary blob in _LICENSE;
- remove inappropriate BR2_ROOTFS_DEVICE_CREATION_ stuff;
- mention the need to enable CONFIG_WIRELESS_EXT in the kernel.
--- package/Config.in | 1 + .../0001-Makefile-quote-CROSS_COMPILE.patch | 33 ++++++++++++++++++ ...002-Makefile-add-a-modules_install-target.patch | 34 +++++++++++++++++++ ...03-Makefile-add-a-firmware_install-target.patch | 32 ++++++++++++++++++ ...stall-use-firmware_install-to-copy-the-fi.patch | 39 ++++++++++++++++++++++ ...stall-remove-double-firmware-installation.patch | 28 ++++++++++++++++ package/rtl8188eu/Config.in | 19 +++++++++++ package/rtl8188eu/rtl8188eu.mk | 21 ++++++++++++ 8 files changed, 207 insertions(+) create mode 100644 package/rtl8188eu/0001-Makefile-quote-CROSS_COMPILE.patch create mode 100644 package/rtl8188eu/0002-Makefile-add-a-modules_install-target.patch create mode 100644 package/rtl8188eu/0003-Makefile-add-a-firmware_install-target.patch create mode 100644 package/rtl8188eu/0004-Makefile-install-use-firmware_install-to-copy-the-fi.patch create mode 100644 package/rtl8188eu/0005-Makefile-install-remove-double-firmware-installation.patch create mode 100644 package/rtl8188eu/Config.in create mode 100644 package/rtl8188eu/rtl8188eu.mk
package/Config.in +1 -0
@@ -404,6 +404,7 @@ endif source "package/read-edid/Config.in" source "package/rng-tools/Config.in" source "package/rpi-userland/Config.in" + source "package/rtl8188eu/Config.in" source "package/sane-backends/Config.in" source "package/sdparm/Config.in" source "package/setserial/Config.in"
package/rtl8188eu/0001-Makefile-quote-CROSS_COMPILE.patch new file +33 -0
@@ -0,0 +1,33 @@ +From 7b7d6b392a963b462c0240296daa38d6413f6246 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli <[email protected]> +Date: Fri, 3 Jul 2015 14:45:03 +0200 +Subject: [PATCH 1/5] Makefile: quote CROSS_COMPILE + +When using a CROSS_COMPILE value that contains a whitespace, such as +"ccache arm-linux-", building fails because only the first word is passed down +to the kernel Makefile as CROSS_COMPILE. Successive words are interpreted as +targets. + +Fix by quoting CROSS_COMPILE. + +Signed-off-by: Luca Ceresoli <[email protected]> +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index ea1b316..76db121 100644 +--- a/Makefile ++++ b/Makefile +@@ -144,7 +144,7 @@ export CONFIG_RTL8188EU = m + all: modules + + modules: +- $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSRC) M=$(shell pwd) modules ++ $(MAKE) ARCH=$(ARCH) CROSS_COMPILE="$(CROSS_COMPILE)" -C $(KSRC) M=$(shell pwd) modules + + strip: + $(CROSS_COMPILE)strip 8188eu.ko --strip-unneeded +-- +1.9.1 +
package/rtl8188eu/0002-Makefile-add-a-modules_install-target.patch new file +34 -0
@@ -0,0 +1,34 @@ +From f7e5725ea2e848546830ac2da117d808b4c19d08 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli <[email protected]> +Date: Fri, 3 Jul 2015 15:51:38 +0200 +Subject: [PATCH 2/5] Makefile: add a modules_install target + +Allows to cleanly install the module in the standard way, as suggested by +Documentation/kbuild/modules.txt in the kernel sources. + +This is needed when installing from within a build system (such as Buildroot) +that implement depmod on its own, and does not need the blacklist and other +fixups that are implemented by the 'install' target. + +Signed-off-by: Luca Ceresoli <[email protected]> +--- + Makefile | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/Makefile b/Makefile +index 76db121..63e0103 100644 +--- a/Makefile ++++ b/Makefile +@@ -149,6 +149,9 @@ modules: + strip: + $(CROSS_COMPILE)strip 8188eu.ko --strip-unneeded + ++modules_install: ++ $(MAKE) -C $(KSRC) M=`pwd` modules_install ++ + install: + install -p -m 644 8188eu.ko $(MODDESTDIR) + @if [ -a /lib/modules/$(KVER)/kernel/drivers/staging/rtl8188eu/r8188eu.ko ] ; then modprobe -r r8188eu; fi; +-- +1.9.1 +
package/rtl8188eu/0003-Makefile-add-a-firmware_install-target.patch new file +32 -0
@@ -0,0 +1,32 @@ +From d8063ef657fd44e29ef2fffba07f0632d1e60a92 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli <[email protected]> +Date: Mon, 6 Jul 2015 09:59:46 +0200 +Subject: [PATCH 3/5] Makefile: add a firmware_install target + +When installing using the modules_install target, the firmware is not +installed. Add an ad-hoc target that just installs the firmware into +$(INSTALL_MOD_PATH)/lib/firmware/rtlwifi/. + +Signed-off-by: Luca Ceresoli <[email protected]> +--- + Makefile | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Makefile b/Makefile +index 63e0103..4012f9a 100644 +--- a/Makefile ++++ b/Makefile +@@ -152,6 +152,10 @@ strip: + modules_install: + $(MAKE) -C $(KSRC) M=`pwd` modules_install + ++firmware_install: ++ install -D -m 644 rtl8188eufw.bin \ ++ $(INSTALL_MOD_PATH)/lib/firmware/rtlwifi/rtl8188eufw.bin ++ + install: + install -p -m 644 8188eu.ko $(MODDESTDIR) + @if [ -a /lib/modules/$(KVER)/kernel/drivers/staging/rtl8188eu/r8188eu.ko ] ; then modprobe -r r8188eu; fi; +-- +1.9.1 +
package/rtl8188eu/0004-Makefile-install-use-firmware_install-to-copy-the-fi.patch new file +39 -0
@@ -0,0 +1,39 @@ +From c4d952d6184d82413c09f5ad668305ce37effbba Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli <[email protected]> +Date: Mon, 6 Jul 2015 10:03:11 +0200 +Subject: [PATCH 4/5] Makefile: install: use firmware_install to copy the + firmware + +Now there is a specific target to install the firmware, use it everywhere. + +Note: this does not change the behaviour if INSTALL_MOD_PATH is undefined. +Otherwise the firmware is now installed under the INSTALL_MOD_PATH prefix. + +Signed-off-by: Luca Ceresoli <[email protected]> +--- + Makefile | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/Makefile b/Makefile +index 4012f9a..8faf484 100644 +--- a/Makefile ++++ b/Makefile +@@ -156,14 +156,12 @@ firmware_install: + install -D -m 644 rtl8188eufw.bin \ + $(INSTALL_MOD_PATH)/lib/firmware/rtlwifi/rtl8188eufw.bin + +-install: ++install: firmware_install + install -p -m 644 8188eu.ko $(MODDESTDIR) + @if [ -a /lib/modules/$(KVER)/kernel/drivers/staging/rtl8188eu/r8188eu.ko ] ; then modprobe -r r8188eu; fi; + @echo "blacklist r8188eu" > /etc/modprobe.d/50-8188eu.conf + cp rtl8188eufw.bin /lib/firmware/. + /sbin/depmod -a ${KVER} +- mkdir -p /lib/firmware/rtlwifi +- cp -n rtl8188eufw.bin /lib/firmware/rtlwifi/. + + uninstall: + rm -f $(MODDESTDIR)/8188eu.ko +-- +1.9.1 +
package/rtl8188eu/0005-Makefile-install-remove-double-firmware-installation.patch new file +28 -0
@@ -0,0 +1,28 @@ +From 7339528fdf72468fa1a0a0a28ccd5a5a966f0dd0 Mon Sep 17 00:00:00 2001 +From: Luca Ceresoli <[email protected]> +Date: Mon, 6 Jul 2015 10:05:00 +0200 +Subject: [PATCH 5/5] Makefile: install: remove double firmware installation + +The firmware is already installed in /lib/firmware/rtlwifi, no need to +install it also in /lib/firmware. + +Signed-off-by: Luca Ceresoli <[email protected]> +--- + Makefile | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 8faf484..8bef18e 100644 +--- a/Makefile ++++ b/Makefile +@@ -160,7 +160,6 @@ install: firmware_install + install -p -m 644 8188eu.ko $(MODDESTDIR) + @if [ -a /lib/modules/$(KVER)/kernel/drivers/staging/rtl8188eu/r8188eu.ko ] ; then modprobe -r r8188eu; fi; + @echo "blacklist r8188eu" > /etc/modprobe.d/50-8188eu.conf +- cp rtl8188eufw.bin /lib/firmware/. + /sbin/depmod -a ${KVER} + + uninstall: +-- +1.9.1 +
package/rtl8188eu/Config.in new file +19 -0
@@ -0,0 +1,19 @@ +config BR2_PACKAGE_RTL8188EU + bool "rtl8188eu" + depends on BR2_LINUX_KERNEL + help + A standalone driver for the RTL8188EU USB Wi-Fi adapter. + This is needed only for Linux kernels before 3.12. + Since 3.12, there is a (staging) driver in mainline, with a similar + codebase. + + Make sure your target kernel has the CONFIG_WIRELESS_EXT config + option enabled. + + Note: this package needs a firmware loading mechanism to load the + binary blob for the chip to work. + + https://github.com/lwfinger/rtl8188eu + +comment "rtl8188eu needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL
package/rtl8188eu/rtl8188eu.mk new file +21 -0
@@ -0,0 +1,21 @@ +################################################################################ +# +# rtl8188eu +# +################################################################################ + +RTL8188EU_VERSION = 3091828c8f4b4a01cbec6025128bf77e6e7b9f97 +RTL8188EU_SITE = $(call github,lwfinger,rtl8188eu,$(RTL8188EU_VERSION)) +RTL8188EU_DEPENDENCIES = linux +RTL8188EU_LICENSE = GPLv2, proprietary (rtl8188eufw.bin firmware blob) +RTL8188EU_LICENSE_FILES = COPYING +RTL8188EU_MODULE_MAKE_OPTS = CONFIG_RTL8188EU=m + +$(eval $(kernel-module)) + +define RTL8188EU_INSTALL_FIRMWARE + $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) firmware_install +endef +RTL8188EU_POST_INSTALL_TARGET_HOOKS += RTL8188EU_INSTALL_FIRMWARE + +$(eval $(generic-package))
Signature · 1 line
1.9.1
PATCH v2 1/1 rtl8188eu: new package
Luca, All,
On 2015-07-25 17:48 +0200, Luca Ceresoli spake thusly:
Quoted 1 line
Signed-off-by Luca Ceresoli <[email protected]>
[--SNIP--]
Quoted 6 lines
package/Config.in | 1 + .../0001-Makefile-quote-CROSS_COMPILE.patch | 33 ++++++++++++++++++ ...002-Makefile-add-a-modules_install-target.patch | 34 +++++++++++++++++++ ...03-Makefile-add-a-firmware_install-target.patch | 32 ++++++++++++++++++ ...stall-use-firmware_install-to-copy-the-fi.patch | 39 ++++++++++++++++++++++ ...stall-remove-double-firmware-installation.patch | 28 ++++++++++++++++
I don't think those last two patches are needed in the Buildroot context, since all you did is use the modules_install target (by way of the kernel-module infra) and firmware_install target (by way of the post-install hook).
Sure, they are probably good for upstream, but do we really need them in Buildroot?
[--SNIP--]
Quoted 15 lines
package/rtl8188eu/rtl8188eu.mk new file +9
-0@@ -0,0 +1,21 @@ +################################################################################ +# +# rtl8188eu +# +################################################################################ + +RTL8188EU_VERSION = 3091828c8f4b4a01cbec6025128bf77e6e7b9f97 +RTL8188EU_SITE = $(call github,lwfinger,rtl8188eu,$(RTL8188EU_VERSION)) +RTL8188EU_DEPENDENCIES = linux
package/rtl8188eu/rtl8188eu.mk line 19
Quoted 10 lines
package/rtl8188eu/rtl8188eu.mk new file +10
-0+RTL8188EU_LICENSE = GPLv2, proprietary (rtl8188eufw.bin firmware blob) +RTL8188EU_LICENSE_FILES = COPYING +RTL8188EU_MODULE_MAKE_OPTS = CONFIG_RTL8188EU=m + +$(eval $(kernel-module)) + +define RTL8188EU_INSTALL_FIRMWARE + $(MAKE) -C $(@D) $(LINUX_MAKE_FLAGS) firmware_install +endef +RTL8188EU_POST_INSTALL_TARGET_HOOKS += RTL8188EU_INSTALL_FIRMWARE
Aha! It's funny how people will use the infras. Christian for his rtl8821au driver defined a _INSTALL_TARGET_CMDS while you defined a post-install hook.
Both are purely valid, of course, but I would prefer we stick to a single solution for consistemcy.
I would tend to prefer your solution, Luca, since the firmware is tightly coupled to the kernel module, while the _INSTALL_TARGET_CMDS would be related to the non-module part of the package.
Except for the two unneeded patches, when/if you respin, you can add my:
Reviewed-by: "Yann E. MORIN" <[email protected]>
Regards,
Yann E. MORIN.
Quoted 8 lines
package/rtl8188eu/rtl8188eu.mk new file +1
-0+$(eval $(generic-package))Signature · 6 lines
1.9.1 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 223 225 172 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'