From cd7cd6dadd342244a418a569502116dc308257cb Mon Sep 17 00:00:00 2001 From: classabbyamp Date: Sat, 26 Oct 2024 11:00:36 -0400 Subject: [PATCH] xone: fix build on 6.8, 6.11, 6.12 --- srcpkgs/xone/patches/linux6.11.patch | 26 ++++++++++ srcpkgs/xone/patches/linux6.12.patch | 74 ++++++++++++++++++++++++++++ srcpkgs/xone/patches/linux6.8.patch | 33 +++++++++++++ srcpkgs/xone/template | 2 +- 4 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/xone/patches/linux6.11.patch create mode 100644 srcpkgs/xone/patches/linux6.12.patch create mode 100644 srcpkgs/xone/patches/linux6.8.patch diff --git a/srcpkgs/xone/patches/linux6.11.patch b/srcpkgs/xone/patches/linux6.11.patch new file mode 100644 index 00000000000..bf881ab395c --- /dev/null +++ b/srcpkgs/xone/patches/linux6.11.patch @@ -0,0 +1,26 @@ +From 28df566c38e0ee500fd5f74643fc35f21a4ff696 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Torleif=20Sk=C3=A5r?= + <16509259+tskaar@users.noreply.github.com> +Date: Tue, 30 Jul 2024 22:35:25 +0200 +Subject: [PATCH] fix: build on kernel v6.11 + +--- + bus/bus.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/bus/bus.c b/bus/bus.c +index 4a6c64f..8dc9bbb 100644 +--- a/bus/bus.c ++++ b/bus/bus.c +@@ -56,7 +56,11 @@ static struct device_type gip_client_type = { + .release = gip_client_release, + }; + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 11, 0) + static int gip_bus_match(struct device *dev, struct device_driver *driver) ++#else ++static int gip_bus_match(struct device *dev, const struct device_driver *driver) ++#endif + { + struct gip_client *client; + struct gip_driver *drv; diff --git a/srcpkgs/xone/patches/linux6.12.patch b/srcpkgs/xone/patches/linux6.12.patch new file mode 100644 index 00000000000..ee7175a9bb0 --- /dev/null +++ b/srcpkgs/xone/patches/linux6.12.patch @@ -0,0 +1,74 @@ +From d88ea1e8b430d4b96134e43ca1892ac48334578e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Torleif=20Sk=C3=A5r?= + <16509259+tskaar@users.noreply.github.com> +Date: Mon, 30 Sep 2024 21:07:13 +0200 +Subject: [PATCH] fix: build on kernel v6.12 + +Upstream "Drop of obsoloted vmalloc PCM buffer helper API"; +https://lore.kernel.org/all/20240807152725.18948-3-tiwai@suse.de/ + +Code taken from the driver; +https://lore.kernel.org/all/20240807152725.18948-2-tiwai@suse.de/ +--- + driver/headset.c | 30 ++++++++++++++++++++++++++---- + 1 file changed, 26 insertions(+), 4 deletions(-) + +diff --git a/driver/headset.c b/driver/headset.c +index ebee92d..c736351 100644 +--- a/driver/headset.c ++++ b/driver/headset.c +@@ -5,6 +5,7 @@ + + #include + #include ++#include + #include + #include + #include +@@ -90,13 +91,34 @@ static int gip_headset_pcm_close(struct snd_pcm_substream *sub) + static int gip_headset_pcm_hw_params(struct snd_pcm_substream *sub, + struct snd_pcm_hw_params *params) + { +- return snd_pcm_lib_alloc_vmalloc_buffer(sub, +- params_buffer_bytes(params)); ++ struct snd_pcm_runtime *runtime = sub->runtime; ++ size_t size = params_buffer_bytes(params); ++ ++ if (runtime->dma_area) { ++ if (runtime->dma_bytes >= size) ++ return 0; /* Already large enough */ ++ vfree(runtime->dma_area); ++ } ++ runtime->dma_area = vzalloc(size); ++ if (!runtime->dma_area) ++ return -ENOMEM; ++ runtime->dma_bytes = size; ++ return 1; + } + + static int gip_headset_pcm_hw_free(struct snd_pcm_substream *sub) + { +- return snd_pcm_lib_free_vmalloc_buffer(sub); ++ struct snd_pcm_runtime *runtime = sub->runtime; ++ ++ vfree(runtime->dma_area); ++ runtime->dma_area = NULL; ++ return 0; ++} ++ ++static struct page *gip_headset_pcm_get_page(struct snd_pcm_substream *sub, ++ unsigned long offset) ++{ ++ return vmalloc_to_page(sub->runtime->dma_area + offset); + } + + static int gip_headset_pcm_prepare(struct snd_pcm_substream *sub) +@@ -157,7 +179,7 @@ static const struct snd_pcm_ops gip_headset_pcm_ops = { + .prepare = gip_headset_pcm_prepare, + .trigger = gip_headset_pcm_trigger, + .pointer = gip_headset_pcm_pointer, +- .page = snd_pcm_lib_get_vmalloc_page, ++ .page = gip_headset_pcm_get_page, + }; + + static bool gip_headset_advance_pointer(struct gip_headset_stream *stream, diff --git a/srcpkgs/xone/patches/linux6.8.patch b/srcpkgs/xone/patches/linux6.8.patch new file mode 100644 index 00000000000..d84568c7ea2 --- /dev/null +++ b/srcpkgs/xone/patches/linux6.8.patch @@ -0,0 +1,33 @@ +From 1b4344ab8d9d7891f843dc993b0c5447f46c9889 Mon Sep 17 00:00:00 2001 +From: medusalix +Date: Sun, 21 Jan 2024 21:18:17 +0100 +Subject: [PATCH] Fix build on kernel 6.8 + +--- + transport/dongle.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/transport/dongle.c b/transport/dongle.c +index 1a30922..71aed1c 100644 +--- a/transport/dongle.c ++++ b/transport/dongle.c +@@ -6,6 +6,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1024,7 +1025,11 @@ static struct usb_driver xone_dongle_driver = { + .suspend = xone_dongle_suspend, + .resume = xone_dongle_resume, + .id_table = xone_dongle_id_table, ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) + .drvwrap.driver.shutdown = xone_dongle_shutdown, ++#else ++ .driver.shutdown = xone_dongle_shutdown, ++#endif + .supports_autosuspend = true, + .disable_hub_initiated_lpm = true, + .soft_unbind = true, diff --git a/srcpkgs/xone/template b/srcpkgs/xone/template index 6068eba9792..1ecf927f62d 100644 --- a/srcpkgs/xone/template +++ b/srcpkgs/xone/template @@ -1,7 +1,7 @@ # Template file for 'xone' pkgname=xone version=0.3 -revision=2 +revision=3 depends="curl cabextract dkms" short_desc="Modern Linux driver for Xbox One and Xbox Series X|S controllers" maintainer="Orphaned "