本文整理汇总了C++中i2c_smbus_write_byte函数的典型用法代码示例。如果您正苦于以下问题:C++ i2c_smbus_write_byte函数的具体用法?C++ i2c_smbus_write_byte怎么用?C++ i2c_smbus_write_byte使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了i2c_smbus_write_byte函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: tsl2550_set_power_state
static int tsl2550_set_power_state(struct i2c_client *client, int state)
{
struct tsl2550_data *data = i2c_get_clientdata(client);
int ret;
if (state == 0)
ret = i2c_smbus_write_byte(client, TSL2550_POWER_DOWN);
else {
ret = i2c_smbus_write_byte(client, TSL2550_POWER_UP);
/* On power up we should reset operating mode also... */
tsl2550_set_operating_mode(client, data->operating_mode);
}
data->power_state = state;
return ret;
}
示例2: mcsdl_erase_flash
static int mcsdl_erase_flash(void)
{
int i;
int ret = 0;
int read_data = 0;
uint8_t i2c_buffer[4] = {0x0F, /* isp erase timing cmd */
0x01, /* isp erase timing value 0 */
0xD4, /* isp erase timing value 1 */
0xC0}; /* isp erase timing value 2 */
/* Send Erase Setting code */
for(i=0; i<4; i++){
ret = i2c_smbus_write_byte(g_client, i2c_buffer[i]);
if( 0 != ret ){
printk("mcsdl prepare erase flash error\n");
return -1;
}
udelay(15);
}
udelay(500);
/* Read Result */
read_data = i2c_smbus_read_byte(g_client);
if (read_data != 0x8F) { /* isp ack prepare erase done */
printk("mcsdl erase flash error0\n");
return -1;
}
mdelay(1);
/*Send Erase code */
ret = i2c_smbus_write_byte(g_client, 0x02);
if( 0 != ret ){
printk("mcsdl send erase code error\n");
return -1;
}
mdelay(45);
read_data = i2c_smbus_read_byte(g_client);
if (read_data != 0x82) {
printk("mcsdl erase flash error1\n");
return -1;
}
return 0;
}
示例3: tsl2550_set_operating_mode
static int tsl2550_set_operating_mode(struct i2c_client *client, int mode)
{
struct tsl2550_data *data = i2c_get_clientdata(client);
int ret = i2c_smbus_write_byte(client, TSL2550_MODE_RANGE[mode]);
data->operating_mode = mode;
return ret;
}
示例4: bh1721fvc_write_byte
static int bh1721fvc_write_byte(struct i2c_client *client, u8 value)
{
int retry;
for (retry = 0; retry < 5; retry++)
if (!i2c_smbus_write_byte(client, value))
return 0;
return -EIO;
}
示例5: max1363_smbus_send
static int max1363_smbus_send(const struct i2c_client *client, const char *buf,
int count)
{
int i, err;
for (i = err = 0; err == 0 && i < count; ++i)
err = i2c_smbus_write_byte(client, buf[i]);
return err ? err : count;
}
示例6: smbus_write_op
static int
smbus_write_op(struct smbus_op_params *params, const struct smbus_op *op)
{
int result;
/* FIXME: Why is this needed if the open_i2c_slave performs the ioctl
* with I2C_SLAVE? */
/* Double cast the last argument for compat with klibc. */
if (ioctl(params->fd, I2C_SLAVE_FORCE,
(void *)(intptr_t)params->address) < 0) {
fprintf(stderr, "can't set address 0x%02X, %s\n",
params->address, strerror(errno));
return -1;
}
switch (op->size) {
case SMBUS_SIZE_8:
result = i2c_smbus_write_byte_data(params->fd, params->reg,
params->data.fixed.u8);
break;
case SMBUS_SIZE_16:
result = i2c_smbus_write_word_data(params->fd, params->reg,
params->data.fixed.u16);
break;
case SMBUS_SIZE_BLOCK:
result = i2c_smbus_write_block_data(params->fd, params->reg,
params->len, params->data.array);
break;
case SMBUS_SIZE_BYTE:
result = i2c_smbus_write_byte(params->fd,
params->data.fixed.u8);
break;
case SMBUS_QUICK:
result = i2c_smbus_write_quick(params->fd,
params->data.fixed.u8);
break;
default:
fprintf(stderr, "Illegal SMBus size for write operation.\n");
return -1;
}
if (result < 0) {
if (op->size != SMBUS_SIZE_BYTE && op->size != SMBUS_QUICK) {
fprintf(stderr, "can't write register 0x%02X, %s\n",
params->reg, strerror(errno));
} else {
fprintf(stderr, "can't write to device 0x%02X, %s\n",
params->address, strerror(errno));
}
return -1;
}
return 0;
}
示例7: gw_pld_output8
static int gw_pld_output8(struct gpio_chip *gc, unsigned offset, int value)
{
struct gw_pld *gw = gpiochip_get_data(gc);
if (value)
gw->out |= BIT(offset);
else
gw->out &= ~BIT(offset);
return i2c_smbus_write_byte(gw->client, gw->out);
}
示例8: qt2160_write
static int __devinit qt2160_write(struct i2c_client *client, u8 reg, u8 data)
{
int error;
error = i2c_smbus_write_byte(client, reg);
if (error) {
dev_err(&client->dev,
"couldn't send request. Returned %d\n", error);
return error;
}
error = i2c_smbus_write_byte(client, data);
if (error) {
dev_err(&client->dev,
"couldn't write data. Returned %d\n", error);
return error;
}
return error;
}
示例9: bh1721fvc_write_byte
static int bh1721fvc_write_byte(struct i2c_client *client, u8 value)
{
int retry;
for (retry = 0; retry < 10; retry++)
if (!i2c_smbus_write_byte(client, value))
return 0;
printk("I2C read failed.. retry %d\n", retry);
return -EIO;
}
示例10: bh1780_probe
//[*]--------------------------------------------------------------------------------------------------[*]
static int bh1780_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
struct bh1780_data *bh1780;
int err;
/* setup private data */
bh1780 = kzalloc(sizeof(struct bh1780_data), GFP_KERNEL);
if (!bh1780) {
pr_err("%s: failed to allocate memory for module\n", __func__);
return -ENOMEM;
}
i2c_set_clientdata(client, bh1780);
dev_set_drvdata(&client->dev, bh1780);
bh1780->client = client;
/* detect and init hardware */
if ((err = bh1780_detect(client, NULL)) != 0) goto error;
if((err = i2c_smbus_write_byte(bh1780->client, (BH1780_COMMAND_REG + BH1780_PART_REV_REG))) < 0) {
dev_err(&client->dev, "I2C write byte error: data=0x%02x\n", (BH1780_COMMAND_REG + BH1780_PART_REV_REG));
goto error;
}
if((err = i2c_smbus_read_byte(client)) < 0) {
dev_err(&client->dev, "I2C read byte error\n");
goto error;
}
dev_info(&client->dev, "%s found\n", id->name);
dev_info(&client->dev, "part number=%d, rev=%d\n", ((err >> 4) & 0x0F), (err & 0x0F));
bh1780_power_up(bh1780);
INIT_DELAYED_WORK(&bh1780->work, bh1780_work_func);
#if defined(CONFIG_ODROID_EXYNOS5_IOBOARD_DEBUG)
bh1780->enabled = 1;
#endif
if(bh1780->enabled) schedule_delayed_work(&bh1780->work, BH1780_WORK_PERIOD);
if ((err = sysfs_create_group(&client->dev.kobj, &bh1780_attribute_group)) < 0) goto error;
printk("\n=================== ioboard_%s ===================\n\n", __func__);
return 0;
error:
printk("\n=================== ioboard_%s FAIL! ===================\n\n", __func__);
return err;
}
示例11: blinkm_write
static int blinkm_write(struct i2c_client *client, int cmd, u8 *arg)
{
int result;
int i;
int arglen = blinkm_cmds[cmd].nr_args;
/* write out cmd to blinkm - always / default step */
result = i2c_smbus_write_byte(client, blinkm_cmds[cmd].cmdbyte);
if (result < 0)
return result;
/* no args to write out */
if (arglen == 0)
return 0;
for (i = 0; i < arglen; i++) {
/* repeat for arglen */
result = i2c_smbus_write_byte(client, arg[i]);
if (result < 0)
return result;
}
return 0;
}
示例12: lightning_flash_mux_sel_chan
/* Enable the mux to select a particular channel */
int
lightning_flash_mux_sel_chan(uint8_t mux, uint8_t channel) {
int dev;
int ret;
uint8_t addr;
uint8_t chan_en;
char bus[32];
if (mux == I2C_MUX_FLASH1)
sprintf(bus, "%s", I2C_DEV_FLASH1);
else if (mux == I2C_MUX_FLASH2)
sprintf(bus, "%s", I2C_DEV_FLASH2);
dev = open(bus, O_RDWR);
if (dev < 0) {
syslog(LOG_ERR, "lightning_flash_mux_sel_chan: open() failed");
return -1;
}
switch(mux) {
case I2C_MUX_FLASH1:
addr = I2C_MUX_FLASH1_ADDR,
chan_en = (1 << 3) | channel;
break;
case I2C_MUX_FLASH2:
addr = I2C_MUX_FLASH2_ADDR,
chan_en = (1 << 3) | channel;
break;
}
/* Assign the i2c device address */
ret = ioctl(dev, I2C_SLAVE, addr);
if (ret < 0) {
syslog(LOG_ERR, "lightning_flash_mux_sel_chan: ioctl() assigning i2c addr failed");
close(dev);
return -1;
}
/* Write the channel number to enable it */
ret = i2c_smbus_write_byte(dev, chan_en);
if (ret < 0) {
syslog(LOG_ERR, "lightning_flash_mux_sel_chan: i2c_smbus_write_byte failed");
close(dev);
return -1;
}
close(dev);
return 0;
}
示例13: write_mark1_reg
char write_mark1_reg(unsigned char add){
int resp = 0 ;
if (ioctl(i2c_bus -> file, I2C_SLAVE, MARK1_ADDR) < 0) {
/* ERROR HANDLING; you can check errno to see what went wrong */
exit(1);
}
resp = i2c_smbus_write_byte(i2c_bus -> file, add);
if (resp < 0) {
printf("error accessing i2c bus , returned :%d \n", resp);
exit(-1);
}
return resp;
}
示例14: myI2C_write_byte
int myI2C_write_byte(int file, uint8_t data)
{
int res = i2c_smbus_write_byte(file, data);
/** S Addr Wr [A] Data [A] P **/
if (res<0)
{
printf("result i2c write error");
return -1;
}
//printf("after mode 1 write: 0x%02X to register 0x%02X \n", buf[1], buf[0]);
return 0;
}
示例15: to_i2c_client
static struct pem_data *pem_update_device(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
struct pem_data *data = i2c_get_clientdata(client);
struct pem_data *ret = data;
mutex_lock(&data->update_lock);
if (time_after(jiffies, data->last_updated + HZ) || !data->valid) {
int result;
/* Read data string */
result = pem_read_block(client, PEM_READ_DATA_STRING,
data->data_string,
sizeof(data->data_string));
if (unlikely(result < 0)) {
ret = ERR_PTR(result);
goto abort;
}
/* Read input string */
if (data->input_length) {
result = pem_read_block(client, PEM_READ_INPUT_STRING,
data->input_string,
data->input_length);
if (unlikely(result < 0)) {
ret = ERR_PTR(result);
goto abort;
}
}
/* Read fan speeds */
if (data->fans_supported) {
result = pem_read_block(client, PEM_READ_FAN_SPEED,
data->fan_speed,
sizeof(data->fan_speed));
if (unlikely(result < 0)) {
ret = ERR_PTR(result);
goto abort;
}
}
i2c_smbus_write_byte(client, PEM_CLEAR_INFO_FLAGS);
data->last_updated = jiffies;
data->valid = 1;
}
abort:
mutex_unlock(&data->update_lock);
return ret;
}