mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-09 17:11:42 +00:00
samus: Add host command to read raw tmp006 data
This is needed to calibrate the tmp006 remote sensor values.
BUG=chrome-os-partner:26581
BRANCH=none
TEST='ectool tmp006raw N' works for N=0,1,2,3
And fails with invalid param for N=4.
Data matches result of tmp006 ec console command.
Change-Id: I04ec093c7727b55caca7d02baaf373d1ff234731
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/189207
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
This commit is contained in:
committed by
chrome-internal-fetch
parent
ada635006d
commit
c42bf99402
@@ -324,6 +324,28 @@ DECLARE_HOST_COMMAND(EC_CMD_TMP006_SET_CALIBRATION,
|
||||
tmp006_set_calibration,
|
||||
EC_VER_MASK(0));
|
||||
|
||||
int tmp006_get_raw(struct host_cmd_handler_args *args)
|
||||
{
|
||||
const struct ec_params_tmp006_get_raw *p = args->params;
|
||||
struct ec_response_tmp006_get_raw *r = args->response;
|
||||
const struct tmp006_data_t *tdata;
|
||||
|
||||
if (p->index >= TMP006_COUNT)
|
||||
return EC_RES_INVALID_PARAM;
|
||||
|
||||
tdata = tmp006_data + p->index;
|
||||
|
||||
r->v = tdata->v;
|
||||
r->t = tdata->t[(tdata->tidx - 1) & 0x3];
|
||||
|
||||
args->response_size = sizeof(*r);
|
||||
|
||||
return EC_RES_SUCCESS;
|
||||
}
|
||||
DECLARE_HOST_COMMAND(EC_CMD_TMP006_GET_RAW,
|
||||
tmp006_get_raw,
|
||||
EC_VER_MASK(0));
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Console commands */
|
||||
|
||||
|
||||
@@ -1323,6 +1323,18 @@ struct ec_params_tmp006_set_calibration {
|
||||
float b2;
|
||||
} __packed;
|
||||
|
||||
/* Read raw TMP006 data */
|
||||
#define EC_CMD_TMP006_GET_RAW 0x55
|
||||
|
||||
struct ec_params_tmp006_get_raw {
|
||||
uint8_t index;
|
||||
} __packed;
|
||||
|
||||
struct ec_response_tmp006_get_raw {
|
||||
int32_t t; /* In 1/100 K */
|
||||
int32_t v; /* In nV */
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
/* MKBP - Matrix KeyBoard Protocol */
|
||||
|
||||
|
||||
@@ -152,6 +152,8 @@ const char help_str[] =
|
||||
" Set the threshold temperature values for the thermal engine.\n"
|
||||
" tmp006cal <tmp006_index> [<S0> <b0> <b1> <b2>]\n"
|
||||
" Get/set TMP006 calibration\n"
|
||||
" tmp006raw <tmp006_index>\n"
|
||||
" Get raw TMP006 data\n"
|
||||
" usbchargemode <port> <mode>\n"
|
||||
" Set USB charging mode\n"
|
||||
" usbmux <mux>\n"
|
||||
@@ -3444,6 +3446,36 @@ int cmd_tmp006cal(int argc, char *argv[])
|
||||
&p, sizeof(p), NULL, 0);
|
||||
}
|
||||
|
||||
int cmd_tmp006raw(int argc, char *argv[])
|
||||
{
|
||||
struct ec_params_tmp006_get_raw p;
|
||||
struct ec_response_tmp006_get_raw r;
|
||||
char *e;
|
||||
int idx;
|
||||
int rv;
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "Must specify tmp006 index.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
idx = strtol(argv[1], &e, 0);
|
||||
if ((e && *e) || idx < 0 || idx > 255) {
|
||||
fprintf(stderr, "Bad index.\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
p.index = idx;
|
||||
|
||||
rv = ec_command(EC_CMD_TMP006_GET_RAW, 0, &p, sizeof(p), &r, sizeof(r));
|
||||
if (rv < 0)
|
||||
return rv;
|
||||
|
||||
printf("T: %d.%02d K\n", r.t / 100, r.t % 100);
|
||||
printf("V: %d nV\n", r.v);
|
||||
return EC_SUCCESS;
|
||||
}
|
||||
|
||||
static int cmd_hang_detect(int argc, char *argv[])
|
||||
{
|
||||
struct ec_params_hang_detect req;
|
||||
@@ -3569,6 +3601,7 @@ const struct command commands[] = {
|
||||
{"thermalget", cmd_thermal_get_threshold},
|
||||
{"thermalset", cmd_thermal_set_threshold},
|
||||
{"tmp006cal", cmd_tmp006cal},
|
||||
{"tmp006raw", cmd_tmp006raw},
|
||||
{"usbchargemode", cmd_usb_charge_set_mode},
|
||||
{"usbmux", cmd_usb_mux},
|
||||
{"version", cmd_version},
|
||||
|
||||
Reference in New Issue
Block a user