These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / media / pci / saa7134 / saa7134-tvaudio.c
index 3afbcb7..21a5793 100644 (file)
@@ -20,6 +20,9 @@
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
+#include "saa7134.h"
+#include "saa7134-reg.h"
+
 #include <linux/init.h>
 #include <linux/list.h>
 #include <linux/module.h>
@@ -29,9 +32,6 @@
 #include <linux/freezer.h>
 #include <asm/div64.h>
 
-#include "saa7134-reg.h"
-#include "saa7134.h"
-
 /* ------------------------------------------------------------------ */
 
 static unsigned int audio_debug;
@@ -49,13 +49,10 @@ static int audio_clock_tweak;
 module_param(audio_clock_tweak, int, 0644);
 MODULE_PARM_DESC(audio_clock_tweak, "Audio clock tick fine tuning for cards with audio crystal that's slightly off (range [-1024 .. 1024])");
 
-#define dprintk(fmt, arg...)   if (audio_debug) \
-       printk(KERN_DEBUG "%s/audio: " fmt, dev->name , ## arg)
-#define d2printk(fmt, arg...)  if (audio_debug > 1) \
-       printk(KERN_DEBUG "%s/audio: " fmt, dev->name, ## arg)
-
-#define print_regb(reg) printk("%s:   reg 0x%03x [%-16s]: 0x%02x\n", \
-               dev->name,(SAA7134_##reg),(#reg),saa_readb((SAA7134_##reg)))
+#define audio_dbg(level, fmt, arg...) do { \
+       if (audio_debug >= level) \
+               printk(KERN_DEBUG pr_fmt("audio: " fmt), ## arg); \
+       } while (0)
 
 /* msecs */
 #define SCAN_INITIAL_DELAY     1000
@@ -206,13 +203,14 @@ static void mute_input_7134(struct saa7134_dev *dev)
 
        if (dev->hw_mute  == mute &&
                dev->hw_input == in && !dev->insuspend) {
-               dprintk("mute/input: nothing to do [mute=%d,input=%s]\n",
-                       mute,in->name);
+               audio_dbg(1, "mute/input: nothing to do [mute=%d,input=%s]\n",
+                         mute, in->name);
                return;
        }
 
-       dprintk("ctl_mute=%d automute=%d input=%s  =>  mute=%d input=%s\n",
-               dev->ctl_mute,dev->automute,dev->input->name,mute,in->name);
+       audio_dbg(1, "ctl_mute=%d automute=%d input=%s  =>  mute=%d input=%s\n",
+                 dev->ctl_mute, dev->automute,
+                 dev->input->name, mute, in->name);
        dev->hw_mute  = mute;
        dev->hw_input = in;
 
@@ -265,8 +263,8 @@ static void tvaudio_setmode(struct saa7134_dev *dev,
                tweak = audio_clock_tweak;
 
        if (note)
-               dprintk("tvaudio_setmode: %s %s [%d.%03d/%d.%03d MHz] acpf=%d%+d\n",
-                       note,audio->name,
+               audio_dbg(1, "tvaudio_setmode: %s %s [%d.%03d/%d.%03d MHz] acpf=%d%+d\n",
+                       note, audio->name,
                        audio->carr1 / 1000, audio->carr1 % 1000,
                        audio->carr2 / 1000, audio->carr2 % 1000,
                        acpf, tweak);
@@ -334,14 +332,14 @@ static int tvaudio_checkcarrier(struct saa7134_dev *dev, struct mainscan *scan)
 
        if (!(dev->tvnorm->id & scan->std)) {
                value = 0;
-               dprintk("skipping %d.%03d MHz [%4s]\n",
-                       scan->carr / 1000, scan->carr % 1000, scan->name);
+               audio_dbg(1, "skipping %d.%03d MHz [%4s]\n",
+                         scan->carr / 1000, scan->carr % 1000, scan->name);
                return 0;
        }
 
        if (audio_debug > 1) {
                int i;
-               dprintk("debug %d:",scan->carr);
+               audio_dbg(1, "debug %d:", scan->carr);
                for (i = -150; i <= 150; i += 30) {
                        tvaudio_setcarrier(dev,scan->carr+i,scan->carr+i);
                        saa_readl(SAA7134_LEVEL_READOUT1 >> 2);
@@ -349,11 +347,11 @@ static int tvaudio_checkcarrier(struct saa7134_dev *dev, struct mainscan *scan)
                                return -1;
                        value = saa_readl(SAA7134_LEVEL_READOUT1 >> 2);
                        if (0 == i)
-                               printk("  #  %6d  # ",value >> 16);
+                               pr_cont("  #  %6d  # ", value >> 16);
                        else
-                               printk(" %6d",value >> 16);
+                               pr_cont(" %6d", value >> 16);
                }
-               printk("\n");
+               pr_cont("\n");
        }
 
        tvaudio_setcarrier(dev,scan->carr-90,scan->carr-90);
@@ -371,9 +369,9 @@ static int tvaudio_checkcarrier(struct saa7134_dev *dev, struct mainscan *scan)
        left >>= 16;
        right >>= 16;
        value = left > right ? left - right : right - left;
-       dprintk("scanning %d.%03d MHz [%4s] =>  dc is %5d [%d/%d]\n",
-               scan->carr / 1000, scan->carr % 1000,
-               scan->name, value, left, right);
+       audio_dbg(1, "scanning %d.%03d MHz [%4s] =>  dc is %5d [%d/%d]\n",
+                 scan->carr / 1000, scan->carr % 1000,
+                 scan->name, value, left, right);
        return value;
 }
 
@@ -389,7 +387,7 @@ static int tvaudio_getstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au
        case TVAUDIO_FM_K_STEREO:
        case TVAUDIO_FM_BG_STEREO:
                idp = (saa_readb(SAA7134_IDENT_SIF) & 0xe0) >> 5;
-               dprintk("getstereo: fm/stereo: idp=0x%x\n",idp);
+               audio_dbg(1, "getstereo: fm/stereo: idp=0x%x\n", idp);
                if (0x03 == (idp & 0x03))
                        retval = V4L2_TUNER_SUB_LANG1 | V4L2_TUNER_SUB_LANG2;
                else if (0x05 == (idp & 0x05))
@@ -403,10 +401,11 @@ static int tvaudio_getstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au
        case TVAUDIO_NICAM_FM:
        case TVAUDIO_NICAM_AM:
                nicam = saa_readb(SAA7134_AUDIO_STATUS);
-               dprintk("getstereo: nicam=0x%x\n",nicam);
+               audio_dbg(1, "getstereo: nicam=0x%x\n", nicam);
                if (nicam & 0x1) {
                        nicam_status = saa_readb(SAA7134_NICAM_STATUS);
-                       dprintk("getstereo: nicam_status=0x%x\n", nicam_status);
+                       audio_dbg(1, "getstereo: nicam_status=0x%x\n",
+                                 nicam_status);
 
                        switch (nicam_status & 0x03) {
                            case 0x01:
@@ -424,7 +423,7 @@ static int tvaudio_getstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au
                break;
        }
        if (retval != -1)
-               dprintk("found audio subchannels:%s%s%s%s\n",
+               audio_dbg(1, "found audio subchannels:%s%s%s%s\n",
                        (retval & V4L2_TUNER_SUB_MONO)   ? " mono"   : "",
                        (retval & V4L2_TUNER_SUB_STEREO) ? " stereo" : "",
                        (retval & V4L2_TUNER_SUB_LANG1)  ? " lang1"  : "",
@@ -459,8 +458,8 @@ static int tvaudio_setstereo(struct saa7134_dev *dev, struct saa7134_tvaudio *au
        case TVAUDIO_FM_BG_STEREO:
        case TVAUDIO_NICAM_AM:
        case TVAUDIO_NICAM_FM:
-               dprintk("setstereo [fm] => %s\n",
-                       name[ mode % ARRAY_SIZE(name) ]);
+               audio_dbg(1, "setstereo [fm] => %s\n",
+                         name[mode % ARRAY_SIZE(name)]);
                reg = fm[ mode % ARRAY_SIZE(fm) ];
                saa_writeb(SAA7134_FM_DEMATRIX, reg);
                break;
@@ -489,7 +488,8 @@ static int tvaudio_thread(void *data)
                try_to_freeze();
 
                dev->thread.scan1 = dev->thread.scan2;
-               dprintk("tvaudio thread scan start [%d]\n",dev->thread.scan1);
+               audio_dbg(1, "tvaudio thread scan start [%d]\n",
+                         dev->thread.scan1);
                dev->tvaudio  = NULL;
 
                saa_writeb(SAA7134_MONITOR_SELECT,   0xa0);
@@ -519,7 +519,7 @@ static int tvaudio_thread(void *data)
 
                if (1 == nscan) {
                        /* only one candidate -- skip scan ;) */
-                       dprintk("only one main carrier candidate - skipping scan\n");
+                       audio_dbg(1, "only one main carrier candidate - skipping scan\n");
                        max1 = 12345;
                        carrier = default_carrier;
                } else {
@@ -544,26 +544,24 @@ static int tvaudio_thread(void *data)
 
                if (0 != carrier && max1 > 2000 && max1 > max2*3) {
                        /* found good carrier */
-                       dprintk("found %s main sound carrier @ %d.%03d MHz [%d/%d]\n",
-                               dev->tvnorm->name, carrier/1000, carrier%1000,
-                               max1, max2);
+                       audio_dbg(1, "found %s main sound carrier @ %d.%03d MHz [%d/%d]\n",
+                                 dev->tvnorm->name, carrier/1000, carrier%1000,
+                                 max1, max2);
                        dev->last_carrier = carrier;
                        dev->automute = 0;
 
                } else if (0 != dev->last_carrier) {
                        /* no carrier -- try last detected one as fallback */
                        carrier = dev->last_carrier;
-                       dprintk("audio carrier scan failed, "
-                               "using %d.%03d MHz [last detected]\n",
-                               carrier/1000, carrier%1000);
+                       audio_dbg(1, "audio carrier scan failed, using %d.%03d MHz [last detected]\n",
+                                 carrier/1000, carrier%1000);
                        dev->automute = 1;
 
                } else {
                        /* no carrier + no fallback -- use default */
                        carrier = default_carrier;
-                       dprintk("audio carrier scan failed, "
-                               "using %d.%03d MHz [default]\n",
-                               carrier/1000, carrier%1000);
+                       audio_dbg(1, "audio carrier scan failed, using %d.%03d MHz [default]\n",
+                                 carrier/1000, carrier%1000);
                        dev->automute = 1;
                }
                tvaudio_setcarrier(dev,carrier,carrier);
@@ -661,7 +659,7 @@ static inline int saa_dsp_reset_error_bit(struct saa7134_dev *dev)
 {
        int state = saa_readb(SAA7135_DSP_RWSTATE);
        if (unlikely(state & SAA7135_DSP_RWSTATE_ERR)) {
-               d2printk("%s: resetting error bit\n", dev->name);
+               audio_dbg(2, "%s: resetting error bit\n", dev->name);
                saa_writeb(SAA7135_DSP_RWCLEAR, SAA7135_DSP_RWCLEAR_RERR);
        }
        return 0;
@@ -673,18 +671,17 @@ static inline int saa_dsp_wait_bit(struct saa7134_dev *dev, int bit)
 
        state = saa_readb(SAA7135_DSP_RWSTATE);
        if (unlikely(state & SAA7135_DSP_RWSTATE_ERR)) {
-               printk(KERN_WARNING "%s: dsp access error\n", dev->name);
+               pr_warn("%s: dsp access error\n", dev->name);
                saa_dsp_reset_error_bit(dev);
                return -EIO;
        }
        while (0 == (state & bit)) {
                if (unlikely(0 == count)) {
-                       printk("%s: dsp access wait timeout [bit=%s]\n",
-                              dev->name,
-                              (bit & SAA7135_DSP_RWSTATE_WRR) ? "WRR" :
-                              (bit & SAA7135_DSP_RWSTATE_RDB) ? "RDB" :
-                              (bit & SAA7135_DSP_RWSTATE_IDA) ? "IDA" :
-                              "???");
+                       pr_err("dsp access wait timeout [bit=%s]\n",
+                                (bit & SAA7135_DSP_RWSTATE_WRR) ? "WRR" :
+                                (bit & SAA7135_DSP_RWSTATE_RDB) ? "RDB" :
+                                (bit & SAA7135_DSP_RWSTATE_IDA) ? "IDA" :
+                                "???");
                        return -EIO;
                }
                saa_wait(DSP_DELAY);
@@ -699,7 +696,7 @@ int saa_dsp_writel(struct saa7134_dev *dev, int reg, u32 value)
 {
        int err;
 
-       d2printk("dsp write reg 0x%x = 0x%06x\n",reg<<2,value);
+       audio_dbg(2, "dsp write reg 0x%x = 0x%06x\n", reg << 2, value);
        err = saa_dsp_wait_bit(dev,SAA7135_DSP_RWSTATE_WRR);
        if (err < 0)
                return err;
@@ -786,14 +783,16 @@ static int tvaudio_thread_ddep(void *data)
                try_to_freeze();
 
                dev->thread.scan1 = dev->thread.scan2;
-               dprintk("tvaudio thread scan start [%d]\n",dev->thread.scan1);
+               audio_dbg(1, "tvaudio thread scan start [%d]\n",
+                         dev->thread.scan1);
 
                if (audio_ddep >= 0x04 && audio_ddep <= 0x0e) {
                        /* insmod option override */
                        norms = (audio_ddep << 2) | 0x01;
-                       dprintk("ddep override: %s\n",stdres[audio_ddep]);
+                       audio_dbg(1, "ddep override: %s\n",
+                                 stdres[audio_ddep]);
                } else if (&card(dev).radio == dev->input) {
-                       dprintk("FM Radio\n");
+                       audio_dbg(1, "FM Radio\n");
                        if (dev->tuner_type == TUNER_PHILIPS_TDA8290) {
                                norms = (0x11 << 2) | 0x01;
                                /* set IF frequency to 5.5 MHz */
@@ -816,12 +815,12 @@ static int tvaudio_thread_ddep(void *data)
                                norms |= 0x10;
                        if (0 == norms)
                                norms = 0x7c; /* all */
-                       dprintk("scanning:%s%s%s%s%s\n",
-                               (norms & 0x04) ? " B/G"  : "",
-                               (norms & 0x08) ? " D/K"  : "",
-                               (norms & 0x10) ? " L/L'" : "",
-                               (norms & 0x20) ? " I"    : "",
-                               (norms & 0x40) ? " M"    : "");
+                       audio_dbg(1, "scanning:%s%s%s%s%s\n",
+                                 (norms & 0x04) ? " B/G"  : "",
+                                 (norms & 0x08) ? " D/K"  : "",
+                                 (norms & 0x10) ? " L/L'" : "",
+                                 (norms & 0x20) ? " I"    : "",
+                                 (norms & 0x40) ? " M"    : "");
                }
 
                /* kick automatic standard detection */
@@ -836,29 +835,28 @@ static int tvaudio_thread_ddep(void *data)
                        goto restart;
                value = saa_readl(0x528 >> 2) & 0xffffff;
 
-               dprintk("tvaudio thread status: 0x%x [%s%s%s]\n",
-                       value, stdres[value & 0x1f],
-                       (value & 0x000020) ? ",stereo" : "",
-                       (value & 0x000040) ? ",dual"   : "");
-               dprintk("detailed status: "
-                       "%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s\n",
-                       (value & 0x000080) ? " A2/EIAJ pilot tone "     : "",
-                       (value & 0x000100) ? " A2/EIAJ dual "           : "",
-                       (value & 0x000200) ? " A2/EIAJ stereo "         : "",
-                       (value & 0x000400) ? " A2/EIAJ noise mute "     : "",
-
-                       (value & 0x000800) ? " BTSC/FM radio pilot "    : "",
-                       (value & 0x001000) ? " SAP carrier "            : "",
-                       (value & 0x002000) ? " BTSC stereo noise mute " : "",
-                       (value & 0x004000) ? " SAP noise mute "         : "",
-                       (value & 0x008000) ? " VDSP "                   : "",
-
-                       (value & 0x010000) ? " NICST "                  : "",
-                       (value & 0x020000) ? " NICDU "                  : "",
-                       (value & 0x040000) ? " NICAM muted "            : "",
-                       (value & 0x080000) ? " NICAM reserve sound "    : "",
-
-                       (value & 0x100000) ? " init done "              : "");
+               audio_dbg(1, "tvaudio thread status: 0x%x [%s%s%s]\n",
+                         value, stdres[value & 0x1f],
+                         (value & 0x000020) ? ",stereo" : "",
+                         (value & 0x000040) ? ",dual"   : "");
+               audio_dbg(1, "detailed status: %s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s#%s\n",
+                         (value & 0x000080) ? " A2/EIAJ pilot tone "     : "",
+                         (value & 0x000100) ? " A2/EIAJ dual "           : "",
+                         (value & 0x000200) ? " A2/EIAJ stereo "         : "",
+                         (value & 0x000400) ? " A2/EIAJ noise mute "     : "",
+
+                         (value & 0x000800) ? " BTSC/FM radio pilot "    : "",
+                         (value & 0x001000) ? " SAP carrier "            : "",
+                         (value & 0x002000) ? " BTSC stereo noise mute " : "",
+                         (value & 0x004000) ? " SAP noise mute "         : "",
+                         (value & 0x008000) ? " VDSP "                   : "",
+
+                         (value & 0x010000) ? " NICST "                  : "",
+                         (value & 0x020000) ? " NICDU "                  : "",
+                         (value & 0x040000) ? " NICAM muted "            : "",
+                         (value & 0x080000) ? " NICAM reserve sound "    : "",
+
+                         (value & 0x100000) ? " init done "              : "");
        }
 
  done:
@@ -1031,7 +1029,7 @@ int saa7134_tvaudio_init2(struct saa7134_dev *dev)
                /* start tvaudio thread */
                dev->thread.thread = kthread_run(my_thread, dev, "%s", dev->name);
                if (IS_ERR(dev->thread.thread)) {
-                       printk(KERN_WARNING "%s: kernel_thread() failed\n",
+                       pr_warn("%s: kernel_thread() failed\n",
                               dev->name);
                        /* XXX: missing error handling here */
                }
@@ -1061,7 +1059,7 @@ int saa7134_tvaudio_fini(struct saa7134_dev *dev)
 int saa7134_tvaudio_do_scan(struct saa7134_dev *dev)
 {
        if (dev->input->amux != TV) {
-               dprintk("sound IF not in use, skipping scan\n");
+               audio_dbg(1, "sound IF not in use, skipping scan\n");
                dev->automute = 0;
                saa7134_tvaudio_setmute(dev);
        } else if (dev->thread.thread) {