Merge pull request #1444 from phodina/lenovo-thinpad-x13s

lenovo-thinkpad-x13s: Add support for aarch64 system
This commit is contained in:
Jörg Thalheim
2025-04-24 16:00:55 +02:00
committed by GitHub
4 changed files with 113 additions and 0 deletions

View 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

View 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
[ ]
)
);
}