diff options
| author | Eric Tashakkor <w36098@motorola.com> | 2014-05-09 14:19:31 -0500 |
|---|---|---|
| committer | Heather Lee Wilson <hwilson@google.com> | 2014-05-12 13:19:36 -0700 |
| commit | 09f2540f8b92c98f0c8a288ea270051070527b69 (patch) | |
| tree | f792fecc041b4985a45b92c371f117e47070875e | |
| parent | 0b5306046b7d96f6f641ae390048266639d92d5b (diff) | |
| download | olio-linux-3.10-09f2540f8b92c98f0c8a288ea270051070527b69.tar.xz olio-linux-3.10-09f2540f8b92c98f0c8a288ea270051070527b69.zip | |
IKXCLOCK-1224 Update M4 Memory Map and Drivers
Updated M4 memory map based on pending firmware.
Updated the heartrate driver to use new M4 names and interrupt.
Updated the passive driver to pull new data.
Updated the pedometer driver to pull different data and use updated sizes.
Fixed an IIO-related bug in the passive driver.
Change-Id: I96d6a248fc393dfd5d5b0b8b0a00931e3be7bed9
Signed-off-by: Eric Tashakkor <w36098@motorola.com>
| -rw-r--r-- | drivers/mfd/m4sensorhub-irq.c | 3 | ||||
| -rw-r--r-- | drivers/mfd/m4sensorhub-reg.h | 33 | ||||
| -rw-r--r-- | drivers/misc/m4sensorhub_heartrate.c | 14 | ||||
| -rw-r--r-- | drivers/misc/m4sensorhub_passive.c | 64 | ||||
| -rw-r--r-- | drivers/misc/m4sensorhub_pedometer.c | 19 | ||||
| -rw-r--r-- | include/linux/iio/m4sensorhub/m4sensorhub_passive.h | 8 | ||||
| -rw-r--r-- | include/linux/iio/m4sensorhub/m4sensorhub_pedometer.h | 6 | ||||
| -rw-r--r-- | include/linux/m4sensorhub/m4sensorhub_irqs.h | 3 | ||||
| -rw-r--r-- | include/linux/m4sensorhub/m4sensorhub_reg_enum.h | 13 |
9 files changed, 109 insertions, 54 deletions
diff --git a/drivers/mfd/m4sensorhub-irq.c b/drivers/mfd/m4sensorhub-irq.c index d569c47a8c5..b4b046b01d9 100644 --- a/drivers/mfd/m4sensorhub-irq.c +++ b/drivers/mfd/m4sensorhub-irq.c @@ -73,8 +73,9 @@ static const char *irq_name[] = { [M4SH_IRQ_WRIST_READY] = "WRIST_READY", [M4SH_IRQ_PASSIVE_BUFFER_FULL] = "PASSIVE_BUFFER_FULL", [M4SH_IRQ_LIGHTSENSOR_DATA_READY] = "ALS_DATA_READY", - [M4SH_IRQ_HRSENSOR_DATA_READY] = "HR_DATA_READY", + [M4SH_IRQ_HRSENSOR_DATA_READY] = "HRSENSOR_DATA_READY", [M4SH_IRQ_AP_ALARM_EXPIRED] = "AP_ALARM_EXPIRED", + [M4SH_IRQ_HEARTRATE_DATA_READY] = "HR_DATA_READY", }; /* -------------- Local Data Structures ------------- */ diff --git a/drivers/mfd/m4sensorhub-reg.h b/drivers/mfd/m4sensorhub-reg.h index 9e88714f806..a69c95da7c8 100644 --- a/drivers/mfd/m4sensorhub-reg.h +++ b/drivers/mfd/m4sensorhub-reg.h @@ -69,12 +69,12 @@ static const struct { [M4SH_REG_PEDOMETER_TESTCMD] = {M4SH_TYPE_PEDOMETER, 0x1, 1}, [M4SH_REG_PEDOMETER_ACTIVITY] = {M4SH_TYPE_PEDOMETER, 0x2, 1}, [M4SH_REG_PEDOMETER_EQUIPMENTTYPE] = {M4SH_TYPE_PEDOMETER, 0x3, 1}, - [M4SH_REG_PEDOMETER_TOTALSTEPS] = {M4SH_TYPE_PEDOMETER, 0x4, 2}, - [M4SH_REG_PEDOMETER_FLOORSCLIMBED] = {M4SH_TYPE_PEDOMETER, 0x6, 2}, - [M4SH_REG_PEDOMETER_TOTATDISTANCE] = {M4SH_TYPE_PEDOMETER, 0x8, 4}, - [M4SH_REG_PEDOMETER_CURRENTSPEED] = {M4SH_TYPE_PEDOMETER, 0xc, 4}, - [M4SH_REG_PEDOMETER_REPORTEDDISTANCE] = {M4SH_TYPE_PEDOMETER, 0x10, 4}, - [M4SH_REG_PEDOMETER_USERDISTANCE] = {M4SH_TYPE_PEDOMETER, 0x14, 4}, + [M4SH_REG_PEDOMETER_TOTALSTEPS] = {M4SH_TYPE_PEDOMETER, 0x4, 4}, + [M4SH_REG_PEDOMETER_REPORTEDDISTANCE] = {M4SH_TYPE_PEDOMETER, 0x8, 4}, + [M4SH_REG_PEDOMETER_USERDISTANCE] = {M4SH_TYPE_PEDOMETER, 0xc, 4}, + [M4SH_REG_PEDOMETER_TOTALDISTANCE] = {M4SH_TYPE_PEDOMETER, 0x10, 4}, + [M4SH_REG_PEDOMETER_FLOORSCLIMBED] = {M4SH_TYPE_PEDOMETER, 0x14, 2}, + [M4SH_REG_PEDOMETER_CURRENTSPEED] = {M4SH_TYPE_PEDOMETER, 0x16, 2}, [M4SH_REG_TCMD_OPCODE] = {M4SH_TYPE_TCMD, 0x0, 1}, [M4SH_REG_LOG_LOGENABLE] = {M4SH_TYPE_LOG, 0x0, 8}, [M4SH_REG_LOG_ISLOGIMMEDIATE] = {M4SH_TYPE_LOG, 0x8, 1}, @@ -111,6 +111,7 @@ static const struct { [M4SH_REG_METS_MSSAMPLETIME] = {M4SH_TYPE_METS, 0x2, 2}, [M4SH_REG_METS_METS] = {M4SH_TYPE_METS, 0x4, 4}, [M4SH_REG_METS_CALORIES] = {M4SH_TYPE_METS, 0x8, 4}, + [M4SH_REG_METS_HEALTHYMINUTES] = {M4SH_TYPE_METS, 0xc, 4}, [M4SH_REG_USERSETTINGS_VERSION] = {M4SH_TYPE_USERSETTINGS, 0x0, 1}, [M4SH_REG_USERSETTINGS_USERAGE] = {M4SH_TYPE_USERSETTINGS, 0x1, 1}, [M4SH_REG_USERSETTINGS_USERGENDER] = {M4SH_TYPE_USERSETTINGS, 0x2, 1}, @@ -162,15 +163,19 @@ static const struct { [M4SH_REG_GESTURE_CONFIDENCE3] = {M4SH_TYPE_GESTURE, 0x8, 1}, [M4SH_REG_GESTURE_VALUE3] = {M4SH_TYPE_GESTURE, 0x9, 1}, [M4SH_REG_PASSIVE_TIMESTAMP] = {M4SH_TYPE_PASSIVE, 0x0, 48}, - [M4SH_REG_PASSIVE_STEPS] = {M4SH_TYPE_PASSIVE, 0x30, 48}, - [M4SH_REG_PASSIVE_CALORIES] = {M4SH_TYPE_PASSIVE, 0x60, 48}, - [M4SH_REG_PASSIVE_FLOORSCLIMBED] = {M4SH_TYPE_PASSIVE, 0x90, 48}, + [M4SH_REG_PASSIVE_STEPS] = {M4SH_TYPE_PASSIVE, 0x30, 24}, + [M4SH_REG_PASSIVE_CALORIES] = {M4SH_TYPE_PASSIVE, 0x48, 24}, + [M4SH_REG_PASSIVE_HEARTRATE] = {M4SH_TYPE_PASSIVE, 0x60, 24}, + [M4SH_REG_PASSIVE_HRCONFIDENCE] = {M4SH_TYPE_PASSIVE, 0x78, 12}, + [M4SH_REG_PASSIVE_HEALTHYMINUTES] = {M4SH_TYPE_PASSIVE, 0x84, 12}, [M4SH_REG_EMG_SIGNALCOUNT] = {M4SH_TYPE_EMG, 0x0, 1}, [M4SH_REG_EMG_DUMMY] = {M4SH_TYPE_EMG, 0x1, 1}, [M4SH_REG_EMG_SAMPLERATE] = {M4SH_TYPE_EMG, 0x2, 2}, [M4SH_REG_EMG_SIGNALS] = {M4SH_TYPE_EMG, 0x4, 326}, - [M4SH_REG_HEARTRATE_HEARTRATE] = {M4SH_TYPE_HEARTRATE, 0x0, 2}, - [M4SH_REG_HEARTRATE_CONFIDENCE] = {M4SH_TYPE_HEARTRATE, 0x2, 1}, + [M4SH_REG_HEARTRATE_ENABLE] = {M4SH_TYPE_HEARTRATE, 0x0, 4}, + [M4SH_REG_HEARTRATE_APSAMPLERATE] = {M4SH_TYPE_HEARTRATE, 0x4, 4}, + [M4SH_REG_HEARTRATE_HEARTRATE] = {M4SH_TYPE_HEARTRATE, 0x8, 2}, + [M4SH_REG_HEARTRATE_CONFIDENCE] = {M4SH_TYPE_HEARTRATE, 0xa, 1}, [M4SH_REG_HRSENSOR_VERSION] = {M4SH_TYPE_HRSENSOR, 0x0, 1}, [M4SH_REG_HRSENSOR_DUMMY] = {M4SH_TYPE_HRSENSOR, 0x1, 1}, [M4SH_REG_HRSENSOR_SAMPLERATE] = {M4SH_TYPE_HRSENSOR, 0x2, 2}, @@ -195,7 +200,7 @@ static const unsigned int bank_size_tbl[M4SH_TYPE__NUM] = { [M4SH_TYPE_FUSION] = 59, [M4SH_TYPE_COMPASS] = 17, [M4SH_TYPE_GYRO] = 16, - [M4SH_TYPE_METS] = 12, + [M4SH_TYPE_METS] = 16, [M4SH_TYPE_USERSETTINGS] = 8, [M4SH_TYPE_POWER] = 8, [M4SH_TYPE_LOCATION] = 14, @@ -204,9 +209,9 @@ static const unsigned int bank_size_tbl[M4SH_TYPE__NUM] = { [M4SH_TYPE_TIMEPIECE] = 8, [M4SH_TYPE_WRIST] = 8, [M4SH_TYPE_GESTURE] = 10, - [M4SH_TYPE_PASSIVE] = 192, + [M4SH_TYPE_PASSIVE] = 144, [M4SH_TYPE_EMG] = 330, - [M4SH_TYPE_HEARTRATE] = 3, + [M4SH_TYPE_HEARTRATE] = 11, [M4SH_TYPE_HRSENSOR] = 13, [M4SH_TYPE_LIGHTSENSOR] = 6, }; diff --git a/drivers/misc/m4sensorhub_heartrate.c b/drivers/misc/m4sensorhub_heartrate.c index fc207b32834..9d785ab4b06 100644 --- a/drivers/misc/m4sensorhub_heartrate.c +++ b/drivers/misc/m4sensorhub_heartrate.c @@ -97,8 +97,8 @@ static int m4hrt_set_samplerate(struct iio_dev *iio, int16_t rate) goto m4hrt_set_samplerate_irq_check; size = m4sensorhub_reg_getsize(dd->m4, - M4SH_REG_HRSENSOR_SAMPLERATE); - err = m4sensorhub_reg_write(dd->m4, M4SH_REG_HRSENSOR_SAMPLERATE, + M4SH_REG_HEARTRATE_APSAMPLERATE); + err = m4sensorhub_reg_write(dd->m4, M4SH_REG_HEARTRATE_APSAMPLERATE, (char *)&rate, m4sh_no_mask); if (err < 0) { m4hrt_err("%s: Failed to set sample rate.\n", __func__); @@ -116,7 +116,7 @@ m4hrt_set_samplerate_irq_check: /* Enable the IRQ if necessary */ if (!(dd->status & (1 << M4HRT_IRQ_ENABLED_BIT))) { err = m4sensorhub_irq_enable(dd->m4, - M4SH_IRQ_HRSENSOR_DATA_READY); + M4SH_IRQ_HEARTRATE_DATA_READY); if (err < 0) { m4hrt_err("%s: Failed to enable irq.\n", __func__); @@ -128,7 +128,7 @@ m4hrt_set_samplerate_irq_check: /* Disable the IRQ if necessary */ if (dd->status & (1 << M4HRT_IRQ_ENABLED_BIT)) { err = m4sensorhub_irq_disable(dd->m4, - M4SH_IRQ_HRSENSOR_DATA_READY); + M4SH_IRQ_HEARTRATE_DATA_READY); if (err < 0) { m4hrt_err("%s: Failed to disable irq.\n", __func__); @@ -482,7 +482,7 @@ static int m4hrt_driver_init(struct init_calldata *p_arg) } err = m4sensorhub_irq_register(dd->m4, - M4SH_IRQ_HRSENSOR_DATA_READY, m4hrt_isr, iio); + M4SH_IRQ_HEARTRATE_DATA_READY, m4hrt_isr, iio); if (err < 0) { m4hrt_err("%s: Failed to register M4 IRQ.\n", __func__); goto m4hrt_driver_init_fail; @@ -552,11 +552,11 @@ static int __exit m4hrt_remove(struct platform_device *pdev) mutex_lock(&(dd->mutex)); if (dd->status & (1 << M4HRT_IRQ_ENABLED_BIT)) { m4sensorhub_irq_disable(dd->m4, - M4SH_IRQ_HRSENSOR_DATA_READY); + M4SH_IRQ_HEARTRATE_DATA_READY); dd->status = dd->status & ~(1 << M4HRT_IRQ_ENABLED_BIT); } m4sensorhub_irq_unregister(dd->m4, - M4SH_IRQ_HRSENSOR_DATA_READY); + M4SH_IRQ_HEARTRATE_DATA_READY); m4sensorhub_unregister_initcall(m4hrt_driver_init); m4hrt_remove_iiodev(iio); /* dd is freed here */ diff --git a/drivers/misc/m4sensorhub_passive.c b/drivers/misc/m4sensorhub_passive.c index c62ae7fac97..d94ba4381ac 100644 --- a/drivers/misc/m4sensorhub_passive.c +++ b/drivers/misc/m4sensorhub_passive.c @@ -57,9 +57,11 @@ static void m4pas_isr(enum m4sensorhub_irqs int_event, void *handle) struct m4pas_driver_data *dd = iio_priv(iio); int size = 0; uint32_t passive_timestamp[M4PAS_NUM_PASSIVE_BUFFERS]; - uint32_t steps[M4PAS_NUM_PASSIVE_BUFFERS]; - uint32_t calories[M4PAS_NUM_PASSIVE_BUFFERS]; - uint32_t floors_climbed[M4PAS_NUM_PASSIVE_BUFFERS]; + uint16_t steps[M4PAS_NUM_PASSIVE_BUFFERS]; + uint16_t calories[M4PAS_NUM_PASSIVE_BUFFERS]; + uint16_t heartrate[M4PAS_NUM_PASSIVE_BUFFERS]; + uint8_t hrconfidence[M4PAS_NUM_PASSIVE_BUFFERS]; + uint8_t healthy_minutes[M4PAS_NUM_PASSIVE_BUFFERS]; int i = 0; mutex_lock(&(dd->mutex)); @@ -104,16 +106,44 @@ static void m4pas_isr(enum m4sensorhub_irqs int_event, void *handle) goto m4pas_isr_fail; } - size = m4sensorhub_reg_getsize(dd->m4, M4SH_REG_PASSIVE_FLOORSCLIMBED); - err = m4sensorhub_reg_read(dd->m4, M4SH_REG_PASSIVE_FLOORSCLIMBED, - (char *)&(floors_climbed)); + size = m4sensorhub_reg_getsize(dd->m4, M4SH_REG_PASSIVE_HEARTRATE); + err = m4sensorhub_reg_read(dd->m4, M4SH_REG_PASSIVE_HEARTRATE, + (char *)&(heartrate)); if (err < 0) { - m4pas_err("%s: Failed to read floors_climbed data.\n", + m4pas_err("%s: Failed to read heartrate data.\n", __func__); goto m4pas_isr_fail; } else if (err != size) { m4pas_err("%s: Read %d bytes instead of %d for %s.\n", - __func__, err, size, "floors_climbed"); + __func__, err, size, "heartrate"); + err = -EBADE; + goto m4pas_isr_fail; + } + + size = m4sensorhub_reg_getsize(dd->m4, M4SH_REG_PASSIVE_HRCONFIDENCE); + err = m4sensorhub_reg_read(dd->m4, M4SH_REG_PASSIVE_HRCONFIDENCE, + (char *)&(hrconfidence)); + if (err < 0) { + m4pas_err("%s: Failed to read hrconfidence data.\n", + __func__); + goto m4pas_isr_fail; + } else if (err != size) { + m4pas_err("%s: Read %d bytes instead of %d for %s.\n", + __func__, err, size, "hrconfidence"); + err = -EBADE; + goto m4pas_isr_fail; + } + + size = m4sensorhub_reg_getsize(dd->m4, M4SH_REG_PASSIVE_HEALTHYMINUTES); + err = m4sensorhub_reg_read(dd->m4, M4SH_REG_PASSIVE_HEALTHYMINUTES, + (char *)&(healthy_minutes)); + if (err < 0) { + m4pas_err("%s: Failed to read healthy_minutes data.\n", + __func__); + goto m4pas_isr_fail; + } else if (err != size) { + m4pas_err("%s: Read %d bytes instead of %d for %s.\n", + __func__, err, size, "healthy_minutes"); err = -EBADE; goto m4pas_isr_fail; } @@ -122,11 +152,19 @@ static void m4pas_isr(enum m4sensorhub_irqs int_event, void *handle) dd->iiodat[i].passive_timestamp = passive_timestamp[i]; dd->iiodat[i].steps = steps[i]; dd->iiodat[i].calories = calories[i]; - dd->iiodat[i].floors_climbed = floors_climbed[i]; + dd->iiodat[i].heartrate = heartrate[i]; + dd->iiodat[i].hrconfidence = hrconfidence[i]; + dd->iiodat[i].healthy_minutes = healthy_minutes[i]; dd->iiodat[i].timestamp = iio_get_time_ns(); - iio_push_to_buffers(iio, (unsigned char *)&(dd->iiodat[i])); } + /* + * For some reason, IIO knows we are sending an array, + * so all M4PAS_NUM_PASSIVE_BUFFERS indicies will be sent + * in this one call (it does not need to go in the for-loop). + */ + iio_push_to_buffers(iio, (unsigned char *)&(dd->iiodat[0])); + m4pas_isr_fail: if (err < 0) m4pas_err("%s: Failed with error code %d.\n", __func__, err); @@ -246,12 +284,14 @@ static ssize_t m4pas_iiodata_show(struct device *dev, buf[0] = '\0'; /* Start with NULL terminator for concatenation */; for (i = 0; i < M4PAS_NUM_PASSIVE_BUFFERS; i++) { size = snprintf(buf, PAGE_SIZE, - "%s%s%d\n%s%u\n%s%u\n%s%u\n%s%u\n", + "%s%s%d\n%s%u\n%s%hu\n%s%hu\n%s%hu\n%s%hhu\n%s%hhu\n", buf, "Buffer ", i, "passive_timestamp: ", dd->iiodat[i].passive_timestamp, "steps: ", dd->iiodat[i].steps, "calories: ", dd->iiodat[i].calories, - "floors_climbed: ", dd->iiodat[i].floors_climbed); + "heartrate: ", dd->iiodat[i].heartrate, + "hrconfidence: ", dd->iiodat[i].hrconfidence, + "healthy_minutes: ", dd->iiodat[i].healthy_minutes); } mutex_unlock(&(dd->mutex)); return size; diff --git a/drivers/misc/m4sensorhub_pedometer.c b/drivers/misc/m4sensorhub_pedometer.c index 68b2299e1ac..87fd15be3f3 100644 --- a/drivers/misc/m4sensorhub_pedometer.c +++ b/drivers/misc/m4sensorhub_pedometer.c @@ -74,8 +74,8 @@ static int m4ped_read_report_data(struct iio_dev *iio, } size = m4sensorhub_reg_getsize(dd->m4, - M4SH_REG_PEDOMETER_TOTATDISTANCE); - err = m4sensorhub_reg_read(dd->m4, M4SH_REG_PEDOMETER_TOTATDISTANCE, + M4SH_REG_PEDOMETER_TOTALDISTANCE); + err = m4sensorhub_reg_read(dd->m4, M4SH_REG_PEDOMETER_TOTALDISTANCE, (char *)&(dd->iiodat.total_distance)); if (err < 0) { m4ped_err("%s: Failed to read total_distance data.\n", @@ -115,17 +115,16 @@ static int m4ped_read_report_data(struct iio_dev *iio, goto m4ped_read_fail; } - size = m4sensorhub_reg_getsize(dd->m4, - M4SH_REG_PEDOMETER_FLOORSCLIMBED); - err = m4sensorhub_reg_read(dd->m4, M4SH_REG_PEDOMETER_FLOORSCLIMBED, - (char *)&(dd->iiodat.floors_climbed)); + size = m4sensorhub_reg_getsize(dd->m4, M4SH_REG_METS_HEALTHYMINUTES); + err = m4sensorhub_reg_read(dd->m4, M4SH_REG_METS_HEALTHYMINUTES, + (char *)&(dd->iiodat.healthy_minutes)); if (err < 0) { - m4ped_err("%s: Failed to read floors_climbed data.\n", + m4ped_err("%s: Failed to read healthy_minutes data.\n", __func__); goto m4ped_read_fail; } else if (err != size) { m4ped_err("%s: Read %d bytes instead of %d for %s.\n", - __func__, err, size, "floors_climbed"); + __func__, err, size, "healthy_minutes"); err = -EBADE; goto m4ped_read_fail; } @@ -301,12 +300,12 @@ static ssize_t m4ped_iiodata_show(struct device *dev, mutex_lock(&(dd->mutex)); size = snprintf(buf, PAGE_SIZE, - "%s%hhu\n%s%u\n%s%hu\n%s%u\n%s%hu\n%s%u\n", + "%s%hhu\n%s%u\n%s%u\n%s%hu\n%s%u\n%s%u\n", "ped_activity: ", dd->iiodat.ped_activity, "total_distance: ", dd->iiodat.total_distance, "total_steps: ", dd->iiodat.total_steps, "current_speed: ", dd->iiodat.current_speed, - "floors_climbed: ", dd->iiodat.floors_climbed, + "healthy_minutes: ", dd->iiodat.healthy_minutes, "calories: ", dd->iiodat.calories); mutex_unlock(&(dd->mutex)); return size; diff --git a/include/linux/iio/m4sensorhub/m4sensorhub_passive.h b/include/linux/iio/m4sensorhub/m4sensorhub_passive.h index 4663fc767d1..5b34b3a3222 100644 --- a/include/linux/iio/m4sensorhub/m4sensorhub_passive.h +++ b/include/linux/iio/m4sensorhub/m4sensorhub_passive.h @@ -25,9 +25,11 @@ struct m4sensorhub_passive_iio_data { uint32_t passive_timestamp; - uint32_t steps; - uint32_t calories; - uint32_t floors_climbed; + uint16_t steps; + uint16_t calories; + uint16_t heartrate; + uint8_t hrconfidence; + uint8_t healthy_minutes; long long timestamp; } __packed; diff --git a/include/linux/iio/m4sensorhub/m4sensorhub_pedometer.h b/include/linux/iio/m4sensorhub/m4sensorhub_pedometer.h index f462a393684..2e4d6cd9bec 100644 --- a/include/linux/iio/m4sensorhub/m4sensorhub_pedometer.h +++ b/include/linux/iio/m4sensorhub/m4sensorhub_pedometer.h @@ -26,9 +26,9 @@ struct m4sensorhub_pedometer_iio_data { uint8_t ped_activity; uint32_t total_distance; - uint16_t total_steps; - uint32_t current_speed; - uint16_t floors_climbed; + uint32_t total_steps; + uint16_t current_speed; + uint32_t healthy_minutes; uint32_t calories; long long timestamp; } __packed; diff --git a/include/linux/m4sensorhub/m4sensorhub_irqs.h b/include/linux/m4sensorhub/m4sensorhub_irqs.h index 562365e679e..597adf9dba6 100644 --- a/include/linux/m4sensorhub/m4sensorhub_irqs.h +++ b/include/linux/m4sensorhub/m4sensorhub_irqs.h @@ -81,6 +81,9 @@ enum m4sensorhub_irqs { /* INT2 0x02 : AP-RTC alarm expired */ M4SH_IRQ_AP_ALARM_EXPIRED, + /* INT2 0x04 : HR data ready */ + M4SH_IRQ_HEARTRATE_DATA_READY, + /* Number of allocated interrupts */ M4SH_IRQ__NUM }; diff --git a/include/linux/m4sensorhub/m4sensorhub_reg_enum.h b/include/linux/m4sensorhub/m4sensorhub_reg_enum.h index f50c11742bd..1e2fc6ac15b 100644 --- a/include/linux/m4sensorhub/m4sensorhub_reg_enum.h +++ b/include/linux/m4sensorhub/m4sensorhub_reg_enum.h @@ -64,11 +64,11 @@ enum m4sensorhub_reg { M4SH_REG_PEDOMETER_ACTIVITY, M4SH_REG_PEDOMETER_EQUIPMENTTYPE, M4SH_REG_PEDOMETER_TOTALSTEPS, - M4SH_REG_PEDOMETER_FLOORSCLIMBED, - M4SH_REG_PEDOMETER_TOTATDISTANCE, - M4SH_REG_PEDOMETER_CURRENTSPEED, M4SH_REG_PEDOMETER_REPORTEDDISTANCE, M4SH_REG_PEDOMETER_USERDISTANCE, + M4SH_REG_PEDOMETER_TOTALDISTANCE, + M4SH_REG_PEDOMETER_FLOORSCLIMBED, + M4SH_REG_PEDOMETER_CURRENTSPEED, M4SH_REG_TCMD_OPCODE, M4SH_REG_LOG_LOGENABLE, M4SH_REG_LOG_ISLOGIMMEDIATE, @@ -105,6 +105,7 @@ enum m4sensorhub_reg { M4SH_REG_METS_MSSAMPLETIME, M4SH_REG_METS_METS, M4SH_REG_METS_CALORIES, + M4SH_REG_METS_HEALTHYMINUTES, M4SH_REG_USERSETTINGS_VERSION, M4SH_REG_USERSETTINGS_USERAGE, M4SH_REG_USERSETTINGS_USERGENDER, @@ -158,11 +159,15 @@ enum m4sensorhub_reg { M4SH_REG_PASSIVE_TIMESTAMP, M4SH_REG_PASSIVE_STEPS, M4SH_REG_PASSIVE_CALORIES, - M4SH_REG_PASSIVE_FLOORSCLIMBED, + M4SH_REG_PASSIVE_HEARTRATE, + M4SH_REG_PASSIVE_HRCONFIDENCE, + M4SH_REG_PASSIVE_HEALTHYMINUTES, M4SH_REG_EMG_SIGNALCOUNT, M4SH_REG_EMG_DUMMY, M4SH_REG_EMG_SAMPLERATE, M4SH_REG_EMG_SIGNALS, + M4SH_REG_HEARTRATE_ENABLE, + M4SH_REG_HEARTRATE_APSAMPLERATE, M4SH_REG_HEARTRATE_HEARTRATE, M4SH_REG_HEARTRATE_CONFIDENCE, M4SH_REG_HRSENSOR_VERSION, |