GPD Pocket
From NixOS Wiki
The following configuration bits are required for a GPD Pocket device.
let dummy_firmware = pkgs.writeTextFile { name = "brcmfmac4356-pcie.txt"; text = builtins.readFile "brcmfmac4356-pcie.txt"; destination = "/lib/firmware/brcm/brcmfmac4356-pcie.txt"; }; in { imports = [ # generated by nixos-generate-config on installation <nixpkgs/nixos/modules/installer/scan/not-detected.nix> # Device specific "${configDir}/etc/gpd/kernel.nix" ]; boot = { kernelPackages = pkgs.linuxPackages_4_14; kernelParams = [ "gpd-pocket-fan.speed_on_ac=0" "fbcon=rotate:1" ]; kernelModules = [ "btusb" "kvm-intel" ]; # bluetooth initrd.kernelModules = [ "pwm-lpss" "pwm-lpss-platform" # for brightness control "g_serial" # be a serial device via OTG "bq24190_charger" "i915" "fusb302" ]; initrd.availableKernelModules = [ "xhci_pci" "dm_mod" "btrfs" "crc23c" "nvme" "usbhid" "usb_storage" "sd_mod" "sdhci_acpi" "sdhci_pci" "rtsx_pci_sdmmc" ]; loader.systemd-boot.enable = true; loader.efi.canTouchEfiVariables = true; }; services.tlp = { enable = true; extraConfig = DISK_DEVICES="mmcblk0" DISK_IOSCHED="deadline" WIFI_PWR_ON_AC=off WIFI_PWR_ON_BAT=off ; }; hardware = { firmware = [ dummy_firmware ]; enableRedistributableFirmware = true; bluetooth.enable = true; pulseaudio = { package = pkgs.pulseaudioFull; extraConfig = set-card-profile alsa_card.platform-cht-bsw-rt5645 HiFi set-default-sink alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645_0__sink set-sink-port alsa_output.platform-cht-bsw-rt5645.HiFi__hw_chtrt5645_0__sink [Out] Speaker ; daemon.config = { "realtime-scheduling" = "no"; }; }; }; # on resume the i2c bus complains, reloading the module helps powerManagement = { enable = true; powerUpCommands = modprobe goodix ; powerDownCommands = modprobe -r goodix ; resumeCommands = modprobe goodix ; }; # more config }
Firmware file:
# Sample variables file for BCM94356Z NGFF 22x30mm iPA, iLNA board with PCIe for production package NVRAMRev=$Rev: 492104 $ #4356 chip = 4354 A2 chip sromrev=11 boardrev=0x1102 boardtype=0x073e boardflags=0x02400201 #0x2000 enable 2G spur WAR boardflags2=0x00802000 boardflags3=0x0000000a #boardflags3 0x00000100 /* to read swctrlmap from nvram*/ #define BFL3_5G_SPUR_WAR 0x00080000 /* enable spur WAR in 5G band */ #define BFL3_AvVim 0x40000000 /* load AvVim from nvram */ macaddr=00:90:4c:1a:10:01 ccode=0x5854 regrev=205 antswitch=0 pdgain5g=4 pdgain2g=4 tworangetssi2g=0 tworangetssi5g=0 paprdis=0 femctrl=10 vendid=0x14e4 devid=0x43ec manfid=0x2d0 #prodid=0x052e nocrc=1 otpimagesize=502 xtalfreq=37400 rxgains2gelnagaina0=0 rxgains2gtrisoa0=7 rxgains2gtrelnabypa0=0 rxgains5gelnagaina0=0 rxgains5gtrisoa0=11 rxgains5gtrelnabypa0=0 rxgains5gmelnagaina0=0 rxgains5gmtrisoa0=13 rxgains5gmtrelnabypa0=0 rxgains5ghelnagaina0=0 rxgains5ghtrisoa0=12 rxgains5ghtrelnabypa0=0 rxgains2gelnagaina1=0 rxgains2gtrisoa1=7 rxgains2gtrelnabypa1=0 rxgains5gelnagaina1=0 rxgains5gtrisoa1=10 rxgains5gtrelnabypa1=0 rxgains5gmelnagaina1=0 rxgains5gmtrisoa1=11 rxgains5gmtrelnabypa1=0 rxgains5ghelnagaina1=0 rxgains5ghtrisoa1=11 rxgains5ghtrelnabypa1=0 rxchain=3 txchain=3 aa2g=3 aa5g=3 agbg0=2 agbg1=2 aga0=2 aga1=2 tssipos2g=1 extpagain2g=2 tssipos5g=1 extpagain5g=2 tempthresh=255 tempoffset=255 rawtempsense=0x1ff pa2ga0=-147,6192,-705 pa2ga1=-161,6041,-701 pa5ga0=-194,6069,-739,-188,6137,-743,-185,5931,-725,-171,5898,-715 pa5ga1=-190,6248,-757,-190,6275,-759,-190,6225,-757,-184,6131,-746 subband5gver=0x4 pdoffsetcckma0=0x4 pdoffsetcckma1=0x4 pdoffset40ma0=0x0000 pdoffset80ma0=0x0000 pdoffset40ma1=0x0000 pdoffset80ma1=0x0000 maxp2ga0=76 maxp5ga0=74,74,74,74 maxp2ga1=76 maxp5ga1=74,74,74,74 cckbw202gpo=0x0000 cckbw20ul2gpo=0x0000 mcsbw202gpo=0x99644422 mcsbw402gpo=0x99644422 dot11agofdmhrbw202gpo=0x6666 ofdmlrbw202gpo=0x0022 mcsbw205glpo=0x88766663 mcsbw405glpo=0x88666663 mcsbw805glpo=0xbb666665 mcsbw205gmpo=0xd8666663 mcsbw405gmpo=0x88666663 mcsbw805gmpo=0xcc666665 mcsbw205ghpo=0xdc666663 mcsbw405ghpo=0xaa666663 mcsbw805ghpo=0xdd666665 mcslr5glpo=0x0000 mcslr5gmpo=0x0000 mcslr5ghpo=0x0000 sb20in40hrpo=0x0 sb20in80and160hr5glpo=0x0 sb40and80hr5glpo=0x0 sb20in80and160hr5gmpo=0x0 sb40and80hr5gmpo=0x0 sb20in80and160hr5ghpo=0x0 sb40and80hr5ghpo=0x0 sb20in40lrpo=0x0 sb20in80and160lr5glpo=0x0 sb40and80lr5glpo=0x0 sb20in80and160lr5gmpo=0x0 sb40and80lr5gmpo=0x0 sb20in80and160lr5ghpo=0x0 sb40and80lr5ghpo=0x0 dot11agduphrpo=0x0 dot11agduplrpo=0x0 phycal_tempdelta=255 temps_period=15 temps_hysteresis=15 rssicorrnorm_c0=4,4 rssicorrnorm_c1=4,4 rssicorrnorm5g_c0=1,2,3,1,2,3,6,6,8,6,6,8 rssicorrnorm5g_c1=1,2,3,2,2,2,7,7,8,7,7,8