diff options
author | Gabriel Ebner <gebner@gebner.org> | 2020-12-25 11:08:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-25 11:08:32 +0100 |
commit | ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9 (patch) | |
tree | 1cedb18767c1bf4e0f3cbf6bb4d2737a897acecf /pkgs/os-specific | |
parent | 351f3c043d80009569d646a332025f7870b11cf3 (diff) | |
parent | 81f4bca15c760a15bea266e8f9173d418c4455aa (diff) | |
download | nixlib-ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9.tar nixlib-ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9.tar.gz nixlib-ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9.tar.bz2 nixlib-ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9.tar.lz nixlib-ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9.tar.xz nixlib-ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9.tar.zst nixlib-ce8c83623d8c195cc2ad87c4b7efaee333f2f4e9.zip |
Merge pull request #107263 from edibopp/patch-rtl8761b
Firmware and kernel patch for Realtek RTL8761b
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r-- | pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix | 29 | ||||
-rw-r--r-- | pkgs/os-specific/linux/kernel/patches.nix | 7 | ||||
-rw-r--r-- | pkgs/os-specific/linux/kernel/rtl8761b-support.patch | 33 |
3 files changed, 69 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix new file mode 100644 index 000000000000..4418722c7c45 --- /dev/null +++ b/pkgs/os-specific/linux/firmware/rtl8761b-firmware/default.nix @@ -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; + }; +} diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix index e2805c315b8b..23c01d041921 100644 --- a/pkgs/os-specific/linux/kernel/patches.nix +++ b/pkgs/os-specific/linux/kernel/patches.nix @@ -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"; diff --git a/pkgs/os-specific/linux/kernel/rtl8761b-support.patch b/pkgs/os-specific/linux/kernel/rtl8761b-support.patch new file mode 100644 index 000000000000..b6d80d5bc8d3 --- /dev/null +++ b/pkgs/os-specific/linux/kernel/rtl8761b-support.patch @@ -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; |