diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac_sdio-firmware-aml@.service b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac_sdio-firmware-aml@.service new file mode 100644 index 0000000000..e2638ad36a --- /dev/null +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac_sdio-firmware-aml@.service @@ -0,0 +1,8 @@ +[Unit] +Description=Broadcom sdio firmware update for %I +ConditionPathExists=/dev/ttyS1 + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/brcm_patchram_plus --patchram /lib/firmware/brcm/%I.hcd --baudrate 3000000 --use_baudrate_for_download /dev/ttyS1 --enable_hci --no2bytes --tosleep=50000 diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac_sdio-firmware@.service b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac_sdio-firmware-imx@.service similarity index 100% rename from packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac_sdio-firmware@.service rename to packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac_sdio-firmware-imx@.service diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/udev.d/80-brcmfmac_sdio.rules b/packages/linux-firmware/brcmfmac_sdio-firmware/udev.d/80-brcmfmac_sdio.rules index fd7ada3e68..68e775eedc 100644 --- a/packages/linux-firmware/brcmfmac_sdio-firmware/udev.d/80-brcmfmac_sdio.rules +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/udev.d/80-brcmfmac_sdio.rules @@ -5,6 +5,7 @@ ACTION!="add", GOTO="end" SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4329", GOTO="begin" SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4330", GOTO="begin" +SUBSYSTEMS=="sdio", ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa962", GOTO="begin" GOTO="end" LABEL="begin" ### Brodcom bcm4330 bluetooth device @@ -13,7 +14,12 @@ ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4330", \ ### Brodcom bcm4329 bluetooth device ATTRS{vendor}=="0x02d0", ATTRS{device}=="0x4329", \ ENV{brcm_device}="bcm4329" +### Brodcom bcm43362/bcm20710a1 bluetooth device +ATTRS{vendor}=="0x02d0", ATTRS{device}=="0xa962", \ + ENV{brcm_device}="bcm20710a1" -ENV{brcm_device}=="?*", ACTION=="add", \ - TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware@$env{brcm_device}.service" +ENV{brcm_device}=="bcm43*", ACTION=="add", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware-imx@$env{brcm_device}.service" +ENV{brcm_device}=="bcm20*", ACTION=="add", \ + TAG+="systemd", ENV{SYSTEMD_WANTS}+="brcmfmac_sdio-firmware-aml@$env{brcm_device}.service" LABEL="end" diff --git a/projects/WeTek_Play/filesystem/lib/firmware/brcm/bcm20710a1.hcd b/projects/WeTek_Play/filesystem/lib/firmware/brcm/bcm20710a1.hcd new file mode 100644 index 0000000000..ebfedd9f2d Binary files /dev/null and b/projects/WeTek_Play/filesystem/lib/firmware/brcm/bcm20710a1.hcd differ diff --git a/projects/WeTek_Play/linux/linux.arm.conf b/projects/WeTek_Play/linux/linux.arm.conf index 41f4a5cf2e..46ed648427 100644 --- a/projects/WeTek_Play/linux/linux.arm.conf +++ b/projects/WeTek_Play/linux/linux.arm.conf @@ -855,13 +855,19 @@ CONFIG_BT_HIDP=m # Bluetooth device drivers # CONFIG_BT_HCIBTUSB=m -# CONFIG_BT_HCIBTSDIO is not set -# CONFIG_BT_HCIUART is not set +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +# CONFIG_BT_HCIUART_3WIRE is not set CONFIG_BT_HCIBCM203X=m CONFIG_BT_HCIBPA10X=m CONFIG_BT_HCIBFUSB=m # CONFIG_BT_HCIVHCI is not set -# CONFIG_BT_MRVL is not set +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m CONFIG_BT_ATH3K=m # CONFIG_AF_RXRPC is not set CONFIG_WIRELESS=y diff --git a/projects/WeTek_Play/options b/projects/WeTek_Play/options index 7805aac340..d932ea979d 100644 --- a/projects/WeTek_Play/options +++ b/projects/WeTek_Play/options @@ -122,7 +122,7 @@ # 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" + FIRMWARE="misc-firmware wlan-firmware dvb-firmware brcmfmac_sdio-firmware" # build and install ATV IR remote support (yes / no) ATVCLIENT_SUPPORT="no" diff --git a/projects/WeTek_Play/patches/linux/120-enable_bluetooth.patch b/projects/WeTek_Play/patches/linux/120-enable_bluetooth.patch new file mode 100644 index 0000000000..0b92bc2eb8 --- /dev/null +++ b/projects/WeTek_Play/patches/linux/120-enable_bluetooth.patch @@ -0,0 +1,49 @@ +diff --git a/arch/arm/boot/dts/amlogic/wetek_play.dtd b/arch/arm/boot/dts/amlogic/wetek_play.dtd +old mode 100755 +new mode 100644 +index ce4f2e8..e53f762 +--- a/arch/arm/boot/dts/amlogic/wetek_play.dtd ++++ b/arch/arm/boot/dts/amlogic/wetek_play.dtd +@@ -231,6 +231,8 @@ void root_func(){ + port_name = "uart_a"; + status = "okay"; + dev_name = "uart_0"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&a_uart_pins>; + }; + + //$$ DEVICE="uart_1" +@@ -256,7 +258,7 @@ void root_func(){ + uart_3{ + compatible = "amlogic,aml_uart"; + port_name = "uart_d"; +- status = "ok"; ++ status = "disabled"; + dev_name = "uart_3"; + }; + +@@ -267,9 +269,11 @@ void root_func(){ + bt-dev{ + compatible = "amlogic,bt-dev"; + dev_name = "bt-dev"; +- gpio_reset = "GPIOE_11"; ++ gpio_wake = "GPIOX_10"; + gpio_en = "GPIOE_11"; + status = "ok"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&btpcm_pins>; + }; + + /// *************************************************************************************** +@@ -985,6 +989,11 @@ void root_func(){ + amlogic,pins = "GPIOX_17","GPIOX_18","GPIOX_19","GPIOX_20"; + }; + ++ btpcm_pins:btpcm_pins{ ++ amlogic,setmask = <3 0x78000000>; ++ amlogic,pins = "GPIOX_4","GPIOX_5","GPIOX_6", "GPIOX_7"; ++ }; ++ + //$$ MATCH "uart_ao_pin_match" = "&ao_uart_pins" + //$$ L2 PROP_U32 2 = "amlogic,setmask" + //$$ L2 PROP_STR 2 = "amlogic,pins"