media: ddbridge/sx8: enable modulation selection in set_parameters()
authorDaniel Scheller <d.scheller@gmx.net>
Sat, 23 Jun 2018 15:36:14 +0000 (11:36 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Mon, 30 Jul 2018 20:23:12 +0000 (16:23 -0400)
Allow for tuning to transponders with specific modulations in
set_parameters(). Setting a specific modulation will also enable lower
modulations.

Picked up from the upstream dddvb GIT. Upstream also has support for
APSK64/128/256 modulations which aren't supported yet by the DVB
API, so comment them out until support for them is added.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/pci/ddbridge/ddbridge-sx8.c

index c87cefa..4418604 100644 (file)
@@ -372,15 +372,31 @@ static int set_parameters(struct dvb_frontend *fe)
        if (iq_mode)
                ts_config = (SX8_TSCONFIG_TSHEADER | SX8_TSCONFIG_MODE_IQ);
        if (iq_mode < 3) {
-               u32 flags = 3;
-               u32 mask = 0x7f;
-
-               if (p->modulation == APSK_16 ||
-                   p->modulation == APSK_32) {
-                       flags = 2;
+               u32 mask;
+
+               switch (p->modulation) {
+               /* uncomment whenever these modulations hit the DVB API
+                *      case APSK_256:
+                *              mask = 0x7f;
+                *              break;
+                *      case APSK_128:
+                *              mask = 0x3f;
+                *              break;
+                *      case APSK_64:
+                *              mask = 0x1f;
+                *              break;
+                */
+               case APSK_32:
                        mask = 0x0f;
+                       break;
+               case APSK_16:
+                       mask = 0x07;
+                       break;
+               default:
+                       mask = 0x03;
+                       break;
                }
-               stat = start(fe, flags, mask, ts_config);
+               stat = start(fe, 3, mask, ts_config);
        } else {
                u32 flags = (iq_mode == 2) ? 1 : 0;