/* Applies to max1363 */ static const enum max1363_modes max1363_mode_list[] = { _s0, _s1, _s2, _s3, s0to1, s0to2, s0to3, d0m1, d2m3, d1m0, d3m2, d0m1to2m3, d1m0to3m2, }; #define MAX1363_EV_M \ (IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_RISING) \ | IIO_EV_BIT(IIO_EV_TYPE_THRESH, IIO_EV_DIR_FALLING)) #define MAX1363_INFO_MASK (1 << IIO_CHAN_INFO_SCALE_SHARED) static struct iio_chan_spec max1363_channels[] = { IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0, MAX1363_INFO_MASK, _s0, 0, IIO_ST('u', 12, 16, 0), MAX1363_EV_M), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0, MAX1363_INFO_MASK, _s1, 1, IIO_ST('u', 12, 16, 0), MAX1363_EV_M), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0, MAX1363_INFO_MASK, _s2, 2, IIO_ST('u', 12, 16, 0), MAX1363_EV_M), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0, MAX1363_INFO_MASK, _s3, 3, IIO_ST('u', 12, 16, 0), MAX1363_EV_M), IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 0, 1, MAX1363_INFO_MASK, d0m1, 4, IIO_ST('s', 12, 16, 0), MAX1363_EV_M), IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 2, 3, MAX1363_INFO_MASK, d2m3, 5, IIO_ST('s', 12, 16, 0), MAX1363_EV_M), IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 1, 0, MAX1363_INFO_MASK, d1m0, 6, IIO_ST('s', 12, 16, 0), MAX1363_EV_M), IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 3, 2, MAX1363_INFO_MASK, d3m2, 7, IIO_ST('s', 12, 16, 0), MAX1363_EV_M), IIO_CHAN_SOFT_TIMESTAMP(8)
.sign = 's', \ .realbits = 16, \ .storagebits = 16, \ .endianness = IIO_BE, \ }, \ } static const struct iio_chan_spec mag3110_channels[] = { MAG3110_CHANNEL(X, 0), MAG3110_CHANNEL(Y, 1), MAG3110_CHANNEL(Z, 2), { .type = IIO_TEMP, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), .scan_index = 3, .scan_type = IIO_ST('s', 8, 8, 0), }, IIO_CHAN_SOFT_TIMESTAMP(4), }; static struct attribute *mag3110_attributes[] = { &iio_dev_attr_sampling_frequency_available.dev_attr.attr, NULL }; static const struct attribute_group mag3110_group = { .attrs = mag3110_attributes, }; static const struct iio_info mag3110_info = { .attrs = &mag3110_group,
#include <linux/spi/spi.h> #include <linux/regulator/consumer.h> #include <linux/err.h> #include <linux/delay.h> #include "../iio.h" #include "../sysfs.h" #include "../ring_generic.h" #include "adc.h" #include "ad7298.h" static struct iio_chan_spec ad7298_channels[] = { IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0, (1 << IIO_CHAN_INFO_SCALE_SEPARATE), 9, AD7298_CH_TEMP, IIO_ST('s', 32, 32, 0), 0), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 0, 0, (1 << IIO_CHAN_INFO_SCALE_SHARED), 0, 0, IIO_ST('u', 12, 16, 0), 0), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 1, 0, (1 << IIO_CHAN_INFO_SCALE_SHARED), 1, 1, IIO_ST('u', 12, 16, 0), 0), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 2, 0, (1 << IIO_CHAN_INFO_SCALE_SHARED), 2, 2, IIO_ST('u', 12, 16, 0), 0), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 3, 0, (1 << IIO_CHAN_INFO_SCALE_SHARED), 3, 3, IIO_ST('u', 12, 16, 0), 0), IIO_CHAN(IIO_IN, 0, 1, 0, NULL, 4, 0, (1 << IIO_CHAN_INFO_SCALE_SHARED), 4, 4, IIO_ST('u', 12, 16, 0), 0),
IIO_PROXIMITY, 0, IIO_MOD_X, 16, REGS_PS1_DATA0 ), OPTICAL_CHANNELS( IIO_LIGHT, 1, IIO_MOD_X, 16, REGS_ALS_VIS_DATA0 ),*/ IIO_CHAN(IIO_PROXIMITY, 1, 0, 0, NULL, 0, IIO_MOD_X, (1 << IIO_CHAN_INFO_SCALE_SEPARATE), REGS_PS1_DATA0,L1PH03_SCAN_PROX_X, IIO_ST('s', 16, 16, 0), 0), IIO_CHAN(IIO_LIGHT, 1, 0, 0, NULL, 0, IIO_MOD_X, (1 << IIO_CHAN_INFO_SCALE_SEPARATE), REGS_ALS_VIS_DATA0, L1PH03_SCAN_LIGHT_X , IIO_ST('s', 16, 16, 0), 0), IIO_CHAN_SOFT_TIMESTAMP(2) }; static const struct optical_sensors_list optical_sensors[] = //co 1 sensor su dung lam heartRate { { .wai = { 0x43 }, .sensors_supported = { [0] = OPTICAL_DEV_NAME, },
* Description of available channels * * This array of structures tells the IIO core about what the device * actually provides for a given channel. */ static struct iio_chan_spec step_channels[] = { { .type = IIO_ACCEL, /* Nothing better defined */ .modified = 1, .channel = 0, .address = 0, /* Channel 2 is use for modifiers */ .channel2 = IIO_MOD_X, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), .scan_index = axis_x, .scan_type = IIO_ST('u', 32, 32, 24), }, { .type = IIO_ACCEL, .modified = 1, .channel = 1, .address = 1, /* Channel 2 is use for modifiers */ .channel2 = IIO_MOD_Y, .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), .scan_index = axis_y, .scan_type = IIO_ST('u', 32, 32, 24), }, IIO_CHAN_SOFT_TIMESTAMP(3), };