• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/msm/

Lines Matching defs:mfd

67 void mdp_hw_vsync_clk_enable(struct msm_fb_data_type *mfd)
69 if (mfd->use_mdp_vsync)
73 void mdp_hw_vsync_clk_disable(struct msm_fb_data_type *mfd)
75 if (mfd->use_mdp_vsync)
82 struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)data;
85 pdata = (struct msm_fb_panel_data *)mfd->pdev->dev.platform_data;
90 init_timer(&mfd->vsync_resync_timer);
91 mfd->vsync_resync_timer.function = mdp_set_vsync;
92 mfd->vsync_resync_timer.data = data;
93 mfd->vsync_resync_timer.expires =
94 jiffies + mfd->panel_info.lcd.vsync_notifier_period;
95 add_timer(&mfd->vsync_resync_timer);
97 if ((mfd->panel_info.lcd.vsync_enable) && (mfd->panel_power_on)
98 && (!mfd->vsync_handler_pending)) {
99 mfd->vsync_handler_pending = TRUE;
100 if (!queue_work(mdp_vsync_wq, &mfd->vsync_resync_worker)) {
107 mfd->panel_info.lcd.vsync_enable, mfd->panel_power_on,
108 mfd->vsync_handler_pending);
114 struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)data;
116 if (mfd->use_mdp_vsync) {
118 if (mfd->panel_power_on)
124 mfd->last_vsync_timetick = ktime_get_real();
127 mfd->vsync_handler_pending = FALSE;
143 static void mdp_set_sync_cfg_0(struct msm_fb_data_type *mfd, int vsync_cnt)
147 cfg = mfd->total_lcd_lines - 1;
149 if (mfd->panel_info.lcd.hw_vsync_mode)
157 void mdp_config_vsync(struct msm_fb_data_type *mfd)
161 if ((mfd->dest != DISPLAY_LCD) || (mfd->panel_info.pdest != DISPLAY_1)
166 if (mfd->panel_info.lcd.vsync_enable) {
167 mfd->total_porch_lines = mfd->panel_info.lcd.v_back_porch +
168 mfd->panel_info.lcd.v_front_porch +
169 mfd->panel_info.lcd.v_pulse_width;
170 mfd->total_lcd_lines =
171 mfd->panel_info.yres + mfd->total_porch_lines;
172 mfd->lcd_ref_usec_time =
173 100000000 / mfd->panel_info.lcd.refx100;
174 mfd->vsync_handler_pending = FALSE;
175 mfd->last_vsync_timetick.tv.sec = 0;
176 mfd->last_vsync_timetick.tv.nsec = 0;
184 mfd->use_mdp_vsync = 0;
186 mfd->use_mdp_vsync = 1;
188 if (mfd->use_mdp_vsync) {
195 mfd->use_mdp_vsync = 0;
202 (mfd->panel_info.lcd.refx100 *
203 mfd->total_lcd_lines) / 100;
211 mdp_hw_vsync_clk_enable(mfd);
213 mdp_set_sync_cfg_0(mfd, vsync_cnt_cfg);
219 vsync_load_cnt = mfd->panel_info.yres;
238 mdp_hw_vsync_clk_disable(mfd);
245 mfd->use_mdp_vsync = 0;
246 hrtimer_init(&mfd->dma_hrtimer, CLOCK_MONOTONIC,
248 mfd->dma_hrtimer.function = mdp_dma2_vsync_hrtimer_handler;
249 mfd->vsync_width_boundary = vmalloc(mfd->panel_info.xres * 4);
252 mfd->channel_irq = 0;
253 if (mfd->panel_info.lcd.hw_vsync_mode) {
254 u32 vsync_gpio = mfd->vsync_gpio;
264 (mfd->use_mdp_vsync) ? 1 : 0,
272 if (!mfd->use_mdp_vsync) {
273 mfd->channel_irq = MSM_GPIO_TO_INT(vsync_gpio);
275 (mfd->channel_irq,
278 (void *)mfd)) {
281 mfd->channel_irq,
288 mdp_set_vsync((unsigned long)mfd);
294 if (mfd->vsync_width_boundary)
295 vfree(mfd->vsync_width_boundary);
296 mfd->panel_info.lcd.vsync_enable = FALSE;
302 struct msm_fb_data_type *mfd = NULL;
306 mfd = container_of(work, struct msm_fb_data_type, vsync_resync_worker);
308 if (mfd) {
309 if (mfd->panel_power_on) {
311 (struct msm_fb_panel_data *)mfd->pdev->dev.
318 if ((!mfd->panel_info.lcd.hw_vsync_mode) &&
319 (mfd->use_mdp_vsync) &&
332 (void *)mfd);
337 if ((mfd) && (!vsync_fnc_enabled))
338 mfd->vsync_handler_pending = FALSE;
352 uint32 mdp_get_lcd_line_counter(struct msm_fb_data_type *mfd)
360 if ((!mfd->panel_info.lcd.vsync_enable) || (!vsync_mode))
364 last_vsync_timetick_local = mfd->last_vsync_timetick;
372 elapsed_usec_time = elapsed_usec_time % mfd->lcd_ref_usec_time;
376 (elapsed_usec_time * mfd->total_lcd_lines) / mfd->lcd_ref_usec_time;
380 (mfd->total_lcd_lines - mfd->panel_info.lcd.v_back_porch +
381 lcd_line) % (mfd->total_lcd_lines + 1);
383 if (lcd_line > mfd->total_lcd_lines) {
385 ("mdp_get_lcd_line_counter: mdp_lcd_rd_cnt >= mfd->total_lcd_lines error!\n");