monolith: fix bluetooth dongle
This commit is contained in:
		
							parent
							
								
									6b655dded4
								
							
						
					
					
						commit
						56949d9238
					
				
					 4 changed files with 80 additions and 1 deletions
				
			
		| 
						 | 
					@ -38,7 +38,14 @@ in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  boot.kernelPackages = pkgs.linuxPackages_latest;
 | 
					  boot.kernelPackages = pkgs.linuxPackages_latest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ];
 | 
					  boot.extraModulePackages = with config.boot.kernelPackages; [
 | 
				
			||||||
 | 
					    zenpower
 | 
				
			||||||
 | 
					    (pkgs.linux-bluetooth.override {
 | 
				
			||||||
 | 
					      kernel = config.boot.kernelPackages.kernel;
 | 
				
			||||||
 | 
					      patches = [ ../../patches/linux/v2-Bluetooth-btusb-Fix-regression-with-CSR-controllers.diff ];
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  boot.initrd.kernelModules = [ "amdgpu" ];
 | 
					  boot.initrd.kernelModules = [ "amdgpu" ];
 | 
				
			||||||
  boot.kernelModules = [
 | 
					  boot.kernelModules = [
 | 
				
			||||||
    "kvm-amd"
 | 
					    "kvm-amd"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
 | 
				
			||||||
 | 
					index c0b6ef8ee5da..f72218c1037e 100644
 | 
				
			||||||
 | 
					--- a/drivers/bluetooth/btusb.c
 | 
				
			||||||
 | 
					+++ b/drivers/bluetooth/btusb.c
 | 
				
			||||||
 | 
					@@ -1366,10 +1366,15 @@ static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
 | 
				
			||||||
 | 
					 	if (!urb)
 | 
				
			||||||
 | 
					 		return -ENOMEM;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					-	/* Use maximum HCI Event size so the USB stack handles
 | 
				
			||||||
 | 
					-	 * ZPL/short-transfer automatically.
 | 
				
			||||||
 | 
					-	 */
 | 
				
			||||||
 | 
					-	size = HCI_MAX_EVENT_SIZE;
 | 
				
			||||||
 | 
					+	if (le16_to_cpu(data->udev->descriptor.idVendor)  == 0x0a12 &&
 | 
				
			||||||
 | 
					+	    le16_to_cpu(data->udev->descriptor.idProduct) == 0x0001)
 | 
				
			||||||
 | 
					+		/* Fake CSR devices don't seem to support sort-transter */
 | 
				
			||||||
 | 
					+		size = le16_to_cpu(data->intr_ep->wMaxPacketSize);
 | 
				
			||||||
 | 
					+	else
 | 
				
			||||||
 | 
					+		/* Use maximum HCI Event size so the USB stack handles
 | 
				
			||||||
 | 
					+		 * ZPL/short-transfer automatically.
 | 
				
			||||||
 | 
					+		 */
 | 
				
			||||||
 | 
					+		size = HCI_MAX_EVENT_SIZE;
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					 	buf = kmalloc(size, mem_flags);
 | 
				
			||||||
 | 
					 	if (!buf) {
 | 
				
			||||||
| 
						 | 
					@ -8,4 +8,5 @@ rec {
 | 
				
			||||||
  emmet-cli = pkgs.callPackage ./emmet-cli.nix { };
 | 
					  emmet-cli = pkgs.callPackage ./emmet-cli.nix { };
 | 
				
			||||||
  material-wifi-icons = pkgs.callPackage ./material-wifi-icons.nix { };
 | 
					  material-wifi-icons = pkgs.callPackage ./material-wifi-icons.nix { };
 | 
				
			||||||
  gnome-pass-search-provider = pkgs.callPackage ./gnome-pass-search-provider.nix { };
 | 
					  gnome-pass-search-provider = pkgs.callPackage ./gnome-pass-search-provider.nix { };
 | 
				
			||||||
 | 
					  linux-bluetooth = pkgs.callPackage ./linux-bluetooth.nix { };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										47
									
								
								pkgs/linux-bluetooth.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								pkgs/linux-bluetooth.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  kernel ? pkgs.linuxPackages_latest.kernel,
 | 
				
			||||||
 | 
					  patches ? [ ],
 | 
				
			||||||
 | 
					}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pkgs.stdenv.mkDerivation {
 | 
				
			||||||
 | 
					  pname = "bluetooth-kernel-module";
 | 
				
			||||||
 | 
					  inherit (kernel)
 | 
				
			||||||
 | 
					    src
 | 
				
			||||||
 | 
					    version
 | 
				
			||||||
 | 
					    postPatch
 | 
				
			||||||
 | 
					    nativeBuildInputs
 | 
				
			||||||
 | 
					    ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  inherit patches;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  kernel_dev = kernel.dev;
 | 
				
			||||||
 | 
					  kernelVersion = kernel.modDirVersion;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  modulePath = "drivers/bluetooth";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  buildPhase = ''
 | 
				
			||||||
 | 
					    BUILT_KERNEL=$kernel_dev/lib/modules/$kernelVersion/build
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cp $BUILT_KERNEL/Module.symvers .
 | 
				
			||||||
 | 
					    cp $BUILT_KERNEL/.config        .
 | 
				
			||||||
 | 
					    cp $kernel_dev/vmlinux          .
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    make "-j$NIX_BUILD_CORES" modules_prepare
 | 
				
			||||||
 | 
					    make "-j$NIX_BUILD_CORES" M=$modulePath modules
 | 
				
			||||||
 | 
					  '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  installPhase = ''
 | 
				
			||||||
 | 
					    make \
 | 
				
			||||||
 | 
					      INSTALL_MOD_PATH="$out" \
 | 
				
			||||||
 | 
					      XZ="xz -T$NIX_BUILD_CORES" \
 | 
				
			||||||
 | 
					      M="$modulePath" \
 | 
				
			||||||
 | 
					      modules_install
 | 
				
			||||||
 | 
					  '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  meta = {
 | 
				
			||||||
 | 
					    description = "Bluetooth kernel module";
 | 
				
			||||||
 | 
					    license = lib.licenses.gpl3;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue