From 59f4a0e37ad09bd6199fb2ec69f6d58a05e21060 Mon Sep 17 00:00:00 2001 From: Adam Green Date: Tue, 12 Dec 2017 16:28:59 +0000 Subject: [PATCH] ssv6xxx-aml: new driver package --- .../amlogic/ssv6xxx-aml/package.mk | 64 ++++++++++++++ ...-aml-001-fix-build-and-firmware-path.patch | 86 +++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 packages/linux-drivers/amlogic/ssv6xxx-aml/package.mk create mode 100644 packages/linux-drivers/amlogic/ssv6xxx-aml/patches/ssv6xxx-aml-001-fix-build-and-firmware-path.patch diff --git a/packages/linux-drivers/amlogic/ssv6xxx-aml/package.mk b/packages/linux-drivers/amlogic/ssv6xxx-aml/package.mk new file mode 100644 index 0000000000..efd877bd26 --- /dev/null +++ b/packages/linux-drivers/amlogic/ssv6xxx-aml/package.mk @@ -0,0 +1,64 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2017-present Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="ssv6xxx-aml" +PKG_VERSION="1041e7d" +PKG_SHA256="1d96db8eec06c8a2c43f2c8024cc573e2bbce08fb0504fd9b6671224335e7d5f" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="http://libreelec.tv" +PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="ssv6xxx Linux driver" +PKG_LONGDESC="ssv6xxx Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +pre_configure_target() { + sed -i 's,hw_cap_p2p = on,hw_cap_p2p = off,g' firmware/ssv6051-wifi.cfg +} + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + if [ "$TARGET_KERNEL_ARCH" = "arm64" ]; then + PLATFORM="aml-s905" + else + PLATFORM="aml-s805" + fi + + cd $PKG_BUILD + ./ver_info.pl include/ssv_version.h + cp Makefile.android Makefile + sed -i 's,PLATFORMS =,PLATFORMS = '"$PLATFORM"',g' Makefile + make module SSV_ARCH="$TARGET_KERNEL_ARCH" \ + SSV_CROSS="$TARGET_PREFIX" \ + SSV_KERNEL_PATH="$(kernel_path)" +} + +makeinstall_target() { + mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME + find $PKG_BUILD/ -name \*.ko -not -path '*/\.*' -exec cp {} $INSTALL/$(get_full_module_dir)/$PKG_NAME \; + + mkdir -p $INSTALL/$(get_full_firmware_dir)/$PKG_NAME + cp $PKG_BUILD/firmware/* $INSTALL/$(get_full_firmware_dir)/$PKG_NAME +} diff --git a/packages/linux-drivers/amlogic/ssv6xxx-aml/patches/ssv6xxx-aml-001-fix-build-and-firmware-path.patch b/packages/linux-drivers/amlogic/ssv6xxx-aml/patches/ssv6xxx-aml-001-fix-build-and-firmware-path.patch new file mode 100644 index 0000000000..102a076447 --- /dev/null +++ b/packages/linux-drivers/amlogic/ssv6xxx-aml/patches/ssv6xxx-aml-001-fix-build-and-firmware-path.patch @@ -0,0 +1,86 @@ +diff --git a/Makefile.android b/Makefile.android +index 82211e1..0deeee5 100755 +--- a/Makefile.android ++++ b/Makefile.android +@@ -2,10 +2,8 @@ PLATFORMS = + + KBUILD_TOP := $(PWD) + +-SSV_PATH=$(ANDROID_BUILD_TOP)/hardware/wifi/icomm/ssv6xxx/ssv6051/ +- +-include $(SSV_PATH)/ssv6051.cfg +-include $(SSV_PATH)/platform-config.mak ++include ${KBUILD_TOP}/ssv6051.cfg ++include ${KBUILD_TOP}/platform-config.mak + + PWD := $(shell pwd) + +@@ -69,7 +67,7 @@ obj-$(CONFIG_SSV6200_CORE) += $(KMODULE_NAME).o + all:module strip + + module: +- make -C $(SSV_KERNEL_PATH) ARCH=$(SSV_ARCH) CROSS_COMPILE=$(SSV_CROSS) \ ++ $(MAKE) -C $(SSV_KERNEL_PATH) ARCH=$(SSV_ARCH) CROSS_COMPILE=$(SSV_CROSS) \ + EXTRA_CFLAGS="$(EXTRA_CFLAGS)" M=$(PWD) modules + + install: +@@ -92,6 +90,6 @@ ifneq ($(SSV_STRIP),) + endif + + clean: +- make -C $(SSV_KERNEL_PATH) ARCH=$(SSV_ARCH) CROSS_COMPILE=$(SSV_CROSS) \ ++ $(MAKE) -C $(SSV_KERNEL_PATH) ARCH=$(SSV_ARCH) CROSS_COMPILE=$(SSV_CROSS) \ + M=$(PWD) clean + rm $(DEF_PARSER_H) +diff --git a/firmware/ssv6051-wifi.cfg b/firmware/ssv6051-wifi.cfg +index 6c3a823..9c623a0 100755 +--- a/firmware/ssv6051-wifi.cfg ++++ b/firmware/ssv6051-wifi.cfg +@@ -11,7 +11,7 @@ + # Priority.3 default firmware + ################################################## + +-firmware_path = /system/etc/wifi/ssv6051/ ++firmware_path = /usr/lib/firmware/ + + ############################################################ + # MAC address + +diff --git a/platform-config.mak b/platform-config.mak +index bf35b70..f02e2b5 100755 +--- a/platform-config.mak ++++ b/platform-config.mak +@@ -5,7 +5,7 @@ CONFIG_SSV6200_CORE=m + ########################################################################### + # Compiler options # + ########################################################################### +-ccflags-y += -Werror ++# ccflags-y += -Werror + + # Enable -g to help debug. Deassembly from .o to .S would help to track to + # the problomatic line from call stack dump. +diff --git a/ssv6051.cfg b/ssv6051.cfg +index 7cf12c2..a6960fa 100755 +--- a/ssv6051.cfg ++++ b/ssv6051.cfg +@@ -16,6 +16,6 @@ ccflags-y += -DCONFIG_SSV_RSSI + #SSV_CROSS = $(ANDROID_BUILD_TOP)/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android- + #SSV_KERNEL_PATH = $(ANDROID_BUILD_TOP)/out/target/product/p201/obj/KERNEL_OBJ/ + +-SSV_ARCH = arm64 ++#SSV_ARCH = arm64 + #KMODDESTDIR = $(MODDESTDIR) + +diff --git a/ssvdevice/ssvdevice.c b/ssvdevice/ssvdevice.c +index ff4305e..375827f 100755 +--- a/ssvdevice/ssvdevice.c ++++ b/ssvdevice/ssvdevice.c +@@ -35,7 +35,7 @@ + MODULE_AUTHOR("iComm Semiconductor Co., Ltd"); + MODULE_DESCRIPTION("Shared library for SSV wireless LAN cards."); + MODULE_LICENSE("Dual BSD/GPL"); +-static char *stacfgpath = NULL; ++static char *stacfgpath = "/usr/lib/firmware/ssv6051-wifi.cfg"; + EXPORT_SYMBOL(stacfgpath); + module_param(stacfgpath, charp, 0000); + MODULE_PARM_DESC(stacfgpath, "Get path of sta cfg");