diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2016-08-29 09:01:53 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2016-09-21 06:36:08 +0000 |
commit | eefba82d440baa799072bfd5eba97481dc253b4d (patch) | |
tree | 2d11b5ef52ddbb2a8bfa66c44469917aedc8dbad | |
parent | 5cdbe92e4a28d378b9bdac3ca5cd38c6277340a7 (diff) | |
download | chrome-ec-eefba82d440baa799072bfd5eba97481dc253b4d.tar.gz |
UPSTREAM: driver: kionix: Remove variant field.
Field is not required: sensor->chip already has that information.
BRANCH=oak
BUG=b:27849483,b:27849483,b:31609073
TEST=compile
(cherry picked from commit 90fcd6be2b5d2104301efef295113d7816e14042)
Reviewed-on: https://chromium-review.googlesource.com/379096
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Change-Id: I6c0bc2e71d7c848968caa78c749dd3fb916f6263
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/379541
(cherry picked from commit 5a01bd89baedea18305742078f32adfe84f8ff9f)
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/387157
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
-rw-r--r-- | board/amenia/board.c | 4 | ||||
-rw-r--r-- | board/elm/board.c | 5 | ||||
-rw-r--r-- | board/glados/board.c | 4 | ||||
-rw-r--r-- | board/oak/board.c | 4 | ||||
-rw-r--r-- | board/reef/board.c | 4 | ||||
-rw-r--r-- | board/samus/board.c | 4 | ||||
-rw-r--r-- | board/strago/board.c | 5 | ||||
-rw-r--r-- | board/wheatley/board.c | 4 | ||||
-rw-r--r-- | driver/accel_kionix.c | 71 | ||||
-rw-r--r-- | driver/accel_kionix.h | 8 |
10 files changed, 46 insertions, 67 deletions
diff --git a/board/amenia/board.c b/board/amenia/board.c index 6895c868f3..feb0a6b390 100644 --- a/board/amenia/board.c +++ b/board/amenia/board.c @@ -415,9 +415,7 @@ const matrix_3x3_t base_standard_ref = { }; /* KX022 private data */ -struct kionix_accel_data g_kx022_data = { - .variant = KX022, -}; +struct kionix_accel_data g_kx022_data; struct motion_sensor_t motion_sensors[] = { /* diff --git a/board/elm/board.c b/board/elm/board.c index 78097e48c1..5328c7dbba 100644 --- a/board/elm/board.c +++ b/board/elm/board.c @@ -543,10 +543,7 @@ const matrix_3x3_t lid_standard_ref = { }; /* KX022 private data */ -struct kionix_accel_data g_kx022_data[2] = { - {.variant = KX022}, - {.variant = KX022}, -}; +struct kionix_accel_data g_kx022_data[2]; struct motion_sensor_t motion_sensors[] = { {.name = "Base Accel", diff --git a/board/glados/board.c b/board/glados/board.c index 29d05f1dea..d2fa93d153 100644 --- a/board/glados/board.c +++ b/board/glados/board.c @@ -487,9 +487,7 @@ static struct mutex g_lid_mutex; static struct mutex g_base_mutex; /* KX022 private data */ -struct kionix_accel_data g_kx022_data = { - .variant = KX022, -}; +struct kionix_accel_data g_kx022_data; struct motion_sensor_t motion_sensors[] = { /* diff --git a/board/oak/board.c b/board/oak/board.c index 66ac54d314..d9fca71b6c 100644 --- a/board/oak/board.c +++ b/board/oak/board.c @@ -659,9 +659,7 @@ const matrix_3x3_t base_standard_ref = { #endif /* KX022 private data */ -struct kionix_accel_data g_kx022_data = { - .variant = KX022, -}; +struct kionix_accel_data g_kx022_data; struct motion_sensor_t motion_sensors[] = { #ifdef CONFIG_ACCELGYRO_BMI160 diff --git a/board/reef/board.c b/board/reef/board.c index 1fe7aaab80..b93810ad83 100644 --- a/board/reef/board.c +++ b/board/reef/board.c @@ -501,9 +501,7 @@ const matrix_3x3_t base_standard_ref = { }; /* KX022 private data */ -struct kionix_accel_data g_kx022_data = { - .variant = KX022, -}; +struct kionix_accel_data g_kx022_data; /* FIXME(dhendrix): Copied from Amenia, probably need to tweak for Reef */ struct motion_sensor_t motion_sensors[] = { diff --git a/board/samus/board.c b/board/samus/board.c index 5257899ecc..b5d0a9830b 100644 --- a/board/samus/board.c +++ b/board/samus/board.c @@ -274,9 +274,7 @@ static struct mutex g_base_mutex; static struct mutex g_lid_mutex; /* kxcj9 local/private data */ -struct kionix_accel_data g_kxcj9_data = { - .variant = KXCJ9, -}; +struct kionix_accel_data g_kxcj9_data; /* lsm6ds0 local sensor data (per-sensor) */ struct lsm6ds0_data g_saved_data[2]; diff --git a/board/strago/board.c b/board/strago/board.c index 5c123e7ef4..9f199bcc84 100644 --- a/board/strago/board.c +++ b/board/strago/board.c @@ -194,10 +194,7 @@ void board_reset_pd_mcu(void) /* Four Motion sensors */ /* 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]; /* Matrix to rotate accelrator into standard reference frame */ const matrix_3x3_t base_standard_ref = { diff --git a/board/wheatley/board.c b/board/wheatley/board.c index 408e833697..85216a4a15 100644 --- a/board/wheatley/board.c +++ b/board/wheatley/board.c @@ -461,9 +461,7 @@ static struct mutex g_lid_mutex; static struct mutex g_base_mutex; /* KX022 private data */ -struct kionix_accel_data g_kx022_data = { - .variant = KX022, -}; +struct kionix_accel_data g_kx022_data; struct motion_sensor_t motion_sensors[] = { /* diff --git a/driver/accel_kionix.c b/driver/accel_kionix.c index f21d839577..e7722c97f0 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, ®_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]; @@ -479,10 +485,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); @@ -534,9 +539,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; |