diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2019-05-17 16:38:55 -0700 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2019-07-02 12:11:31 +0100 |
commit | 1bb407f17c5316888c3c446e26cb2bb78943f236 (patch) | |
tree | e36d6247d84ce0a3f3abd5912ae94f0734216035 /drivers | |
parent | 5aa3709c0a5c026735b0ddd4ec80810a23d65f5b (diff) | |
download | linux-stable-1bb407f17c5316888c3c446e26cb2bb78943f236.tar.gz linux-stable-1bb407f17c5316888c3c446e26cb2bb78943f236.tar.bz2 linux-stable-1bb407f17c5316888c3c446e26cb2bb78943f236.zip |
mfd: cros_ec: Register cros_ec_lid_angle driver when presented
Register driver when EC indicates has precise lid angle calculation code
running.
Fix incorrect extra resource allocation in cros_ec_sensors_register().
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mfd/cros_ec_dev.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index 54a58df571b6..d992365472b8 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c @@ -297,13 +297,15 @@ static void cros_ec_sensors_register(struct cros_ec_dev *ec) resp = (struct ec_response_motion_sense *)msg->data; sensor_num = resp->dump.sensor_count; - /* Allocate 1 extra sensors in FIFO are needed */ - sensor_cells = kcalloc(sensor_num + 1, sizeof(struct mfd_cell), + /* + * Allocate 2 extra sensors if lid angle sensor and/or FIFO are needed. + */ + sensor_cells = kcalloc(sensor_num + 2, sizeof(struct mfd_cell), GFP_KERNEL); if (sensor_cells == NULL) goto error; - sensor_platforms = kcalloc(sensor_num + 1, + sensor_platforms = kcalloc(sensor_num, sizeof(struct cros_ec_sensor_platform), GFP_KERNEL); if (sensor_platforms == NULL) @@ -363,6 +365,11 @@ static void cros_ec_sensors_register(struct cros_ec_dev *ec) sensor_cells[id].name = "cros-ec-ring"; id++; } + if (cros_ec_check_features(ec, + EC_FEATURE_REFINED_TABLET_MODE_HYSTERESIS)) { + sensor_cells[id].name = "cros-ec-lid-angle"; + id++; + } ret = mfd_add_devices(ec->dev, 0, sensor_cells, id, NULL, 0, NULL); |