OSDN Git Service

V4L/DVB (3103): Add VIDIOC_LOG_STATUS to tuner-core.c
authorHans Verkuil <hverkuil@xs4all.nl>
Mon, 9 Jan 2006 17:25:15 +0000 (15:25 -0200)
committerMauro Carvalho Chehab <mchehab@brturbo.com.br>
Mon, 9 Jan 2006 17:25:15 +0000 (15:25 -0200)
- Mark tda9887.c status log values as hexadecimal (add 0x prefix).
Add VIDIOC_LOG_STATUS support to tuner-core.c.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
drivers/media/video/tda9887.c
drivers/media/video/tuner-core.c

index 93bf104..ae4029a 100644 (file)
@@ -796,7 +796,7 @@ tda9887_command(struct i2c_client *client, unsigned int cmd, void *arg)
        }
        case VIDIOC_LOG_STATUS:
        {
-               tda9887_info("Data bytes: b=%02x c=%02x e=%02x\n", t->data[1], t->data[2], t->data[3]);
+               tda9887_info("Data bytes: b=0x%02x c=0x%02x e=0x%02x\n", t->data[1], t->data[2], t->data[3]);
                break;
        }
        default:
index c13c7b9..ae76113 100644 (file)
@@ -475,6 +475,38 @@ static inline int check_v4l2(struct tuner *t)
        return 0;
 }
 
+static void tuner_status(struct i2c_client *client)
+{
+       struct tuner *t = i2c_get_clientdata(client);
+       unsigned long freq, freq_fraction;
+       const char *p;
+
+       switch (t->mode) {
+               case V4L2_TUNER_RADIO:      p = "radio"; break;
+               case V4L2_TUNER_ANALOG_TV:  p = "analog TV"; break;
+               case V4L2_TUNER_DIGITAL_TV: p = "digital TV"; break;
+               default: p = "undefined"; break;
+       }
+       if (t->mode == V4L2_TUNER_RADIO) {
+               freq = t->freq / 16000;
+               freq_fraction = (t->freq % 16000) * 100 / 16000;
+       } else {
+               freq = t->freq / 16;
+               freq_fraction = (t->freq % 16) * 100 / 16;
+       }
+       tuner_info("Tuner mode:      %s\n", p);
+       tuner_info("Frequency:       %lu.%02lu MHz\n", freq, freq_fraction);
+       tuner_info("Standard:        0x%08llx\n", t->std);
+       if (t->mode == V4L2_TUNER_RADIO) {
+               if (t->has_signal) {
+                       tuner_info("Signal strength: %d\n", t->has_signal(client));
+               }
+               if (t->is_stereo) {
+                       tuner_info("Stereo:          %s\n", t->is_stereo(client) ? "yes" : "no");
+               }
+       }
+}
+
 static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
 {
        struct tuner *t = i2c_get_clientdata(client);
@@ -708,6 +740,9 @@ static int tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
                        }
                        break;
                }
+       case VIDIOC_LOG_STATUS:
+               tuner_status(client);
+               break;
        default:
                tuner_dbg("Unimplemented IOCTL 0x%08x(dir=%d,tp='%c',nr=%d,sz=%d)\n",
                                         cmd, _IOC_DIR(cmd), _IOC_TYPE(cmd),