static void destruct(struct ddc *ddc) { dal_ddc_close(ddc); dal_gpio_service_destroy_gpio(&ddc->pin_data); dal_gpio_service_destroy_gpio(&ddc->pin_clock); }
bool dce_i2c_submit_command_hw( struct resource_pool *pool, struct ddc *ddc, struct i2c_command *cmd, struct dce_i2c_hw *dce_i2c_hw) { uint8_t index_of_payload = 0; bool result; set_speed(dce_i2c_hw, cmd->speed); result = true; while (index_of_payload < cmd->number_of_payloads) { bool mot = (index_of_payload != cmd->number_of_payloads - 1); struct i2c_payload *payload = cmd->payloads + index_of_payload; if (!dce_i2c_hw_engine_submit_payload( dce_i2c_hw, payload, mot)) { result = false; break; } ++index_of_payload; } pool->i2c_hw_buffer_in_use = false; release_engine(dce_i2c_hw); dal_ddc_close(dce_i2c_hw->ddc); dce_i2c_hw->ddc = NULL; return result; }