uccp420wlan: new package
PATCH v4 1/3 uccp420wlan: new package
From: Abhimanyu Vishwakarma <[email protected]>
Wifi kernel module and firmware for Imagination explorer RPU
---
Changes v1->v2
- add hash file
Changes v2->v3 (Suggested by Arnout)
- remove patch and bump version
- add proprietary license file to LICENSE_FILES
- Fix help text indentation to below 72 columns
Changes v3->v4 (Suggested by Arnout)
- use UCCP420WLAN_INSTALL_TARGET_CMDS instead of HOOKS
package/Config.in | 1 + package/uccp420wlan/Config.in | 14 ++++++++++++++ package/uccp420wlan/uccp420wlan.hash | 2 ++ package/uccp420wlan/uccp420wlan.mk | 18 ++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 package/uccp420wlan/Config.in create mode 100644 package/uccp420wlan/uccp420wlan.hash create mode 100644 package/uccp420wlan/uccp420wlan.mk
package/Config.in +1 -0
@@ -479,6 +479,7 @@ endmenu source "package/triggerhappy/Config.in" source "package/uboot-tools/Config.in" source "package/ubus/Config.in" + source "package/uccp420wlan/Config.in" source "package/udev/Config.in" source "package/udisks/Config.in" source "package/upower/Config.in"
package/uccp420wlan/Config.in new file +14 -0
@@ -0,0 +1,14 @@ +config BR2_PACKAGE_UCCP420WLAN + bool "uccp420wlan" + depends on BR2_LINUX_KERNEL + help + SoftMAC (mac80211) based WiFi driver for Imagination's + Explorer RPU uccp420. This supports Dual Band WiFi with + 2.4GHz - 2x2 b/g/n 40MHz, 5GHz - 2x2 a/n/11ac 80MHz modes + + Used in creator ci40 board. + + https://github.com/CreatorDev/uccp420wlan + +comment "uccp420wlan needs a Linux kernel to be built" + depends on !BR2_LINUX_KERNEL
package/uccp420wlan/uccp420wlan.hash new file +2 -0
@@ -0,0 +1,2 @@ +# locally computed hash +sha256 1d4de62fc842dbab739708cf0d9ebce270fcdf63c1c13ac676cbc253acdaa3bb uccp420wlan-v6.9.1.tar.gz
package/uccp420wlan/uccp420wlan.mk new file +18 -0
@@ -0,0 +1,18 @@ +################################################################################ +# +# uccp420wlan +# +################################################################################ + +UCCP420WLAN_VERSION = v6.9.1 +UCCP420WLAN_SITE = $(call github,CreatorDev,uccp420wlan,$(UCCP420WLAN_VERSION)) +UCCP420WLAN_LICENSE = GPLv2 (kernel module), proprietary (firmware blob) +UCCP420WLAN_LICENSE_FILES = COPYING firmware/LICENSE.imagination + +define UCCP420WLAN_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/img/uccp420wlan + cp $(@D)/firmware/*.ldr $(TARGET_DIR)/lib/firmware/img/uccp420wlan +endef + +$(eval $(kernel-module)) +$(eval $(generic-package))
Signature · 1 line
2.7.4
PATCH v4 2/3 Add LINUX_DIR to EXTRA_ENV for use in post-build scripts
From: Abhimanyu Vishwakarma <[email protected]>
To build fitImage in post-build scripts, we need compressed kernel binary which is intermediate target, hence doesnt get copied to output/images folder.
---
Changes v3->v4 (Suggested by Arnout)
- Drop exporting LINUX_DIR instead add to EXTRA_ENV var
package/Makefile.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
package/Makefile.in +2 -1
@@ -310,7 +310,8 @@ HOST_CONFIGURE_OPTS = \ EXTRA_ENV = \ PATH=$(BR_PATH) \ BR2_DL_DIR=$(BR2_DL_DIR) \ - BUILD_DIR=$(BUILD_DIR) + BUILD_DIR=$(BUILD_DIR) \ + LINUX_DIR=$(LINUX_DIR) ################################################################################ # settings we need to pass to configure
Signature · 1 line
2.7.4
PATCH v4 2/3 Add LINUX_DIR to EXTRA_ENV for use in post-build scripts
Quoted 8 lines · Abhimanyu V
From: Abhimanyu Vishwakarma <[email protected]>
To build fitImage in post-build scripts, we need compressed kernel binary which is intermediate target, hence doesnt get copied to output/images folder.
Signed-off-by Abhimanyu Vishwakarma <[email protected]>Reviewed-by Rahul Bedarkar <[email protected]>
Regards,
Arnout
Quoted 22 lines
---
Changesv3->v4(Suggested by Arnout)
- Drop exportingLINUX_DIRinstead add toEXTRA_ENVvarpackage/Makefile.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)package/Makefile.in +2
-1@@ -310,7 +310,8 @@ HOST_CONFIGURE_OPTS = \ EXTRA_ENV = \ PATH=$(BR_PATH) \ BR2_DL_DIR=$(BR2_DL_DIR) \ - BUILD_DIR=$(BUILD_DIR) + BUILD_DIR=$(BUILD_DIR) \ + LINUX_DIR=$(LINUX_DIR) ################################################################################ # settings we need to pass to configure
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH v4 2/3 Add LINUX_DIR to EXTRA_ENV for use in post-build scripts
Hello,
Quoted 11 lines · Arnout Vandecappelle
Quoted 8 lines · Abhimanyu V
From: Abhimanyu Vishwakarma <[email protected]>
To build fitImage in post-build scripts, we need compressed kernel binary which is intermediate target, hence doesnt get copied to output/images folder.
Signed-off-by Abhimanyu Vishwakarma <[email protected]>Reviewed-by Rahul Bedarkar <[email protected]>
I am not sure about this one. Why would we pass in the environment specifically LINUX_DIR, and not the <pkg>_DIR of the other ~2000 packages we have in Buildroot ?
What about instead using BR2_LINUX_KERNEL_VMLINUX_BIN, to get vmlinux.bin copied to output/images, and then compress it in the post-build script ?
Or alternatively, if there is a vmlinux.bin.gz target, add support for it in our linux package?
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH v4 2/3 Add LINUX_DIR to EXTRA_ENV for use in post-build scripts
Quoted 10 lines · Thomas Petazzoni
Hello,
Quoted 7 lines · Arnout Vandecappelle
Quoted 6 lines · Abhimanyu V
From: Abhimanyu Vishwakarma <[email protected]>
To build fitImage in post-build scripts, we need compressed kernel binary which is intermediate target, hence doesnt get copied to output/images folder.
Quoted 8 lines
Quoted 4 lines
Quoted 2 lines
Signed-off-by Abhimanyu Vishwakarma <[email protected]>Reviewed-by Rahul Bedarkar <[email protected]>I am not sure about this one. Why would we pass in the environment specifically
LINUX_DIR, and not the <pkg>_DIR of the other ~2000 packages we have in Buildroot ?
Because LINUX_DIR is *much* more likely to be used in a post-build/image
script. E.g. if the initramfs wouldn't be supported directly by Buildroot, you'd need it. Same for mxs-bootlets.
I agree though that it's not great, but could find no better way. Although,
actually, it could use a recursive 'make printvars VARS=LINUX_DIR' (which will be even better when [1] gets committed).
Quoted 3 lines
What about instead using
BR2_LINUX_KERNEL_VMLINUX_BIN, to get vmlinux.bin copied to output/images, and then compress it in the post-build script ?
I considered that in one of my reviews, but vmlinux.bin doesn't contain the
load and start address. The post-build script would have to retrieve those in some other way.
However, Abhimanyu reported that there is upstream support for generating a
fitImage in the kernel build itself. That's of course preferable...
Abhimanyu, could you rework using either 'make printvars' in the post-build
script (optionally incorporating [1] in your series so 'make printvars' actually does the right thing), or using the in-kernel fitImage support?
Regards,
Arnout
[1] http://patchwork.ozlabs.org/patch/721102/
Quoted 8 lines
Or alternatively, if there is a vmlinux.bin.gz target, add support for it in our linux package?
Best regards,
Thomas
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
PATCH v4 2/3 Add LINUX_DIR to EXTRA_ENV for use in post-build scripts
Hello,
Quoted 7 lines · Arnout Vandecappelle
Quoted 3 lines
What about instead using
BR2_LINUX_KERNEL_VMLINUX_BIN, to get vmlinux.bin copied to output/images, and then compress it in the post-build script ?I considered that in one of my reviews, but vmlinux.bin doesn't contain the
load and start address. The post-build script would have to retrieve those in some other way.
vmlinux.bin.gz also does not contain the load/start address. Only uImage does, and they get them from uImage.
So one possibility would be to make the Linux package behave like the U-Boot package: instead of having a choice...endchoice for the image format to install, you simply have a list of options so that you can select several of them.
Quoted 2 lines
However, Abhimanyu reported that there is upstream support for generating a
fitImage in the kernel build itself. That's of course preferable...
Yes, it would be much better obviously.
Otherwise, hardcoding the load/start address in the .its.in file is also good enough, this file is anyway board-specific.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
PATCH v4 2/3 Add LINUX_DIR to EXTRA_ENV for use in post-build scripts
Quoted 17 lines · Thomas Petazzoni
Hello,
Quoted 6 lines · Arnout Vandecappelle
Quoted 3 lines
What about instead using
BR2_LINUX_KERNEL_VMLINUX_BIN, to get vmlinux.bin copied to output/images, and then compress it in the post-build script ?I considered that in one of my reviews, but vmlinux.bin doesn't contain the
load and start address. The post-build script would have to retrieve those in some other way.vmlinux.bin.gz also does not contain the load/start address. Only uImage does, and they get them from uImage.
So one possibility would be to make the Linux package behave like the U-Boot package: instead of having a choice...endchoice for the image format to install, you simply have a list of options so that you can select several of them.
Quoted 6 lines
Quoted 2 lines
However, Abhimanyu reported that there is upstream support for generating a
fitImage in the kernel build itself. That's of course preferable...Yes, it would be much better obviously.
Otherwise, hardcoding the load/start address in the .its.in file is also good enough, this file is anyway board-specific.
Damn, i didnt see this mail before replying to previous version, I will prepare the patch with this.
Quoted 3 lines
Best regards,
Thomas
Regards
Abhimanyu
PATCH v4 2/3 Add LINUX_DIR to EXTRA_ENV for use in post-build scripts
In reply to Arnout VandecappelleHi Arnout, Thomas,
Quoted 26 lines · Arnout Vandecappelle
Quoted 10 lines · Thomas Petazzoni
Hello,
Quoted 7 lines · Arnout Vandecappelle
Quoted 6 lines · Abhimanyu V
From: Abhimanyu Vishwakarma <[email protected]>
To build fitImage in post-build scripts, we need compressed kernel binary which is intermediate target, hence doesnt get copied to output/images folder.
Quoted 6 lines
Quoted 3 lines
Quoted 2 lines
Signed-off-by Abhimanyu Vishwakarma <[email protected]>Reviewed-by Rahul Bedarkar <[email protected]>I am not sure about this one. Why would we pass in the environment specifically
LINUX_DIR, and not the <pkg>_DIR of the other ~2000 packages we have in Buildroot ?Because
LINUX_DIRis *much* more likely to be used in a post-build/image
script. E.g. if the initramfs wouldn't be supported directly by Buildroot, you'd need it. Same for mxs-bootlets.I agree though that it's not great, but could find no better way. Although,
actually, it could use a recursive 'make printvars VARS=LINUX_DIR' (which will be even better when [1] gets committed).
Quoted 6 lines
Quoted 3 lines
What about instead using
BR2_LINUX_KERNEL_VMLINUX_BIN, to get vmlinux.bin copied to output/images, and then compress it in the post-build script ?I considered that in one of my reviews, but vmlinux.bin doesn't contain the
load and start address. The post-build script would have to retrieve those in some other way.
When working I also had 2 other way to get it working:
1. Using vmlinux.bin and use gzip in build script to generate vmlinux.bin.gz and use fixed ENTRY_ADDR which is how openwrt version also does.
2. Extracting vmlinux.bin.gz from uImage directly.
Out of 3 i thought using what is already generated is best way to use it and it also reduces extra processing. If out of above 2 look good let me know i can propose the patch with
solution.
Quoted 3 lines
However, Abhimanyu reported that there is upstream support for generating a
fitImage in the kernel build itself. That's of course preferable...
fitImage support would need some more time, i would prefer if we get it pushed before fitImage support is ready.
Quoted 11 lines
Abhimanyu, could you rework using either 'make printvars' in the post-build
script (optionally incorporating [1] in your series so 'make printvars' actually does the right thing), or using the in-kernel fitImage support?Regards,
Arnout
Thanks, i will work on patch.
Quoted 7 lines
Quoted 7 lines
Or alternatively, if there is a vmlinux.bin.gz target, add support for it in our linux package?
Best regards,
Thomas
Regards
Abhimanyu
PATCH v4 3/3 Add defconfig for MIPS Creator ci40
In reply to Abhimanyu VFrom: Abhimanyu Vishwakarma <[email protected]>
Also add post-build script to create fitImage which is used by u-boot to boot the device. It also add post-image script to generate sdcard.img for preparing sdcard/usb device
---
Changes v1->v2
- No change
Changes v2->v3 (Suggested by Arnout)
- Remove uImage and add fitImage generation
- Tidy readme.txt
- Tidy ci40_defconfig, remove custom toolchain and add wifi helper packages Some changes are not done:
- Using git-helper:
- Custom kernel doesnt provide tar file, so it didnt work for me
Changes v3->v4 (Suggested by Arnout)
- Use github helper for getting kernel/u-boot
- rename fitImage.its -> fitImage.its.in to reflect as template file, remove hardcoded dtb filename
- Find dtb file in output/images directory and use first dtb in fitImage
- Remove image size from genimage.cfg
- Tidy readme.txt and add section to explain how to stop u-boot autoboot, how to make it persistent, and other grammar
board/ci40/create_fitImage.sh | 35 ++++++++++++++++++++++ board/ci40/fitImage.its.in | 52 ++++++++++++++++++++++++++++++++ board/ci40/genimage.cfg | 12 ++++++++ board/ci40/post-image.sh | 15 ++++++++++ board/ci40/readme.txt | 70 +++++++++++++++++++++++++++++++++++++++++++ configs/ci40_defconfig | 46 ++++++++++++++++++++++++++++ 6 files changed, 230 insertions(+) create mode 100755 board/ci40/create_fitImage.sh create mode 100644 board/ci40/fitImage.its.in create mode 100644 board/ci40/genimage.cfg create mode 100755 board/ci40/post-image.sh create mode 100644 board/ci40/readme.txt create mode 100644 configs/ci40_defconfig
board/ci40/create_fitImage.sh new file +35 -0
@@ -0,0 +1,35 @@ +#!/bin/bash + +# Inputs +BOARD_DIR="$(dirname $0)" +FIT_ITS_FILE=$BOARD_DIR/fitImage.its.in +MKIMAGE=$HOST_DIR/usr/bin/mkimage +UIMAGE=$BINARIES_DIR/uImage + +# Output +MODIFIED_FIT_ITS=$BINARIES_DIR/fitImage.its +FITIMAGE=$BINARIES_DIR/fitImage + +# Extract kernel load address and entry address from uImage +load=0x$($MKIMAGE -l $UIMAGE | grep "Load Address: " | sed 's/Load Address: //g') +entry=0x$($MKIMAGE -l $UIMAGE | grep "Entry Point: " | sed 's/Entry Point: //g') + +# For now use first dtb found, once we start supporting more than 1 dtb, we can +# then generate multiple fitImage for different dtb found. +dtbs=(`find $BINARIES_DIR -name "*.dtb" -printf "%f "`) +dtb=${dtbs[0]} + +# Create a copy of fitImage.its file and replace these address in that file +sed -e "s/@load@/$load/g" \ + -e "s/@entry@/$entry/g" \ + -e "s/@dtb@/$dtb/g" \ + $FIT_ITS_FILE > $MODIFIED_FIT_ITS + +# Copy vmlinux.bin.gz to output/images, it is used in .its file +cp -a $LINUX_DIR/arch/mips/boot/vmlinux.bin.gz $BINARIES_DIR + +# Create fitImage +$MKIMAGE -f $MODIFIED_FIT_ITS $FITIMAGE + +# Copy to target +cp -a $FITIMAGE $TARGET_DIR/fitImage
board/ci40/fitImage.its.in new file +52 -0
52 lines not on this page · raw message
board/ci40/genimage.cfg new file +12 -0
@@ -0,0 +1,12 @@ +# Minimal SD card image +# + +image sdcard.img { + hdimage { + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +}
board/ci40/post-image.sh new file +15 -0
@@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +BOARD_DIR="$(dirname $0)" +GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg" +GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" + +rm -rf "${GENIMAGE_TMP}" + +genimage \ + --rootpath "${TARGET_DIR}" \ + --tmppath "${GENIMAGE_TMP}" \ + --inputpath "${BINARIES_DIR}" \ + --outputpath "${BINARIES_DIR}" \ + --config "${GENIMAGE_CFG}" +
board/ci40/readme.txt new file +70 -0
70 lines not on this page · raw message
configs/ci40_defconfig new file +46 -0
46 lines not on this page · raw message
Signature · 1 line
2.7.4
PATCH v4 1/3 uccp420wlan: new package
In reply to Abhimanyu VQuoted 6 lines · Abhimanyu V
From: Abhimanyu Vishwakarma <[email protected]>
Wifi kernel module and firmware for Imagination explorer RPU
Signed-off-by Abhimanyu Vishwakarma <[email protected]>Reviewed-by Rahul Bedarkar <[email protected]>
There is one worry: it needs a kernel >= 4.2. However, I expect most of our
modules packages have some kind of kernel dependency, and none of them encode it. It's also hard to do since we don't have a way to know the kernel version. It could be worthwhile, however, to mention this minimum kernel version in the help text.
[snip]
Quoted 6 lines
package/uccp420wlan/Config.in new file +0
-0
package/uccp420wlan/Config.in line 9
Quoted 9 lines
package/uccp420wlan/Config.in new file +9
-0@@ -0,0 +1,14 @@ +config BR2_PACKAGE_UCCP420WLAN + bool "uccp420wlan" + depends on BR2_LINUX_KERNEL + help + SoftMAC (mac80211) based WiFi driver for Imagination's + Explorer RPU uccp420. This supports Dual Band WiFi with + 2.4GHz - 2x2 b/g/n 40MHz, 5GHz - 2x2 a/n/11ac 80MHz modes + + Used in creator ci40 board.
So
This module needs a Linux kernel >= v4.2.
package/uccp420wlan/Config.in line 13
Quoted 4 lines
package/uccp420wlan/Config.in new file +4
-0+ + https://github.com/CreatorDev/uccp420wlan + +comment "uccp420wlan needs a Linux kernel to be built"
and
comment "uccp420wlan needs a Linux kernel >= v4.2 to be built"
Regards,
Arnout
Quoted 34 lines
package/uccp420wlan/Config.in new file +1
-0+ depends on !BR2_LINUX_KERNELpackage/uccp420wlan/uccp420wlan.hash new file +2
-0@@ -0,0 +1,2 @@ +# locally computed hash +sha256 1d4de62fc842dbab739708cf0d9ebce270fcdf63c1c13ac676cbc253acdaa3bb uccp420wlan-v6.9.1.tar.gzpackage/uccp420wlan/uccp420wlan.mk new file +18
-0@@ -0,0 +1,18 @@ +################################################################################ +# +# uccp420wlan +# +################################################################################ + +UCCP420WLAN_VERSION = v6.9.1 +UCCP420WLAN_SITE = $(call github,CreatorDev,uccp420wlan,$(UCCP420WLAN_VERSION)) +UCCP420WLAN_LICENSE = GPLv2 (kernel module), proprietary (firmware blob) +UCCP420WLAN_LICENSE_FILES = COPYING firmware/LICENSE.imagination + +define UCCP420WLAN_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/lib/firmware/img/uccp420wlan + cp $(@D)/firmware/*.ldr $(TARGET_DIR)/lib/firmware/img/uccp420wlan +endef + +$(eval $(kernel-module)) +$(eval $(generic-package))
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286500 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
Thomas Petazzoni
AppliedPATCH v4 1/3 uccp420wlan: new package
In reply to Abhimanyu VHello,
Quoted 6 lines · Abhimanyu V
From: Abhimanyu Vishwakarma <[email protected]>
Wifi kernel module and firmware for Imagination explorer RPU
Signed-off-by Abhimanyu Vishwakarma <[email protected]>Reviewed-by Rahul Bedarkar <[email protected]>
Quoted 9 lines
---
Changesv1->v2
- add hash file
Changesv2->v3(Suggested by Arnout)
- remove patch and bump version
- add proprietary license file toLICENSE_FILES
- Fix help text indentation to below 72 columns
Changesv3->v4(Suggested by Arnout)
- useUCCP420WLAN_INSTALL_TARGET_CMDSinstead of HOOKS
Applied to master, after taking into account the comments made by Arnout.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com