Lines Matching defs:rt

133 static void ftr_gpio_set_##name(struct gpio_runtime *rt, int on)\
137 if (unlikely(!rt)) return; \
152 rt->implementation_private &= ~(1<<bit); \
153 rt->implementation_private |= (!!on << bit); \
155 static int ftr_gpio_get_##name(struct gpio_runtime *rt) \
157 if (unlikely(!rt)) return 0; \
158 return (rt->implementation_private>>bit)&1; \
166 static void ftr_gpio_set_hw_reset(struct gpio_runtime *rt, int on)
170 if (unlikely(!rt)) return;
183 static void ftr_gpio_all_amps_off(struct gpio_runtime *rt)
187 if (unlikely(!rt)) return;
188 saved = rt->implementation_private;
189 ftr_gpio_set_headphone(rt, 0);
190 ftr_gpio_set_amp(rt, 0);
191 ftr_gpio_set_lineout(rt, 0);
193 ftr_gpio_set_master(rt, 0);
194 rt->implementation_private = saved;
197 static void ftr_gpio_all_amps_restore(struct gpio_runtime *rt)
201 if (unlikely(!rt)) return;
202 s = rt->implementation_private;
203 ftr_gpio_set_headphone(rt, (s>>0)&1);
204 ftr_gpio_set_amp(rt, (s>>1)&1);
205 ftr_gpio_set_lineout(rt, (s>>2)&1);
207 ftr_gpio_set_master(rt, (s>>3)&1);
231 static void ftr_gpio_init(struct gpio_runtime *rt)
272 ftr_gpio_all_amps_off(rt);
273 rt->implementation_private = 0;
274 INIT_DELAYED_WORK(&rt->headphone_notify.work, ftr_handle_notify);
275 INIT_DELAYED_WORK(&rt->line_in_notify.work, ftr_handle_notify);
276 INIT_DELAYED_WORK(&rt->line_out_notify.work, ftr_handle_notify);
277 mutex_init(&rt->headphone_notify.mutex);
278 mutex_init(&rt->line_in_notify.mutex);
279 mutex_init(&rt->line_out_notify.mutex);
282 static void ftr_gpio_exit(struct gpio_runtime *rt)
284 ftr_gpio_all_amps_off(rt);
285 rt->implementation_private = 0;
286 if (rt->headphone_notify.notify)
287 free_irq(headphone_detect_irq, &rt->headphone_notify);
288 if (rt->line_in_notify.gpio_private)
289 free_irq(linein_detect_irq, &rt->line_in_notify);
290 if (rt->line_out_notify.gpio_private)
291 free_irq(lineout_detect_irq, &rt->line_out_notify);
292 cancel_delayed_work_sync(&rt->headphone_notify.work);
293 cancel_delayed_work_sync(&rt->line_in_notify.work);
294 cancel_delayed_work_sync(&rt->line_out_notify.work);
295 mutex_destroy(&rt->headphone_notify.mutex);
296 mutex_destroy(&rt->line_in_notify.mutex);
297 mutex_destroy(&rt->line_out_notify.mutex);
309 static int ftr_set_notify(struct gpio_runtime *rt,
322 notif = &rt->headphone_notify;
327 notif = &rt->line_in_notify;
332 notif = &rt->line_out_notify;
371 static int ftr_get_detect(struct gpio_runtime *rt,