After commit
bca4c7102b5 ("iio: hrtimer: Move sampling_frequency to trigger dir")
the IIO trigger interface moved the sampling_frequency attribute from:
/config/triggers/hrtimer-instanceX/sampling_frequency/
to
/sys/bus/iio/devices/triggerX/sampling_frequency
Change-Id: I0979568102f1f6e3190b84caa507aac67b04fabc
Signed-off-by: Adriana Reus <adriana.reus@intel.com>
#define DEV_FILE_PATH "/dev/iio:device%d"
#define BASE_PATH "/sys/bus/iio/devices/iio:device%d/"
#define TRIGGER_FILE_PATH "/sys/bus/iio/devices/trigger%d/name"
+#define IIO_DEVICES "/sys/bus/iio/devices/"
#define CHANNEL_PATH BASE_PATH "scan_elements/"
#define ENABLE_PATH BASE_PATH "buffer/enable"
#define SENSOR_CALIB_BIAS_PATH BASE_PATH "in_%s_calibbias"
#define MOUNTING_MATRIX_PATH BASE_PATH "mounting_matrix"
-#define CONFIGFS_TRIGGER_PATH "/config/iio/triggers/"
+#define CONFIGFS_TRIGGER_PATH "/sys/kernel/config/iio/triggers/"
#define PROP_BASE "ro.iio.%s.%s" /* Note: PROPERTY_KEY_MAX is small */
char init_trigger_name[MAX_NAME_SIZE]; /* ex: accel-name-dev1 */
char motion_trigger_name[MAX_NAME_SIZE];/* ex: accel-any-motion-dev1 */
char hrtimer_trigger_name[MAX_NAME_SIZE]; /*ex: accel-hr-dev1 */
+ int trigger_nr; /* trigger number associated with this device */
float max_range;
float resolution;
float power;
float cur_sampling_rate; /* Currently used sampling rate */
float arb_sampling_rate; /* Granted sampling rate after arbitration */
char hrtimer_sampling_path[PATH_MAX];
+ char trigger_path[PATH_MAX];
ALOGV("Sampling rate %g requested on sensor %d (%s)\n", requested_rate, s, sensor[s].friendly_name);
ALOGI("Sensor %d (%s) sampling rate set to %g\n", s, sensor[s].friendly_name, arb_sampling_rate);
if (sensor[s].hrtimer_trigger_name[0] != '\0') {
- snprintf (hrtimer_sampling_path, PATH_MAX, "%s%s/%s", CONFIGFS_TRIGGER_PATH, sensor[s].hrtimer_trigger_name, "sampling_frequency");
+ snprintf(trigger_path, PATH_MAX, "%s%s%d/", IIO_DEVICES, "trigger", sensor[s].trigger_nr);
+ snprintf (hrtimer_sampling_path, PATH_MAX, "%s%s", trigger_path, "sampling_frequency");
sysfs_write_float(hrtimer_sampling_path, arb_sampling_rate);
}
sensor[s].catalog_index = catalog_index;
sensor[s].type = sensor_type;
sensor[s].mode = mode;
+ sensor[s].trigger_nr = -1; /* -1 means no trigger - we'll populate these at a later time */
num_channels = sensor_catalog[catalog_index].num_channels;
}
-static void update_sensor_matching_trigger_name (char name[MAX_NAME_SIZE], int* updated)
+static void update_sensor_matching_trigger_name (char name[MAX_NAME_SIZE], int* updated, int trigger)
{
/*
* Check if we have a sensor matching the specified trigger name, which should then begin with the sensor name, and end with a number
/* Switch to new trigger if appropriate */
propose_new_trigger(s, name, sensor_name_len);
updated[s] = 1;
+ sensor[s].trigger_nr = trigger;
}
}
-static int create_hrtimer_trigger(int s)
+static int create_hrtimer_trigger(int s, int trigger)
{
struct stat dir_status;
char buf[MAX_NAME_SIZE];
return -1;
strncpy (sensor[s].hrtimer_trigger_name, hrtimer_name, MAX_NAME_SIZE);
+ sensor[s].trigger_nr = trigger;
return 0;
}
break;
/* Record initial and any-motion triggers names */
- update_sensor_matching_trigger_name(buf, updated);
+ update_sensor_matching_trigger_name(buf, updated, trigger);
}
/* If we don't have any other trigger exposed and quirk hrtimer is set setup the hrtimer name here - and create it also */
for (s=0; s<sensor_count; s++) {
if ((sensor[s].quirks & QUIRK_HRTIMER) && !updated[s])
- create_hrtimer_trigger(s);
+ create_hrtimer_trigger(s, trigger);
}
/*