static int reg_read_range(struct tda998x_priv *priv, u16 reg, char *buf, int cnt) { struct i2c_client *client = priv->hdmi; u8 addr = REG2ADDR(reg); int ret; mutex_lock(&priv->mutex); ret = set_page(priv, reg); if (ret < 0) goto out; ret = i2c_master_send(client, &addr, sizeof(addr)); if (ret < 0) goto fail; ret = i2c_master_recv(client, buf, cnt); if (ret < 0) goto fail; goto out; fail: dev_err(&client->dev, "Error %d reading from 0x%x\n", ret, reg); out: mutex_unlock(&priv->mutex); return ret; }
static void reg_write16(struct tda998x_priv *priv, uint16_t reg, uint16_t val) { struct i2c_client *client = priv->hdmi; uint8_t buf[] = {REG2ADDR(reg), val >> 8, val}; int ret; ret = set_page(priv, reg); if (ret < 0) return; ret = i2c_master_send(client, buf, sizeof(buf)); if (ret < 0) dev_err(&client->dev, "Error %d writing to 0x%x\n", ret, reg); }
static void reg_write16(struct tda998x_priv *priv, u16 reg, u16 val) { struct i2c_client *client = priv->hdmi; u8 buf[] = {REG2ADDR(reg), val >> 8, val}; int ret; mutex_lock(&priv->mutex); ret = set_page(priv, reg); if (ret < 0) goto out; ret = i2c_master_send(client, buf, sizeof(buf)); if (ret < 0) dev_err(&client->dev, "Error %d writing to 0x%x\n", ret, reg); out: mutex_unlock(&priv->mutex); }
static void reg_write_range(struct tda998x_priv *priv, uint16_t reg, uint8_t *p, int cnt) { struct i2c_client *client = priv->hdmi; uint8_t buf[cnt+1]; int ret; buf[0] = REG2ADDR(reg); memcpy(&buf[1], p, cnt); ret = set_page(priv, reg); if (ret < 0) return; ret = i2c_master_send(client, buf, cnt + 1); if (ret < 0) dev_err(&client->dev, "Error %d writing to 0x%x\n", ret, reg); }
static void reg_write_range(struct tda998x_priv *priv, u16 reg, u8 *p, int cnt) { struct i2c_client *client = priv->hdmi; u8 buf[cnt+1]; int ret; buf[0] = REG2ADDR(reg); memcpy(&buf[1], p, cnt); mutex_lock(&priv->mutex); ret = set_page(priv, reg); if (ret < 0) goto out; ret = i2c_master_send(client, buf, cnt + 1); if (ret < 0) dev_err(&client->dev, "Error %d writing to 0x%x\n", ret, reg); out: mutex_unlock(&priv->mutex); }