Merge pull request #107263 from edibopp/patch-rtl8761b

Firmware and kernel patch for Realtek RTL8761b
This commit is contained in:
Gabriel Ebner 2020-12-25 11:08:32 +01:00 committed by GitHub
commit ce8c83623d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 73 additions and 0 deletions

@ -48,6 +48,7 @@ in {
rtl8192su-firmware
rt5677-firmware
rtl8723bs-firmware
rtl8761b-firmware
rtlwifi_new-firmware
zd1211fw
alsa-firmware

@ -0,0 +1,29 @@
{ stdenv, fetchFromGitHub }:
stdenv.mkDerivation {
name = "rtl8761b-firmware";
src = fetchFromGitHub {
owner = "Realtek-OpenSource";
repo = "android_hardware_realtek";
rev = "rtk1395";
sha256 = "sha256-vd9sZP7PGY+cmnqVty3sZibg01w8+UNinv8X85B+dzc=";
};
installPhase = ''
install -D -pm644 \
bt/rtkbt/Firmware/BT/rtl8761b_fw \
$out/lib/firmware/rtl_bt/rtl8761b_fw.bin
install -D -pm644 \
bt/rtkbt/Firmware/BT/rtl8761b_config \
$out/lib/firmware/rtl_bt/rtl8761b_config.bin
'';
meta = with stdenv.lib; {
description = "Firmware for Realtek RTL8761b";
license = licenses.unfreeRedistributableFirmware;
maintainers = with maintainers; [ edibopp ];
platforms = with platforms; linux;
};
}

@ -76,6 +76,13 @@
};
};
# Adapted for Linux 5.4 from:
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04896832c94aae4842100cafb8d3a73e1bed3a45
rtl8761b_support =
{ name = "rtl8761b-support";
patch = ./rtl8761b-support.patch;
};
export_kernel_fpu_functions = {
"4.14" = {
name = "export_kernel_fpu_functions";

@ -0,0 +1,33 @@
diff --git a/drivers/bluetooth/btrtl.c b/drivers/bluetooth/btrtl.c
index 67f4bc21e7c5..3a9afc905f24 100644
--- a/drivers/bluetooth/btrtl.c
+++ b/drivers/bluetooth/btrtl.c
@@ -130,12 +130,19 @@ static const struct id_table ic_id_table[] = {
.cfg_name = "rtl_bt/rtl8821c_config" },
/* 8761A */
- { IC_MATCH_FL_LMPSUBV, RTL_ROM_LMP_8761A, 0x0,
+ { IC_INFO(RTL_ROM_LMP_8761A, 0xa),
.config_needed = false,
.has_rom_version = true,
.fw_name = "rtl_bt/rtl8761a_fw.bin",
.cfg_name = "rtl_bt/rtl8761a_config" },
+ /* 8761B */
+ { IC_INFO(RTL_ROM_LMP_8761A, 0xb),
+ .config_needed = false,
+ .has_rom_version = true,
+ .fw_name = "rtl_bt/rtl8761b_fw.bin",
+ .cfg_name = "rtl_bt/rtl8761b_config" },
+
/* 8822C with USB interface */
{ IC_INFO(RTL_ROM_LMP_8822B, 0xc),
.config_needed = false,
@@ -251,6 +258,7 @@ static int rtlbt_parse_firmware(struct hci_dev *hdev,
{ RTL_ROM_LMP_8723B, 9 }, /* 8723D */
{ RTL_ROM_LMP_8821A, 10 }, /* 8821C */
{ RTL_ROM_LMP_8822B, 13 }, /* 8822C */
+ { RTL_ROM_LMP_8761A, 14 }, /* 8761B */
};
min_size = sizeof(struct rtl_epatch_header) + sizeof(extension_sig) + 3;

@ -18386,6 +18386,7 @@ in
kernelPatches = [
kernelPatches.bridge_stp_helper
kernelPatches.request_key_helper
kernelPatches.rtl8761b_support
kernelPatches.export_kernel_fpu_functions."5.3"
];
};
@ -19142,6 +19143,8 @@ in
rtl8723bs-firmware = callPackage ../os-specific/linux/firmware/rtl8723bs-firmware { };
rtl8761b-firmware = callPackage ../os-specific/linux/firmware/rtl8761b-firmware { };
rtlwifi_new-firmware = callPackage ../os-specific/linux/firmware/rtlwifi_new-firmware { };
s3ql = callPackage ../tools/backup/s3ql { };