]> err.no Git - linux-2.6/blobdiff - drivers/media/video/saa7127.c
V4L/DVB (5290): Add support for VIDIOC_INT_G/S_STD_OUTPUT
[linux-2.6] / drivers / media / video / saa7127.c
index c271e2e14105721e953da48d2dc2ad564370e27a..50dbb76d4a7f380eab51d2794ebb0dd7421829de 100644 (file)
@@ -270,7 +270,7 @@ static const char * const wss_strs[] = {
        "letterbox 16:9 top",
        "invalid",
        "invalid",
-       "16:9 full format anamorphic"
+       "16:9 full format anamorphic",
        "4:3 full format",
        "invalid",
        "invalid",
@@ -550,12 +550,12 @@ static int saa7127_command(struct i2c_client *client,
        struct v4l2_routing *route = arg;
 
        switch (cmd) {
-       case VIDIOC_S_STD:
+       case VIDIOC_INT_S_STD_OUTPUT:
                if (state->std == *(v4l2_std_id *)arg)
                        break;
                return saa7127_set_std(client, *(v4l2_std_id *)arg);
 
-       case VIDIOC_G_STD:
+       case VIDIOC_INT_G_STD_OUTPUT:
                *(v4l2_std_id *)arg = state->std;
                break;
 
@@ -614,25 +614,19 @@ static int saa7127_command(struct i2c_client *client,
                break;
 
 #ifdef CONFIG_VIDEO_ADV_DEBUG
-       case VIDIOC_INT_G_REGISTER:
+       case VIDIOC_DBG_G_REGISTER:
+       case VIDIOC_DBG_S_REGISTER:
        {
                struct v4l2_register *reg = arg;
 
-               if (reg->i2c_id != I2C_DRIVERID_SAA7127)
-                       return -EINVAL;
-               reg->val = saa7127_read(client, reg->reg & 0xff);
-               break;
-       }
-
-       case VIDIOC_INT_S_REGISTER:
-       {
-               struct v4l2_register *reg = arg;
-
-               if (reg->i2c_id != I2C_DRIVERID_SAA7127)
+               if (!v4l2_chip_match_i2c_client(client, reg->match_type, reg->match_chip))
                        return -EINVAL;
                if (!capable(CAP_SYS_ADMIN))
                        return -EPERM;
-               saa7127_write(client, reg->reg & 0xff, reg->val & 0xff);
+               if (cmd == VIDIOC_DBG_G_REGISTER)
+                       reg->val = saa7127_read(client, reg->reg & 0xff);
+               else
+                       saa7127_write(client, reg->reg & 0xff, reg->val & 0xff);
                break;
        }
 #endif