kernel patch - dvbsky s960

geronimobb

Well-Known Member
Apr 22, 2017
35
1
48
51
Hy,

I don't know if this is the right place to ask for, but asking doens't hurt...

There is allready a longer time (months) a problem with the dvbsky s960 satellite tuner under linux. I use a container under proxmox to utilize these tuners (tvheadend). There is a patch available since a few weeks:
https://bugzilla.kernel.org/show_bug.cgi?id=199323
Could this patch be included with the next kernel upgrade in proxmox?

Kind regards.
 
The status of the bug is still 'new', so it could still take some time before the patch will be included somewhere..

Just to inform other interested people, i've compiled the proxmox kernel with this patch, and the patch seems to solve the issues (some days allready).
 
I can also confirm the patch works for me.
Running Proxmox VE 6.0, compiled custom kernel at version 5.0.21-1-pve

Steps for beginners like myself:
SSH to Proxmox
# apt install automake cpio dh-python file gcc kmod libiberty-dev libpve-common-perl libtool perl-modules python-minimal sed tar zlib1g-dev libslang2-dev
# cd /usr/src
# git clone git://git.proxmox.com/git/pve-kernel.git
# cd pve-kernel
# nano patches/kernel/dvbsky.patch
Code:
diff --git a/drivers/media/dvb-frontends/m88ds3103.c b/drivers/media/dvb-frontends/m88ds3103.c
index 123f2a33738b..403f42806455 100644
--- a/drivers/media/dvb-frontends/m88ds3103.c
+++ b/drivers/media/dvb-frontends/m88ds3103.c
@@ -309,6 +309,9 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
     u16 u16tmp;
     u32 tuner_frequency_khz, target_mclk;
     s32 s32tmp;
+    static const struct reg_sequence reset_buf[] = {
+        {0x07, 0x80}, {0x07, 0x00}
+    };
 
     dev_dbg(&client->dev,
         "delivery_system=%d modulation=%d frequency=%u symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
@@ -321,11 +324,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
     }
 
     /* reset */
-    ret = regmap_write(dev->regmap, 0x07, 0x80);
-    if (ret)
-        goto err;
-
-    ret = regmap_write(dev->regmap, 0x07, 0x00);
+    ret = regmap_multi_reg_write(dev->regmap, reset_buf, 2);
     if (ret)
         goto err;
# make
# dpkg -i *.deb
# reboot

Source: https://git.kernel.org/pub/scm/linu...c?id=981fbe3da20a6f35f17977453bce7dfc1664d74f