Lines Matching refs:data
94 /* Bits in the measure data register */
169 * struct yas5xx_chip_info - device-specific data and function pointers
179 * @get_calibration_data: function pointer to get calibration data
188 * given in the data sheets.
209 * @chip_info: device-specific data and function pointers
244 static u16 yas530_extract_axis(u8 *data)
253 val = get_unaligned_be16(&data[0]);
259 static u16 yas532_extract_axis(u8 *data)
268 val = get_unaligned_be16(&data[0]);
288 u8 data[8];
311 data, sizeof(data));
325 val = get_unaligned_be16(&data[0]);
328 *x = yas530_extract_axis(&data[2]);
329 *y1 = yas530_extract_axis(&data[4]);
330 *y2 = yas530_extract_axis(&data[6]);
339 val = get_unaligned_be16(&data[0]);
342 *x = yas532_extract_axis(&data[2]);
343 *y1 = yas532_extract_axis(&data[4]);
344 *y2 = yas532_extract_axis(&data[6]);
347 dev_err(yas5xx->dev, "unknown data format\n");
372 u8 data[8];
385 /* Use same timeout like YAS530/532 but the bit is in data row 2 */
395 data, sizeof(data));
401 *t = get_unaligned_be16(&data[0]);
402 xy1y2[0] = FIELD_GET(GENMASK(13, 0), get_unaligned_be16(&data[2]));
403 xy1y2[1] = get_unaligned_be16(&data[4]);
404 xy1y2[2] = get_unaligned_be16(&data[6]);
509 /* We first get raw data that needs to be translated to [x,y,z] */
589 /* We first get raw data that needs to be translated to [x,y,z] */
783 * @data: the bitfield to use
788 static void yas530_extract_calibration(u8 *data, struct yas5xx_calibration *c)
790 u64 val = get_unaligned_be64(data);
793 * Bitfield layout for the axis calibration data, for factor
821 u8 data[16];
826 ret = regmap_bulk_read(yas5xx->map, YAS530_CAL, data, sizeof(data));
831 ret = regmap_bulk_read(yas5xx->map, YAS530_CAL, data, sizeof(data));
834 dev_dbg(yas5xx->dev, "calibration data: %16ph\n", data);
836 /* Contribute calibration data to the input pool for kernel entropy */
837 add_device_randomness(data, sizeof(data));
840 yas5xx->version = data[15] & GENMASK(1, 0);
843 c->Cx = data[0] * 6 - 768;
844 c->Cy1 = data[1] * 6 - 768;
845 c->Cy2 = data[2] * 6 - 768;
846 yas530_extract_calibration(&data[3], c);
859 val = get_unaligned_be32(&data[11]);
873 u8 data[14];
878 ret = regmap_bulk_read(yas5xx->map, YAS530_CAL, data, sizeof(data));
882 ret = regmap_bulk_read(yas5xx->map, YAS530_CAL, data, sizeof(data));
885 dev_dbg(yas5xx->dev, "calibration data: %14ph\n", data);
888 if (!memchr_inv(data, 0x00, 13) && !(data[13] & BIT(7)))
891 /* Contribute calibration data to the input pool for kernel entropy */
892 add_device_randomness(data, sizeof(data));
895 yas5xx->version = data[13] & BIT(0);
898 c->Cx = data[0] * 10 - 1280;
899 c->Cy1 = data[1] * 10 - 1280;
900 c->Cy2 = data[2] * 10 - 1280;
901 yas530_extract_calibration(&data[3], c);
914 val = get_unaligned_be32(&data[10]);
928 u8 data[17];
938 ret = regmap_bulk_read(yas5xx->map, YAS537_CAL, data, sizeof(data));
941 dev_dbg(yas5xx->dev, "calibration data: %17ph\n", data);
944 if (!memchr_inv(data, 0x00, 16) && !FIELD_GET(GENMASK(5, 0), data[16]))
947 /* Contribute calibration data to the input pool for kernel entropy */
948 add_device_randomness(data, sizeof(data));
951 yas5xx->version = FIELD_GET(GENMASK(7, 6), data[16]);
957 * The first version simply writes data back into registers:
959 * data[0] YAS537_MTC 0x93
960 * data[1] 0x94
961 * data[2] 0x95
962 * data[3] 0x96
963 * data[4] 0x97
964 * data[5] 0x98
965 * data[6] 0x99
966 * data[7] 0x9a
967 * data[8] 0x9b
968 * data[9] 0x9c
969 * data[10] 0x9d
970 * data[11] YAS537_OC 0x9e
972 * data[12] YAS537_OFFSET_X 0x84
973 * data[13] YAS537_OFFSET_Y1 0x85
974 * data[14] YAS537_OFFSET_Y2 0x86
976 * data[15] YAS537_HCK 0x88
977 * data[16] YAS537_LCK 0x89
981 data[i]);
987 data[i + 12]);
990 yas5xx->hard_offsets[i] = data[i + 12];
994 data[i + 15]);
1001 * The second version writes some data into registers but also
1006 * data[0] YAS537_MTC 0x93
1007 * data[1] YAS537_MTC+1 0x94
1008 * data[2] YAS537_MTC+2 0x95
1009 * data[3] YAS537_MTC+3 (partially) 0x96
1011 * data[12] YAS537_OFFSET_X 0x84
1012 * data[13] YAS537_OFFSET_Y1 0x85
1013 * data[14] YAS537_OFFSET_Y2 0x86
1015 * data[15] YAS537_HCK (partially) 0x88
1017 * data[16] YAS537_OC (partially) 0x9e
1021 data[i]);
1027 data[i + 12]);
1030 yas5xx->hard_offsets[i] = data[i + 12];
1033 * Visualization of partially taken data:
1035 * data[3] n 7 6 5 4 3 2 1 0
1038 * data[15] n 7 6 5 4 3 2 1 0
1041 * data[15] n 7 6 5 4 3 2 1 0
1044 * data[16] n 7 6 5 4 3 2 1 0
1049 FIELD_GET(YAS537_MTC3_MASK_GET, data[3])) |
1055 FIELD_GET(YAS537_HCK_MASK_GET, data[15])));
1060 FIELD_GET(YAS537_LCK_MASK_GET, data[15])));
1064 FIELD_GET(YAS537_OC_MASK_GET, data[16]));
1068 * For data extraction, build some blocks. Four 32-bit blocks
1072 * data[0] 0 [ Cx Cx Cx Cx Cx Cx Cx Cx ] bits 31 .. 24
1073 * data[1] 1 [ Cx C1 C1 C1 C1 C1 C1 C1 ] bits 23 .. 16
1074 * data[2] 2 [ C1 C1 C2 C2 C2 C2 C2 C2 ] bits 15 .. 8
1075 * data[3] 3 [ C2 C2 C2 ] bits 7 .. 0
1078 * data[3] 0 [ a2 a2 a2 a2 a2 ] bits 31 .. 24
1079 * data[4] 1 [ a2 a2 a3 a3 a3 a3 a3 a3 ] bits 23 .. 16
1080 * data[5] 2 [ a3 a4 a4 a4 a4 a4 a4 a4 ] bits 15 .. 8
1081 * data[6] 3 [ a4 ] bits 7 .. 0
1084 * data[6] 0 [ a5 a5 a5 a5 a5 a5 a5 ] bits 31 .. 24
1085 * data[7] 1 [ a5 a5 a6 a6 a6 a6 a6 a6 ] bits 23 .. 16
1086 * data[8] 2 [ a6 a7 a7 a7 a7 a7 a7 a7 ] bits 15 .. 8
1087 * data[9] 3 [ a7 ] bits 7 .. 0
1090 * data[9] 0 [ a8 a8 a8 a8 a8 a8 a8 ] bits 31 .. 24
1091 * data[10] 1 [ a9 a9 a9 a9 a9 a9 a9 a9 ] bits 23 .. 16
1092 * data[11] 2 [ a9 k k k k k k k ] bits 15 .. 8
1093 * data[12] 3 [ ] bits 7 .. 0
1095 val1 = get_unaligned_be32(&data[0]);
1096 val2 = get_unaligned_be32(&data[3]);
1097 val3 = get_unaligned_be32(&data[6]);
1098 val4 = get_unaligned_be32(&data[9]);