diff --git a/packages/linux-drivers/amlogic/RTL8188EU-aml/package.mk b/packages/linux-drivers/amlogic/RTL8188EU-aml/package.mk new file mode 100644 index 0000000000..a7e0f9bf70 --- /dev/null +++ b/packages/linux-drivers/amlogic/RTL8188EU-aml/package.mk @@ -0,0 +1,51 @@ +################################################################################ +# 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="RTL8188EU-aml" +PKG_VERSION="2d358c5" +PKG_SHA256="adf31d56d3a94bca814f1bd0de24af61fae85d25a259124b5d16c1d23cc72c91" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8188eu" +PKG_URL="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8188eu/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_realtek_drivers_8188eu-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="Realtek RTL8188EU Linux driver" +PKG_LONGDESC="Realtek RTL8188EU Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +post_unpack() { + sed -i 's/-DCONFIG_CONCURRENT_MODE//g; s/^CONFIG_POWER_SAVING.*$/CONFIG_POWER_SAVING = n/g; s/^CONFIG_RTW_DEBUG.*/CONFIG_RTW_DEBUG = n/g' $PKG_BUILD/*/Makefile + sed -i 's/^#define CONFIG_DEBUG.*//g' $PKG_BUILD/*/include/autoconf.h +} + +make_target() { + LDFLAGS="" make -C $(kernel_path) M=$PKG_BUILD/rtl8xxx_EU \ + ARCH=$TARGET_KERNEL_ARCH \ + KSRC=$(kernel_path) \ + CROSS_COMPILE=$TARGET_PREFIX \ + USER_EXTRA_CFLAGS="-fgnu89-inline" +} + +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 \; +} diff --git a/packages/linux-drivers/amlogic/RTL8188EU-aml/patches/RTL8188EU-aml-0001-Add-support-for-a-few-USB-dongles.patch b/packages/linux-drivers/amlogic/RTL8188EU-aml/patches/RTL8188EU-aml-0001-Add-support-for-a-few-USB-dongles.patch new file mode 100644 index 0000000000..5a36dca7b8 --- /dev/null +++ b/packages/linux-drivers/amlogic/RTL8188EU-aml/patches/RTL8188EU-aml-0001-Add-support-for-a-few-USB-dongles.patch @@ -0,0 +1,29 @@ +From b67364bd4236f890238fb44df1bbba228b42ffe1 Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Mon, 2 Oct 2017 11:13:42 +0200 +Subject: [PATCH] Add support for a few USB dongles + +--- + rtl8xxx_EU/os_dep/linux/usb_intf.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/rtl8xxx_EU/os_dep/linux/usb_intf.c b/rtl8xxx_EU/os_dep/linux/usb_intf.c +index 2fbffd6..4892838 100755 +--- a/rtl8xxx_EU/os_dep/linux/usb_intf.c ++++ b/rtl8xxx_EU/os_dep/linux/usb_intf.c +@@ -138,6 +138,12 @@ static struct usb_device_id rtw_usb_id_tbl[] = { + /*=== Customer ID ===*/ + /****** 8188EUS ********/ + {USB_DEVICE(0x07B8, 0x8179), .driver_info = RTL8188E}, /* Abocom - Abocom */ ++ {USB_DEVICE(0x0DF6, 0x0076), .driver_info = RTL8188E}, /* Sitecom N150 v2 */ ++ {USB_DEVICE(0x2001, 0x330F), .driver_info = RTL8188E}, /* DLink DWA-125 REV D1 */ ++ {USB_DEVICE(0x2001, 0x3310), .driver_info = RTL8188E}, /* Dlink DWA-123 REV D1 */ ++ {USB_DEVICE(0x2001, 0x3311), .driver_info = RTL8188E}, /* DLink GO-USB-N150 REV B1 */ ++ {USB_DEVICE(0x056E, 0x4008), .driver_info = RTL8188E}, /* Elecom WDC-150SU2M */ ++ {USB_DEVICE(0x2357, 0x010c), .driver_info = RTL8188E}, /* TP-Link TL-WN722N v2 */ + #endif + + #ifdef CONFIG_RTL8812A +-- +2.7.4 + diff --git a/packages/linux-drivers/amlogic/RTL8189ES-aml/package.mk b/packages/linux-drivers/amlogic/RTL8189ES-aml/package.mk new file mode 100644 index 0000000000..793de7221d --- /dev/null +++ b/packages/linux-drivers/amlogic/RTL8189ES-aml/package.mk @@ -0,0 +1,55 @@ +################################################################################ +# 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="RTL8189ES-aml" +PKG_VERSION="a7fc8d7" +PKG_SHA256="8eb89d6fec7cd1548a01c97d233ed124490fa67925b5bfae28e934e8b32bbdc0" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8189es" +PKG_URL="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8189es/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_realtek_drivers_8189es-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="Realtek RTL8189ES Linux driver" +PKG_LONGDESC="Realtek RTL8189ES Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +post_unpack() { + sed -i 's/-DCONFIG_CONCURRENT_MODE//g; s/^CONFIG_POWER_SAVING.*$/CONFIG_POWER_SAVING = n/g; s/^CONFIG_RTW_DEBUG.*/CONFIG_RTW_DEBUG = n/g' $PKG_BUILD/*/Makefile + sed -i 's/^#define CONFIG_DEBUG.*//g' $PKG_BUILD/*/include/autoconf.h +} + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make -C $(kernel_path) M=$PKG_BUILD/rtl8189ES \ + ARCH=$TARGET_KERNEL_ARCH \ + KSRC=$(kernel_path) \ + CROSS_COMPILE=$TARGET_PREFIX \ + USER_EXTRA_CFLAGS="-fgnu89-inline" +} + +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 \; +} diff --git a/packages/linux-drivers/RTL8189FS/package.mk b/packages/linux-drivers/amlogic/RTL8189FS-aml/package.mk similarity index 83% rename from packages/linux-drivers/RTL8189FS/package.mk rename to packages/linux-drivers/amlogic/RTL8189FS-aml/package.mk index 87ff39e258..e606a41ebc 100644 --- a/packages/linux-drivers/RTL8189FS/package.mk +++ b/packages/linux-drivers/amlogic/RTL8189FS-aml/package.mk @@ -16,10 +16,10 @@ # along with LibreELEC. If not, see . ################################################################################ -PKG_NAME="RTL8189FS" +PKG_NAME="RTL8189FS-aml" PKG_VERSION="ab83abd" PKG_SHA256="fab9511aaaa95e9764c76847ec418745bbb52f0751f3e17a51f84a6e3d4533cc" -PKG_ARCH="any" +PKG_ARCH="arm aarch64" PKG_LICENSE="GPL" PKG_SITE="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8189ftv" PKG_URL="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8189ftv/archive/$PKG_VERSION.tar.gz" @@ -27,8 +27,8 @@ PKG_SOURCE_DIR="android_hardware_wifi_realtek_drivers_8189ftv-$PKG_VERSION*" PKG_DEPENDS_TARGET="toolchain linux" PKG_NEED_UNPACK="$LINUX_DEPENDS" PKG_SECTION="driver" -PKG_SHORTDESC="Realtek RTL8189FS Linux 3.x driver" -PKG_LONGDESC="Realtek RTL8189FS Linux 3.x driver" +PKG_SHORTDESC="Realtek RTL8189FS Linux driver" +PKG_LONGDESC="Realtek RTL8189FS Linux driver" PKG_IS_KERNEL_PKG="yes" PKG_TOOLCHAIN="manual" @@ -43,13 +43,13 @@ pre_make_target() { make_target() { make -C $(kernel_path) M=$PKG_BUILD/rtl8189FS \ - ARCH=$TARGET_KERNEL_ARCH \ - KSRC=$(kernel_path) \ - CROSS_COMPILE=$TARGET_PREFIX \ - USER_EXTRA_CFLAGS="-fgnu89-inline" + ARCH=$TARGET_KERNEL_ARCH \ + KSRC=$(kernel_path) \ + CROSS_COMPILE=$TARGET_PREFIX \ + USER_EXTRA_CFLAGS="-fgnu89-inline" } makeinstall_target() { mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME - cp $PKG_BUILD/rtl8189FS/*.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME + find $PKG_BUILD/ -name \*.ko -not -path '*/\.*' -exec cp {} $INSTALL/$(get_full_module_dir)/$PKG_NAME \; } diff --git a/packages/linux-drivers/amlogic/RTL8723BS-aml/package.mk b/packages/linux-drivers/amlogic/RTL8723BS-aml/package.mk new file mode 100644 index 0000000000..cbe9ee328e --- /dev/null +++ b/packages/linux-drivers/amlogic/RTL8723BS-aml/package.mk @@ -0,0 +1,55 @@ +################################################################################ +# 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="RTL8723BS-aml" +PKG_VERSION="c3eef6c" +PKG_SHA256="db86d7237a047cdbb64ecb6919ab18035673b179ac56b253f050bfd0efc29fbc" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8723bs" +PKG_URL="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8723bs/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_realtek_drivers_8723bs-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="Realtek RTL8723BS Linux driver" +PKG_LONGDESC="Realtek RTL8723BS Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +post_unpack() { + sed -i 's/-DCONFIG_CONCURRENT_MODE//g; s/^CONFIG_POWER_SAVING.*$/CONFIG_POWER_SAVING = n/g; s/^CONFIG_RTW_DEBUG.*/CONFIG_RTW_DEBUG = n/g' $PKG_BUILD/*/Makefile + sed -i 's/^#define CONFIG_DEBUG.*//g' $PKG_BUILD/*/include/autoconf.h +} + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make -C $(kernel_path) M=$PKG_BUILD/rtl8723BS \ + ARCH=$TARGET_KERNEL_ARCH \ + KSRC=$(kernel_path) \ + CROSS_COMPILE=$TARGET_PREFIX \ + USER_EXTRA_CFLAGS="-fgnu89-inline" +} + +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 \; +} diff --git a/packages/linux-drivers/amlogic/RTL8723DS-aml/package.mk b/packages/linux-drivers/amlogic/RTL8723DS-aml/package.mk new file mode 100644 index 0000000000..6370c770c0 --- /dev/null +++ b/packages/linux-drivers/amlogic/RTL8723DS-aml/package.mk @@ -0,0 +1,55 @@ +################################################################################ +# 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="RTL8723DS-aml" +PKG_VERSION="96c22b8" +PKG_SHA256="3cb93c41c400b5d929820cbc6d89e8f254853d9b8f3a5bff972d6d6cde035c86" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8723ds" +PKG_URL="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8723ds/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_realtek_drivers_8723ds-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="Realtek RTL8723DS Linux driver" +PKG_LONGDESC="Realtek RTL8723DS Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +post_unpack() { + sed -i 's/-DCONFIG_CONCURRENT_MODE//g; s/^CONFIG_POWER_SAVING.*$/CONFIG_POWER_SAVING = n/g; s/^CONFIG_RTW_DEBUG.*/CONFIG_RTW_DEBUG = n/g' $PKG_BUILD/*/Makefile + sed -i 's/^#define CONFIG_DEBUG.*//g' $PKG_BUILD/*/include/autoconf.h +} + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make -C $(kernel_path) M=$PKG_BUILD/rtl8723DS \ + ARCH=$TARGET_KERNEL_ARCH \ + KSRC=$(kernel_path) \ + CROSS_COMPILE=$TARGET_PREFIX \ + USER_EXTRA_CFLAGS="-fgnu89-inline" +} + +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 \; +} diff --git a/packages/linux-drivers/amlogic/RTL8822BU-aml/package.mk b/packages/linux-drivers/amlogic/RTL8822BU-aml/package.mk new file mode 100644 index 0000000000..b9a7b0d144 --- /dev/null +++ b/packages/linux-drivers/amlogic/RTL8822BU-aml/package.mk @@ -0,0 +1,55 @@ +################################################################################ +# 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="RTL8822BU-aml" +PKG_VERSION="f743231" +PKG_SHA256="fadfe4f8ae38ba14acc9e37bdf3a2e723cfa11dca7d2f6b7ca6c5f1ffa84cf2b" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8822bu" +PKG_URL="https://github.com/khadas/android_hardware_wifi_realtek_drivers_8822bu/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_realtek_drivers_8822bu-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="Realtek RTL8822BU Linux driver" +PKG_LONGDESC="Realtek RTL8822BU Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +post_unpack() { + sed -i 's/-DCONFIG_CONCURRENT_MODE//g; s/^CONFIG_POWER_SAVING.*$/CONFIG_POWER_SAVING = n/g; s/^CONFIG_RTW_DEBUG.*/CONFIG_RTW_DEBUG = n/g' $PKG_BUILD/*/Makefile + sed -i 's/^#define CONFIG_DEBUG.*//g' $PKG_BUILD/*/include/autoconf.h +} + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make -C $(kernel_path) M=$PKG_BUILD/rtl8822BU \ + ARCH=$TARGET_KERNEL_ARCH \ + KSRC=$(kernel_path) \ + CROSS_COMPILE=$TARGET_PREFIX \ + USER_EXTRA_CFLAGS="-fgnu89-inline" +} + +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 \; +} diff --git a/packages/linux-drivers/amlogic/ap6xxx-aml/modprobe.d/dhd.conf b/packages/linux-drivers/amlogic/ap6xxx-aml/modprobe.d/dhd.conf new file mode 100644 index 0000000000..3eac44b78f --- /dev/null +++ b/packages/linux-drivers/amlogic/ap6xxx-aml/modprobe.d/dhd.conf @@ -0,0 +1 @@ +options dhd firmware_path=/usr/lib/firmware/brcm/ nvram_path=/usr/lib/firmware/brcm/ diff --git a/packages/linux-drivers/amlogic/ap6xxx-aml/package.mk b/packages/linux-drivers/amlogic/ap6xxx-aml/package.mk new file mode 100644 index 0000000000..9c590dddf2 --- /dev/null +++ b/packages/linux-drivers/amlogic/ap6xxx-aml/package.mk @@ -0,0 +1,48 @@ +################################################################################ +# 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="ap6xxx-aml" +PKG_VERSION="99b3459" +PKG_SHA256="5f2bfc29616d869ad5fb41e0782887d73cafe0bae8a13e7e945bb32b2a2c0877" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_broadcom_drivers_ap6xxx" +PKG_URL="https://github.com/khadas/android_hardware_wifi_broadcom_drivers_ap6xxx/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_broadcom_drivers_ap6xxx-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="ap6xxx: Linux drivers for AP6xxx WLAN chips used in some devices based on Amlogic SoCs" +PKG_LONGDESC="ap6xxx: Linux drivers for AP6xxx WLAN chips used in some devices based on Amlogic SoCs" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make -C $(kernel_path) M=$PKG_BUILD/bcmdhd.1.363.59.144.x.cn \ + ARCH=$TARGET_KERNEL_ARCH \ + CROSS_COMPILE=$TARGET_PREFIX +} + +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 \; +} diff --git a/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0001-bcmdhd-Add-new-SDIO-vendor-device-ID-for-AP6212.patch b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0001-bcmdhd-Add-new-SDIO-vendor-device-ID-for-AP6212.patch new file mode 100644 index 0000000000..3efe1cdbd5 --- /dev/null +++ b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0001-bcmdhd-Add-new-SDIO-vendor-device-ID-for-AP6212.patch @@ -0,0 +1,34 @@ +From fb537b584b78c0407c663ed4076e4ff79b36a14c Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Thu, 14 Sep 2017 21:20:18 +0200 +Subject: [PATCH 1/4] bcmdhd: Add new SDIO vendor/device ID for AP6212 + +--- + bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c b/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c +index af321a6..f7d9a09 100644 +--- a/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c ++++ b/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c +@@ -74,6 +74,9 @@ + #if !defined(SDIO_DEVICE_ID_BROADCOM_43239) + #define SDIO_DEVICE_ID_BROADCOM_43239 43239 + #endif /* !defined(SDIO_DEVICE_ID_BROADCOM_43239) */ ++#if !defined(SDIO_DEVICE_ID_BROADCOM_4343) ++#define SDIO_DEVICE_ID_BROADCOM_4343 0xa9a6 ++#endif /* !defined(SDIO_DEVICE_ID_BROADCOM_4343) */ + + extern void wl_cfg80211_set_parent_dev(void *dev); + extern void sdioh_sdmmc_devintr_off(sdioh_info_t *sd); +@@ -217,6 +220,7 @@ static void bcmsdh_sdmmc_remove(struct sdio_func *func) + /* devices we support, null terminated */ + static const struct sdio_device_id bcmsdh_sdmmc_ids[] = { + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_DEFAULT) }, ++ { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4343) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4325_SDGWB) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4325) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4329) }, +-- +2.7.4 + diff --git a/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0002-bcmdhd-add-BCM4335-firmware-loading-support.patch b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0002-bcmdhd-add-BCM4335-firmware-loading-support.patch new file mode 100644 index 0000000000..1e4ddb9790 --- /dev/null +++ b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0002-bcmdhd-add-BCM4335-firmware-loading-support.patch @@ -0,0 +1,53 @@ +From cd000f263d8433f2a1a29d7e722cd57e47b30fc5 Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Thu, 14 Sep 2017 21:20:55 +0200 +Subject: [PATCH 2/4] bcmdhd: add BCM4335 firmware loading support + +--- + bcmdhd.1.363.59.144.x.cn/dhd_config.c | 10 ++++++++++ + bcmdhd.1.363.59.144.x.cn/dhd_config.h | 1 + + 2 files changed, 11 insertions(+) + +diff --git a/bcmdhd.1.363.59.144.x.cn/dhd_config.c b/bcmdhd.1.363.59.144.x.cn/dhd_config.c +index ff07d18..b668400 100644 +--- a/bcmdhd.1.363.59.144.x.cn/dhd_config.c ++++ b/bcmdhd.1.363.59.144.x.cn/dhd_config.c +@@ -141,6 +141,14 @@ const static char *bcm43241b4_ag_fw_name[] = { + "fw_bcm43241b4_ag_mfg.bin" + }; + ++const static char *bcm4335b0_ag_fw_name[] = { ++ "fw_bcm4335b0_ag.bin", ++ "fw_bcm4335b0_ag_apsta.bin", ++ "fw_bcm4335b0_ag_p2p.bin", ++ "fw_bcm4335b0_ag_es.bin", ++ "fw_bcm4335b0_ag_mfg.bin" ++}; ++ + const static char *bcm4339a0_ag_fw_name[] = { + "fw_bcm4339a0_ag.bin", + "fw_bcm4339a0_ag_apsta.bin", +@@ -529,6 +537,8 @@ dhd_conf_set_fw_name_by_chip(dhd_pub_t *dhd, char *fw_path) + case BCM4335_CHIP_ID: + if (chiprev == BCM4335A0_CHIP_REV) + strcpy(&fw_path[i+1], bcm4339a0_ag_fw_name[fw_type]); ++ else if (chiprev == BCM4335B0_CHIP_REV) ++ strcpy(&fw_path[i+1], bcm4335b0_ag_fw_name[fw_type]); + break; + case BCM4345_CHIP_ID: + case BCM43454_CHIP_ID: +diff --git a/bcmdhd.1.363.59.144.x.cn/dhd_config.h b/bcmdhd.1.363.59.144.x.cn/dhd_config.h +index cc76e8b..450df56 100644 +--- a/bcmdhd.1.363.59.144.x.cn/dhd_config.h ++++ b/bcmdhd.1.363.59.144.x.cn/dhd_config.h +@@ -28,6 +28,7 @@ extern uint dhd_slpauto; + #define BCM43341B0_CHIP_REV 2 + #define BCM43241B4_CHIP_REV 5 + #define BCM4335A0_CHIP_REV 2 ++#define BCM4335B0_CHIP_REV 1 + #define BCM4339A0_CHIP_REV 1 + #define BCM43455C0_CHIP_REV 6 + #define BCM4354A1_CHIP_REV 1 +-- +2.7.4 + diff --git a/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0003-bcmdhd-match-only-Broadcom-SDIO-devices.patch b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0003-bcmdhd-match-only-Broadcom-SDIO-devices.patch new file mode 100644 index 0000000000..5f7354d34e --- /dev/null +++ b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0003-bcmdhd-match-only-Broadcom-SDIO-devices.patch @@ -0,0 +1,25 @@ +From 24affe6bf59dfd6fd9b62b3118e4b2b9e555181a Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Thu, 14 Sep 2017 21:21:18 +0200 +Subject: [PATCH 3/4] bcmdhd: match only Broadcom SDIO devices + +--- + bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c b/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c +index f7d9a09..47ca535 100644 +--- a/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c ++++ b/bcmdhd.1.363.59.144.x.cn/bcmsdh_sdmmc_linux.c +@@ -229,7 +229,7 @@ static const struct sdio_device_id bcmsdh_sdmmc_ids[] = { + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4334) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4324) }, + { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_43239) }, +- { SDIO_DEVICE_CLASS(SDIO_CLASS_NONE) }, ++ { SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_ANY_ID) }, + { /* end: all zeroes */ }, + }; + +-- +2.7.4 + diff --git a/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0004-bcmdhd-if-driver-is-not-yet-initialized-wait-and-ret.patch b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0004-bcmdhd-if-driver-is-not-yet-initialized-wait-and-ret.patch new file mode 100644 index 0000000000..a904347194 --- /dev/null +++ b/packages/linux-drivers/amlogic/ap6xxx-aml/patches/ap6xxx-aml-0004-bcmdhd-if-driver-is-not-yet-initialized-wait-and-ret.patch @@ -0,0 +1,37 @@ +From b9edf37b14f64a8bed5586898e3503322a5b8bfc Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Thu, 5 Oct 2017 22:04:11 +0200 +Subject: [PATCH 4/4] bcmdhd: if driver is not yet initialized, wait and retry + +--- + bcmdhd.1.363.59.144.x.cn/dhd_linux.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +diff --git a/bcmdhd.1.363.59.144.x.cn/dhd_linux.c b/bcmdhd.1.363.59.144.x.cn/dhd_linux.c +index c64f851..1754fb7 100644 +--- a/bcmdhd.1.363.59.144.x.cn/dhd_linux.c ++++ b/bcmdhd.1.363.59.144.x.cn/dhd_linux.c +@@ -6127,9 +6127,17 @@ dhd_open(struct net_device *net) + int ifidx; + int32 ret = 0; + +- if (!dhd_download_fw_on_driverload && !dhd_driver_init_done) { +- DHD_ERROR(("%s: WLAN driver is not initialized\n", __FUNCTION__)); +- return -1; ++ for (int retry = 0; ++retry; ) { ++ if (!dhd_download_fw_on_driverload && !dhd_driver_init_done) { ++ DHD_ERROR(("%s: WLAN driver is not initialized\n", __FUNCTION__)); ++ if (retry > 1) { ++ return -1; ++ } else { ++ OSL_SLEEP(1000); ++ } ++ } else { ++ break; ++ } + } + + printf("%s: Enter %p\n", __FUNCTION__, net); +-- +2.7.4 + diff --git a/packages/linux-drivers/amlogic/mt7601u-aml/package.mk b/packages/linux-drivers/amlogic/mt7601u-aml/package.mk new file mode 100644 index 0000000000..d99268f3c5 --- /dev/null +++ b/packages/linux-drivers/amlogic/mt7601u-aml/package.mk @@ -0,0 +1,51 @@ +################################################################################ +# 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="mt7601u-aml" +PKG_VERSION="4e61a61" +PKG_SHA256="814a63d8654f87a76cc06425ad2120daa32646f5220341a26296e4a6643b013a" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_mtk_drivers_mt7601" +PKG_URL="https://github.com/khadas/android_hardware_wifi_mtk_drivers_mt7601/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_mtk_drivers_mt7601-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="mt7601u Linux driver" +PKG_LONGDESC="mt7601u Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make -C $(kernel_path) M=$PKG_BUILD \ + ARCH=$TARGET_KERNEL_ARCH \ + CROSS_COMPILE=$TARGET_PREFIX +} + +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) + cp $PKG_BUILD/RT2870STA_7601.dat $INSTALL/$(get_full_firmware_dir) +} diff --git a/packages/linux-drivers/amlogic/mt7601u-aml/patches/mt7601u-aml-001-firmware-path.patch b/packages/linux-drivers/amlogic/mt7601u-aml/patches/mt7601u-aml-001-firmware-path.patch new file mode 100644 index 0000000000..5df89a3819 --- /dev/null +++ b/packages/linux-drivers/amlogic/mt7601u-aml/patches/mt7601u-aml-001-firmware-path.patch @@ -0,0 +1,13 @@ +diff --git a/include/os/rt_linux.h b/include/os/rt_linux.h +index 0303698..36dd603 100755 +--- a/include/os/rt_linux.h ++++ b/include/os/rt_linux.h +@@ -159,7 +159,7 @@ typedef struct usb_ctrlrequest devctrlrequest; + #ifdef ALLWINNER + #define STA_PROFILE_PATH "/system/vendor/modules/RT2870STA_7601.dat" + #else +-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7601.dat" ++#define STA_PROFILE_PATH "/lib/firmware/RT2870STA_7601.dat" + #endif + #define STA_DRIVER_VERSION "JEDI.L0.MP1.mt7601u.v1.2" + #define DRIVER_ROLE "STA" diff --git a/packages/linux-drivers/amlogic/mt7603u-aml/package.mk b/packages/linux-drivers/amlogic/mt7603u-aml/package.mk new file mode 100644 index 0000000000..04bf19cbe8 --- /dev/null +++ b/packages/linux-drivers/amlogic/mt7603u-aml/package.mk @@ -0,0 +1,53 @@ +################################################################################ +# 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="mt7603u-aml" +PKG_VERSION="0c53dfb" +PKG_SHA256="9e3eab02f3c3dd7de373c5d631c2069771e6ad783ecda36a484030ab4ec0ccec" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/khadas/android_hardware_wifi_mtk_drivers_mt7603" +PKG_URL="https://github.com/khadas/android_hardware_wifi_mtk_drivers_mt7603/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="android_hardware_wifi_mtk_drivers_mt7603-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="mt7603u Linux driver" +PKG_LONGDESC="mt7603u Linux driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +pre_make_target() { + unset LDFLAGS +} + +make_target() { + make LINUX_SRC=$(kernel_path) \ + ARCH=$TARGET_KERNEL_ARCH \ + CROSS_COMPILE=$TARGET_PREFIX \ + RT28xx_DIR=$PKG_BUILD \ + -f $PKG_BUILD/Makefile +} + +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) + cp $PKG_BUILD/conf/MT7603USTA.dat $INSTALL/$(get_full_firmware_dir) +} diff --git a/packages/linux-drivers/amlogic/mt7603u-aml/patches/mt7603u-aml-001-firmware-path.patch b/packages/linux-drivers/amlogic/mt7603u-aml/patches/mt7603u-aml-001-firmware-path.patch new file mode 100644 index 0000000000..3cf74f011c --- /dev/null +++ b/packages/linux-drivers/amlogic/mt7603u-aml/patches/mt7603u-aml-001-firmware-path.patch @@ -0,0 +1,38 @@ +diff --git a/include/os/rt_linux.h b/include/os/rt_linux.h +index 9ddc4ea..258907a 100755 +--- a/include/os/rt_linux.h ++++ b/include/os/rt_linux.h +@@ -201,7 +201,7 @@ typedef struct usb_ctrlrequest devctrlrequest; + + #ifdef CONFIG_STA_SUPPORT + #ifdef RTMP_MAC_PCI +-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat" ++#define STA_PROFILE_PATH "/lib/firmware/RT2870STA_7603.dat" + #define STA_DRIVER_VERSION "3.0.0.0" + #ifdef MULTIPLE_CARD_SUPPORT + #define CARD_INFO_PATH "/etc/Wireless/RT2860STA/RT2860STACard.dat" +@@ -210,12 +210,12 @@ typedef struct usb_ctrlrequest devctrlrequest; + + #ifdef RTMP_MAC_USB + #ifdef HE_BD_CFG80211_SUPPORT +-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat" ++#define STA_PROFILE_PATH "/lib/firmware/RT2870STA_7603.dat" + #else + #ifdef USE_CHIP_DEPENDENT_PROFILE_NAME +-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat" ++#define STA_PROFILE_PATH "/lib/firmware/RT2870STA_7603.dat" + #else +-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat" ++#define STA_PROFILE_PATH "/lib/firmware/RT2870STA_7603.dat" + #endif /* USE_CHIP_DEPENDENT_PROFILE_NAME */ + #endif /* HE_BD_CFG80211_SUPPORT */ + #define STA_DRIVER_VERSION "JEDI.L0.MP1.mt7603u.v1.8" +@@ -227,7 +227,7 @@ typedef struct usb_ctrlrequest devctrlrequest; + + + #ifdef RTMP_MAC_SDIO +-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat" ++#define STA_PROFILE_PATH "/lib/firmware/RT2870STA_7603.dat" + #define STA_DRIVER_VERSION "3.0.0.0" + #ifdef MULTIPLE_CARD_SUPPORT + #define CARD_INFO_PATH "/etc/Wireless/RT2870STA/RT2870STACard.dat" diff --git a/packages/linux-drivers/amlogic/mt7603u-aml/patches/mt7603u-aml-002-fix-building.patch b/packages/linux-drivers/amlogic/mt7603u-aml/patches/mt7603u-aml-002-fix-building.patch new file mode 100644 index 0000000000..7939d752f1 --- /dev/null +++ b/packages/linux-drivers/amlogic/mt7603u-aml/patches/mt7603u-aml-002-fix-building.patch @@ -0,0 +1,13 @@ +diff --git a/Makefile b/Makefile +index 65d0a5c..7fc16f4 100755 +--- a/Makefile ++++ b/Makefile +@@ -234,7 +234,7 @@ endif + ifeq ($(PREALLOC), YES) + #build prealloc.ko + cp -f $(RT28xx_DIR)/os/linux/Makefile.6.prealloc $(RT28xx_DIR)/os/linux/Makefile +- $(MAKE) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules ++ $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules + endif + cp -f $(RT28xx_DIR)/os/linux/Makefile.6 $(RT28xx_DIR)/os/linux/Makefile + ifeq ($(PLATFORM),DM6446) diff --git a/packages/linux-drivers/amlogic/qca9377-aml/package.mk b/packages/linux-drivers/amlogic/qca9377-aml/package.mk new file mode 100644 index 0000000000..9d5dd2b50b --- /dev/null +++ b/packages/linux-drivers/amlogic/qca9377-aml/package.mk @@ -0,0 +1,55 @@ +################################################################################ +# 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="qca9377-aml" +PKG_VERSION="0cc65f9" +PKG_SHA256="336f6e95fc16874a81daf5289c656688a90c5df566ffeaea708f7ac2f5198b9e" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://boundarydevices.com/new-silex-wifi-802-11ac-bt4-1-module/" +PKG_URL="https://github.com/boundarydevices/qcacld-2.0/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="qcacld-2.0-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain linux" +PKG_NEED_UNPACK="$LINUX_DEPENDS" +PKG_SECTION="driver" +PKG_SHORTDESC="qca9377 Linux driver" +PKG_LONGDESC="qca9377 Linux Driver" +PKG_IS_KERNEL_PKG="yes" +PKG_TOOLCHAIN="manual" + +post_unpack() { + sed -i 's,-Wall,,g; s,-Werror,,g' $PKG_BUILD/Kbuild + sed -i 's,CDEFINES :=,CDEFINES := -Wno-misleading-indentation -Wno-unused-variable -Wno-unused-function,g' $PKG_BUILD/Kbuild +} + +pre_make_target() { + unset LDFLAGS + unset CFLAGS +} + +make_target() { + make KERNEL_SRC="$(kernel_path)" \ + ARCH=$TARGET_KERNEL_ARCH \ + CROSS_COMPILE=$TARGET_PREFIX \ + CONFIG_CLD_HL_SDIO_CORE=y +} + +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 \; +} diff --git a/packages/linux-drivers/amlogic/qca9377-aml/patches/qca9377-aml-001-Modify-SDIO-and-firmware-handling-to-support-chips-u.patch b/packages/linux-drivers/amlogic/qca9377-aml/patches/qca9377-aml-001-Modify-SDIO-and-firmware-handling-to-support-chips-u.patch new file mode 100644 index 0000000000..3523e59c84 --- /dev/null +++ b/packages/linux-drivers/amlogic/qca9377-aml/patches/qca9377-aml-001-Modify-SDIO-and-firmware-handling-to-support-chips-u.patch @@ -0,0 +1,538 @@ +From 7d4ee23fb20cc5e17d8d79db20a0d6704ac3df6c Mon Sep 17 00:00:00 2001 +From: kszaq +Date: Tue, 10 Jan 2017 22:43:12 +0100 +Subject: [PATCH] Modify SDIO and firmware handling to support chips used in + Amlogic devices + +--- + CORE/HDD/src/wlan_hdd_cfg.c | 10 +- + CORE/HDD/src/wlan_hdd_main.c | 180 ++++++++++++++++++++- + CORE/SERVICES/BMI/ol_fw.c | 8 +- + CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c | 6 - + .../sdio/linux/native_sdio/include/hif_internal.h | 2 +- + CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c | 62 +++---- + 6 files changed, 209 insertions(+), 59 deletions(-) + +diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c +index af7f399..5eedfcb 100644 +--- a/CORE/HDD/src/wlan_hdd_cfg.c ++++ b/CORE/HDD/src/wlan_hdd_cfg.c +@@ -60,6 +60,8 @@ + #include + #include + ++extern int qca_request_firmware(const struct firmware **firmware_p, const char *name,struct device *device); ++ + static char *mac_param; + module_param_named(mac, mac_param, charp, S_IRUGO); + MODULE_PARM_DESC(mac, "mac address override"); +@@ -4411,11 +4413,11 @@ VOS_STATUS hdd_parse_config_ini(hdd_context_t* pHddCtx) + + memset(cfgIniTable, 0, sizeof(cfgIniTable)); + +- status = request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev); ++ status = qca_request_firmware(&fw, WLAN_INI_FILE, pHddCtx->parent_dev); + + if(status) + { +- hddLog(VOS_TRACE_LEVEL_FATAL, "%s: request_firmware failed %d",__func__, status); ++ hddLog(VOS_TRACE_LEVEL_FATAL, "%s: qca_request_firmware failed %d",__func__, status); + vos_status = VOS_STATUS_E_FAILURE; + goto config_exit; + } +@@ -5104,11 +5106,11 @@ VOS_STATUS hdd_update_mac_config(hdd_context_t *pHddCtx) + } + + memset(macTable, 0, sizeof(macTable)); +- status = request_firmware(&fw, WLAN_MAC_FILE, pHddCtx->parent_dev); ++ status = qca_request_firmware(&fw, WLAN_MAC_FILE, pHddCtx->parent_dev); + + if (status) + { +- hddLog(VOS_TRACE_LEVEL_WARN, "%s: request_firmware failed %d", ++ hddLog(VOS_TRACE_LEVEL_WARN, "%s: qca_request_firmware failed %d", + __func__, status); + vos_status = VOS_STATUS_E_FAILURE; + return vos_status; +diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c +index 1919627..3bcc6b0 100644 +--- a/CORE/HDD/src/wlan_hdd_main.c ++++ b/CORE/HDD/src/wlan_hdd_main.c +@@ -239,6 +239,163 @@ static VOS_STATUS hdd_parse_ese_beacon_req(tANI_U8 *pValue, + /* + * Android DRIVER command structures + */ ++//tkun add ++ typedef char A_CHAR; ++ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,20) ++ #define GET_INODE_FROM_FILEP(filp) \ ++ (filp)->f_path.dentry->d_inode ++ #else ++ #define GET_INODE_FROM_FILEP(filp) \ ++ (filp)->f_dentry->d_inode ++ #endif ++// #define A_MALLOC(size) kmalloc((size), GFP_KERNEL) ++ #define A_MALLOC_NOWAIT(size) kmalloc((size), GFP_ATOMIC) ++// #define A_FREE(addr) kfree(addr);addr=NULL; ++//#define A_MEMCPY(dst, src, len) memcpy((dst), (src), (len)) ++// #define A_MEMZERO(addr, len) memset((addr), 0, (len)) ++ #define A_MEMCMP(addr1, addr2, len) memcmp((addr1), (addr2), (len)) ++ #define A_ROUND_UP(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) ++ ++ char qcafwpath[256] = "/lib/firmware"; ++ ++ int android_readwrite_file(const A_CHAR *filename, A_CHAR *rbuf, const A_CHAR *wbuf, size_t length) ++ { ++ int ret = 0; ++ struct file *filp = (struct file *)-ENOENT; ++ mm_segment_t oldfs; ++ oldfs = get_fs(); ++ set_fs(KERNEL_DS); ++ ++ // printk("%s: filename %s \n",__func__,filename); ++ do { ++ int mode = (wbuf) ? O_RDWR : O_RDONLY; ++ filp = filp_open(filename, mode, S_IRUSR); ++ if (IS_ERR(filp) || !filp->f_op) { ++ printk("%s: file %s filp_open error\n", __FUNCTION__, filename); ++ ret = -ENOENT; ++ break; ++ } ++ ++ if (length==0) { ++ /* Read the length of the file only */ ++ struct inode *inode; ++ ++ inode = GET_INODE_FROM_FILEP(filp); ++ if (!inode) { ++ // printk("%s: Get inode from %s failed\n", __FUNCTION__, filen ame); ++ ret = -ENOENT; ++ break; ++ } ++ ret = i_size_read(inode->i_mapping->host); ++ break; ++ } ++ ++ if (wbuf) { ++ if ( (ret=filp->f_op->write(filp, wbuf, length, &filp->f_pos)) < 0) { ++// printk("%s: Write %u bytes to file %s error %d\n", __FUNCTION__, ++ // length, filename, ret); ++ break; ++ } ++ } else { ++ if ( (ret=filp->f_op->read(filp, rbuf, length, &filp->f_pos)) < 0) { ++// printk ("%s: Read %u bytes from file %s error %d\n", __FUNCTION__, ++ // length, filename, ret); ++ break; ++ } ++ } ++ } while (0); ++ ++ if (!IS_ERR(filp)) { ++ filp_close(filp, NULL); ++ } ++ set_fs(oldfs); ++ ++ return ret; ++ } ++ ++ ++ int android_request_firmware(const struct firmware **firmware_p, const char *name,struct device *device) ++ { ++ int ret = 0; ++ struct firmware *firmware; ++ char filename[256]; ++ const char *raw_filename = name; ++ *firmware_p = firmware = A_MALLOC(sizeof(*firmware)); ++ if (!firmware) ++ return -ENOMEM; ++ A_MEMZERO(firmware, sizeof(*firmware)); ++ do { ++ size_t length, bufsize, bmisize; ++ ++ if (snprintf(filename, sizeof(filename), "%s/%s", qcafwpath, ++ raw_filename) >= sizeof(filename)) { ++ printk("snprintf: %s/%s\n", qcafwpath, raw_filename); ++ ret = -1; ++ break; ++ } ++ if ( (ret=android_readwrite_file(filename, NULL, NULL, 0)) < 0) { ++ break; ++ } else { ++ length = ret; ++ } ++ ++ if (strcmp(raw_filename, "softmac") == 0) { ++ bufsize = length = 17; ++ } else { ++ bufsize = ALIGN(length, PAGE_SIZE); ++ bmisize = A_ROUND_UP(length, 4); ++ bufsize = max(bmisize, bufsize); ++ } ++ firmware->data = vmalloc(bufsize); ++ firmware->size = length; ++ ++ // printk("AR6K: %s(): raw_filename=%s, bufsize=%d\n", __FUNCTION__, ra w_filename, bufsize); ++ ++ if (!firmware->data) { ++ printk("%s: Cannot allocate buffer for firmware\n", __FUNCTION__); ++ ret = -ENOMEM; ++ break; ++ } ++ ++ if ( (ret=android_readwrite_file(filename, (char*)firmware->data, NULL, length)) != length) { ++// printk("%s: file read error, ret %d request %d\n", __FUNCTION__,ret,length); ++// ret = -1; ++ break; ++ } ++ ++ } while (0); ++ ++ if (ret<0) { ++ if (firmware) { ++ if (firmware->data) ++ vfree(firmware->data); ++ A_FREE(firmware); ++ } ++ *firmware_p = NULL; ++ } else { ++ ret = 0; ++ } ++ return ret; ++ } ++ ++ void android_release_firmware(const struct firmware *firmware) ++ { ++ if (firmware) { ++ if (firmware->data) ++ vfree(firmware->data); ++ kfree(firmware); ++ } ++ } ++extern int qca_request_firmware(const struct firmware **firmware_p,const char *name,struct device *device) ++ { ++ // int uevent = 1; ++ ++ //return _request_firmware(firmware_p, name, device, uevent, false); ++ ++ return android_request_firmware(firmware_p, name,device); ++ ++ ++ } + struct android_wifi_reassoc_params { + unsigned char bssid[18]; + int channel; +@@ -7778,7 +7935,7 @@ VOS_STATUS hdd_get_cfg_file_size(v_VOID_t *pCtx, char *pFileName, v_SIZE_t *pBuf + + ENTER(); + +- status = request_firmware(&pHddCtx->fw, pFileName, pHddCtx->parent_dev); ++ status = qca_request_firmware(&pHddCtx->fw, pFileName, pHddCtx->parent_dev); + + if(status || !pHddCtx->fw || !pHddCtx->fw->data) { + hddLog(VOS_TRACE_LEVEL_FATAL,"%s: CFG download failed",__func__); +@@ -7819,7 +7976,7 @@ VOS_STATUS hdd_read_cfg_file(v_VOID_t *pCtx, char *pFileName, + + ENTER(); + +- status = request_firmware(&pHddCtx->fw, pFileName, pHddCtx->parent_dev); ++ status = qca_request_firmware(&pHddCtx->fw, pFileName, pHddCtx->parent_dev); + + if(status || !pHddCtx->fw || !pHddCtx->fw->data) { + hddLog(VOS_TRACE_LEVEL_FATAL,"%s: CFG download failed",__func__); +@@ -12860,15 +13017,34 @@ static int hdd_driver_init( void) + \return - 0 for success, non zero for failure + + --------------------------------------------------------------------------*/ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) ++extern int wifi_setup_dt(void); ++extern void wifi_teardown_dt(void); ++#endif ++extern void extern_wifi_set_enable(int is_on); ++extern void sdio_reinit(void); ++ + #ifdef MODULE + static int __init hdd_module_init ( void) + { ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) ++ wifi_setup_dt(); ++#endif ++ extern_wifi_set_enable(0); ++ mdelay(200); ++ extern_wifi_set_enable(1); ++ mdelay(200); ++sdio_reinit(); ++ + return hdd_driver_init(); + } + #else /* #ifdef MODULE */ + static int __init hdd_module_init ( void) + { + /* Driver initialization is delayed to fwpath_changed_handler */ ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) ++wifi_teardown_dt(); ++#endif + return 0; + } + #endif /* #ifdef MODULE */ +diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c +index 66d741e..6e0e8d8 100644 +--- a/CORE/SERVICES/BMI/ol_fw.c ++++ b/CORE/SERVICES/BMI/ol_fw.c +@@ -118,7 +118,7 @@ static int ol_get_fw_files_for_target(struct ol_fw_files *pfw_files, + return 0; + } + #endif +- ++extern int qca_request_firmware(const struct firmware **firmware_p, const char *name,struct device *device); + #ifdef HIF_USB + static A_STATUS ol_usb_extra_initialization(struct ol_softc *scn); + #endif +@@ -164,7 +164,7 @@ static int ol_transfer_single_bin_file(struct ol_softc *scn, + __func__)); + } + +- if (request_firmware(&fw_entry, filename, scn->sc_osdev->device) != 0) ++ if (qca_request_firmware(&fw_entry, filename, scn->sc_osdev->device) != 0) + { + AR_DEBUG_PRINTF(ATH_DEBUG_ERR, + ("%s: Failed to get %s\n", +@@ -492,7 +492,7 @@ static int ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, + break; + } + +- if (request_firmware(&fw_entry, filename, scn->sc_osdev->device) != 0) ++ if (qca_request_firmware(&fw_entry, filename, scn->sc_osdev->device) != 0) + { + printk("%s: Failed to get %s\n", __func__, filename); + +@@ -506,7 +506,7 @@ static int ol_transfer_bin_file(struct ol_softc *scn, ATH_BIN_FILE file, + filename = scn->fw_files.board_data; + printk("%s: Trying to load default %s\n", + __func__, filename); +- if (request_firmware(&fw_entry, filename, ++ if (qca_request_firmware(&fw_entry, filename, + scn->sc_osdev->device) != 0) { + printk("%s: Failed to get %s\n", + __func__, filename); +diff --git a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c +index c99020e..6bafed8 100644 +--- a/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c ++++ b/CORE/SERVICES/HIF/sdio/linux/if_ath_sdio.c +@@ -234,12 +234,6 @@ ath_hif_sdio_remove(void *context, void *hif_handle) + { + ENTER(); + +- if (!sc) { +- VOS_TRACE(VOS_MODULE_ID_HIF, VOS_TRACE_LEVEL_ERROR, +- "Global SDIO context is NULL"); +- return A_ERROR; +- } +- + athdiag_procfs_remove(); + + #ifndef TARGET_DUMP_FOR_NON_QC_PLATFORM +diff --git a/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h b/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h +index 382e38c..234bc09 100644 +--- a/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h ++++ b/CORE/SERVICES/HIF/sdio/linux/native_sdio/include/hif_internal.h +@@ -112,7 +112,7 @@ struct hif_device { + A_BOOL swap_mailbox; + }; + +-#define HIF_DMA_BUFFER_SIZE (4 * 1024) ++#define HIF_DMA_BUFFER_SIZE (56 * 1024) + #define CMD53_FIXED_ADDRESS 1 + #define CMD53_INCR_ADDRESS 2 + +diff --git a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c +index d45ebd9..9fb1057 100644 +--- a/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c ++++ b/CORE/SERVICES/HIF/sdio/linux/native_sdio/src/hif.c +@@ -64,7 +64,8 @@ + ((request->request & HIF_WRITE)&& \ + (request->address >= 0x1000 && request->address < 0x1FFFF)) + #endif +-unsigned int mmcbusmode = 0; ++//unsigned int mmcbusmode = 0; ++unsigned int mmcbusmode = 5; + module_param(mmcbusmode, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + MODULE_PARM_DESC(mmcbusmode, "Set MMC driver Bus Mode: 1-SDR12, 2-SDR25, 3-SDR50, 4-DDR50, 5-SDR104"); + EXPORT_SYMBOL(mmcbusmode); +@@ -74,7 +75,9 @@ module_param(mmcbuswidth, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + MODULE_PARM_DESC(mmcbuswidth, "Set MMC driver Bus Width: 1-1Bit, 4-4Bit, 8-8Bit"); + EXPORT_SYMBOL(mmcbuswidth); + +-unsigned int mmcclock = 0; ++//unsigned int mmcclock = 0; ++//unsigned int mmcclock = 166666666; ++unsigned int mmcclock = 200000000; + module_param(mmcclock, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + MODULE_PARM_DESC(mmcclock, "Set MMC driver Clock value"); + EXPORT_SYMBOL(mmcclock); +@@ -95,7 +98,7 @@ unsigned int asyncintdelay = 2; + module_param(asyncintdelay, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + MODULE_PARM_DESC(asyncintdelay, "Delay clock count for aysnc interrupt, 2 is default, vaild values are 1 and 2"); + #else +-unsigned int asyncintdelay = 0; ++unsigned int asyncintdelay = 2; + module_param(asyncintdelay, uint, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + MODULE_PARM_DESC(asyncintdelay, "Delay clock count for aysnc interrupt, 0 is default, vaild values are 1 and 2"); + #endif +@@ -412,12 +415,6 @@ __HIFReadWrite(HIF_DEVICE *device, + tbuffer = device->dma_buffer; + /* copy the write data to the dma buffer */ + AR_DEBUG_ASSERT(length <= HIF_DMA_BUFFER_SIZE); +- if (length > HIF_DMA_BUFFER_SIZE) { +- AR_DEBUG_PRINTF(ATH_DEBUG_ERROR, +- ("AR6000: Invalid write length: %d\n", length)); +- status = A_EINVAL; +- break; +- } + memcpy(tbuffer, buffer, length); + bounced = TRUE; + } else { +@@ -440,12 +437,6 @@ __HIFReadWrite(HIF_DEVICE *device, + if (BUFFER_NEEDS_BOUNCE(buffer)) { + AR_DEBUG_ASSERT(device->dma_buffer != NULL); + AR_DEBUG_ASSERT(length <= HIF_DMA_BUFFER_SIZE); +- if (length > HIF_DMA_BUFFER_SIZE) { +- AR_DEBUG_PRINTF(ATH_DEBUG_ERROR, +- ("AR6000: Invalid read length: %d\n", length)); +- status = A_EINVAL; +- break; +- } + tbuffer = device->dma_buffer; + bounced = TRUE; + } else { +@@ -695,7 +686,7 @@ static int async_task(void *param) + complete_and_exit(&device->async_completion, 0); + return 0; + } +-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)) ++#if 1 + static A_INT32 IssueSDCommand(HIF_DEVICE *device, A_UINT32 opcode, A_UINT32 arg, A_UINT32 flags, A_UINT32 *resp) + { + struct mmc_command cmd; +@@ -719,6 +710,7 @@ static A_INT32 IssueSDCommand(HIF_DEVICE *device, A_UINT32 opcode, A_UINT32 arg, + return err; + } + #endif ++//extern int sdio_reset_comm(struct mmc_card *card); + A_STATUS ReinitSDIO(HIF_DEVICE *device) + { + A_INT32 err = 0; +@@ -733,10 +725,12 @@ A_STATUS ReinitSDIO(HIF_DEVICE *device) + host = card->host; + + AR_DEBUG_PRINTF(ATH_DEBUG_TRACE, ("AR6000: +ReinitSDIO \n")); ++ ++// err = sdio_reset_comm(card); ++#if 1 + sdio_claim_host(func); + + do { +-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)) + /* 2.6.32 kernel does part of the SDIO initalization upon resume */ + A_BOOL lt_2_6_32 = (LINUX_VERSION_CODEocr) { +- /* Issue CMD5, arg = 0 */ +- err = IssueSDCommand(device, SD_IO_SEND_OP_COND, 0, (MMC_RSP_R4 | MMC_CMD_BCR), &resp); +- if (err) { +- AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("ReinitSDIO: CMD5 failed : %d \n",err)); +- break; +- } +- host->ocr = resp; +- } + + /* Issue CMD5, arg = ocr. Wait till card is ready */ + for (i=0;i<100;i++) { +- err = IssueSDCommand(device, SD_IO_SEND_OP_COND, host->ocr, (MMC_RSP_R4 | MMC_CMD_BCR), &resp); ++ err = IssueSDCommand(device, SD_IO_SEND_OP_COND, 0, (MMC_RSP_R4 | MMC_CMD_BCR), &resp); + if (err) { + AR_DEBUG_PRINTF(ATH_DEBUG_ERR, ("ReinitSDIO: CMD5 failed : %d \n",err)); + break; +@@ -828,7 +813,7 @@ A_STATUS ReinitSDIO(HIF_DEVICE *device) + break; + } + } +-#endif ++ + /* Enable high speed */ + if (card->host->caps & MMC_CAP_SD_HIGHSPEED) { + AR_DEBUG_PRINTF(ATH_DEBUG_TRACE, ("ReinitSDIO: Set high speed mode\n")); +@@ -891,7 +876,7 @@ A_STATUS ReinitSDIO(HIF_DEVICE *device) + + sdio_release_host(func); + AR_DEBUG_PRINTF(ATH_DEBUG_TRACE, ("AR6000: -ReinitSDIO \n")); +- ++#endif + return (err) ? A_ERROR : A_OK; + } + +@@ -1320,6 +1305,7 @@ static int hifDeviceInserted(struct sdio_func *func, const struct sdio_device_id + /* + TODO: MMC SDIO3.0 Setting should also be modified in ReInit() function when Power Manage work. + */ ++#if 1 + { + A_UINT32 clock, clock_set = 12500000; + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0) +@@ -1578,7 +1564,7 @@ TODO: MMC SDIO3.0 Setting should also be modified in ReInit() function when Powe + + sdio_release_host(func); + } +- ++#endif + spin_lock_init(&device->lock); + + spin_lock_init(&device->asynclock); +@@ -2070,12 +2056,10 @@ static int hifDeviceSuspend(struct device *dev) + return -1; + } + } else { +- if (wma_suspend_target(temp_module, 0)) { +- AR_DEBUG_PRINTF(ATH_DEBUG_ERROR, ("PDEV Suspend Failed\n")); +- return -1; +- } ++ if (wma_suspend_target(temp_module, 0)) { ++ printk(KERN_ERR "wma_suspend_target failed.\n"); ++ } + } +- + if (pm_flag & MMC_PM_WAKE_SDIO_IRQ){ + AR_DEBUG_PRINTF(ATH_DEBUG_INFO, ("hifDeviceSuspend: wow enter\n")); + config = HIF_DEVICE_POWER_DOWN; +@@ -2295,9 +2279,7 @@ static HIF_DEVICE * + addHifDevice(struct sdio_func *func) + { + HIF_DEVICE *hifdevice = NULL; +-#if(LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0)) && !defined(WITH_BACKPORTS) + int ret = 0; +-#endif + ENTER(); + AR_DEBUG_ASSERT(func != NULL); + hifdevice = (HIF_DEVICE *)A_MALLOC(sizeof(HIF_DEVICE)); +@@ -2310,13 +2292,9 @@ addHifDevice(struct sdio_func *func) + hifdevice->func = func; + hifdevice->powerConfig = HIF_DEVICE_POWER_UP; + hifdevice->DeviceState = HIF_DEVICE_STATE_ON; +-#if(LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0)) && !defined(WITH_BACKPORTS) + ret = sdio_set_drvdata(func, hifdevice); ++ + EXIT("status %d", ret); +-#else +- sdio_set_drvdata(func, hifdevice); +- EXIT(); +-#endif + return hifdevice; + } + +-- +2.7.4 + diff --git a/packages/linux-drivers/amlogic/qca9377-aml/udev.d/99-qca9377-wireless.rules b/packages/linux-drivers/amlogic/qca9377-aml/udev.d/99-qca9377-wireless.rules new file mode 100644 index 0000000000..3515891f51 --- /dev/null +++ b/packages/linux-drivers/amlogic/qca9377-aml/udev.d/99-qca9377-wireless.rules @@ -0,0 +1 @@ +ACTION=="add|change", SUBSYSTEM=="net", ENV{INTERFACE}=="wlan*", ATTRS{vendor}=="0x0271", RUN+="/usr/bin/systemctl restart connman.service" 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"); diff --git a/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/package.mk b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/package.mk new file mode 100644 index 0000000000..909b97d768 --- /dev/null +++ b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/package.mk @@ -0,0 +1,40 @@ +################################################################################ +# 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="brcmfmac_sdio-firmware-all-aml" +PKG_VERSION="f9d6101" +PKG_SHA256="4676dfb1053795fd4c3c3ba59430da251d273202f016a9fdc13f22e12ac34947" +PKG_ARCH="arm aarch64" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/kszaq/brcmfmac_sdio-firmware-aml" +PKG_URL="https://github.com/kszaq/brcmfmac_sdio-firmware-aml/archive/$PKG_VERSION.tar.gz" +PKG_SOURCE_DIR="brcmfmac_sdio-firmware-aml-$PKG_VERSION*" +PKG_DEPENDS_TARGET="toolchain" +PKG_SECTION="firmware" +PKG_SHORTDESC="brcmfmac_sdio-firmware: firmware for brcm bluetooth chips used in some Amlogic based devices" +PKG_LONGDESC="Firmware for Broadcom Bluetooth devices used in some Amlogic based devices, and brcm-patchram-plus that downloads a patchram files in the HCD format to the Bluetooth based silicon and combo chips and other utility functions." + +post_makeinstall_target() { + cd $INSTALL/$(get_full_firmware_dir)/brcm + for f in *.hcd; do + ln -sr $f $(grep --text -o 'BCM\S*' $f).hcd 2>/dev/null || true + ln -sr $f $(grep --text -o 'BCM\S*' $f | cut -c4-).hcd 2>/dev/null || true + ln -sr $f $(echo $f | sed -r 's/[^.]*/\U&/') 2>/dev/null || true + ln -sr bcm4335_V0343.0353.hcd BCM4335A0.hcd 2>/dev/null || true + done +} diff --git a/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/patches/brcmfmac_sdio-firmware-aml-all-0001-install-firmware-in-usr.patch b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/patches/brcmfmac_sdio-firmware-aml-all-0001-install-firmware-in-usr.patch new file mode 100644 index 0000000000..254be5a23c --- /dev/null +++ b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/patches/brcmfmac_sdio-firmware-aml-all-0001-install-firmware-in-usr.patch @@ -0,0 +1,14 @@ +diff -Naur a/Makefile b/Makefile +--- a/Makefile 2014-10-07 14:00:34.000000000 -0700 ++++ b/Makefile 2016-12-06 11:24:34.855522455 -0800 +@@ -15,8 +15,8 @@ + install: + mkdir -p $(DESTDIR)/usr/bin + cp -P $(PROG) $(DESTDIR)/usr/bin +- mkdir -p $(DESTDIR)/lib/firmware +- cp -PR firmware/brcm $(DESTDIR)/lib/firmware/ ++ mkdir -p $(DESTDIR)/usr/lib/kernel-overlays/base/lib/firmware ++ cp -PR firmware/brcm $(DESTDIR)/usr/lib/kernel-overlays/base/lib/firmware/ + + clean: + rm -f $(PROG) diff --git a/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/system.d/brcmfmac_sdio-firmware-aml.service b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/system.d/brcmfmac_sdio-firmware-aml.service new file mode 100644 index 0000000000..d9353648f3 --- /dev/null +++ b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/system.d/brcmfmac_sdio-firmware-aml.service @@ -0,0 +1,8 @@ +[Unit] +Description=Broadcom sdio firmware update + +[Service] +Type=simple +RemainAfterExit=yes +EnvironmentFile=/usr/share/bttty.conf +ExecStart=/usr/bin/hciattach -n -s 115200 ${BTTTY} bcm43xx 2000000 diff --git a/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/system.d/brcmfmac_sdio-firmware@.service b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/system.d/brcmfmac_sdio-firmware@.service new file mode 100644 index 0000000000..0d5fa2cc95 --- /dev/null +++ b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/system.d/brcmfmac_sdio-firmware@.service @@ -0,0 +1,8 @@ +[Unit] +Description=Broadcom sdio firmware update for %I + +[Service] +Type=simple +RemainAfterExit=yes +EnvironmentFile=/usr/share/bttty.conf +ExecStart=/usr/bin/brcm_patchram_plus --patchram /usr/lib/kernel-overlays/base/lib/firmware/brcm/%I.hcd --baudrate 2000000 --use_baudrate_for_download ${BTTTY} --enable_hci --no2bytes --tosleep=50000 diff --git a/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/udev.d/80-brcmfmac_sdio.rules b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/udev.d/80-brcmfmac_sdio.rules new file mode 100644 index 0000000000..f119bd2779 --- /dev/null +++ b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-all-aml/udev.d/80-brcmfmac_sdio.rules @@ -0,0 +1,12 @@ +################################################################################ +# udev rules file for loading brcmfmac_sdio-firmware +################################################################################ + +### Broadcom bcm43362/bcm20710a1 bluetooth device +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa962", ACTION=="add", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware@bcm20710a1.service", GOTO="end" + +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ACTION=="add", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware-aml.service" + +LABEL="end" diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-aml/package.mk b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/package.mk similarity index 100% rename from packages/linux-firmware/brcmfmac_sdio-firmware-aml/package.mk rename to packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/package.mk diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-aml/patches/brcmfmac_sdio-firmware-aml-0001-install-firmware-to-FWDIR.patch b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/patches/brcmfmac_sdio-firmware-aml-0001-install-firmware-to-FWDIR.patch similarity index 100% rename from packages/linux-firmware/brcmfmac_sdio-firmware-aml/patches/brcmfmac_sdio-firmware-aml-0001-install-firmware-to-FWDIR.patch rename to packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/patches/brcmfmac_sdio-firmware-aml-0001-install-firmware-to-FWDIR.patch diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-aml/system.d/brcmfmac_sdio-firmware@.service b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/system.d/brcmfmac_sdio-firmware@.service similarity index 100% rename from packages/linux-firmware/brcmfmac_sdio-firmware-aml/system.d/brcmfmac_sdio-firmware@.service rename to packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/system.d/brcmfmac_sdio-firmware@.service diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-aml/udev.d/80-brcmfmac_sdio.rules b/packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/udev.d/80-brcmfmac_sdio.rules similarity index 100% rename from packages/linux-firmware/brcmfmac_sdio-firmware-aml/udev.d/80-brcmfmac_sdio.rules rename to packages/linux-firmware/amlogic/brcmfmac_sdio-firmware-aml/udev.d/80-brcmfmac_sdio.rules diff --git a/packages/linux-firmware/amlogic/qca9377-firmware-aml/package.mk b/packages/linux-firmware/amlogic/qca9377-firmware-aml/package.mk new file mode 100644 index 0000000000..41c161248b --- /dev/null +++ b/packages/linux-firmware/amlogic/qca9377-firmware-aml/package.mk @@ -0,0 +1,39 @@ +################################################################################ +# 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="qca9377-firmware-aml" +PKG_VERSION="1.0.0" +PKG_SHA256="239b10d6fb006f566aa20638a81f98a447fa222e6b74bed2f6039a75b8ccd422" +PKG_ARCH="arm aarch64" +PKG_LICENSE="BSD-3c" +PKG_SITE="http://linode.boundarydevices.com/repos/apt/ubuntu-relx/pool/main/q/qca-firmware/" +PKG_URL="http://linode.boundarydevices.com/repos/apt/ubuntu-relx/pool/main/q/qca-firmware/qca-firmware_${PKG_VERSION}.orig.tar.gz" +PKG_SOURCE_DIR="qca-firmware-$PKG_VERSION" +PKG_DEPENDS_TARGET="toolchain" +PKG_SECTION="firmware" +PKG_SHORTDESC="qca9377 Linux firmware" +PKG_LONGDESC="qca9377 Linux firmware" +PKG_TOOLCHAIN="manual" + +makeinstall_target() { + mkdir -p $INSTALL/$(get_full_firmware_dir) + cp -a *.bin $INSTALL/$(get_full_firmware_dir) + cp -a qca $INSTALL/$(get_full_firmware_dir) + cp -a wlan $INSTALL/$(get_full_firmware_dir) + cp LICENSE.TXT $INSTALL/$(get_full_firmware_dir)/LICENSE.qca +} diff --git a/packages/linux-firmware/amlogic/qca9377-firmware-aml/system.d/qca9377-firmware-aml.service b/packages/linux-firmware/amlogic/qca9377-firmware-aml/system.d/qca9377-firmware-aml.service new file mode 100644 index 0000000000..be1f8a9e57 --- /dev/null +++ b/packages/linux-firmware/amlogic/qca9377-firmware-aml/system.d/qca9377-firmware-aml.service @@ -0,0 +1,8 @@ +[Unit] +Description=QCA Bluetooth firmware service +ConditionPathExists=/dev/ttyS1 + +[Service] +Type=simple +RemainAfterExit=yes +ExecStart=/usr/bin/hciattach -n -s 115200 /dev/ttyS1 qca 2000000 diff --git a/packages/linux-firmware/amlogic/qca9377-firmware-aml/udev.d/80-qca9377-firmware-aml.rules b/packages/linux-firmware/amlogic/qca9377-firmware-aml/udev.d/80-qca9377-firmware-aml.rules new file mode 100644 index 0000000000..d3dd577bf2 --- /dev/null +++ b/packages/linux-firmware/amlogic/qca9377-firmware-aml/udev.d/80-qca9377-firmware-aml.rules @@ -0,0 +1,6 @@ +################################################################################ +# udev rules file for loading qca9377-firmware-aml +################################################################################ + +ACTION=="add", SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x0271", ATTRS{device}=="0x0701", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="qca9377-firmware-aml.service" diff --git a/packages/linux-firmware/wlan-firmware-aml/package.mk b/packages/linux-firmware/amlogic/wlan-firmware-aml/package.mk similarity index 100% rename from packages/linux-firmware/wlan-firmware-aml/package.mk rename to packages/linux-firmware/amlogic/wlan-firmware-aml/package.mk diff --git a/packages/linux-firmware/rtl8723bs_bt/package.mk b/packages/linux-firmware/rtl8723bs_bt/package.mk new file mode 100644 index 0000000000..4a4080870c --- /dev/null +++ b/packages/linux-firmware/rtl8723bs_bt/package.mk @@ -0,0 +1,29 @@ +################################################################################ +# 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="rtl8723bs_bt" +PKG_VERSION="09eb91f" +PKG_SHA256="4bb8483c4a14a9e0dfc4a6ddca18486caab5f361be2441b91e9e2a399ca9f33e" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/lwfinger/rtl8723bs_bt" +PKG_URL="https://github.com/lwfinger/rtl8723bs_bt/archive/$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_SECTION="firmware" +PKG_SHORTDESC="rtl8723bs_bt Linux firmware" +PKG_LONGDESC="rtl8723bs_bt Linux firmware" diff --git a/packages/linux-firmware/rtl8723bs_bt/patches/rtl8723bs_bt-001-Makefile.patch b/packages/linux-firmware/rtl8723bs_bt/patches/rtl8723bs_bt-001-Makefile.patch new file mode 100644 index 0000000000..e4296c08e2 --- /dev/null +++ b/packages/linux-firmware/rtl8723bs_bt/patches/rtl8723bs_bt-001-Makefile.patch @@ -0,0 +1,26 @@ +diff --git a/Makefile b/Makefile +index 52506b9..fd196f3 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,12 +1,15 @@ + rtk_hciattach:hciattach.c hciattach_rtk.o +- cc -o rtk_hciattach hciattach.c hciattach_rtk.o ++ $(CC) $(CFLAGS) $(LDFLAGS) -o rtk_hciattach hciattach.c hciattach_rtk.o + + hciattach_rtk.o:hciattach_rtk.c +- cc -c hciattach_rtk.c ++ $(CC) $(CFLAGS) $(LDFLAGS) -c hciattach_rtk.c + +-clean: +- rm -f *.o rtk_hciattach ++all: ++ rtk_hciattach + + install: +- mkdir -p /lib/firmware/rtl_bt +- cp -p rtlbt_* /lib/firmware/rtl_bt/. ++ mkdir -p $(DESTDIR)/usr/bin ++ cp -P rtk_hciattach $(DESTDIR)/usr/bin ++ ++clean: ++ rm -f *.o rtk_hciattach diff --git a/packages/linux-firmware/rtl8723bs_bt/patches/rtl8723bs_bt-002-firmware_path.patch b/packages/linux-firmware/rtl8723bs_bt/patches/rtl8723bs_bt-002-firmware_path.patch new file mode 100644 index 0000000000..cc57fbe371 --- /dev/null +++ b/packages/linux-firmware/rtl8723bs_bt/patches/rtl8723bs_bt-002-firmware_path.patch @@ -0,0 +1,20 @@ +--- a/hciattach_rtk.c 2016-07-18 00:47:52.000000000 +0100 ++++ b/hciattach_rtk.c 2017-12-15 04:27:39.481299996 +0000 +@@ -1419,7 +1419,7 @@ + int ret = 0; + struct stat st; + +- ret = sprintf(firmware_file_name, FIRMWARE_DIRECTORY"rtlbt_fw"); ++ ret = sprintf(firmware_file_name, FIRMWARE_DIRECTORY"rtl8723b_fw"); + + return firmware_file_name; + } +@@ -1504,7 +1504,7 @@ + int ret = 0; + int i = 0; + +- ret = sprintf(bt_config_file_name, BT_CONFIG_DIRECTORY"rtlbt_config"); ++ ret = sprintf(bt_config_file_name, BT_CONFIG_DIRECTORY"rtl8723b_config"); + if (stat(bt_config_file_name, &st) < 0) { + RS_ERR("can't access bt config file:%s, errno:%d\n", bt_config_file_name, errno); + return -1; diff --git a/packages/linux-firmware/rtl8723bs_bt/system.d/rtl8723bs_bt-firmware.service b/packages/linux-firmware/rtl8723bs_bt/system.d/rtl8723bs_bt-firmware.service new file mode 100644 index 0000000000..44f74a35c4 --- /dev/null +++ b/packages/linux-firmware/rtl8723bs_bt/system.d/rtl8723bs_bt-firmware.service @@ -0,0 +1,8 @@ +[Unit] +Description=Realtek sdio firmware update + +[Service] +Type=simple +RemainAfterExit=yes +EnvironmentFile=/usr/share/bttty.conf +ExecStart=/usr/bin/rtk_hciattach -n -s 115200 ${BTTTY} rtk_h5 2000000 diff --git a/packages/linux-firmware/rtl8723bs_bt/udev.d/80-rtl8723_bt.rules b/packages/linux-firmware/rtl8723bs_bt/udev.d/80-rtl8723_bt.rules new file mode 100644 index 0000000000..742f49cd37 --- /dev/null +++ b/packages/linux-firmware/rtl8723bs_bt/udev.d/80-rtl8723_bt.rules @@ -0,0 +1,9 @@ +################################################################################ +# udev rules file for loading rtl8723bs_bt-firmware +################################################################################ + +ACTION!="add", GOTO="end" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x024c", ATTRS{device}=="0xb723", TAG+="systemd", ENV{SYSTEMD_WANTS}+="rtl8723bs_bt-firmware.service" +GOTO="end" + +LABEL="end" diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 42c5e33639..73254a30cb 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -39,8 +39,8 @@ case "$LINUX" in PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET aml-dtbtools:host" ;; amlogic-3.14) - PKG_VERSION="2e193b8" - PKG_SHA256="cc6139490d461c1c5c0fad1003d3f94153272a11db9a786362fb2a0daa04b926" + PKG_VERSION="da53aa7" + PKG_SHA256="f79650b9c31f668e48d7a8bd6c419deed11ba8ea728a613b902445ad8feefa89" PKG_URL="https://github.com/LibreELEC/linux-amlogic/archive/$PKG_VERSION.tar.gz" PKG_SOURCE_DIR="$PKG_NAME-amlogic-$PKG_VERSION*" PKG_PATCH_DIRS="amlogic-3.14" diff --git a/projects/Odroid_C2/linux/linux.aarch64.conf b/projects/Odroid_C2/linux/linux.aarch64.conf index 98ed9bf851..8fd3e42e8e 100644 --- a/projects/Odroid_C2/linux/linux.aarch64.conf +++ b/projects/Odroid_C2/linux/linux.aarch64.conf @@ -1083,6 +1083,7 @@ CONFIG_POST_PROCESS_MANAGER_PPSCALER=y # Amlogic Wifi Driver # # CONFIG_AM_WIFI is not set +# CONFIG_AM_WIFI_DUMMY is not set CONFIG_AML_POWER_RESET=y # CONFIG_M8_POWER_RESET is not set CONFIG_GXBB_POWER_RESET=y diff --git a/projects/S905/filesystem/usr/lib/modules-load.d/wifi_dummy.conf b/projects/S905/filesystem/usr/lib/modules-load.d/wifi_dummy.conf new file mode 100644 index 0000000000..e3a06c7644 --- /dev/null +++ b/projects/S905/filesystem/usr/lib/modules-load.d/wifi_dummy.conf @@ -0,0 +1 @@ +wifi_dummy diff --git a/projects/S905/filesystem/usr/share/bootloader/update.sh b/projects/S905/filesystem/usr/share/bootloader/update.sh index 697b6c9222..044911e1b9 100755 --- a/projects/S905/filesystem/usr/share/bootloader/update.sh +++ b/projects/S905/filesystem/usr/share/bootloader/update.sh @@ -68,11 +68,11 @@ for arg in $(cat /proc/cmdline); do case $boot in /dev/system) dd if=/dev/zero of=/dev/dtb bs=256k count=1 status=none - dd if=$UPDATE_DTB_SOURCE of=/dev/dtb bs=256k status=none + dd if="$UPDATE_DTB_SOURCE" of=/dev/dtb bs=256k status=none ;; /dev/mmc*|LABEL=*) mount -o rw,remount $BOOT_ROOT - cp -f $UPDATE_DTB_SOURCE "$BOOT_ROOT/dtb.img" + cp -f "$UPDATE_DTB_SOURCE" "$BOOT_ROOT/dtb.img" ;; esac fi diff --git a/projects/S905/filesystem/usr/share/bttty.conf b/projects/S905/filesystem/usr/share/bttty.conf new file mode 100644 index 0000000000..9b8c4a20e1 --- /dev/null +++ b/projects/S905/filesystem/usr/share/bttty.conf @@ -0,0 +1 @@ +BTTTY="/dev/ttyS1" diff --git a/projects/S905/linux/linux.aarch64.conf b/projects/S905/linux/linux.aarch64.conf index 015f2dab6e..a37a2505a1 100644 --- a/projects/S905/linux/linux.aarch64.conf +++ b/projects/S905/linux/linux.aarch64.conf @@ -1055,6 +1055,7 @@ CONFIG_POST_PROCESS_MANAGER_PPSCALER=y # Amlogic Wifi Driver # CONFIG_AM_WIFI=y +CONFIG_AM_WIFI_DUMMY=m CONFIG_BCMDHD_USE_STATIC_BUF=y CONFIG_AML_POWER_RESET=y # CONFIG_M8_POWER_RESET is not set diff --git a/projects/S905/options b/projects/S905/options index 8c3abe024a..4d0d65fca4 100644 --- a/projects/S905/options +++ b/projects/S905/options @@ -113,12 +113,15 @@ # Space separated list is supported, # e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2" ADDITIONAL_DRIVERS="RTL8192CU RTL8192DU RTL8192EU RTL8812AU gpu-aml \ - ap6xxx mt7601u mt7603u qca9377 RTL8188EU RTL8189ES RTL8189FS RTL8723BS RTL8723DS RTL8822BU ssv6xxx" + ap6xxx-aml mt7601u-aml mt7603u-aml qca9377-aml \ + RTL8188EU-aml RTL8189ES-aml RTL8189FS-aml RTL8723BS-aml \ + RTL8723DS-aml RTL8822BU-aml ssv6xxx-aml" + # additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware) # Space separated list is supported, # e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware" - FIRMWARE="misc-firmware wlan-firmware dvb-firmware brcmfmac_sdio-firmware-aml rtl8723bs_bt qca9377-firmware" + FIRMWARE="misc-firmware wlan-firmware dvb-firmware brcmfmac_sdio-firmware-all-aml rtl8723bs_bt qca9377-firmware-aml" # build and install ATV IR remote support (yes / no) ATVCLIENT_SUPPORT="no" diff --git a/projects/S905/patches/linux/linux-0004-put_extended_cmdline_at_end.patch b/projects/S905/patches/linux/linux-0004-put_extended_cmdline_at_end.patch deleted file mode 100644 index b6f352bba6..0000000000 --- a/projects/S905/patches/linux/linux-0004-put_extended_cmdline_at_end.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 561186ae0cd8814a8d518eed424ae453a1dae1d3 Mon Sep 17 00:00:00 2001 -From: kszaq -Date: Mon, 27 Jun 2016 01:37:55 +0200 -Subject: [PATCH] drivers/of: put extended cmdline at the end - ---- - drivers/of/fdt.c | 16 ++++------------ - 1 file changed, 4 insertions(+), 12 deletions(-) - -diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c -index 2e9f7d96617..a29163d21f4 100644 ---- a/drivers/of/fdt.c -+++ b/drivers/of/fdt.c -@@ -894,20 +894,12 @@ int __init early_init_dt_scan_chosen(unsigned long node, const char *uname, - p = (char *)of_get_flat_dt_prop(node, "bootargs", &l); - - if (p != NULL && l > 0) { -- if (concat_cmdline) { -- int cmdline_len; -- int copy_len; -- strlcat(cmdline, " ", COMMAND_LINE_SIZE); -- cmdline_len = strlen(cmdline); -- copy_len = COMMAND_LINE_SIZE - cmdline_len - 1; -- copy_len = min((int)l, copy_len); -- strncpy(cmdline + cmdline_len, p, copy_len); -- cmdline[cmdline_len + copy_len] = '\0'; -- } else { -- strlcpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE)); -- } -+ strlcpy(cmdline, p, min((int)l, COMMAND_LINE_SIZE)); - } - -+ if (concat_cmdline) -+ strlcat(cmdline, config_cmdline, COMMAND_LINE_SIZE); -+ - pr_debug("Command line is: %s\n", (char*)data); - - /* break now */ diff --git a/projects/WeTek_Hub/linux/linux.aarch64.conf b/projects/WeTek_Hub/linux/linux.aarch64.conf index 9282ef4406..17399babfb 100644 --- a/projects/WeTek_Hub/linux/linux.aarch64.conf +++ b/projects/WeTek_Hub/linux/linux.aarch64.conf @@ -1074,6 +1074,7 @@ CONFIG_POST_PROCESS_MANAGER_PPSCALER=y # Amlogic Wifi Driver # CONFIG_AM_WIFI=y +# CONFIG_AM_WIFI_DUMMY is not set # CONFIG_BCMDHD_USE_STATIC_BUF is not set CONFIG_AML_POWER_RESET=y # CONFIG_M8_POWER_RESET is not set diff --git a/projects/WeTek_Play_2/linux/linux.aarch64.conf b/projects/WeTek_Play_2/linux/linux.aarch64.conf index cd213754e3..3bc91eace3 100644 --- a/projects/WeTek_Play_2/linux/linux.aarch64.conf +++ b/projects/WeTek_Play_2/linux/linux.aarch64.conf @@ -1074,6 +1074,7 @@ CONFIG_POST_PROCESS_MANAGER_PPSCALER=y # Amlogic Wifi Driver # CONFIG_AM_WIFI=y +# CONFIG_AM_WIFI_DUMMY is not set # CONFIG_BCMDHD_USE_STATIC_BUF is not set CONFIG_AML_POWER_RESET=y # CONFIG_M8_POWER_RESET is not set