From: Ron Economos <w...@comcast.net>

[ 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 <w...@comcast.net>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>
Signed-off-by: Sasha Levin <alexander.le...@microsoft.com>
---
 drivers/media/dvb-frontends/si2168.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/media/dvb-frontends/si2168.c 
b/drivers/media/dvb-frontends/si2168.c
index 20b4a659e2e4..0fe69f79a24d 100644
--- a/drivers/media/dvb-frontends/si2168.c
+++ b/drivers/media/dvb-frontends/si2168.c
@@ -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;
@@ -378,6 +380,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;
-- 
2.14.1

Reply via email to