diff options
author | 牧瀬紅莉栖 <MakiseKurisu@users.noreply.github.com> | 2023-03-06 15:59:57 +0800 |
---|---|---|
committer | 牧瀬紅莉栖 <MakiseKurisu@users.noreply.github.com> | 2023-03-18 14:20:28 +0800 |
commit | 924887fec4b1eb69d3c8c166d4730caa51444454 (patch) | |
tree | 2f7549c4ffc8d3b21975965d46446f44650c821e /pkgs/os-specific | |
parent | 3c4ae7bde99db0d585e40bd8942ae67d4edc3d25 (diff) | |
download | nixpkgs-924887fec4b1eb69d3c8c166d4730caa51444454.tar nixpkgs-924887fec4b1eb69d3c8c166d4730caa51444454.tar.gz nixpkgs-924887fec4b1eb69d3c8c166d4730caa51444454.tar.bz2 nixpkgs-924887fec4b1eb69d3c8c166d4730caa51444454.tar.lz nixpkgs-924887fec4b1eb69d3c8c166d4730caa51444454.tar.xz nixpkgs-924887fec4b1eb69d3c8c166d4730caa51444454.tar.zst nixpkgs-924887fec4b1eb69d3c8c166d4730caa51444454.zip |
ch9344: init at 1.9
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r-- | pkgs/os-specific/linux/ch9344/default.nix | 48 | ||||
-rw-r--r-- | pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch | 22 |
2 files changed, 70 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/ch9344/default.nix b/pkgs/os-specific/linux/ch9344/default.nix new file mode 100644 index 00000000000..25d7ecf0255 --- /dev/null +++ b/pkgs/os-specific/linux/ch9344/default.nix @@ -0,0 +1,48 @@ +{ stdenv, lib, fetchzip, kernel }: + +stdenv.mkDerivation rec { + pname = "ch9344"; + version = "1.9"; + + src = fetchzip { + name = "CH9344SER_LINUX.zip"; + url = "https://www.wch.cn/downloads/file/386.html#CH9344SER_LINUX.zip"; + hash = "sha256-g55ftAfjKKlUFzGhI1a/O7Eqbz6rkGf1vWuEJjBZxBE="; + }; + + patches = lib.optionals (lib.versionAtLeast kernel.modDirVersion "6.1") [ + # https://github.com/torvalds/linux/commit/a8c11c1520347be74b02312d10ef686b01b525f1 + ./fix-incompatible-pointer-types.patch + ]; + + sourceRoot = "${src.name}/driver"; + hardeningDisable = [ "pic" ]; + nativeBuildInputs = kernel.moduleBuildDependencies; + + preBuild = '' + substituteInPlace Makefile --replace "KERNELDIR :=" "KERNELDIR ?=" + ''; + + makeFlags = [ + "KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" + ]; + + installPhase = '' + runHook preInstall + install -D ch9344.ko $out/lib/modules/${kernel.modDirVersion}/usb/serial/ch9344.ko + runHook postInstall + ''; + + meta = with lib; { + homepage = "http://www.wch-ic.com/"; + downloadPage = "https://www.wch.cn/downloads/CH9344SER_LINUX_ZIP.html"; + description = "WCH CH9344/CH348 UART driver"; + longDescription = '' + A kernel module for WinChipHead CH9344/CH348 USB To Multi Serial Ports controller. + ''; + # Archive contains no license. + license = licenses.unfree; + platforms = platforms.linux; + maintainers = with maintainers; [ MakiseKurisu ]; + }; +} diff --git a/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch b/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch new file mode 100644 index 00000000000..31088538733 --- /dev/null +++ b/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch @@ -0,0 +1,22 @@ +diff --git a/ch9344.c b/ch9344.c +index 1e37293..a16af82 100644 +--- a/ch9344.c ++++ b/ch9344.c +@@ -79,7 +79,7 @@ static DEFINE_IDR(ch9344_minors); + static DEFINE_MUTEX(ch9344_minors_lock); + + static void ch9344_tty_set_termios(struct tty_struct *tty, +- struct ktermios *termios_old); ++ const struct ktermios *termios_old); + + static int ch9344_get_portnum(int index); + +@@ -1597,7 +1597,7 @@ u8 cal_recv_tmt(__le32 bd) + } + + static void ch9344_tty_set_termios(struct tty_struct *tty, +- struct ktermios *termios_old) ++ const struct ktermios *termios_old) + { + struct ch9344 *ch9344 = tty->driver_data; + struct ktermios *termios = &tty->termios; |