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_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value) { int bus = FRONT_PORT_TO_MUX_INDEX(port); int ret = onlp_i2c_writew(bus, devaddr, addr, value, ONLP_I2C_F_FORCE); if (ret == 0) { unsigned char buf[8] = { 0 }; char str[20]; buf[port/8] = (1 << port%8); sprintf(str, "0x%02x%02x%02x%02x%02x%02x%02x%02x", buf[7],buf[6],buf[5],buf[4],buf[3],buf[2],buf[1],buf[0]); if (onlp_file_write((uint8_t*)str, 20, INV_SFP_EEPROM_UPDATE) < 0) { AIM_LOG_ERROR("Unable to write eeprom_update for port(%d)\r\n", port); return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; } AIM_LOG_ERROR("Unable to read eeprom_update from port(%d)\r\n", port); return ret; }
int onlp_i2c_dev_writew(onlp_i2c_dev_t* dev, uint8_t offset, uint16_t word, uint32_t flags) { int error, rv; if( (error = dev_mux_channels_select__(dev, flags)) < 0) { return error; } if( (rv = onlp_i2c_writew(dev->bus, dev->addr, offset, word, flags)) < 0) { AIM_LOG_ERROR("Device %s: writew() failed: %d", dev->name, rv); return rv; } if( (error = dev_mux_channels_deselect__(dev, flags)) < 0) { return error; } return rv; }
int onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value) { int bus = PORT_BUS_INDEX(port); return onlp_i2c_writew(bus, devaddr, addr, value, ONLP_I2C_F_FORCE); }
int onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value) { int bus = front_port_to_cpld_mux_index(port); return onlp_i2c_writew(bus, devaddr, addr, value, ONLP_I2C_F_FORCE); }
int onlp_sfpi_dev_writew(int port, uint8_t devaddr, uint8_t addr, uint16_t value) { int bus = onlp_sfpi_map_bus_index(port); return onlp_i2c_writew(bus, devaddr, addr, value, ONLP_I2C_F_FORCE); }