mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-08-10 03:17:49 +00:00
ap6xxx-aml: new driver package
This commit is contained in:
parent
9155531c28
commit
57da0eda10
@ -0,0 +1 @@
|
||||
options dhd firmware_path=/usr/lib/firmware/brcm/ nvram_path=/usr/lib/firmware/brcm/
|
48
packages/linux-drivers/amlogic/ap6xxx-aml/package.mk
Normal file
48
packages/linux-drivers/amlogic/ap6xxx-aml/package.mk
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
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 \;
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
From fb537b584b78c0407c663ed4076e4ff79b36a14c Mon Sep 17 00:00:00 2001
|
||||
From: kszaq <kszaquitto@gmail.com>
|
||||
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
|
||||
|
@ -0,0 +1,53 @@
|
||||
From cd000f263d8433f2a1a29d7e722cd57e47b30fc5 Mon Sep 17 00:00:00 2001
|
||||
From: kszaq <kszaquitto@gmail.com>
|
||||
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
|
||||
|
@ -0,0 +1,25 @@
|
||||
From 24affe6bf59dfd6fd9b62b3118e4b2b9e555181a Mon Sep 17 00:00:00 2001
|
||||
From: kszaq <kszaquitto@gmail.com>
|
||||
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
|
||||
|
@ -0,0 +1,37 @@
|
||||
From b9edf37b14f64a8bed5586898e3503322a5b8bfc Mon Sep 17 00:00:00 2001
|
||||
From: kszaq <kszaquitto@gmail.com>
|
||||
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
|
||||
|
Loading…
x
Reference in New Issue
Block a user