Lines Matching refs:msg

88 	struct ssp_msg *msg;  in ssp_create_msg()  local
90 msg = kzalloc(sizeof(*msg), GFP_KERNEL); in ssp_create_msg()
91 if (!msg) in ssp_create_msg()
99 msg->buffer = kzalloc(SSP_HEADER_SIZE_ALIGNED + len, in ssp_create_msg()
101 if (!msg->buffer) { in ssp_create_msg()
102 kfree(msg); in ssp_create_msg()
106 msg->length = len; in ssp_create_msg()
107 msg->options = opt; in ssp_create_msg()
109 memcpy(msg->buffer, &h, SSP_HEADER_SIZE); in ssp_create_msg()
111 return msg; in ssp_create_msg()
187 static int ssp_do_transfer(struct ssp_data *data, struct ssp_msg *msg, in ssp_do_transfer() argument
195 const bool use_no_irq = msg->length == 0; in ssp_do_transfer()
200 msg->done = done; in ssp_do_transfer()
208 status = spi_write(data->spi, msg->buffer, SSP_HEADER_SIZE); in ssp_do_transfer()
217 list_add_tail(&msg->list, &data->pending_list); in ssp_do_transfer()
225 list_del(&msg->list); in ssp_do_transfer()
238 list_del(&msg->list); in ssp_do_transfer()
254 struct ssp_msg *msg) in ssp_spi_sync_command() argument
256 return ssp_do_transfer(data, msg, NULL, 0); in ssp_spi_sync_command()
259 static int ssp_spi_sync(struct ssp_data *data, struct ssp_msg *msg, in ssp_spi_sync() argument
264 if (WARN_ON(!msg->length)) in ssp_spi_sync()
267 return ssp_do_transfer(data, msg, &done, timeout); in ssp_spi_sync()
345 struct ssp_msg *msg, *n; in ssp_irq_msg() local
371 list_for_each_entry_safe(msg, n, &data->pending_list, list) { in ssp_irq_msg()
372 if (msg->options == msg_options) { in ssp_irq_msg()
373 list_del(&msg->list); in ssp_irq_msg()
406 &msg->buffer[SSP_HEADER_SIZE_ALIGNED], in ssp_irq_msg()
407 msg->length); in ssp_irq_msg()
411 &msg->buffer[SSP_HEADER_SIZE_ALIGNED], in ssp_irq_msg()
412 msg->length); in ssp_irq_msg()
414 msg->options = in ssp_irq_msg()
416 msg->length = 1; in ssp_irq_msg()
418 list_add_tail(&msg->list, &data->pending_list); in ssp_irq_msg()
423 if (msg->done) in ssp_irq_msg()
424 if (!completion_done(msg->done)) in ssp_irq_msg()
425 complete(msg->done); in ssp_irq_msg()
456 struct ssp_msg *msg, *n; in ssp_clean_pending_list() local
459 list_for_each_entry_safe(msg, n, &data->pending_list, list) { in ssp_clean_pending_list()
460 list_del(&msg->list); in ssp_clean_pending_list()
462 if (msg->done) in ssp_clean_pending_list()
463 if (!completion_done(msg->done)) in ssp_clean_pending_list()
464 complete(msg->done); in ssp_clean_pending_list()
472 struct ssp_msg *msg; in ssp_command() local
474 msg = ssp_create_msg(command, 0, SSP_AP2HUB_WRITE, arg); in ssp_command()
475 if (!msg) in ssp_command()
480 ret = ssp_spi_sync_command(data, msg); in ssp_command()
481 ssp_clean_msg(msg); in ssp_command()
490 struct ssp_msg *msg; in ssp_send_instruction() local
503 msg = ssp_create_msg(inst, length + 2, SSP_AP2HUB_WRITE, 0); in ssp_send_instruction()
504 if (!msg) in ssp_send_instruction()
507 ssp_fill_buffer(msg, 0, &sensor_type, 1); in ssp_send_instruction()
508 ssp_fill_buffer(msg, 1, send_buf, length); in ssp_send_instruction()
513 ret = ssp_spi_sync(data, msg, 1000); in ssp_send_instruction()
514 ssp_clean_msg(msg); in ssp_send_instruction()
523 struct ssp_msg *msg; in ssp_get_chipid() local
525 msg = ssp_create_msg(SSP_MSG2SSP_AP_WHOAMI, 1, SSP_AP2HUB_READ, 0); in ssp_get_chipid()
526 if (!msg) in ssp_get_chipid()
529 ret = ssp_spi_sync(data, msg, 1000); in ssp_get_chipid()
531 buffer = SSP_GET_BUFFER_AT_INDEX(msg, 0); in ssp_get_chipid()
533 ssp_clean_msg(msg); in ssp_get_chipid()
541 struct ssp_msg *msg; in ssp_set_magnetic_matrix() local
543 msg = ssp_create_msg(SSP_MSG2SSP_AP_SET_MAGNETIC_STATIC_MATRIX, in ssp_set_magnetic_matrix()
546 if (!msg) in ssp_set_magnetic_matrix()
549 ssp_fill_buffer(msg, 0, data->sensorhub_info->mag_table, in ssp_set_magnetic_matrix()
552 ret = ssp_spi_sync(data, msg, 1000); in ssp_set_magnetic_matrix()
553 ssp_clean_msg(msg); in ssp_set_magnetic_matrix()
564 struct ssp_msg *msg = ssp_create_msg(SSP_MSG2SSP_AP_SENSOR_SCANNING, 4, in ssp_get_sensor_scanning_info() local
566 if (!msg) in ssp_get_sensor_scanning_info()
569 ret = ssp_spi_sync(data, msg, 1000); in ssp_get_sensor_scanning_info()
575 ssp_get_buffer(msg, 0, &result, 4); in ssp_get_sensor_scanning_info()
581 ssp_clean_msg(msg); in ssp_get_sensor_scanning_info()
590 struct ssp_msg *msg = ssp_create_msg(SSP_MSG2SSP_AP_FIRMWARE_REV, 4, in ssp_get_firmware_rev() local
592 if (!msg) in ssp_get_firmware_rev()
595 ret = ssp_spi_sync(data, msg, 1000); in ssp_get_firmware_rev()
602 ssp_get_buffer(msg, 0, &result, 4); in ssp_get_firmware_rev()
606 ssp_clean_msg(msg); in ssp_get_firmware_rev()