Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 366755
b: refs/heads/master
c: b5656e8
h: refs/heads/master
i:
  366753: 6936db0
  366751: 671a3cc
v: v3
  • Loading branch information
Hans Verkuil authored and Mauro Carvalho Chehab committed Mar 24, 2013
1 parent 26fe0b3 commit 762de09
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 27d5a87cf4b44cbcbd0f4706a433e4a68d496236
refs/heads/master: b5656e8b7363c4e248e6372dc34828d3dfb17832
26 changes: 13 additions & 13 deletions trunk/drivers/media/pci/ivtv/ivtv-ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -711,37 +711,37 @@ static int ivtv_g_chip_ident(struct file *file, void *fh, struct v4l2_dbg_chip_i
}

#ifdef CONFIG_VIDEO_ADV_DEBUG
static int ivtv_itvc(struct ivtv *itv, unsigned int cmd, void *arg)
static int ivtv_itvc(struct ivtv *itv, bool get, u64 reg, u64 *val)
{
struct v4l2_dbg_register *regs = arg;
volatile u8 __iomem *reg_start;

if (!capable(CAP_SYS_ADMIN))
return -EPERM;
if (regs->reg >= IVTV_REG_OFFSET && regs->reg < IVTV_REG_OFFSET + IVTV_REG_SIZE)
if (reg >= IVTV_REG_OFFSET && reg < IVTV_REG_OFFSET + IVTV_REG_SIZE)
reg_start = itv->reg_mem - IVTV_REG_OFFSET;
else if (itv->has_cx23415 && regs->reg >= IVTV_DECODER_OFFSET &&
regs->reg < IVTV_DECODER_OFFSET + IVTV_DECODER_SIZE)
else if (itv->has_cx23415 && reg >= IVTV_DECODER_OFFSET &&
reg < IVTV_DECODER_OFFSET + IVTV_DECODER_SIZE)
reg_start = itv->dec_mem - IVTV_DECODER_OFFSET;
else if (regs->reg < IVTV_ENCODER_SIZE)
else if (reg < IVTV_ENCODER_SIZE)
reg_start = itv->enc_mem;
else
return -EINVAL;

regs->size = 4;
if (cmd == VIDIOC_DBG_G_REGISTER)
regs->val = readl(regs->reg + reg_start);
if (get)
*val = readl(reg + reg_start);
else
writel(regs->val, regs->reg + reg_start);
writel(*val, reg + reg_start);
return 0;
}

static int ivtv_g_register(struct file *file, void *fh, struct v4l2_dbg_register *reg)
{
struct ivtv *itv = fh2id(fh)->itv;

if (v4l2_chip_match_host(&reg->match))
return ivtv_itvc(itv, VIDIOC_DBG_G_REGISTER, reg);
if (v4l2_chip_match_host(&reg->match)) {
reg->size = 4;
return ivtv_itvc(itv, true, reg->reg, &reg->val);
}
/* TODO: subdev errors should not be ignored, this should become a
subdev helper function. */
ivtv_call_all(itv, core, g_register, reg);
Expand All @@ -753,7 +753,7 @@ static int ivtv_s_register(struct file *file, void *fh, struct v4l2_dbg_register
struct ivtv *itv = fh2id(fh)->itv;

if (v4l2_chip_match_host(&reg->match))
return ivtv_itvc(itv, VIDIOC_DBG_S_REGISTER, reg);
return ivtv_itvc(itv, false, reg->reg, &reg->val);
/* TODO: subdev errors should not be ignored, this should become a
subdev helper function. */
ivtv_call_all(itv, core, s_register, reg);
Expand Down

0 comments on commit 762de09

Please sign in to comment.