V4L/DVB (4785): Budget-ci: Change DEBIADDR_IR to a safer default

The IR chip has no address decoding, so the IR data is always present in
the high byte when doing a read from the saa7146 chip. This means that
the DEBI address used is irrelevant to the IR decoding logic.
DEBI addresses 0x1XXX are mapped to the registers on the CI module
itself, but only the lowest two bits are actually used (see EN50221,
section A.2.2.1), meaning that 0x1234 is equivalent to 0x1000 which maps
to register 0 (the data register). A read from the data register is
supposed to be preceded by a read from the size register, so some CI
modules will be confused (the AlphaCrypt CAM will hang completely).
The attached patch changes the address used when reading the IR data to
use 0x4000 instead. This is the CI version address, which is a safer
default, works with the AlphaCrypt CAM and matches the behaviour of the
Windows driver (AFAIK).

Signed-off-by: David H�rdeman <david@hardeman.nu>
Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>

authored by David H�rdeman and committed by Mauro Carvalho Chehab ecba77f2 6c8c21b9

+8 -1
+8 -1
drivers/media/dvb/ttpci/budget-ci.c
··· 46 #include "bsbe1.h" 47 #include "bsru6.h" 48 49 - #define DEBIADDR_IR 0x1234 50 #define DEBIADDR_CICONTROL 0x0000 51 #define DEBIADDR_CIVERSION 0x4000 52 #define DEBIADDR_IO 0x1000
··· 46 #include "bsbe1.h" 47 #include "bsru6.h" 48 49 + /* 50 + * Regarding DEBIADDR_IR: 51 + * Some CI modules hang if random addresses are read. 52 + * Using address 0x4000 for the IR read means that we 53 + * use the same address as for CI version, which should 54 + * be a safe default. 55 + */ 56 + #define DEBIADDR_IR 0x4000 57 #define DEBIADDR_CICONTROL 0x0000 58 #define DEBIADDR_CIVERSION 0x4000 59 #define DEBIADDR_IO 0x1000