media: [RESEND] media: dvb-frontends: Add delay to Si2168 restart
authorRon Economos <w6rz@comcast.net>
Tue, 12 Dec 2017 00:51:53 +0000 (19:51 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 24 Mar 2018 10:01:23 +0000 (11:01 +0100)
[ Upstream commit 380a6c86457573aa42d27ae11e025eb25941a0b7 ]

On faster CPUs a delay is required after the resume command and the restart command. Without the delay, the restart command often returns -EREMOTEIO and the Si2168 does not restart.

Note that this patch fixes the same issue as https://patchwork.linuxtv.org/patch/44304/, but I believe my udelay() fix addresses the actual problem.

Signed-off-by: Ron Economos <w6rz@comcast.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/dvb-frontends/si2168.c

index 172fc367ccaaccdedadba19f9343e48e364ef06a..24840a2e5a756adcf768e630b37ab94300665697 100644 (file)
@@ -14,6 +14,8 @@
  *    GNU General Public License for more details.
  */
 
+#include <linux/delay.h>
+
 #include "si2168_priv.h"
 
 static const struct dvb_frontend_ops si2168_ops;
@@ -435,6 +437,7 @@ static int si2168_init(struct dvb_frontend *fe)
                if (ret)
                        goto err;
 
+               udelay(100);
                memcpy(cmd.args, "\x85", 1);
                cmd.wlen = 1;
                cmd.rlen = 1;