static void k3g_work_func(struct work_struct *work) { int res; struct k3g_data *k3g_data = container_of(work, struct k3g_data, work); if(DEBUG_FUNC_TRACE & debug_mask) printk(KERN_INFO "%s: line %d\n", __func__, __LINE__); if(k3g_data->enable == 0) { return; } do { res = k3g_read_fifo_status(k3g_data); if (res < 0) return; if (res < k3g_data->entries) { pr_warn("%s: fifo entries are less than we want\n", __func__); goto timer_set; } res = k3g_report_gyro_values(k3g_data); if (res < 0) return; timer_set: set_polling_delay(k3g_data, res); } while (!ktime_to_ns(k3g_data->polling_delay)); hrtimer_start(&k3g_data->timer, k3g_data->polling_delay, HRTIMER_MODE_REL); }
static void k3g_work_func(struct work_struct *work) { int res; struct k3g_data *k3g_data = container_of(work, struct k3g_data, work); gyro_debug("GYRO sensor enter function %s\n",__FUNCTION__); do { res = k3g_read_fifo_status(k3g_data); if (res < 0) return; if (res < k3g_data->entries) { pr_warn("%s: fifo entries are less than we want\n", __func__); goto timer_set; } res = k3g_report_gyro_values(k3g_data); if (res < 0) return; timer_set: set_polling_delay(k3g_data, res); } while (!ktime_to_ns(k3g_data->polling_delay)); if(likely(k3g_data->work_enable)) hrtimer_start(&k3g_data->timer, k3g_data->polling_delay, HRTIMER_MODE_REL); }
static irqreturn_t k3g_interrupt_thread(int irq, void *k3g_data_p) { int res; struct k3g_data *k3g_data = k3g_data_p; res = k3g_report_gyro_values(k3g_data); if (res < 0) pr_err("%s: failed to report gyro values\n", __func__); return IRQ_HANDLED; }
static irqreturn_t k3g_interrupt_thread(int irq, void *k3g_data_p) { int res; struct k3g_data *k3g_data = k3g_data_p; if(DEBUG_FUNC_TRACE & debug_mask) printk(KERN_INFO "%s: line %d\n", __func__, __LINE__); res = k3g_report_gyro_values(k3g_data); if (res < 0) { pr_err("%s: failed to report gyro values\n", __func__); } return IRQ_HANDLED; }