Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

iio: accel: bma400: Use macros for generic event configuration values

Add macros and enums for configuration values used in generic event
handling for activity and inactivity detection. Replace hard-coded
values in activity_event_en() with the new definitions to make the
configuration explicit.

No functional changes are intended.

Signed-off-by: Akshay Jindal <akshayaj.lkd@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Akshay Jindal and committed by
Jonathan Cameron
a2ef0af1 36bf0de9

+41 -3
+30
drivers/iio/accel/bma400.h
··· 113 113 #define BMA400_GEN1INT_CONFIG0_REG 0x3f 114 114 #define BMA400_GEN2INT_CONFIG0_REG 0x4A 115 115 #define BMA400_GENINT_CONFIG0_HYST_MASK GENMASK(1, 0) 116 + #define BMA400_GENINT_CONFIG0_REF_UPD_MODE_MASK GENMASK(3, 2) 117 + #define BMA400_GENINT_CONFIG0_DATA_SRC_MASK BIT(4) 118 + #define BMA400_GENINT_CONFIG0_X_EN_MASK BIT(5) 119 + #define BMA400_GENINT_CONFIG0_Y_EN_MASK BIT(6) 120 + #define BMA400_GENINT_CONFIG0_Z_EN_MASK BIT(7) 121 + 122 + enum bma400_accel_data_src { 123 + ACCEL_FILT1 = 0x0, 124 + ACCEL_FILT2 = 0x1, 125 + }; 126 + 127 + enum bma400_ref_updt_mode { 128 + BMA400_REF_MANUAL_UPDT_MODE = 0x0, 129 + BMA400_REF_ONETIME_UPDT_MODE = 0x1, 130 + BMA400_REF_EVERYTIME_UPDT_MODE = 0x2, 131 + BMA400_REF_EVERYTIME_LP_UPDT_MODE = 0x3, 132 + }; 116 133 117 134 #define BMA400_GEN_CONFIG1_OFF 0x01 135 + #define BMA400_GENINT_CONFIG1_AXES_COMB_MASK BIT(0) 136 + #define BMA400_GENINT_CONFIG1_DETCT_CRIT_MASK BIT(1) 137 + 138 + enum bma400_genintr_acceleval_axescomb { 139 + BMA400_EVAL_X_OR_Y_OR_Z = 0x0, 140 + BMA400_EVAL_X_AND_Y_AND_Z = 0x1, 141 + }; 142 + 143 + enum bma400_detect_criterion { 144 + BMA400_DETECT_INACTIVITY = 0x0, 145 + BMA400_DETECT_ACTIVITY = 0x1, 146 + }; 147 + 118 148 #define BMA400_GEN_CONFIG2_OFF 0x02 119 149 #define BMA400_GEN_CONFIG3_OFF 0x03 120 150 #define BMA400_GEN_CONFIG31_OFF 0x04
+11 -3
drivers/iio/accel/bma400_core.c
··· 1166 1166 case IIO_EV_DIR_RISING: 1167 1167 reg = BMA400_GEN1INT_CONFIG0_REG; 1168 1168 msk = BMA400_INT_CONFIG0_GEN1_MASK; 1169 - value = 2; 1169 + value = FIELD_PREP(BMA400_GENINT_CONFIG1_AXES_COMB_MASK, BMA400_EVAL_X_OR_Y_OR_Z) | 1170 + FIELD_PREP(BMA400_GENINT_CONFIG1_DETCT_CRIT_MASK, BMA400_DETECT_ACTIVITY); 1170 1171 set_mask_bits(&field_value, BMA400_INT_CONFIG0_GEN1_MASK, 1171 1172 FIELD_PREP(BMA400_INT_CONFIG0_GEN1_MASK, state)); 1172 1173 break; 1173 1174 case IIO_EV_DIR_FALLING: 1174 1175 reg = BMA400_GEN2INT_CONFIG0_REG; 1175 1176 msk = BMA400_INT_CONFIG0_GEN2_MASK; 1176 - value = 0; 1177 + value = FIELD_PREP(BMA400_GENINT_CONFIG1_AXES_COMB_MASK, BMA400_EVAL_X_OR_Y_OR_Z) | 1178 + FIELD_PREP(BMA400_GENINT_CONFIG1_DETCT_CRIT_MASK, BMA400_DETECT_INACTIVITY); 1177 1179 set_mask_bits(&field_value, BMA400_INT_CONFIG0_GEN2_MASK, 1178 1180 FIELD_PREP(BMA400_INT_CONFIG0_GEN2_MASK, state)); 1179 1181 break; ··· 1184 1182 } 1185 1183 1186 1184 /* Enabling all axis for interrupt evaluation */ 1187 - ret = regmap_write(data->regmap, reg, 0xF8); 1185 + ret = regmap_write(data->regmap, reg, 1186 + BMA400_GENINT_CONFIG0_X_EN_MASK | 1187 + BMA400_GENINT_CONFIG0_Y_EN_MASK | 1188 + BMA400_GENINT_CONFIG0_Z_EN_MASK| 1189 + FIELD_PREP(BMA400_GENINT_CONFIG0_DATA_SRC_MASK, ACCEL_FILT2)| 1190 + FIELD_PREP(BMA400_GENINT_CONFIG0_REF_UPD_MODE_MASK, 1191 + BMA400_REF_EVERYTIME_UPDT_MODE)); 1188 1192 if (ret) 1189 1193 return ret; 1190 1194