Lines Matching refs:par
171 struct metronomefb_par *par) in load_waveform() argument
183 u8 *metromem = par->metromem_wfm; in load_waveform()
184 struct device *dev = par->info->dev; in load_waveform()
187 epd_frame_table[par->dt].wfm_size = user_wfm_size; in load_waveform()
189 if (size != epd_frame_table[par->dt].wfm_size) { in load_waveform()
191 epd_frame_table[par->dt].wfm_size); in load_waveform()
303 par->frame_count = (mem_idx/64); in load_waveform()
308 static int metronome_display_cmd(struct metronomefb_par *par) in metronome_display_cmd() argument
320 if (par->metromem_cmd->opcode == 0xCC40) in metronome_display_cmd()
327 par->metromem_cmd->args[i] = 1 << 3 /* border update */ in metronome_display_cmd()
329 | (par->frame_count - 1) << 8; in metronome_display_cmd()
330 cs += par->metromem_cmd->args[i++]; in metronome_display_cmd()
333 memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2); in metronome_display_cmd()
335 par->metromem_cmd->csum = cs; in metronome_display_cmd()
336 par->metromem_cmd->opcode = opcode; /* display cmd */ in metronome_display_cmd()
338 return par->board->met_wait_event_intr(par); in metronome_display_cmd()
341 static int metronome_powerup_cmd(struct metronomefb_par *par) in metronome_powerup_cmd() argument
347 par->metromem_cmd->opcode = 0x1234; /* pwr up pseudo cmd */ in metronome_powerup_cmd()
348 cs = par->metromem_cmd->opcode; in metronome_powerup_cmd()
352 par->metromem_cmd->args[i] = 1024; in metronome_powerup_cmd()
353 cs += par->metromem_cmd->args[i]; in metronome_powerup_cmd()
357 memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2); in metronome_powerup_cmd()
359 par->metromem_cmd->csum = cs; in metronome_powerup_cmd()
362 par->board->set_rst(par, 1); in metronome_powerup_cmd()
365 par->board->set_stdby(par, 1); in metronome_powerup_cmd()
367 return par->board->met_wait_event(par); in metronome_powerup_cmd()
370 static int metronome_config_cmd(struct metronomefb_par *par) in metronome_config_cmd() argument
376 memcpy(par->metromem_cmd->args, epd_frame_table[par->dt].config, in metronome_config_cmd()
377 sizeof(epd_frame_table[par->dt].config)); in metronome_config_cmd()
379 memset((u8 *) (par->metromem_cmd->args + 4), 0, (32-4)*2); in metronome_config_cmd()
381 par->metromem_cmd->csum = 0xCC10; in metronome_config_cmd()
382 par->metromem_cmd->csum += calc_img_cksum(par->metromem_cmd->args, 4); in metronome_config_cmd()
383 par->metromem_cmd->opcode = 0xCC10; /* config cmd */ in metronome_config_cmd()
385 return par->board->met_wait_event(par); in metronome_config_cmd()
388 static int metronome_init_cmd(struct metronomefb_par *par) in metronome_init_cmd() argument
402 par->metromem_cmd->args[i] = 0; in metronome_init_cmd()
403 cs += par->metromem_cmd->args[i++]; in metronome_init_cmd()
406 memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2); in metronome_init_cmd()
408 par->metromem_cmd->csum = cs; in metronome_init_cmd()
409 par->metromem_cmd->opcode = 0xCC20; /* init cmd */ in metronome_init_cmd()
411 return par->board->met_wait_event(par); in metronome_init_cmd()
414 static int metronome_init_regs(struct metronomefb_par *par) in metronome_init_regs() argument
418 res = par->board->setup_io(par); in metronome_init_regs()
422 res = metronome_powerup_cmd(par); in metronome_init_regs()
426 res = metronome_config_cmd(par); in metronome_init_regs()
430 res = metronome_init_cmd(par); in metronome_init_regs()
435 static void metronomefb_dpy_update(struct metronomefb_par *par) in metronomefb_dpy_update() argument
439 unsigned char *buf = (unsigned char __force *)par->info->screen_base; in metronomefb_dpy_update()
441 fbsize = par->info->fix.smem_len; in metronomefb_dpy_update()
443 memcpy(par->metromem_img, buf, fbsize); in metronomefb_dpy_update()
445 cksum = calc_img_cksum((u16 *) par->metromem_img, fbsize/2); in metronomefb_dpy_update()
446 *((u16 *)(par->metromem_img) + fbsize/2) = cksum; in metronomefb_dpy_update()
447 metronome_display_cmd(par); in metronomefb_dpy_update()
450 static u16 metronomefb_dpy_update_page(struct metronomefb_par *par, int index) in metronomefb_dpy_update_page() argument
454 u16 *buf = (u16 __force *)(par->info->screen_base + index); in metronomefb_dpy_update_page()
455 u16 *img = (u16 *)(par->metromem_img + index); in metronomefb_dpy_update_page()
472 struct metronomefb_par *par = info->par; in metronomefb_dpy_deferred_io() local
476 cksum = metronomefb_dpy_update_page(par, in metronomefb_dpy_deferred_io()
478 par->metromem_img_csum -= par->csum_table[cur->index]; in metronomefb_dpy_deferred_io()
479 par->csum_table[cur->index] = cksum; in metronomefb_dpy_deferred_io()
480 par->metromem_img_csum += cksum; in metronomefb_dpy_deferred_io()
483 metronome_display_cmd(par); in metronomefb_dpy_deferred_io()
489 struct metronomefb_par *par = info->par; in metronomefb_fillrect() local
492 metronomefb_dpy_update(par); in metronomefb_fillrect()
498 struct metronomefb_par *par = info->par; in metronomefb_copyarea() local
501 metronomefb_dpy_update(par); in metronomefb_copyarea()
507 struct metronomefb_par *par = info->par; in metronomefb_imageblit() local
510 metronomefb_dpy_update(par); in metronomefb_imageblit()
520 struct metronomefb_par *par = info->par; in metronomefb_write() local
554 metronomefb_dpy_update(par); in metronomefb_write()
579 struct metronomefb_par *par; in metronomefb_probe() local
646 par = info->par; in metronomefb_probe()
647 par->info = info; in metronomefb_probe()
648 par->board = board; in metronomefb_probe()
649 par->dt = epd_dt_index; in metronomefb_probe()
650 init_waitqueue_head(&par->waitq); in metronomefb_probe()
653 par->csum_table = vmalloc(videomemorysize/PAGE_SIZE); in metronomefb_probe()
654 if (!par->csum_table) in metronomefb_probe()
660 retval = board->setup_fb(par); in metronomefb_probe()
667 if ((!par->metromem_wfm) || (!par->metromem_img) || in metronomefb_probe()
668 (!par->metromem_dma)) { in metronomefb_probe()
674 info->fix.smem_start = par->metromem_dma; in metronomefb_probe()
686 par); in metronomefb_probe()
697 retval = metronome_init_regs(par); in metronomefb_probe()
733 board->cleanup(par); in metronomefb_probe()
735 vfree(par->csum_table); in metronomefb_probe()
750 struct metronomefb_par *par = info->par; in metronomefb_remove() local
755 par->board->cleanup(par); in metronomefb_remove()
756 vfree(par->csum_table); in metronomefb_remove()
758 module_put(par->board->owner); in metronomefb_remove()