mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 17:27:14 +08:00 
			
		
		
		
	lenovo-thinkpad-x13s: Add support for aarch64 system
This commit is contained in:
		
							
								
								
									
										10
									
								
								lenovo/thinkpad/x13s/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								lenovo/thinkpad/x13s/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
# Lenovo X13s
 | 
			
		||||
 | 
			
		||||
[Debian](https://wiki.debian.org/InstallingDebianOn/Thinkpad/X13s)
 | 
			
		||||
[PostmarketOS](https://wiki.postmarketos.org/wiki/Lenovo_ThinkPad_X13s_(lenovo-21bx))
 | 
			
		||||
 | 
			
		||||
## Camera
 | 
			
		||||
The MIPI camera does work, however, it's not accelerated by the ISP and therefore image processing is done on CPU.
 | 
			
		||||
 | 
			
		||||
## Wifi and Bluetooth MAC addresses
 | 
			
		||||
Currently they need to be set manually
 | 
			
		||||
							
								
								
									
										101
									
								
								lenovo/thinkpad/x13s/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								lenovo/thinkpad/x13s/default.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
{ lib, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
let
 | 
			
		||||
  dtbName = "sc8280xp-lenovo-thinkpad-x13s.dtb";
 | 
			
		||||
  dtb = "${pkgs.linux}/dtbs/qcom/${dtbName}";
 | 
			
		||||
  # Version the dtb based on the kernel
 | 
			
		||||
  dtbEfiPath = "dtbs/x13s-${pkgs.linux.version}.dtb";
 | 
			
		||||
  cfg = {
 | 
			
		||||
   wifiMac = "e4:65:38:52:22:a9";
 | 
			
		||||
   bluetoothMac = "E4:25:18:22:44:AA";
 | 
			
		||||
  };
 | 
			
		||||
  inherit (lib) mkDefault;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ../.
 | 
			
		||||
    ../../../common/pc/laptop
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  boot = {
 | 
			
		||||
    loader.systemd-boot.extraFiles = {
 | 
			
		||||
      "${dtbEfiPath}" = dtb;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    kernelParams = mkDefault [
 | 
			
		||||
      # needed to boot
 | 
			
		||||
      "dtb=${dtbEfiPath}"
 | 
			
		||||
 | 
			
		||||
      # jhovold recommended
 | 
			
		||||
      "clk_ignore_unused"
 | 
			
		||||
      "pd_ignore_unused"
 | 
			
		||||
      "arm64.nopauth"
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    kernelModules = mkDefault [
 | 
			
		||||
      "nvme"
 | 
			
		||||
      "phy-qcom-qmp-pcie"
 | 
			
		||||
      "pcie-qcom"
 | 
			
		||||
 | 
			
		||||
      "i2c-core"
 | 
			
		||||
      "i2c-hid"
 | 
			
		||||
      "i2c-hid-of"
 | 
			
		||||
      "i2c-qcom-geni"
 | 
			
		||||
 | 
			
		||||
      "leds_qcom_lpg"
 | 
			
		||||
      "pwm_bl"
 | 
			
		||||
      "qrtr"
 | 
			
		||||
      "pmic_glink_altmode"
 | 
			
		||||
      "gpio_sbu_mux"
 | 
			
		||||
      "phy-qcom-qmp-combo"
 | 
			
		||||
      "gpucc_sc8280xp"
 | 
			
		||||
      "dispcc_sc8280xp"
 | 
			
		||||
      "phy_qcom_edp"
 | 
			
		||||
      "panel-edp"
 | 
			
		||||
      "msm"
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  hardware.enableRedistributableFirmware = mkDefault true;
 | 
			
		||||
 | 
			
		||||
  systemd.services.bluetooth-x13s-mac = lib.mkIf (cfg.bluetoothMac != null) {
 | 
			
		||||
    wantedBy = [ "multi-user.target" ];
 | 
			
		||||
    before = [ "bluetooth.service" ];
 | 
			
		||||
    requiredBy = [ "bluetooth.service" ];
 | 
			
		||||
 | 
			
		||||
    serviceConfig = {
 | 
			
		||||
      Type = "oneshot";
 | 
			
		||||
      RemainAfterExit = true;
 | 
			
		||||
      ExecStart = "${pkgs.util-linux}/bin/script -q -c '${pkgs.bluez}/bin/btmgmt --index 0 public-addr ${cfg.bluetoothMac}'";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # https://github.com/jhovold/linux/wiki/X13s#modem
 | 
			
		||||
  networking.networkmanager.fccUnlockScripts = [
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      id = "105b:e0c3";
 | 
			
		||||
      path = "${pkgs.modemmanager}/share/ModemManager/fcc-unlock.available.d/105b";
 | 
			
		||||
    }
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  # https://github.com/jhovold/linux/wiki/X13s#camera
 | 
			
		||||
  services.udev.extraRules = lib.strings.concatLines (
 | 
			
		||||
    [
 | 
			
		||||
      ''
 | 
			
		||||
        ACTION=="add", SUBSYSTEM=="dma_heap", KERNEL=="linux,cma", GROUP="video", MODE="0660"
 | 
			
		||||
        ACTION=="add", SUBSYSTEM=="dma_heap", KERNEL=="system", GROUP="video", MODE="0660"
 | 
			
		||||
      ''
 | 
			
		||||
    ]
 | 
			
		||||
    ++ (
 | 
			
		||||
      if cfg.wifiMac != null then
 | 
			
		||||
        [
 | 
			
		||||
          ''
 | 
			
		||||
            ACTION=="add", SUBSYSTEM=="net", KERNELS=="0006:01:00.0", RUN+="${pkgs.iproute2}/bin/ip link set dev $name address ${cfg.wifiMac}"
 | 
			
		||||
          ''
 | 
			
		||||
        ]
 | 
			
		||||
      else
 | 
			
		||||
        [ ]
 | 
			
		||||
    )
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user