ch9344: 1.9 -> 2.0

This commit is contained in:
MakiseKurisu 2023-10-28 23:27:12 +08:00
parent 8e9536d964
commit 5068ae6e15
3 changed files with 13 additions and 36 deletions

View file

@ -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";

View file

@ -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;

View file

@ -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);