From a8ee68af8f7b534089ac63ebb7e7f4f8d5c32027 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Fri, 11 Nov 2016 19:09:15 +0100 Subject: [PATCH] Wireless driver for Opi Zero - fixed loading path /lib/firmware, patch for DHD driver to prevent wrong detection, extra uboot config for OPI zero .... with one problem to solve. Module failing to load at first try ... workaround installed until this is solved. --- config/boards/orangepizero.conf | 4 ++-- .../bcmdhd-wrong-autodetection.patch | 12 ++++++++++ .../sun8i-default/wireless-opi-zero.patch | 14 +++++------ .../u-boot-default/orange_pi_zero.patch | 23 +++++++++++++++++++ patch/u-boot/u-boot-dev/orange_pi_zero.patch | 23 +++++++++++++++++++ 5 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 patch/kernel/sun8i-default/bcmdhd-wrong-autodetection.patch create mode 100644 patch/u-boot/u-boot-default/orange_pi_zero.patch create mode 100644 patch/u-boot/u-boot-dev/orange_pi_zero.patch diff --git a/config/boards/orangepizero.conf b/config/boards/orangepizero.conf index 138b0a8a7c..46ff7a6462 100644 --- a/config/boards/orangepizero.conf +++ b/config/boards/orangepizero.conf @@ -1,8 +1,8 @@ # H2+ quad core 256/512MB SoC Wi-Fi/Ethernet BOARD_NAME="Orange Pi Zero" LINUXFAMILY=sun8i -BOOTCONFIG=FriendlyARM_NanoPi_NEO_defconfig -MODULES="#gpio_sunxi #w1-sunxi #w1-gpio #w1-therm #sunxi-cir xradio" +BOOTCONFIG=orangepi_zero_defconfig +MODULES="#gpio_sunxi #w1-sunxi #w1-gpio #w1-therm #sunxi-cir xradio_wlan xradio_wlan" MODULES_NEXT="" CPUMIN=240000 CPUMAX=1200000 diff --git a/patch/kernel/sun8i-default/bcmdhd-wrong-autodetection.patch b/patch/kernel/sun8i-default/bcmdhd-wrong-autodetection.patch new file mode 100644 index 0000000000..a21e3dc1eb --- /dev/null +++ b/patch/kernel/sun8i-default/bcmdhd-wrong-autodetection.patch @@ -0,0 +1,12 @@ +diff --git a/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c b/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c +index 19e0018..e427b77 100755 +--- a/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c ++++ b/drivers/net/wireless/bcmdhd/bcmsdh_sdmmc_linux.c +@@ -219,7 +219,6 @@ 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) }, + { /* end: all zeroes */ }, + }; + diff --git a/patch/kernel/sun8i-default/wireless-opi-zero.patch b/patch/kernel/sun8i-default/wireless-opi-zero.patch index efc492fdb2..4d6c286a25 100644 --- a/patch/kernel/sun8i-default/wireless-opi-zero.patch +++ b/patch/kernel/sun8i-default/wireless-opi-zero.patch @@ -127,7 +127,7 @@ index 0000000..235d117 +ccflags-y += -DCONFIG_XRADIO_SUSPEND_POWER_OFF +# Use vfs for firmware load when request_firmware +# can't work on other platform. -+ccflags-y += -DUSE_VFS_FIRMWARE ++# ccflags-y += -DUSE_VFS_FIRMWARE + +# Extra IE for probe response from upper layer is needed in P2P GO +# For offloading probe response to FW, the extra IE must be included @@ -7854,13 +7854,13 @@ index 0000000..4816322 + +#define XR819_HW_REV0 (8190) +#ifdef USE_VFS_FIRMWARE -+#define XR819_BOOTLOADER ("/system/etc/firmware/boot_xr819.bin") -+#define XR819_FIRMWARE ("/system/etc/firmware/fw_xr819.bin") -+#define XR819_SDD_FILE ("/system/etc/firmware/sdd_xr819.bin") ++#define XR819_BOOTLOADER ("/lib/firmware/xr819/boot_xr819.bin") ++#define XR819_FIRMWARE ("/lib/firmware/xr819/fw_xr819.bin") ++#define XR819_SDD_FILE ("/lib/firmware/xr819/sdd_xr819.bin") +#else -+#define XR819_BOOTLOADER ("boot_xr819.bin") -+#define XR819_FIRMWARE ("fw_xr819.bin") -+#define XR819_SDD_FILE ("sdd_xr819.bin") ++#define XR819_BOOTLOADER ("xr819/boot_xr819.bin") ++#define XR819_FIRMWARE ("xr819/fw_xr819.bin") ++#define XR819_SDD_FILE ("xr819/sdd_xr819.bin") +#endif + +#define SDD_PTA_CFG_ELT_ID 0xEB diff --git a/patch/u-boot/u-boot-default/orange_pi_zero.patch b/patch/u-boot/u-boot-default/orange_pi_zero.patch new file mode 100644 index 0000000000..41ff88e2cc --- /dev/null +++ b/patch/u-boot/u-boot-default/orange_pi_zero.patch @@ -0,0 +1,23 @@ +diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig +new file mode 100755 +index 0000000..a62d565 +--- /dev/null ++++ b/configs/orangepi_zero_defconfig +@@ -0,0 +1,16 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_MACH_SUN8I_H3=y ++CONFIG_DRAM_CLK=408 ++CONFIG_DRAM_ZQ=3881979 ++CONFIG_DRAM_ODT_EN=y ++CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-one" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL=y ++# CONFIG_CMD_IMLS is not set ++# CONFIG_CMD_FLASH is not set ++# CONFIG_CMD_FPGA is not set ++CONFIG_SUN8I_EMAC=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_SYS_CLK_FREQ=480000000 ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 +\ No newline at end of file diff --git a/patch/u-boot/u-boot-dev/orange_pi_zero.patch b/patch/u-boot/u-boot-dev/orange_pi_zero.patch new file mode 100644 index 0000000000..41ff88e2cc --- /dev/null +++ b/patch/u-boot/u-boot-dev/orange_pi_zero.patch @@ -0,0 +1,23 @@ +diff --git a/configs/orangepi_zero_defconfig b/configs/orangepi_zero_defconfig +new file mode 100755 +index 0000000..a62d565 +--- /dev/null ++++ b/configs/orangepi_zero_defconfig +@@ -0,0 +1,16 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_MACH_SUN8I_H3=y ++CONFIG_DRAM_CLK=408 ++CONFIG_DRAM_ZQ=3881979 ++CONFIG_DRAM_ODT_EN=y ++CONFIG_DEFAULT_DEVICE_TREE="sun8i-h3-orangepi-one" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL=y ++# CONFIG_CMD_IMLS is not set ++# CONFIG_CMD_FLASH is not set ++# CONFIG_CMD_FPGA is not set ++CONFIG_SUN8I_EMAC=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_SYS_CLK_FREQ=480000000 ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 +\ No newline at end of file