From a6158c63e9c84c7f80a72b2be4811bee5ac49030 Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Wed, 10 Apr 2013 10:50:50 -0300 Subject: [PATCH] --- yaml --- r: 367134 b: refs/heads/master c: 8678b03428b6894d146695980f04f26af7b9b3ec h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/tuners/r820t.c | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 1ed6f1b15f4e..623bc4702f87 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 75c1819e5e42064e66d4f88a5af628a1604ad52d +refs/heads/master: 8678b03428b6894d146695980f04f26af7b9b3ec diff --git a/trunk/drivers/media/tuners/r820t.c b/trunk/drivers/media/tuners/r820t.c index d5686e8a8bc6..ef100ab3564d 100644 --- a/trunk/drivers/media/tuners/r820t.c +++ b/trunk/drivers/media/tuners/r820t.c @@ -402,15 +402,25 @@ static int r820t_write_reg(struct r820t_priv *priv, u8 reg, u8 val) return r820t_write(priv, reg, &val, 1); } -static int r820t_write_reg_mask(struct r820t_priv *priv, u8 reg, u8 val, - u8 bit_mask) +static int r820t_read_cache_reg(struct r820t_priv *priv, int reg) { - int r = reg - REG_SHADOW_START; + reg -= REG_SHADOW_START; - if (r >= 0 && r < NUM_REGS) - val = (priv->regs[r] & ~bit_mask) | (val & bit_mask); + if (reg >= 0 && reg < NUM_REGS) + return priv->regs[reg]; else return -EINVAL; +} + +static int r820t_write_reg_mask(struct r820t_priv *priv, u8 reg, u8 val, + u8 bit_mask) +{ + int rc = r820t_read_cache_reg(priv, reg); + + if (rc < 0) + return rc; + + val = (rc & ~bit_mask) | (val & bit_mask); return r820t_write(priv, reg, &val, 1); }