本文整理汇总了C++中i2c_smbus_read_i2c_block_data函数的典型用法代码示例。如果您正苦于以下问题:C++ i2c_smbus_read_i2c_block_data函数的具体用法?C++ i2c_smbus_read_i2c_block_data怎么用?C++ i2c_smbus_read_i2c_block_data使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了i2c_smbus_read_i2c_block_data函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: max14656_read_block_reg
static int max14656_read_block_reg(struct i2c_client *client, u8 reg,
u8 length, u8 *val)
{
int ret;
ret = i2c_smbus_read_i2c_block_data(client, reg,
length, val);
if (ret < 0) {
dev_err(&client->dev, "failed to block read reg 0x%x: %d\n",
reg, ret);
return ret;
}
return 0;
}
示例2: wl1273_fm_read_reg
static int wl1273_fm_read_reg(struct wl1273_core *core, u8 reg, u16 *value)
{
struct i2c_client *client = core->client;
u8 b[2];
int r;
r = i2c_smbus_read_i2c_block_data(client, reg, sizeof(b), b);
if (r != 2) {
dev_err(&client->dev, "%s: Read: %d fails.\n", __func__, reg);
return -EREMOTEIO;
}
*value = (u16)b[0] << 8 | b[1];
return 0;
}
示例3: max77693_bulk_read
int max77693_bulk_read(struct i2c_client *i2c, u8 reg, int count, u8 *buf)
{
struct max77693_dev *max77693 = i2c_get_clientdata(i2c);
int ret;
mutex_lock(&max77693->iolock);
ret = i2c_smbus_read_i2c_block_data(i2c, reg, count, buf);
mutex_unlock(&max77693->iolock);
if (unlikely(ret < 0)) {
dev_err(max77693->dev, "%s failed: reg=0x%x\n", __func__, reg);
return ret;
}
return 0;
}
示例4: bcmpmu_i2c_read_device_direct_bulk
static int bcmpmu_i2c_read_device_direct_bulk(struct bcmpmu59xxx *bcmpmu,
u32 reg, u8 *val, int len)
{
int err = 0;
struct i2c_client *clt;
if ((DEC_REG_ADD(reg) + len) >= PMU_REG_MAX)
return -ENODEV;
clt = bcmpmu_get_client(bcmpmu, reg);
bcmpmu_i2c_lock(bcmpmu);
err =
i2c_smbus_read_i2c_block_data(clt, (u8) DEC_REG_ADD(reg), len, val);
bcmpmu_i2c_unlock(bcmpmu);
return (err < 0 ? err : 0);
}
示例5: ak8975_adc
static ssize_t ak8975_adc(struct device *dev,
struct device_attribute *attr, char *strbuf)
{
struct akm8975_data *ak_data = dev_get_drvdata(dev);
u8 buf[8];
s16 x, y, z;
int err, success;
printk("ak8975_adc\n");
mutex_lock(&ak_data->lock);
/* start ADC conversion */
err = i2c_smbus_write_byte_data(ak_data->this_client,
AK8975_REG_CNTL, REG_CNTL_MODE_ONCE);
printk("ak8975_adc write err:%d\n", err);
/* wait for ADC conversion to complete */
err = akm8975_wait_for_data_ready(ak_data);
if (err) {
pr_err("%s: wait for data ready failed\n", __func__);
return;
}
msleep(10);
/* get the value and report it */
err = i2c_smbus_read_i2c_block_data(ak_data->this_client,
AK8975_REG_ST1, sizeof(buf), buf);
//printk("ak8975_adc read err:%d\n", err);
if (err != sizeof(buf)) {
pr_err("%s: read data over i2c failed\n", __func__);
return;
}
mutex_unlock(&ak_data->lock);
/* buf[0] is status1, buf[7] is status2 */
if ((buf[0] == 0) | (buf[7] == 1)) success = 0;
else success = 1;
x = buf[1] | (buf[2] << 8);
y = buf[3] | (buf[4] << 8);
z = buf[5] | (buf[6] << 8);
pr_info("%s: raw x = %d, y = %d, z = %d\n", __func__, x, y, z);
return sprintf(strbuf, "%s, %d, %d, %d\n", (success ? "OK" : "NG"), x, y, z);
}
示例6: printf
// Reads the 3 gyro channels and stores them in vector g
void L3G4200D::read()
{
// Specify the address of the slave device.
if (ioctl(file, I2C_SLAVE, GYR_ADDRESS) < 0)
{
printf("Failed to acquire bus access and/or talk to slave %x", GYR_ADDRESS);
exit(1);
}
__s32 res;
__u8 reg, val;
reg = L3G4200D_OUT_X_L | (1 << 7) ;
__u8 buf[6];
res = i2c_smbus_read_i2c_block_data(file, reg, 6, (__u8 *)buf);
if (res != 6)
{
printf("Failed to read acc data in read()\n");
exit(1);
}
for (int i = 0; i < 6; i++)
{
buf[i] = ~buf[i];
buf[i] += 0x01;
}
printf("g: ");
for (int i = 0; i < 6; i++)
printf("%02x ", buf[i]);
printf("\n");
__u8 xla = buf[0];
__u8 xha = buf[1];
__u8 yla = buf[2];
__u8 yha = buf[3];
__u8 zla = buf[4];
__u8 zha = buf[5];
__s16 x = xha << 8 | xla;
__s16 y = yha << 8 | yla;
__s16 z = zha << 8 | zla;
g.x = x;
g.y = y;
g.z = z;
}
示例7: get_fw_ver_ic
static void get_fw_ver_ic(void *device_data)
{
struct mms_info *info = (struct mms_info *)device_data;
struct mms_fac_data *fac_data = info->fac_data;
struct i2c_client *client = info->client;
char buff[TSP_CMD_FULL_VER_LEN] = {0,};
int ret;
set_default_result(fac_data);
ret = i2c_smbus_read_i2c_block_data(client, MMS_VENDOR_ID, 2, buff);
if (ret < 0) {
dev_err(&client->dev, "Failed to read vendor ID(%d)\n", ret);
goto out;
}
ret = i2c_smbus_read_byte_data(client, MMS_HW_ID);
if (ret < 0) {
dev_err(&client->dev, "Failed to read HW ID(%d)\n", ret);
goto out;
}
sprintf(buff + 2, "%02X", ret);
ret = i2c_smbus_read_byte_data(client, MMS_CONFIG_VERSION);
if (ret < 0) {
dev_err(&client->dev, "Failed to read FW ver (%d)\n", ret);
goto out;
}
sprintf(buff + 4, "%04X", ret);
fac_data->cmd_state = CMD_STATUS_OK;
sprintf(fac_data->cmd_buff, "%s", buff);
set_cmd_result(fac_data, fac_data->cmd_buff, strlen(fac_data->cmd_buff));
dev_info(&client->dev, "%s : %s\n", __func__, fac_data->cmd_buff);
return;
out:
fac_data->cmd_state = CMD_STATUS_FAIL;
sprintf(fac_data->cmd_buff, "NG");
set_cmd_result(fac_data, fac_data->cmd_buff, strlen(fac_data->cmd_buff));
return ;
}
示例8: an30259a_debug
static void an30259a_debug(struct i2c_client *client)
{
struct an30259a_data *data = i2c_get_clientdata(client);
int ret;
u8 buff[21] = {0,};
ret = i2c_smbus_read_i2c_block_data(client,
AN30259A_REG_SRESET|AN30259A_CTN_RW_FLG,
sizeof(buff), buff);
if (ret != sizeof(buff)) {
dev_err(&data->client->dev,
"%s: failure on i2c_smbus_read_i2c_block_data\n",
__func__);
}
print_hex_dump(KERN_ERR, "an30259a: ",
DUMP_PREFIX_OFFSET, 32, 1, buff,
sizeof(buff), false);
}
示例9: nastech_set_int_mode
static int nastech_set_int_mode(struct i2c_client *client, int data)
{
unsigned char datareg;
int ret = 0;
datareg = data;
ret = i2c_smbus_write_i2c_block_data(client, NAS_INT_MODE, 1, &datareg);
if (ret < 0) {
printk(KERN_ERR "%s: Failed to set INT MODE\n", __func__);
return ret;
} else {
ret = i2c_smbus_read_i2c_block_data(client, NAS_INT_MODE, 1,
&datareg);
printk(KERN_DEBUG
"%s: Success to set INT MODE, INT MODE =0x%x\n",__func__, datareg);
}
return ret;
}
示例10: cs42l51_fill_cache
static int cs42l51_fill_cache(struct snd_soc_codec *codec)
{
u8 *cache = codec->reg_cache + 1;
struct i2c_client *i2c_client = to_i2c_client(codec->dev);
s32 length;
length = i2c_smbus_read_i2c_block_data(i2c_client,
CS42L51_FIRSTREG | 0x80, CS42L51_NUMREGS, cache);
if (length != CS42L51_NUMREGS) {
dev_err(&i2c_client->dev,
"I2C read failure, addr=0x%x (ret=%d vs %d)\n",
i2c_client->addr, length, CS42L51_NUMREGS);
return -EIO;
}
return 0;
}
示例11: mma8x5x_read_data
static int mma8x5x_read_data(struct i2c_client *client,
struct mma8x5x_data_axis *data)
{
u8 tmp_data[MMA8X5X_BUF_SIZE];
int ret;
ret = i2c_smbus_read_i2c_block_data(client,
MMA8X5X_OUT_X_MSB, 7, tmp_data);
if (ret < MMA8X5X_BUF_SIZE) {
dev_err(&client->dev, "i2c block read failed\n");
return -EIO;
}
data->x = ((tmp_data[0] << 8) & 0xff00) | tmp_data[1];
data->y = ((tmp_data[2] << 8) & 0xff00) | tmp_data[3];
data->z = ((tmp_data[4] << 8) & 0xff00) | tmp_data[5];
return 0;
}
示例12: cs4270_fill_cache
/*
* Pre-fill the CS4270 register cache.
*
* We use the auto-increment feature of the CS4270 to read all registers in
* one shot.
*/
static int cs4270_fill_cache(struct snd_soc_codec *codec)
{
u8 *cache = codec->reg_cache;
struct i2c_client *i2c_client = codec->control_data;
s32 length;
length = i2c_smbus_read_i2c_block_data(i2c_client,
CS4270_FIRSTREG | 0x80, CS4270_NUMREGS, cache);
if (length != CS4270_NUMREGS) {
printk(KERN_ERR "cs4270: I2C read failure, addr=0x%x\n",
i2c_client->addr);
return -EIO;
}
return 0;
}
示例13: cs4270_fill_cache
/**
* cs4270_fill_cache - pre-fill the CS4270 register cache.
* @codec: the codec for this CS4270
*
* This function fills in the CS4270 register cache by reading the register
* values from the hardware.
*
* This CS4270 registers are cached to avoid excessive I2C I/O operations.
* After the initial read to pre-fill the cache, the CS4270 never updates
* the register values, so we won't have a cache coherency problem.
*
* We use the auto-increment feature of the CS4270 to read all registers in
* one shot.
*/
static int cs4270_fill_cache(struct snd_soc_codec *codec)
{
u8 *cache = codec->reg_cache;
struct i2c_client *i2c_client = codec->control_data;
s32 length;
length = i2c_smbus_read_i2c_block_data(i2c_client,
CS4270_FIRSTREG | CS4270_I2C_INCR, CS4270_NUMREGS, cache);
if (length != CS4270_NUMREGS) {
dev_err(codec->dev, "i2c read failure, addr=0x%x\n",
i2c_client->addr);
return -EIO;
}
return 0;
}
示例14: ds1682_eeprom_read
/*
* User data attribute
*/
static ssize_t ds1682_eeprom_read(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr,
char *buf, loff_t off, size_t count)
{
struct i2c_client *client = kobj_to_i2c_client(kobj);
int rc;
dev_dbg(&client->dev, "ds1682_eeprom_read(p=%p, off=%lli, c=%zi)\n",
buf, off, count);
rc = i2c_smbus_read_i2c_block_data(client, DS1682_REG_EEPROM + off,
count, buf);
if (rc < 0)
return -EIO;
return count;
}
示例15: rv3029c2_i2c_read_regs
static int
rv3029c2_i2c_read_regs(struct i2c_client *client, u8 reg, u8 *buf,
unsigned len)
{
int ret;
if ((reg > RV3029C2_USR1_RAM_PAGE + 7) ||
(reg + len > RV3029C2_USR1_RAM_PAGE + 8))
return -EINVAL;
ret = i2c_smbus_read_i2c_block_data(client, reg, len, buf);
if (ret < 0)
return ret;
if (ret < len)
return -EIO;
return 0;
}