int dni_i2c_lock_write( mux_info_t * mux_info, dev_info_t * dev_info) { pthread_mutex_lock(&mutex); if(mux_info != NULL) { char cpld_path[100] = {0}; sprintf(cpld_path, "%s/%d-%04x", SYS_DEV_PATH, mux_info->bus, mux_info->addr); dni_lock_cpld_write_attribute(cpld_path, mux_info->offset, mux_info->channel); } /* Write size */ if(dev_info->size == 1) onlp_i2c_write(dev_info->bus, dev_info->addr, dev_info->offset, 1, &dev_info->data_8, dev_info->flags); else onlp_i2c_writew(dev_info->bus, dev_info->addr, dev_info->offset, dev_info->data_16, dev_info->flags); pthread_mutex_unlock(&mutex); return 0; }
int onlp_i2c_dev_write(onlp_i2c_dev_t* dev, uint8_t offset, int size, uint8_t* data, uint32_t flags) { int error, rv; if( (error = dev_mux_channels_select__(dev, flags)) < 0) { return error; } if( (rv = onlp_i2c_write(dev->bus, dev->addr, offset, size, data, flags)) < 0) { AIM_LOG_ERROR("Device %s: write() failed: %d", dev->name, rv); return rv; } if( (error = dev_mux_channels_deselect__(dev, flags)) < 0) { return error; } return rv; }
int onlp_i2c_writeb(int bus, uint8_t addr, uint8_t offset, uint8_t byte, uint32_t flags) { return onlp_i2c_write(bus, addr, offset, 1, &byte, flags); }