summaryrefslogtreecommitdiff
path: root/media-tv/v4l-dvb-saa716x
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-11-25 22:39:15 +0000
committerV3n3RiX <venerix@redcorelinux.org>2020-11-25 22:39:15 +0000
commitd934827bf44b7cfcf6711964418148fa60877668 (patch)
tree0625f358789b5e015e49db139cc1dbc9be00428f /media-tv/v4l-dvb-saa716x
parent2e34d110f164bf74d55fced27fe0000201b3eec5 (diff)
gentoo resync : 25.11.2020
Diffstat (limited to 'media-tv/v4l-dvb-saa716x')
-rw-r--r--media-tv/v4l-dvb-saa716x/Manifest6
-rw-r--r--media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-5.6-fix-compile.patch38
-rw-r--r--media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.14.patch32
-rw-r--r--media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.17.patch217
-rw-r--r--media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.4.patch97
-rw-r--r--media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.9.patch192
-rw-r--r--media-tv/v4l-dvb-saa716x/v4l-dvb-saa716x-0.0.1_p20170225-r5.ebuild50
7 files changed, 632 insertions, 0 deletions
diff --git a/media-tv/v4l-dvb-saa716x/Manifest b/media-tv/v4l-dvb-saa716x/Manifest
index b9a1b9b0c0d5..8c92fe50ab36 100644
--- a/media-tv/v4l-dvb-saa716x/Manifest
+++ b/media-tv/v4l-dvb-saa716x/Manifest
@@ -10,9 +10,15 @@ AUX v4l-dvb-saa716x-4.2-fix-compile.patch 2397 BLAKE2B f6b82c6441524d5045971e3b1
AUX v4l-dvb-saa716x-4.5.2-fix-compile.patch 498 BLAKE2B 584300132b72ef0385c3e0b430df36788b57ff49884ee874b610d15fba024a949a81a014883c24b5ac4de77393bbc645715d68b55ec44139d8d5c6006421c9ed SHA512 3c94389b3ffb380a585d51b7e27e3fdf36b053524983fd58531e1d00b1ade2680759822df41363fa2e2ef279570f364178c7f4870c9c6b2fb52124f83eb4afb1
AUX v4l-dvb-saa716x-4.6.0-fix-compile.patch 692 BLAKE2B f3dd9279abafc087f38233f8285409e3d6f4991e3fdd0b7593b5ec816f737ff2d2fc3e457ae6370efa6396e844af314de6986902e0e7de90cf294ff839b31e48 SHA512 64b03e316d938a3830b7aad3c6b6431a9360202470e62d3c696c4203ee98b15595be3bda727468b28a6f43b539931530a408582aab6fe280b8a0200224f2b96f
AUX v4l-dvb-saa716x-4.9-fix-warnings.patch 6368 BLAKE2B 178bb6bf0c391ce3c2a9e2a69c2b1938ebb6137891eab2d18e3bda42547efbfdea98677a4175bb610b21a45c4b3d543166791b517b8d116ea1361b645d612170 SHA512 e697a87b14727d8877ecc78622050bb9d8e5b0d964796c5c3275a8d72359712ec85a578e2189a102b23eedcdb17381533de9641a22103982ad5b0c9702e77901
+AUX v4l-dvb-saa716x-5.6-fix-compile.patch 2085 BLAKE2B 117b7bb63174dcf49e33b1a4b350736c3ba7223f591265aa159a2c286049350aedf514bda0b5aff3aae84e6754311f47b3148acad88220984f8991c7893bce16 SHA512 53e27d1893d391a942af25b6032d9b4f0a49e6bd32186aac71c665ac80e78d608ae3e8e4ef8d0dc7436f7737de262cd5700ee6647f09698608bb75043da97c9e
AUX v4l-dvb-saa716x-Makefilepatch-2.diff 562 BLAKE2B 77adb5d5c67e14dddfce8462a98d565bc092b4e2f4dc48016602dfe0f1fa98d87e2c1317c0c3db1d1d1de8b91076e84cdd50d5b86350c060400fc2dd7ae9e5c1 SHA512 e0ff1c5a79f7b02323eff281bf6dc6ebb7a8fe7a43eb83ebd4a7379468924d3992790899bfabbbf2ee411cda6366ad6a677d8ad004a306e14b55d891f6f69dc0
+AUX v4l-dvb-saa716x-up-to-4.14.patch 1182 BLAKE2B c8712113bdd071689820139fe026bba4464d392c055cd44b9aaabcc40d61f9dbdc42d5cd354db053ca69acd42bd25994dbdc486979856d3b8c11b182e39d186e SHA512 2865922c53c701aa8ef334c54b6ef4f55765bff054c3ab5a10eff6c4f550d3f9573696a845e830c9a6ee172e1fbd604c18c6d13a73ed2ba0ca60359c718fb702
+AUX v4l-dvb-saa716x-up-to-4.17.patch 7545 BLAKE2B f213886abd2a30e61a7220785213d873d6a475ee71b308bde0415cd6ea437a3ddfdf5d57a74c4151977e3a9e871cb1663a3a01364595238c3f324812c6edec0a SHA512 c506bd0b1f54141b1df087cec234ef9496f8b67fd9105b8365029c40557638283811cf4c8a25c47dc621fc1ded700caa3ce48d96799c2348ba3dbf40768678b8
+AUX v4l-dvb-saa716x-up-to-4.4.patch 3627 BLAKE2B a33f468400d820911782428375fe634fe9dfd47f09e71866d85a6988ae2c3ad973854ea9e6f390b33485fd8924649a1f4c9758728b28aa7bb196fbdb1f164f45 SHA512 181a835b475847548355621d284cb820c808d8652e8be2b50b9363720c2acf305e9a06237ecb04bae3931d1e3cdb6b50134339b50154130efe92680e0ba4290f
+AUX v4l-dvb-saa716x-up-to-4.9.patch 7704 BLAKE2B 3798312ef3938f2f162164c9891c251745570bca69704316b366bfecab9b6cc6c6c1c853091636e348d4a9646d874528f67f25c755dc219492347006c6c3f443 SHA512 efac2cf501f4cf0f3831f88cba184ae3bab367c3426adedeec8ee0f0efd3f2921c8c1bd840a2e6a45058b8c5228459bf6c95be0efceeaa4c6f7705e752b0e898
DIST v4l-dvb-saa716x-0.0.1_p20160322.tar.bz2 4070134 BLAKE2B 2c03d11ecd1f527ad066b2b14fcd2539e50fd07cefe2060be1bce96fd932d9ae83529f65b658ac550886f0c1f2b69a64d910011c80746353ffaed062865f1d6f SHA512 2ffb2acf00818b61af37a557e3b95a96b129b34ef80d24084483adfa35c0bb853b0abb626dbbf68bd9aa443c7436034542666274246fd47a603642a8e75ec83e
DIST v4l-dvb-saa716x-0.0.1_p20160322.tar.gz 5028181 BLAKE2B 6d0917e7c72a7c77ff376b1bb1e55a36421568cc7b9221f4724c9e24a9bb6334c201d99f48c92965365ada2cd085b22ca9758e55ca621deb5eb65de3ef3e9a38 SHA512 94a41467688a0363586c654102e35366071218432042bc324d041298ad4812139201f8df17eadb37ebb9baf2b097447fc0859270bcc4e8e0c73b17e0b8045343
EBUILD v4l-dvb-saa716x-0.0.1_p20170225-r3.ebuild 2014 BLAKE2B 00761e3d2f40454ea374b33dc42c57f237f730ccbe4c7147e4f397c97b20ef95f70446cef5ea00b9f62874cb74178c4d30692a0a89dd41c29370566889a670ae SHA512 27de01b280bddc3c330f37176ec6b2b10789ae04a10387553812cfbd081f03e5aafdf634ef026c0e213203a68ef1d80bade167a7b8c2d1577d918b6b4451ef02
EBUILD v4l-dvb-saa716x-0.0.1_p20170225-r4.ebuild 2474 BLAKE2B 86781a21de92635dc96d811423062ec87025055b74650262657ce1f07f5d957c2ef50769ee98d3babb0c362e085c9a509c6f40143feb3ff24a55b2682a25ba74 SHA512 5c33f05cd604f14dad0795c845964313829e34ac2c2cc7a39b2eb9ee52afc5d9a993da109e23489c8959a97df694f8b77d0faa8b535d60963a4e7a0334759a7d
+EBUILD v4l-dvb-saa716x-0.0.1_p20170225-r5.ebuild 1766 BLAKE2B 677b9311aef8627e830c2582301fa95f24180fc5e7c78f733a99a75f1113b5417f73c1c5e68d51e9ea515b20ef6a9bbf2eb8ea85dfcf574007662a45c71e6ca2 SHA512 00a2edf06078166185b3f745b0132e64656b87eb4e8b388feeebea917df456667c07d5579e2df72cfed005e9f6a8fa3582bb010c481f8a3bb3ae3439108dd260
MISC metadata.xml 522 BLAKE2B 4fac71b04452341c84053cf601897155086cbe2d50bd0f04287ecae47ab06fb6b613197296ded88ebc8ac50230caa9d343449172eb73847d5ea763141bb6e3ba SHA512 651ce09fe8afac13810b4733051ccd326e8a468fae099c2a600fab0afac1071b2bba26837122fad5db235ddad25c80d56825d11b47e03eac8b0ca30dab1b3a61
diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-5.6-fix-compile.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-5.6-fix-compile.patch
new file mode 100644
index 000000000000..6a72c06ae55e
--- /dev/null
+++ b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-5.6-fix-compile.patch
@@ -0,0 +1,38 @@
+diff -Naur powARman-v4l-dvb-saa716x-83f3bfd93a95.orig/linux/drivers/media/common/saa716x/saa716x_ff_phi.c powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_ff_phi.c
+--- powARman-v4l-dvb-saa716x-83f3bfd93a95.orig/linux/drivers/media/common/saa716x/saa716x_ff_phi.c 2015-12-29 19:40:55.000000000 +0100
++++ powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_ff_phi.c 2020-10-04 11:40:59.830329660 +0200
+@@ -41,7 +41,7 @@
+ }
+
+ /* skip first PHI window as it is already mapped */
+- sti7109->mmio_uc = ioremap_nocache(phi1_start + 0x10000, 0x30000);
++ sti7109->mmio_uc = ioremap(phi1_start + 0x10000, 0x30000);
+ if (!sti7109->mmio_uc) {
+ dprintk(SAA716x_ERROR, 1, "Mem PHI1 remap failed");
+ err = -ENODEV;
+diff -Naur powARman-v4l-dvb-saa716x-83f3bfd93a95.orig/linux/drivers/media/common/saa716x/saa716x_pci.c powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_pci.c
+--- powARman-v4l-dvb-saa716x-83f3bfd93a95.orig/linux/drivers/media/common/saa716x/saa716x_pci.c 2020-10-04 11:38:55.811653278 +0200
++++ powARman-v4l-dvb-saa716x-83f3bfd93a95/linux/drivers/media/common/saa716x/saa716x_pci.c 2020-10-04 11:40:34.557784199 +0200
+@@ -185,7 +185,7 @@
+ goto fail2;
+ }
+
+- saa716x->mmio = ioremap_nocache(pci_resource_start(pdev, 0), 0x30000);
++ saa716x->mmio = ioremap(pci_resource_start(pdev, 0), 0x30000);
+ if (!saa716x->mmio) {
+ dprintk(SAA716x_ERROR, 1, "Mem 0 remap failed");
+ ret = -ENODEV;
+diff -Naur powARman-v4l-dvb-saa716x-83f3bfd93a95.orig/v4l/compat.h powARman-v4l-dvb-saa716x-83f3bfd93a95/v4l/compat.h
+--- powARman-v4l-dvb-saa716x-83f3bfd93a95.orig/v4l/compat.h 2015-12-29 19:40:55.000000000 +0100
++++ powARman-v4l-dvb-saa716x-83f3bfd93a95/v4l/compat.h 2020-10-04 11:41:58.379593434 +0200
+@@ -571,8 +571,8 @@
+
+ #ifdef NEED_PCI_IOREMAP_BAR
+ #define pci_ioremap_bar(pdev, bar) \
+- ioremap_nocache(pci_resource_start(pdev, bar), \
+- pci_resource_len(pdev, bar))
++ ioremap(pci_resource_start(pdev, bar), \
++ pci_resource_len(pdev, bar))
+ #endif
+
+ #ifdef NEED_POLL_SCHEDULE
diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.14.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.14.patch
new file mode 100644
index 000000000000..8abe888ff0e2
--- /dev/null
+++ b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.14.patch
@@ -0,0 +1,32 @@
+# file v4l-dvb-saa716x-4.10-fix-compile.patch
+--- a/linux/drivers/media/common/saa716x/saa716x_ff.h
++++ b/linux/drivers/media/common/saa716x/saa716x_ff.h
+@@ -1,7 +1,6 @@
+ #ifndef __SAA716x_FF_H
+ #define __SAA716x_FF_H
+
+-#include "dvb_filter.h"
+ #include "dvb_ringbuffer.h"
+ #include <linux/version.h>
+ #include <linux/workqueue.h>
+@@ -95,6 +94,7 @@
+ #define MAX_RESULT_LEN 256
+ #define MAX_DATA_LEN (1024 * 1024)
+
++#define TS_SIZE 188
+ #define TSOUT_LEN (1024 * TS_SIZE)
+ #define TSOUT_LEVEL_FILL (350 * TS_SIZE)
+ #define TSOUT_LEVEL_HIGH (30 * TS_SIZE)
+
+# file v4l-dvb-saa716x-4.14.0-fix-compile.patch
+--- a/linux/drivers/media/common/saa716x/saa716x_pci.c 2018-03-24 11:39:20.777643694 +0100
++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c 2018-03-24 11:41:02.135696671 +0100
+@@ -39,7 +39,7 @@
+ for (i = 0; i < SAA716x_MSI_MAX_VECTORS; i++)
+ saa716x->msix_entries[i].entry = i;
+
+- ret = pci_enable_msix(pdev, saa716x->msix_entries, SAA716x_MSI_MAX_VECTORS);
++ ret = pci_enable_msix_range(pdev, saa716x->msix_entries, SAA716x_MSI_MAX_VECTORS, SAA716x_MSI_MAX_VECTORS);
+ if (ret < 0)
+ dprintk(SAA716x_ERROR, 1, "MSI-X request failed <%d>", ret);
+ if (ret > 0)
diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.17.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.17.patch
new file mode 100644
index 000000000000..58bae509ec85
--- /dev/null
+++ b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.17.patch
@@ -0,0 +1,217 @@
+# file v4l-dvb-saa716x-4.15-fix-autorepeat.patch
+
+# Source: https://github.com/s-moch/linux-saa716x/commit/0b2276ee2e6383ad577fce5c694f8c4062d5334b.patch
+
+From 0b2276ee2e6383ad577fce5c694f8c4062d5334b Mon Sep 17 00:00:00 2001
+From: Soeren Moch <smoch@web.de>
+Date: Sat, 2 Dec 2017 20:51:10 +0100
+Subject: [PATCH] saa716x_ff: Remove autorepeat handling
+
+Let the input layer handle autorepeat for the IR remote.
+So no repeat_key timer is required anymore.
+
+Signed-off-by: Soeren Moch <smoch@web.de>
+---
+ drivers/media/common/saa716x/saa716x_ff_ir.c | 45 ++++++++--------------------
+ 1 file changed, 12 insertions(+), 33 deletions(-)
+
+diff --git a/drivers/media/common/saa716x/saa716x_ff_ir.c b/drivers/media/common/saa716x/saa716x_ff_ir.c
+index 35624789aa862..ad6f38611026c 100644
+--- a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c
++++ b/linux/drivers/media/common/saa716x/saa716x_ff_ir.c
+@@ -40,7 +40,7 @@ struct infrared {
+ u8 protocol;
+ u16 last_key;
+ u16 last_toggle;
+- bool delay_timer_finished;
++ bool key_pressed;
+ };
+
+ #define IR_RC5 0
+@@ -52,11 +52,12 @@ static void ir_emit_keyup(unsigned long parm)
+ {
+ struct infrared *ir = (struct infrared *) parm;
+
+- if (!ir || !test_bit(ir->last_key, ir->input_dev->key))
++ if (!ir || !ir->key_pressed)
+ return;
+
+ input_report_key(ir->input_dev, ir->last_key, 0);
+ input_sync(ir->input_dev);
++ ir->key_pressed = false;
+ }
+
+
+@@ -114,28 +115,18 @@ static void ir_emit_key(unsigned long parm)
+ return;
+ }
+
+- if (timer_pending(&ir->keyup_timer)) {
+- del_timer(&ir->keyup_timer);
+- if (ir->last_key != keycode || toggle != ir->last_toggle) {
+- ir->delay_timer_finished = false;
+- input_event(ir->input_dev, EV_KEY, ir->last_key, 0);
+- input_event(ir->input_dev, EV_KEY, keycode, 1);
+- input_sync(ir->input_dev);
+- } else if (ir->delay_timer_finished) {
+- input_event(ir->input_dev, EV_KEY, keycode, 2);
+- input_sync(ir->input_dev);
+- }
+- } else {
+- ir->delay_timer_finished = false;
+- input_event(ir->input_dev, EV_KEY, keycode, 1);
+- input_sync(ir->input_dev);
+- }
++ if (ir->key_pressed &&
++ (ir->last_key != keycode || toggle != ir->last_toggle))
++ input_event(ir->input_dev, EV_KEY, ir->last_key, 0);
+
++ input_event(ir->input_dev, EV_KEY, keycode, 1);
++ input_sync(ir->input_dev);
++
++ ir->key_pressed = true;
+ ir->last_key = keycode;
+ ir->last_toggle = toggle;
+
+- ir->keyup_timer.expires = jiffies + UP_TIMEOUT;
+- add_timer(&ir->keyup_timer);
++ mod_timer(&ir->keyup_timer, jiffies + UP_TIMEOUT);
+
+ }
+
+@@ -166,16 +157,6 @@ static void ir_register_keys(struct infrared *ir)
+ ir->input_dev->keycodemax = ARRAY_SIZE(ir->key_map);
+ }
+
+-
+-/* called by the input driver after rep[REP_DELAY] ms */
+-static void ir_repeat_key(unsigned long parm)
+-{
+- struct infrared *ir = (struct infrared *) parm;
+-
+- ir->delay_timer_finished = true;
+-}
+-
+-
+ /* interrupt handler */
+ void saa716x_ir_handler(struct saa716x_dev *saa716x, u32 ir_cmd)
+ {
+@@ -236,9 +217,7 @@ int saa716x_ir_init(struct saa716x_dev *saa716x)
+ ir->key_map[i] = i+1;
+ ir_register_keys(ir);
+
+- /* override repeat timer */
+- input_dev->timer.function = ir_repeat_key;
+- input_dev->timer.data = (unsigned long) ir;
++ input_enable_softrepeat(input_dev, 800, 200);
+
+ tasklet_init(&ir->tasklet, ir_emit_key, (unsigned long) saa716x);
+ saa716x->ir_priv = ir;
+
+# file v4l-dvb-saa716x-4.15-fix-timers.patch
+# Source: https://github.com/s-moch/linux-saa716x/commit/1002d79c4ba60de0dbeacba0f289119556d7450d.patch
+
+From 1002d79c4ba60de0dbeacba0f289119556d7450d Mon Sep 17 00:00:00 2001
+From: Soeren Moch <smoch@web.de>
+Date: Sat, 2 Dec 2017 21:23:34 +0100
+Subject: [PATCH] saa716x_ff: Convert to new timer API
+
+Convert to new timer API in linux-4.15.
+
+Signed-off-by: Soeren Moch <smoch@web.de>
+---
+ drivers/media/common/saa716x/saa716x_ff_ir.c | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/media/common/saa716x/saa716x_ff_ir.c b/drivers/media/common/saa716x/saa716x_ff_ir.c
+index ad6f38611026c..7894adff4d4f6 100644
+--- a/linux/drivers/media/common/saa716x/saa716x_ff_ir.c
++++ b/linux/drivers/media/common/saa716x/saa716x_ff_ir.c
+@@ -48,9 +48,9 @@ struct infrared {
+
+
+ /* key-up timer */
+-static void ir_emit_keyup(unsigned long parm)
++static void ir_emit_keyup(struct timer_list *t)
+ {
+- struct infrared *ir = (struct infrared *) parm;
++ struct infrared *ir = from_timer(ir, t, keyup_timer);
+
+ if (!ir || !ir->key_pressed)
+ return;
+@@ -184,9 +184,7 @@ int saa716x_ir_init(struct saa716x_dev *saa716x)
+ if (!ir)
+ return -ENOMEM;
+
+- init_timer(&ir->keyup_timer);
+- ir->keyup_timer.function = ir_emit_keyup;
+- ir->keyup_timer.data = (unsigned long) ir;
++ timer_setup(&ir->keyup_timer, ir_emit_keyup, 0);
+
+ input_dev = input_allocate_device();
+ if (!input_dev)
+
+# file v4l-dvb-saa716x-4.16-fix-compile.patch
+diff -Naur powARman-v4l-dvb-saa716x-3b9fce66666a.orig/linux/drivers/media/common/saa716x/saa716x_adap.c powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_adap.c
+--- powARman-v4l-dvb-saa716x-3b9fce66666a.orig/linux/drivers/media/common/saa716x/saa716x_adap.c 2018-04-04 08:24:59.454708009 +0200
++++ powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_adap.c 2018-04-04 08:25:36.263560559 +0200
+@@ -1,9 +1,9 @@
+ #include <linux/bitops.h>
+
+-#include "dmxdev.h"
+-#include "dvbdev.h"
+-#include "dvb_demux.h"
+-#include "dvb_frontend.h"
++#include <media/dmxdev.h>
++#include <media/dvbdev.h>
++#include <media/dvb_demux.h>
++#include <media/dvb_frontend.h>
+
+ #include "saa716x_mod.h"
+ #include "saa716x_spi.h"
+diff -Naur powARman-v4l-dvb-saa716x-3b9fce66666a.orig/linux/drivers/media/common/saa716x/saa716x_ff.h powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff.h
+--- powARman-v4l-dvb-saa716x-3b9fce66666a.orig/linux/drivers/media/common/saa716x/saa716x_ff.h 2018-04-04 08:24:59.458708101 +0200
++++ powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_ff.h 2018-04-04 08:25:36.263560559 +0200
+@@ -1,7 +1,7 @@
+ #ifndef __SAA716x_FF_H
+ #define __SAA716x_FF_H
+
+-#include "dvb_ringbuffer.h"
++#include <media/dvb_ringbuffer.h>
+ #include <linux/version.h>
+ #include <linux/workqueue.h>
+
+diff -Naur powARman-v4l-dvb-saa716x-3b9fce66666a.orig/linux/drivers/media/common/saa716x/saa716x_priv.h powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_priv.h
+--- powARman-v4l-dvb-saa716x-3b9fce66666a.orig/linux/drivers/media/common/saa716x/saa716x_priv.h 2018-04-04 08:24:59.458708101 +0200
++++ powARman-v4l-dvb-saa716x-3b9fce66666a/linux/drivers/media/common/saa716x/saa716x_priv.h 2018-04-04 08:25:36.263560559 +0200
+@@ -18,11 +18,11 @@
+ #include "saa716x_spi.h"
+ #include "saa716x_vip.h"
+
+-#include "dvbdev.h"
+-#include "dvb_demux.h"
+-#include "dmxdev.h"
+-#include "dvb_frontend.h"
+-#include "dvb_net.h"
++#include <media/dvbdev.h>
++#include <media/dvb_demux.h>
++#include <media/dmxdev.h>
++#include <media/dvb_frontend.h>
++#include <media/dvb_net.h>
+
+ #define SAA716x_ERROR 0
+ #define SAA716x_NOTICE 1
+
+# file v4l-dvb-saa716x-4.17-define-AUDIO_GET_PTS.patch
+--- a/linux/drivers/media/common/saa716x/saa716x_ff.h 2018-11-08 15:44:10.479886225 +0100
++++ b/linux/drivers/media/common/saa716x/saa716x_ff.h 2018-11-08 15:45:19.981237523 +0100
+@@ -108,6 +108,9 @@
+ #define VIDEO_CAPTURE_OFF 0
+ #define VIDEO_CAPTURE_ONE_SHOT 1
+
++#ifndef AUDIO_GET_PTS
++#define AUDIO_GET_PTS _IOR('o', 19, __u64)
++#endif
+
+ /* place to store all the necessary device information */
+ struct sti7109_dev {
diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.4.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.4.patch
new file mode 100644
index 000000000000..e719f4d629e2
--- /dev/null
+++ b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.4.patch
@@ -0,0 +1,97 @@
+# file OSD_RAW_CMD_patch_2.diff
+--- a/linux/drivers/media/common/saa716x/saa716x_ff_cmd.h.orig 2011-11-12 14:46:51.175700236 +0100
++++ b/linux/drivers/media/common/saa716x/saa716x_ff_cmd.h 2011-11-12 14:45:10.103702959 +0100
+@@ -1,6 +1,24 @@
+ #ifndef __SAA716x_FF_CMD_H
+ #define __SAA716x_FF_CMD_H
+
++#if !defined OSD_RAW_CMD
++typedef struct osd_raw_cmd_s {
++ const void *cmd_data;
++ int cmd_len;
++ void *result_data;
++ int result_len;
++} osd_raw_cmd_t;
++
++typedef struct osd_raw_data_s {
++ const void *data_buffer;
++ int data_length;
++ int data_handle;
++} osd_raw_data_t;
++
++#define OSD_RAW_CMD _IOWR('o', 162, osd_raw_cmd_t)
++#define OSD_RAW_DATA _IOWR('o', 163, osd_raw_data_t)
++#endif
++
+ extern int sti7109_cmd_init(struct sti7109_dev *sti7109);
+ extern int sti7109_raw_cmd(struct sti7109_dev * sti7109,
+ osd_raw_cmd_t * cmd);
+
+# file v4l-dvb-saa716x-Makefilepatch-2.diff
+--- v4l-dvb-saa716x-cfa4b4faab67/linux/drivers/media/common/saa716x/Makefile.orig 2013-03-02 07:44:51.112642592 +0100
++++ v4l-dvb-saa716x-cfa4b4faab67/linux/drivers/media/common/saa716x/Makefile 2013-03-02 07:46:56.703138542 +0100
+@@ -24,3 +24,5 @@
+ obj-$(CONFIG_DVB_SAA716X_FF) += saa716x_ff.o
+
+ EXTRA_CFLAGS = -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/ -Idrivers/media/dvb-core/ -Idrivers/media/dvb-frontends/
++EXTRA_CFLAGS += -Idrivers/media/common/tuners/ # up to kernel 3.6
++EXTRA_CFLAGS += -Idrivers/media/tuners/ # kernel 3.7+
+
+
+# file v4l-dvb-saa716x-3.19-set_gpio.patch
+--- a/linux/drivers/media/common/saa716x/saa716x_budget.c 2014-11-09 15:44:55.000000000 +0100
++++ b/linux/drivers/media/common/saa716x/saa716x_budget.c 2015-02-28 13:58:01.258743639 +0100
+@@ -497,10 +497,10 @@
+ break;
+ }
+
+- err = stv090x_set_gpio(fe, 2, 0, en, 0);
++ err = skystar2_stv090x_config.set_gpio(fe, 2, 0, en, 0);
+ if (err < 0)
+ goto exit;
+- err = stv090x_set_gpio(fe, 3, 0, sel, 0);
++ err = skystar2_stv090x_config.set_gpio(fe, 3, 0, sel, 0);
+ if (err < 0)
+ goto exit;
+
+@@ -519,7 +519,7 @@
+ else
+ value = 0;
+
+- err = stv090x_set_gpio(fe, 4, 0, value, 0);
++ err = skystar2_stv090x_config.set_gpio(fe, 4, 0, value, 0);
+ if (err < 0)
+ goto exit;
+
+# file v4l-dvb-saa716x-4.2-fix-compile.patch
+--- a/linux/drivers/media/common/saa716x/saa716x_budget.c 2015-09-03 00:30:08.662553247 +0200
++++ b/linux/drivers/media/common/saa716x/saa716x_budget.c 2015-09-03 00:31:03.899206845 +0200
+@@ -306,7 +306,7 @@
+ #define SAA716x_MODEL_TWINHAN_VP1028 "Twinhan/Azurewave VP-1028"
+ #define SAA716x_DEV_TWINHAN_VP1028 "DVB-S"
+
+-static int vp1028_dvbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++static int vp1028_dvbs_set_voltage(struct dvb_frontend *fe, enum fe_sec_voltage voltage)
+ {
+ struct saa716x_dev *saa716x = fe->dvb->priv;
+
+--- a/linux/drivers/media/common/saa716x/saa716x_hybrid.c 2014-11-09 15:44:55.000000000 +0100
++++ b/linux/drivers/media/common/saa716x/saa716x_hybrid.c 2015-09-03 00:31:03.899206845 +0200
+@@ -321,7 +321,7 @@
+ .request_firmware = tda1004x_vp6090_request_firmware,
+ };
+
+-static int vp6090_dvbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++static int vp6090_dvbs_set_voltage(struct dvb_frontend *fe, enum fe_sec_voltage voltage)
+ {
+ struct saa716x_dev *saa716x = fe->dvb->priv;
+
+--- a/linux/drivers/media/common/saa716x/saa716x_pci.c 2014-11-09 15:44:55.000000000 +0100
++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c 2015-09-03 00:31:03.900206839 +0200
+@@ -1,3 +1,5 @@
++#include <asm/atomic.h>
++#include <linux/spinlock_types.h>
+ #include <asm/io.h>
+ #include <asm/pgtable.h>
+ #include <asm/page.h>
+
diff --git a/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.9.patch b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.9.patch
new file mode 100644
index 000000000000..72c27974bfd2
--- /dev/null
+++ b/media-tv/v4l-dvb-saa716x/files/v4l-dvb-saa716x-up-to-4.9.patch
@@ -0,0 +1,192 @@
+# file v4l-dvb-saa716x-4.5.2-fix-compile.patch
+fix compile with kernel >= 4.5.2
+wrt bug 581450
+Signed-of-by: Joerg Bornkessel <hd_brummy@gentoo.org> 2016/05/05
+--- a/linux/drivers/media/common/saa716x/saa716x_pci.c.old 2016-04-27 20:59:51.000000000 +0200
++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c 2016-04-27 21:19:03.117822874 +0200
+@@ -1,6 +1,7 @@
+ #include <asm/atomic.h>
+ #include <linux/spinlock_types.h>
+ #include <asm/io.h>
++#include <asm/processor.h>
+ #include <asm/pgtable.h>
+ #include <asm/page.h>
+ #include <linux/kmod.h>
+
+
+
+# file v4l-dvb-saa716x-4.6.0-fix-compile.patch
+--- a/linux/drivers/media/common/saa716x/saa716x_pci.c 2017-02-26 18:48:27.196949325 +0100
++++ b/linux/drivers/media/common/saa716x/saa716x_pci.c 2017-02-26 18:50:28.149283794 +0100
+@@ -1,9 +1,6 @@
+ #include <asm/atomic.h>
+ #include <linux/spinlock_types.h>
+-#include <asm/io.h>
+ #include <asm/processor.h>
+-#include <asm/pgtable.h>
+-#include <asm/page.h>
+ #include <linux/kmod.h>
+ #include <linux/vmalloc.h>
+ #include <linux/init.h>
+@@ -20,11 +17,6 @@
+
+ #define DRIVER_NAME "SAA716x Core"
+
+-static irqreturn_t saa716x_msi_handler(int irq, void *dev_id)
+-{
+- return IRQ_HANDLED;
+-}
+-
+ static int saa716x_enable_msi(struct saa716x_dev *saa716x)
+ {
+ struct pci_dev *pdev = saa716x->pdev;
+
+
+
+# file v4l-dvb-saa716x-4.9-fix-warnings.patch
+--- a/linux/drivers/media/common/saa716x/saa716x_rom.c 2015-12-29 19:40:55.000000000 +0100
++++ a/linux/drivers/media/common/saa716x/saa716x_rom.c 2017-07-11 00:51:19.149941914 +0200
+@@ -113,7 +113,7 @@
+ memcpy(rom_header, &buf[*offset], sizeof (struct saa716x_romhdr));
+ if (rom_header->header_size != sizeof (struct saa716x_romhdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%zd bytes, Expected=%d",
+ sizeof (struct saa716x_romhdr),
+ rom_header->header_size);
+
+@@ -237,7 +237,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_decoder_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_decoder_hdr));
+
+@@ -268,7 +268,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_gpio_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_gpio_hdr));
+
+@@ -305,7 +305,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_video_decoder_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_video_decoder_hdr));
+
+@@ -386,7 +386,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_audio_decoder_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_audio_decoder_hdr));
+
+@@ -417,7 +417,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_evsrc_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_evsrc_hdr));
+
+@@ -448,7 +448,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_xbar_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_xbar_hdr));
+
+@@ -486,7 +486,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_tuner_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_tuner_hdr));
+
+@@ -516,7 +516,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_pll_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_pll_hdr));
+
+@@ -546,7 +546,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_channel_decoder_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_channel_decoder_hdr));
+
+@@ -576,7 +576,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_encoder_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_encoder_hdr));
+
+@@ -606,7 +606,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_ir_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_ir_hdr));
+
+@@ -637,7 +637,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_eeprom_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_eeprom_hdr));
+
+@@ -668,7 +668,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_filter_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_filter_hdr));
+
+@@ -699,7 +699,7 @@
+ saa716x_descriptor_dbg(saa716x, buf, offset, header.size, header.ext_data);
+ if (header.size != sizeof (struct saa716x_streamdev_hdr)) {
+ dprintk(SAA716x_ERROR, 1,
+- "ERROR: Header size mismatch! Read size=%d bytes, Expected=%d",
++ "ERROR: Header size mismatch! Read size=%d bytes, Expected=%zd",
+ header.size,
+ sizeof (struct saa716x_streamdev_hdr));
+
+@@ -789,7 +789,7 @@
+
+ memcpy(device, &buf[*offset], sizeof (struct saa716x_devinfo));
+ if (device->struct_size != sizeof (struct saa716x_devinfo)) {
+- dprintk(SAA716x_ERROR, 1, "ERROR: Device size mismatch! Read=%d bytes, expected=%d bytes",
++ dprintk(SAA716x_ERROR, 1, "ERROR: Device size mismatch! Read=%d bytes, expected=%zd bytes",
+ device->struct_size,
+ sizeof (struct saa716x_devinfo));
+
diff --git a/media-tv/v4l-dvb-saa716x/v4l-dvb-saa716x-0.0.1_p20170225-r5.ebuild b/media-tv/v4l-dvb-saa716x/v4l-dvb-saa716x-0.0.1_p20170225-r5.ebuild
new file mode 100644
index 000000000000..66903db98d13
--- /dev/null
+++ b/media-tv/v4l-dvb-saa716x/v4l-dvb-saa716x-0.0.1_p20170225-r5.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit linux-info linux-mod
+
+DESCRIPTION="driver for saa716x based dvb cards like TT S2-6400 or Skystar 2 eXpress HD"
+HOMEPAGE="https://bitbucket.org/powARman/v4l-dvb-saa716x"
+
+REVISION="83f3bfd93a95"
+REVISION_DATE="20160322"
+
+SRC_URI="https://bitbucket.org/powARman/v4l-dvb-saa716x/get/${REVISION}.tar.bz2
+-> v4l-dvb-saa716x-0.0.1_p${REVISION_DATE}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+RDEPEND="sys-firmware/tt-s2-6400-firmware"
+
+S="${WORKDIR}/powARman-v4l-dvb-saa716x-${REVISION}"
+
+BUILD_TARGETS="modules"
+MODULE_NAMES="
+ saa716x_ff(misc:${EROOT}/usr/src/linux:${S}/linux/drivers/media/common/saa716x)
+ saa716x_core(misc:${EROOT}/usr/src/linux:${S}/linux/drivers/media/common/saa716x)
+ saa716x_budget(misc:${EROOT}/usr/src/linux:${S}/linux/drivers/media/common/saa716x)
+ saa716x_hybrid(misc:${EROOT}/usr/src/linux:${S}/linux/drivers/media/common/saa716x)"
+
+CONFIG_CHECK="DVB_CORE DVB_STV6110x DVB_STV090x"
+
+src_prepare() {
+ default
+
+ kernel_is ge 4 4 0 && eapply "${FILESDIR}/v4l-dvb-saa716x-up-to-4.4.patch"
+ kernel_is ge 4 9 0 && eapply "${FILESDIR}/v4l-dvb-saa716x-up-to-4.9.patch"
+ kernel_is ge 4 14 0 && eapply "${FILESDIR}/v4l-dvb-saa716x-up-to-4.14.patch"
+ kernel_is ge 4 17 0 && eapply "${FILESDIR}/v4l-dvb-saa716x-up-to-4.17.patch"
+ kernel_is ge 5 6 0 && eapply "${FILESDIR}/v4l-dvb-saa716x-5.6-fix-compile.patch"
+}
+
+src_compile() {
+ kernel_is le 5 0 && BUILD_PARAMS="SUBDIRS" || BUILD_PARAMS="M"
+ BUILD_PARAMS+="=${S}/linux/drivers/media/common/saa716x CONFIG_SAA716X_CORE=m \
+ CONFIG_DVB_SAA716X_FF=m CONFIG_DVB_SAA716X_BUDGET=m CONFIG_DVB_SAA716X_HYBRID=m"
+ addpredict "${EROOT}"/usr/src/linux/
+ linux-mod_src_compile
+}