From 7898225d025b34047fa516679f3521e686416be1 Mon Sep 17 00:00:00 2001 From: Adriana Reus Date: Thu, 14 May 2015 13:30:28 +0300 Subject: [PATCH] hrtimer: Use the new IIO hrtimer interface 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 --- common.h | 4 +++- control.c | 4 +++- enumeration.c | 11 +++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/common.h b/common.h index a6360ac..aa2951a 100644 --- a/common.h +++ b/common.h @@ -14,6 +14,7 @@ #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" @@ -30,7 +31,7 @@ #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 */ @@ -156,6 +157,7 @@ typedef struct 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; diff --git a/control.c b/control.c index cceb3c0..ebf0e23 100644 --- a/control.c +++ b/control.c @@ -747,6 +747,7 @@ static int sensor_set_rate (int s, float requested_rate) 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); @@ -879,7 +880,8 @@ static int sensor_set_rate (int s, float requested_rate) 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); } diff --git a/enumeration.c b/enumeration.c index e8219cc..e196a46 100644 --- a/enumeration.c +++ b/enumeration.c @@ -509,6 +509,7 @@ static int add_sensor (int dev_num, int catalog_index, int mode) 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; @@ -813,7 +814,7 @@ static void propose_new_trigger (int s, char trigger_name[MAX_NAME_SIZE], } -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 @@ -858,10 +859,11 @@ static void update_sensor_matching_trigger_name (char name[MAX_NAME_SIZE], int* /* 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]; @@ -882,6 +884,7 @@ static int create_hrtimer_trigger(int s) return -1; strncpy (sensor[s].hrtimer_trigger_name, hrtimer_name, MAX_NAME_SIZE); + sensor[s].trigger_nr = trigger; return 0; } @@ -910,14 +913,14 @@ static void setup_trigger_names (void) 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