summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2016-08-29 09:01:53 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2016-08-31 23:44:02 +0000
commit90fcd6be2b5d2104301efef295113d7816e14042 (patch)
treedcf8950c9bf171090a53608baf472c5db10621e1
parente1909a932b8a98bb13c4379320325b5b22f0d4bb (diff)
downloadchrome-ec-90fcd6be2b5d2104301efef295113d7816e14042.tar.gz
driver: kionix: Remove variant field.
Field is not required: sensor->chip already has that information. BRANCH=veyron BUG=none TEST=compile Change-Id: I6c0bc2e71d7c848968caa78c749dd3fb916f6263 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/379096 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
-rw-r--r--board/cyan/board.c5
-rw-r--r--driver/accel_kionix.c71
-rw-r--r--driver/accel_kionix.h8
3 files changed, 39 insertions, 45 deletions
diff --git a/board/cyan/board.c b/board/cyan/board.c
index cdb2116b50..8eae0ae633 100644
--- a/board/cyan/board.c
+++ b/board/cyan/board.c
@@ -93,10 +93,7 @@ BUILD_ASSERT(ARRAY_SIZE(thermal_params) == TEMP_SENSOR_COUNT);
/* kxcj9 mutex and local/private data*/
static struct mutex g_kxcj9_mutex[2];
-struct kionix_accel_data g_kxcj9_data[2] = {
- {.variant = KXCJ9},
- {.variant = KXCJ9},
-};
+struct kionix_accel_data g_kxcj9_data[2];
/* Four Motion sensors */
/* Matrix to rotate accelrator into standard reference frame */
diff --git a/driver/accel_kionix.c b/driver/accel_kionix.c
index ecd96c3119..750c8cd808 100644
--- a/driver/accel_kionix.c
+++ b/driver/accel_kionix.c
@@ -27,11 +27,18 @@
/* Number of times to attempt to enable sensor before giving up. */
#define SENSOR_ENABLE_ATTEMPTS 3
+#if defined(CONFIG_ACCEL_KXCJ9) && !defined(CONFIG_ACCEL_KX022)
+#define V(s_) 1
+#elif defined(CONFIG_ACCEL_KX022) && !defined(CONFIG_ACCEL_KXCJ9)
+#define V(s_) 0
+#else
+#define V(s_) ((s_)->chip == MOTIONSENSE_CHIP_KXCJ9)
+#endif
/* Index for which table to use. */
#if !defined(CONFIG_ACCEL_KXCJ9) || !defined(CONFIG_ACCEL_KX022)
-#define T 0
+#define T(s_) 0
#else
-#define T (data->variant)
+#define T(s_) V(s_)
#endif /* !defined(CONFIG_ACCEL_KXCJ9) || !defined(CONFIG_ACCEL_KX022) */
/* List of range values in +/-G's and their associated register values. */
@@ -202,10 +209,9 @@ static int raw_read_multi(const int port, int addr, uint8_t reg,
static int disable_sensor(const struct motion_sensor_t *s, int *reg_val)
{
int i, ret, reg, pc1_field;
- struct kionix_accel_data *data = s->drv_data;
- reg = KIONIX_CTRL1_REG(data->variant);
- pc1_field = KIONIX_PC1_FIELD(data->variant);
+ reg = KIONIX_CTRL1_REG(V(s));
+ pc1_field = KIONIX_PC1_FIELD(V(s));
/*
* Read the current state of the control register
@@ -238,10 +244,9 @@ static int disable_sensor(const struct motion_sensor_t *s, int *reg_val)
static int enable_sensor(const struct motion_sensor_t *s, int reg_val)
{
int i, ret, reg, pc1_field;
- struct kionix_accel_data *data = s->drv_data;
- reg = KIONIX_CTRL1_REG(data->variant);
- pc1_field = KIONIX_PC1_FIELD(data->variant);
+ reg = KIONIX_CTRL1_REG(V(s));
+ pc1_field = KIONIX_PC1_FIELD(V(s));
for (i = 0; i < SENSOR_ENABLE_ATTEMPTS; i++) {
ret = raw_read8(s->port, s->addr, reg, &reg_val);
@@ -265,10 +270,11 @@ static int set_range(const struct motion_sensor_t *s, int range, int rnd)
struct kionix_accel_data *data = s->drv_data;
/* Find index for interface pair matching the specified range. */
- index = find_param_index(range, rnd, ranges[T], ARRAY_SIZE(ranges[T]));
- range_field = KIONIX_RANGE_FIELD(data->variant);
- reg = KIONIX_CTRL1_REG(data->variant);
- range_val = ranges[T][index].reg;
+ index = find_param_index(range, rnd, ranges[T(s)],
+ ARRAY_SIZE(ranges[T(s)]));
+ range_field = KIONIX_RANGE_FIELD(V(s));
+ reg = KIONIX_CTRL1_REG(V(s));
+ range_val = ranges[T(s)][index].reg;
/* Disable the sensor to allow for changing of critical parameters. */
mutex_lock(s->mutex);
@@ -299,7 +305,7 @@ static int set_range(const struct motion_sensor_t *s, int range, int rnd)
static int get_range(const struct motion_sensor_t *s)
{
struct kionix_accel_data *data = s->drv_data;
- return ranges[T][data->sensor_range].val;
+ return ranges[T(s)][data->sensor_range].val;
}
static int set_resolution(const struct motion_sensor_t *s, int res, int rnd)
@@ -308,11 +314,11 @@ static int set_resolution(const struct motion_sensor_t *s, int res, int rnd)
struct kionix_accel_data *data = s->drv_data;
/* Find index for interface pair matching the specified resolution. */
- index = find_param_index(res, rnd, resolutions[T],
- ARRAY_SIZE(resolutions[T]));
- res_val = resolutions[T][index].reg;
- res_field = KIONIX_RES_FIELD(data->variant);
- reg = KIONIX_CTRL1_REG(data->variant);
+ index = find_param_index(res, rnd, resolutions[T(s)],
+ ARRAY_SIZE(resolutions[T(s)]));
+ res_val = resolutions[T(s)][index].reg;
+ res_field = KIONIX_RES_FIELD(V(s));
+ reg = KIONIX_CTRL1_REG(V(s));
/* Disable the sensor to allow for changing of critical parameters. */
mutex_lock(s->mutex);
@@ -343,7 +349,7 @@ static int set_resolution(const struct motion_sensor_t *s, int res, int rnd)
static int get_resolution(const struct motion_sensor_t *s)
{
struct kionix_accel_data *data = s->drv_data;
- return resolutions[T][data->sensor_resolution].val;
+ return resolutions[T(s)][data->sensor_resolution].val;
}
static int set_data_rate(const struct motion_sensor_t *s, int rate, int rnd)
@@ -353,11 +359,11 @@ static int set_data_rate(const struct motion_sensor_t *s, int rate, int rnd)
struct kionix_accel_data *data = s->drv_data;
/* Find index for interface pair matching the specified rate. */
- index = find_param_index(rate, rnd, datarates[T],
- ARRAY_SIZE(datarates[T]));
- odr_val = datarates[T][index].reg;
- reg = KIONIX_ODR_REG(data->variant);
- odr_field = KIONIX_ODR_FIELD(data->variant);
+ index = find_param_index(rate, rnd, datarates[T(s)],
+ ARRAY_SIZE(datarates[T(s)]));
+ odr_val = datarates[T(s)][index].reg;
+ reg = KIONIX_ODR_REG(V(s));
+ odr_field = KIONIX_ODR_FIELD(V(s));
/* Disable the sensor to allow for changing of critical parameters. */
mutex_lock(s->mutex);
@@ -392,7 +398,7 @@ static int set_data_rate(const struct motion_sensor_t *s, int rate, int rnd)
static int get_data_rate(const struct motion_sensor_t *s)
{
struct kionix_accel_data *data = s->drv_data;
- return datarates[T][data->sensor_datarate].val;
+ return datarates[T(s)][data->sensor_datarate].val;
}
static int set_offset(const struct motion_sensor_t *s, const int16_t *offset,
@@ -425,7 +431,7 @@ static int read(const struct motion_sensor_t *s, vector_3_t v)
struct kionix_accel_data *data = s->drv_data;
/* Read 6 bytes starting at XOUT_L. */
- reg = KIONIX_XOUT_L(data->variant);
+ reg = KIONIX_XOUT_L(V(s));
mutex_lock(s->mutex);
ret = raw_read_multi(s->port, s->addr, reg, acc, 6);
mutex_unlock(s->mutex);
@@ -448,11 +454,11 @@ static int read(const struct motion_sensor_t *s, vector_3_t v)
*/
resolution = get_resolution(s);
for (i = X; i <= Z; i++) {
- if (KXCJ9 == data->variant) {
+ if (V(s)) {
v[i] = (((int8_t)acc[i * 2 + 1]) << 4) |
(acc[i * 2] >> 4);
v[i] <<= 16 - resolution;
- } else if (KX022 == data->variant) {
+ } else {
if (resolution == 8)
acc[i * 2] = 0;
v[i] = (((int8_t)acc[i * 2 + 1]) << 8) | acc[i * 2];
@@ -472,10 +478,9 @@ static int init(const struct motion_sensor_t *s)
{
int ret, val, reg, reset_field;
uint8_t timeout;
- struct kionix_accel_data *data = s->drv_data;
- reg = KIONIX_CTRL2_REG(data->variant);
- reset_field = KIONIX_RESET_FIELD(data->variant);
+ reg = KIONIX_CTRL2_REG(V(s));
+ reset_field = KIONIX_RESET_FIELD(V(s));
/* Issue a software reset. */
mutex_lock(s->mutex);
@@ -527,9 +532,9 @@ static int init(const struct motion_sensor_t *s)
if (ret != EC_SUCCESS)
return ret;
- if (KXCJ9 == data->variant)
+ if (V(s))
ret = set_resolution(s, 12, 1);
- else if (KX022 == data->variant)
+ else
ret = set_resolution(s, 16, 1);
if (ret != EC_SUCCESS)
return ret;
diff --git a/driver/accel_kionix.h b/driver/accel_kionix.h
index 3dc7f314a4..6c71cb7918 100644
--- a/driver/accel_kionix.h
+++ b/driver/accel_kionix.h
@@ -12,12 +12,6 @@
#include "driver/accel_kx022.h"
#include "driver/accel_kxcj9.h"
-enum kionix_accel {
- KX022,
- KXCJ9,
- SUPPORTED_KIONIX_ACCELS,
-};
-
/*
* Struct for pairing an engineering value with the register value for a
* parameter.
@@ -28,8 +22,6 @@ struct accel_param_pair {
};
struct kionix_accel_data {
- /* Variant of Kionix Accelerometer. */
- uint8_t variant;
/* Note, the following are indicies into their respective tables. */
/* Current range of accelerometer. */
int sensor_range;