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

iio: accel: kx022a: Support KX134-1211

The ROHM KX134-1211 has very similar register interface as KX132-1211
does. The main differencies are the content of the "Who am I"
identification register and different g-ranges. The KX132-1211 can
measure ranges from +/- 2g to +/-16g where the KX134-1211 supports
measuring ranges +/- 8g to +/- 64g.

Support the ROHM KX134-1211.

Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
Link: https://patch.msgid.link/6e95af6b425df6a5ff5218825ec8923f1341f7c3.1732783834.git.mazziesaccount@gmail.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Matti Vaittinen and committed by
Jonathan Cameron
0ecb42a1 046b460d

+35
+2
drivers/iio/accel/kionix-kx022a-i2c.c
··· 38 38 static const struct i2c_device_id kx022a_i2c_id[] = { 39 39 { .name = "kx022a", .driver_data = (kernel_ulong_t)&kx022a_chip_info }, 40 40 { .name = "kx132-1211", .driver_data = (kernel_ulong_t)&kx132_chip_info }, 41 + { .name = "kx134-1211", .driver_data = (kernel_ulong_t)&kx134_chip_info }, 41 42 { .name = "kx132acr-lbz", .driver_data = (kernel_ulong_t)&kx132acr_chip_info }, 42 43 { .name = "kx134acr-lbz", .driver_data = (kernel_ulong_t)&kx134acr_chip_info }, 43 44 { } ··· 48 47 static const struct of_device_id kx022a_of_match[] = { 49 48 { .compatible = "kionix,kx022a", .data = &kx022a_chip_info }, 50 49 { .compatible = "kionix,kx132-1211", .data = &kx132_chip_info }, 50 + { .compatible = "kionix,kx134-1211", .data = &kx134_chip_info }, 51 51 { .compatible = "rohm,kx132acr-lbz", .data = &kx132acr_chip_info }, 52 52 { .compatible = "rohm,kx134acr-lbz", .data = &kx134acr_chip_info }, 53 53 { }
+2
drivers/iio/accel/kionix-kx022a-spi.c
··· 38 38 static const struct spi_device_id kx022a_id[] = { 39 39 { .name = "kx022a", .driver_data = (kernel_ulong_t)&kx022a_chip_info }, 40 40 { .name = "kx132-1211", .driver_data = (kernel_ulong_t)&kx132_chip_info }, 41 + { .name = "kx134-1211", .driver_data = (kernel_ulong_t)&kx134_chip_info }, 41 42 { .name = "kx132acr-lbz", .driver_data = (kernel_ulong_t)&kx132acr_chip_info }, 42 43 { .name = "kx134acr-lbz", .driver_data = (kernel_ulong_t)&kx134acr_chip_info }, 43 44 { } ··· 48 47 static const struct of_device_id kx022a_of_match[] = { 49 48 { .compatible = "kionix,kx022a", .data = &kx022a_chip_info }, 50 49 { .compatible = "kionix,kx132-1211", .data = &kx132_chip_info }, 50 + { .compatible = "kionix,kx134-1211", .data = &kx134_chip_info }, 51 51 { .compatible = "rohm,kx132acr-lbz", .data = &kx132acr_chip_info }, 52 52 { .compatible = "rohm,kx134acr-lbz", .data = &kx134acr_chip_info }, 53 53 { }
+29
drivers/iio/accel/kionix-kx022a.c
··· 1209 1209 }; 1210 1210 EXPORT_SYMBOL_NS_GPL(kx132_chip_info, "IIO_KX022A"); 1211 1211 1212 + const struct kx022a_chip_info kx134_chip_info = { 1213 + .name = "kx134-1211", 1214 + .regmap_config = &kx132_regmap_config, 1215 + .channels = kx132_channels, 1216 + .num_channels = ARRAY_SIZE(kx132_channels), 1217 + .scale_table = kx134acr_lbz_scale_table, 1218 + .scale_table_size = ARRAY_SIZE(kx134acr_lbz_scale_table) * 1219 + ARRAY_SIZE(kx134acr_lbz_scale_table[0]), 1220 + .fifo_length = KX132_FIFO_LENGTH, 1221 + .who = KX132_REG_WHO, 1222 + .id = KX134_1211_ID, 1223 + .cntl = KX132_REG_CNTL, 1224 + .cntl2 = KX132_REG_CNTL2, 1225 + .odcntl = KX132_REG_ODCNTL, 1226 + .buf_cntl1 = KX132_REG_BUF_CNTL1, 1227 + .buf_cntl2 = KX132_REG_BUF_CNTL2, 1228 + .buf_clear = KX132_REG_BUF_CLEAR, 1229 + .buf_status1 = KX132_REG_BUF_STATUS_1, 1230 + .buf_smp_lvl_mask = KX132_MASK_BUF_SMP_LVL, 1231 + .buf_read = KX132_REG_BUF_READ, 1232 + .inc1 = KX132_REG_INC1, 1233 + .inc4 = KX132_REG_INC4, 1234 + .inc5 = KX132_REG_INC5, 1235 + .inc6 = KX132_REG_INC6, 1236 + .xout_l = KX132_REG_XOUT_L, 1237 + .get_fifo_bytes_available = kx132_get_fifo_bytes_available, 1238 + }; 1239 + EXPORT_SYMBOL_NS_GPL(kx134_chip_info, "IIO_KX022A"); 1240 + 1212 1241 /* 1213 1242 * Despite the naming, KX132ACR-LBZ is not similar to KX132-1211 but it is 1214 1243 * exact subset of KX022A. KX132ACR-LBZ is meant to be used for industrial
+2
drivers/iio/accel/kionix-kx022a.h
··· 78 78 79 79 #define KX132_REG_WHO 0x13 80 80 #define KX132_ID 0x3d 81 + #define KX134_1211_ID 0x46 81 82 82 83 #define KX132_FIFO_LENGTH 86 83 84 ··· 191 190 192 191 extern const struct kx022a_chip_info kx022a_chip_info; 193 192 extern const struct kx022a_chip_info kx132_chip_info; 193 + extern const struct kx022a_chip_info kx134_chip_info; 194 194 extern const struct kx022a_chip_info kx132acr_chip_info; 195 195 extern const struct kx022a_chip_info kx134acr_chip_info; 196 196