in svc.c [172:207]
static int gb_svc_pwrmon_sample_get(struct gb_svc *svc, u8 rail_id,
u8 measurement_type, u32 *value)
{
struct gb_svc_pwrmon_sample_get_request request;
struct gb_svc_pwrmon_sample_get_response response;
int ret;
request.rail_id = rail_id;
request.measurement_type = measurement_type;
ret = gb_operation_sync(svc->connection, GB_SVC_TYPE_PWRMON_SAMPLE_GET,
&request, sizeof(request),
&response, sizeof(response));
if (ret) {
dev_err(&svc->dev, "failed to get rail sample: %d\n", ret);
return ret;
}
if (response.result) {
dev_err(&svc->dev,
"UniPro error while getting rail power sample (%d %d): %d\n",
rail_id, measurement_type, response.result);
switch (response.result) {
case GB_SVC_PWRMON_GET_SAMPLE_INVAL:
return -EINVAL;
case GB_SVC_PWRMON_GET_SAMPLE_NOSUPP:
return -ENOMSG;
default:
return -EREMOTEIO;
}
}
*value = le32_to_cpu(response.measurement);
return 0;
}