in qcom-ngd-ctrl.c [401:435]
static int qcom_slim_qmi_send_power_request(struct qcom_slim_ngd_ctrl *ctrl,
struct slimbus_power_req_msg_v01 *req)
{
struct slimbus_power_resp_msg_v01 resp = { { 0, 0 } };
struct qmi_txn txn;
int rc;
rc = qmi_txn_init(ctrl->qmi.handle, &txn,
slimbus_power_resp_msg_v01_ei, &resp);
rc = qmi_send_request(ctrl->qmi.handle, NULL, &txn,
SLIMBUS_QMI_POWER_REQ_V01,
SLIMBUS_QMI_POWER_REQ_MAX_MSG_LEN,
slimbus_power_req_msg_v01_ei, req);
if (rc < 0) {
dev_err(ctrl->dev, "QMI send req fail %d\n", rc);
qmi_txn_cancel(&txn);
return rc;
}
rc = qmi_txn_wait(&txn, SLIMBUS_QMI_RESP_TOUT);
if (rc < 0) {
dev_err(ctrl->dev, "QMI TXN wait fail: %d\n", rc);
return rc;
}
/* Check the response */
if (resp.resp.result != QMI_RESULT_SUCCESS_V01) {
dev_err(ctrl->dev, "QMI request failed 0x%x\n",
resp.resp.result);
return -EREMOTEIO;
}
return 0;
}