···219219220220static int elo_command_10(struct elo *elo, unsigned char *packet)221221{222222- int rc = -1;222222+ int error;223223 int i;224224 unsigned char csum = 0xaa + ELO10_LEAD_BYTE;225225226226- mutex_lock(&elo->cmd_mutex);226226+ guard(mutex)(&elo->cmd_mutex);227227228228 scoped_guard(serio_pause_rx, elo->serio) {229229 elo->expected_packet = toupper(packet[0]);230230 init_completion(&elo->cmd_done);231231 }232232233233- if (serio_write(elo->serio, ELO10_LEAD_BYTE))234234- goto out;233233+ error = serio_write(elo->serio, ELO10_LEAD_BYTE);234234+ if (error)235235+ return error;235236236237 for (i = 0; i < ELO10_PACKET_LEN; i++) {237238 csum += packet[i];238238- if (serio_write(elo->serio, packet[i]))239239- goto out;239239+ error = serio_write(elo->serio, packet[i]);240240+ if (error)241241+ return error;240242 }241243242242- if (serio_write(elo->serio, csum))243243- goto out;244244+ error = serio_write(elo->serio, csum);245245+ if (error)246246+ return error;244247245248 wait_for_completion_timeout(&elo->cmd_done, HZ);246249247247- if (elo->expected_packet == ELO10_TOUCH_PACKET) {248248- /* We are back in reporting mode, the command was ACKed */249249- memcpy(packet, elo->response, ELO10_PACKET_LEN);250250- rc = 0;251251- }250250+ if (elo->expected_packet != ELO10_TOUCH_PACKET)251251+ return -EIO;252252253253- out:254254- mutex_unlock(&elo->cmd_mutex);255255- return rc;253253+ /* We are back in reporting mode, the command was ACKed */254254+ memcpy(packet, elo->response, ELO10_PACKET_LEN);255255+ return 0;256256}257257258258static int elo_setup_10(struct elo *elo)