diff options
Diffstat (limited to 'pkgs/os-specific/linux/ch9344')
3 files changed, 13 insertions, 36 deletions
diff --git a/pkgs/os-specific/linux/ch9344/default.nix b/pkgs/os-specific/linux/ch9344/default.nix index e7da864b90c1..42c26503ea15 100644 --- a/pkgs/os-specific/linux/ch9344/default.nix +++ b/pkgs/os-specific/linux/ch9344/default.nix @@ -2,20 +2,16 @@ stdenv.mkDerivation rec { pname = "ch9344"; - version = "1.9"; + version = "2.0"; src = fetchzip { name = "CH9344SER_LINUX.zip"; url = "https://www.wch.cn/downloads/file/386.html#CH9344SER_LINUX.zip"; - hash = "sha256-g55ftAfjKKlUFzGhI1a/O7Eqbz6rkGf1vWuEJjBZxBE="; + hash = "sha256-YKNMYpap7CjhgTIpd/M9+nB11NtpwGYT/P14J6q3XZg="; }; - patches = lib.optionals (lib.versionAtLeast kernel.modDirVersion "6.1") [ - # https://github.com/torvalds/linux/commit/a8c11c1520347be74b02312d10ef686b01b525f1 + patches = [ ./fix-incompatible-pointer-types.patch - ] ++ lib.optionals (lib.versionAtLeast kernel.modDirVersion "6.3") [ - # https://github.com/torvalds/linux/commit/5d420399073770134d2b03e004b2c0201c7fa26f - ./fix-incompatible-pointer-types_6_3.patch ]; sourceRoot = "${src.name}/driver"; diff --git a/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch b/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch index 31088538733e..89c95347ed65 100644 --- a/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch +++ b/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types.patch @@ -1,22 +1,16 @@ diff --git a/ch9344.c b/ch9344.c -index 1e37293..a16af82 100644 +index bfa10bb..76a94a7 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) +@@ -837,7 +837,11 @@ static void ch9344_tty_close(struct tty_struct *tty, struct file *filp) + } } - static void ch9344_tty_set_termios(struct tty_struct *tty, -- struct ktermios *termios_old) -+ const struct ktermios *termios_old) ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)) ++static ssize_t ch9344_tty_write(struct tty_struct *tty, const u8 *buf, size_t count) ++#else + static int ch9344_tty_write(struct tty_struct *tty, const unsigned char *buf, int count) ++#endif { - struct ch9344 *ch9344 = tty->driver_data; - struct ktermios *termios = &tty->termios; + struct ch9344 *ch9344 = tty->driver_data; + int stat; diff --git a/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types_6_3.patch b/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types_6_3.patch deleted file mode 100644 index b4cf265daac9..000000000000 --- a/pkgs/os-specific/linux/ch9344/fix-incompatible-pointer-types_6_3.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/ch9344.c b/ch9344.c -index a16af82..8922ed9 100644 ---- a/ch9344.c -+++ b/ch9344.c -@@ -774,7 +774,7 @@ static inline void *tty_get_portdata(struct ch9344_ttyport *port) - return (port->portdata); - } - --static void ch9344_port_dtr_rts(struct tty_port *port, int raise) -+static void ch9344_port_dtr_rts(struct tty_port *port, bool raise) - { - struct ch9344_ttyport *ttyport = container_of(port, struct ch9344_ttyport, port); - struct ch9344 *ch9344 = tty_get_portdata(ttyport); |