diff options
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-video.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-video.c | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/drivers/media/video/em28xx/em28xx-video.c b/drivers/media/video/em28xx/em28xx-video.c index 9cb7c64a88fa..416b691c33c1 100644 --- a/drivers/media/video/em28xx/em28xx-video.c +++ b/drivers/media/video/em28xx/em28xx-video.c | |||
@@ -1154,7 +1154,7 @@ static int em28xx_reg_len(int reg) | |||
1154 | } | 1154 | } |
1155 | 1155 | ||
1156 | static int vidioc_g_chip_ident(struct file *file, void *priv, | 1156 | static int vidioc_g_chip_ident(struct file *file, void *priv, |
1157 | struct v4l2_chip_ident *chip) | 1157 | struct v4l2_dbg_chip_ident *chip) |
1158 | { | 1158 | { |
1159 | struct em28xx_fh *fh = priv; | 1159 | struct em28xx_fh *fh = priv; |
1160 | struct em28xx *dev = fh->dev; | 1160 | struct em28xx *dev = fh->dev; |
@@ -1162,20 +1162,20 @@ static int vidioc_g_chip_ident(struct file *file, void *priv, | |||
1162 | chip->ident = V4L2_IDENT_NONE; | 1162 | chip->ident = V4L2_IDENT_NONE; |
1163 | chip->revision = 0; | 1163 | chip->revision = 0; |
1164 | 1164 | ||
1165 | em28xx_i2c_call_clients(dev, VIDIOC_G_CHIP_IDENT, chip); | 1165 | em28xx_i2c_call_clients(dev, VIDIOC_DBG_G_CHIP_IDENT, chip); |
1166 | 1166 | ||
1167 | return 0; | 1167 | return 0; |
1168 | } | 1168 | } |
1169 | 1169 | ||
1170 | 1170 | ||
1171 | static int vidioc_g_register(struct file *file, void *priv, | 1171 | static int vidioc_g_register(struct file *file, void *priv, |
1172 | struct v4l2_register *reg) | 1172 | struct v4l2_dbg_register *reg) |
1173 | { | 1173 | { |
1174 | struct em28xx_fh *fh = priv; | 1174 | struct em28xx_fh *fh = priv; |
1175 | struct em28xx *dev = fh->dev; | 1175 | struct em28xx *dev = fh->dev; |
1176 | int ret; | 1176 | int ret; |
1177 | 1177 | ||
1178 | switch (reg->match_type) { | 1178 | switch (reg->match.type) { |
1179 | case V4L2_CHIP_MATCH_AC97: | 1179 | case V4L2_CHIP_MATCH_AC97: |
1180 | mutex_lock(&dev->lock); | 1180 | mutex_lock(&dev->lock); |
1181 | ret = em28xx_read_ac97(dev, reg->reg); | 1181 | ret = em28xx_read_ac97(dev, reg->reg); |
@@ -1184,6 +1184,7 @@ static int vidioc_g_register(struct file *file, void *priv, | |||
1184 | return ret; | 1184 | return ret; |
1185 | 1185 | ||
1186 | reg->val = ret; | 1186 | reg->val = ret; |
1187 | reg->size = 1; | ||
1187 | return 0; | 1188 | return 0; |
1188 | case V4L2_CHIP_MATCH_I2C_DRIVER: | 1189 | case V4L2_CHIP_MATCH_I2C_DRIVER: |
1189 | em28xx_i2c_call_clients(dev, VIDIOC_DBG_G_REGISTER, reg); | 1190 | em28xx_i2c_call_clients(dev, VIDIOC_DBG_G_REGISTER, reg); |
@@ -1192,12 +1193,13 @@ static int vidioc_g_register(struct file *file, void *priv, | |||
1192 | /* Not supported yet */ | 1193 | /* Not supported yet */ |
1193 | return -EINVAL; | 1194 | return -EINVAL; |
1194 | default: | 1195 | default: |
1195 | if (!v4l2_chip_match_host(reg->match_type, reg->match_chip)) | 1196 | if (!v4l2_chip_match_host(®->match)) |
1196 | return -EINVAL; | 1197 | return -EINVAL; |
1197 | } | 1198 | } |
1198 | 1199 | ||
1199 | /* Match host */ | 1200 | /* Match host */ |
1200 | if (em28xx_reg_len(reg->reg) == 1) { | 1201 | reg->size = em28xx_reg_len(reg->reg); |
1202 | if (reg->size == 1) { | ||
1201 | mutex_lock(&dev->lock); | 1203 | mutex_lock(&dev->lock); |
1202 | ret = em28xx_read_reg(dev, reg->reg); | 1204 | ret = em28xx_read_reg(dev, reg->reg); |
1203 | mutex_unlock(&dev->lock); | 1205 | mutex_unlock(&dev->lock); |
@@ -1207,7 +1209,7 @@ static int vidioc_g_register(struct file *file, void *priv, | |||
1207 | 1209 | ||
1208 | reg->val = ret; | 1210 | reg->val = ret; |
1209 | } else { | 1211 | } else { |
1210 | __le64 val = 0; | 1212 | __le16 val = 0; |
1211 | mutex_lock(&dev->lock); | 1213 | mutex_lock(&dev->lock); |
1212 | ret = em28xx_read_reg_req_len(dev, USB_REQ_GET_STATUS, | 1214 | ret = em28xx_read_reg_req_len(dev, USB_REQ_GET_STATUS, |
1213 | reg->reg, (char *)&val, 2); | 1215 | reg->reg, (char *)&val, 2); |
@@ -1215,21 +1217,21 @@ static int vidioc_g_register(struct file *file, void *priv, | |||
1215 | if (ret < 0) | 1217 | if (ret < 0) |
1216 | return ret; | 1218 | return ret; |
1217 | 1219 | ||
1218 | reg->val = le64_to_cpu(val); | 1220 | reg->val = le16_to_cpu(val); |
1219 | } | 1221 | } |
1220 | 1222 | ||
1221 | return 0; | 1223 | return 0; |
1222 | } | 1224 | } |
1223 | 1225 | ||
1224 | static int vidioc_s_register(struct file *file, void *priv, | 1226 | static int vidioc_s_register(struct file *file, void *priv, |
1225 | struct v4l2_register *reg) | 1227 | struct v4l2_dbg_register *reg) |
1226 | { | 1228 | { |
1227 | struct em28xx_fh *fh = priv; | 1229 | struct em28xx_fh *fh = priv; |
1228 | struct em28xx *dev = fh->dev; | 1230 | struct em28xx *dev = fh->dev; |
1229 | __le64 buf; | 1231 | __le16 buf; |
1230 | int rc; | 1232 | int rc; |
1231 | 1233 | ||
1232 | switch (reg->match_type) { | 1234 | switch (reg->match.type) { |
1233 | case V4L2_CHIP_MATCH_AC97: | 1235 | case V4L2_CHIP_MATCH_AC97: |
1234 | mutex_lock(&dev->lock); | 1236 | mutex_lock(&dev->lock); |
1235 | rc = em28xx_write_ac97(dev, reg->reg, reg->val); | 1237 | rc = em28xx_write_ac97(dev, reg->reg, reg->val); |
@@ -1243,12 +1245,12 @@ static int vidioc_s_register(struct file *file, void *priv, | |||
1243 | /* Not supported yet */ | 1245 | /* Not supported yet */ |
1244 | return -EINVAL; | 1246 | return -EINVAL; |
1245 | default: | 1247 | default: |
1246 | if (!v4l2_chip_match_host(reg->match_type, reg->match_chip)) | 1248 | if (!v4l2_chip_match_host(®->match)) |
1247 | return -EINVAL; | 1249 | return -EINVAL; |
1248 | } | 1250 | } |
1249 | 1251 | ||
1250 | /* Match host */ | 1252 | /* Match host */ |
1251 | buf = cpu_to_le64(reg->val); | 1253 | buf = cpu_to_le16(reg->val); |
1252 | 1254 | ||
1253 | mutex_lock(&dev->lock); | 1255 | mutex_lock(&dev->lock); |
1254 | rc = em28xx_write_regs(dev, reg->reg, (char *)&buf, | 1256 | rc = em28xx_write_regs(dev, reg->reg, (char *)&buf, |