Lines Matching defs:par
299 static void lcd_blit(int load_mode, struct da8xx_fb_par *par)
314 start = par->dma_start;
315 end = par->dma_end;
334 start = par->p_palette_base;
335 end = start + par->palette_sz - 1;
511 static int lcd_cfg_frame_buffer(struct da8xx_fb_par *par, u32 width, u32 height,
563 par->palette_sz = 16 * 2;
579 par->palette_sz = 256 * 2;
596 struct da8xx_fb_par *par = info->par;
597 unsigned short *palette = (unsigned short *) par->v_palette_base;
676 lcd_blit(LOAD_PALETTE, par);
696 static int da8xx_fb_config_clk_divider(struct da8xx_fb_par *par,
702 if (par->lcdc_clk_rate != lcdc_clk_rate) {
703 ret = clk_set_rate(par->lcdc_clk, lcdc_clk_rate);
705 dev_err(par->dev,
710 par->lcdc_clk_rate = clk_get_rate(par->lcdc_clk);
724 static unsigned int da8xx_fb_calc_clk_divider(struct da8xx_fb_par *par,
732 *lcdc_clk_rate = par->lcdc_clk_rate;
735 *lcdc_clk_rate = clk_round_rate(par->lcdc_clk,
739 *lcdc_clk_rate = clk_round_rate(par->lcdc_clk,
749 static int da8xx_fb_calc_config_clk_divider(struct da8xx_fb_par *par,
753 unsigned lcdc_clk_div = da8xx_fb_calc_clk_divider(par, mode->pixclock,
756 return da8xx_fb_config_clk_divider(par, lcdc_clk_div, lcdc_clk_rate);
759 static unsigned da8xx_fb_round_clk(struct da8xx_fb_par *par,
764 lcdc_clk_div = da8xx_fb_calc_clk_divider(par, pixclock, &lcdc_clk_rate);
768 static int lcd_init(struct da8xx_fb_par *par, const struct lcd_ctrl_config *cfg,
774 ret = da8xx_fb_calc_config_clk_divider(par, panel);
776 dev_err(par->dev, "unable to configure clock\n");
807 ret = lcd_cfg_frame_buffer(par, (unsigned int)panel->xres,
823 struct da8xx_fb_par *par = arg;
845 lcd_blit(LOAD_DATA, par);
850 par->which_dma_channel_done = 0;
851 lcdc_write(par->dma_start,
853 lcdc_write(par->dma_end,
855 par->vsync_flag = 1;
856 wake_up_interruptible(&par->vsync_wait);
860 par->which_dma_channel_done = 1;
861 lcdc_write(par->dma_start,
863 lcdc_write(par->dma_end,
865 par->vsync_flag = 1;
866 wake_up_interruptible(&par->vsync_wait);
885 struct da8xx_fb_par *par = arg;
910 lcd_blit(LOAD_DATA, par);
915 par->which_dma_channel_done = 0;
916 lcdc_write(par->dma_start,
918 lcdc_write(par->dma_end,
920 par->vsync_flag = 1;
921 wake_up_interruptible(&par->vsync_wait);
925 par->which_dma_channel_done = 1;
926 lcdc_write(par->dma_start,
928 lcdc_write(par->dma_end,
930 par->vsync_flag = 1;
931 wake_up_interruptible(&par->vsync_wait);
942 struct da8xx_fb_par *par = info->par;
1013 if (line_size * var->yres_virtual > par->vram_size)
1014 var->yres_virtual = par->vram_size / line_size;
1027 var->pixclock = da8xx_fb_round_clk(par, var->pixclock);
1036 struct da8xx_fb_par *par;
1038 par = container_of(nb, struct da8xx_fb_par, freq_transition);
1040 if (par->lcdc_clk_rate != clk_get_rate(par->lcdc_clk)) {
1041 par->lcdc_clk_rate = clk_get_rate(par->lcdc_clk);
1043 da8xx_fb_calc_config_clk_divider(par, &par->mode);
1044 if (par->blank == FB_BLANK_UNBLANK)
1052 static int lcd_da8xx_cpufreq_register(struct da8xx_fb_par *par)
1054 par->freq_transition.notifier_call = lcd_da8xx_cpufreq_transition;
1056 return cpufreq_register_notifier(&par->freq_transition,
1060 static void lcd_da8xx_cpufreq_deregister(struct da8xx_fb_par *par)
1062 cpufreq_unregister_notifier(&par->freq_transition,
1070 struct da8xx_fb_par *par = info->par;
1074 lcd_da8xx_cpufreq_deregister(par);
1076 if (par->lcd_supply) {
1077 ret = regulator_disable(par->lcd_supply);
1102 struct da8xx_fb_par *par = info->par;
1117 par->vsync_flag = 0;
1118 ret = wait_event_interruptible_timeout(par->vsync_wait,
1119 par->vsync_flag != 0,
1120 par->vsync_timeout);
1168 struct da8xx_fb_par *par = info->par;
1171 if (par->blank == blank)
1174 par->blank = blank;
1179 if (par->lcd_supply) {
1180 ret = regulator_enable(par->lcd_supply);
1189 if (par->lcd_supply) {
1190 ret = regulator_disable(par->lcd_supply);
1213 struct da8xx_fb_par *par = fbi->par;
1233 par->dma_start = start;
1234 par->dma_end = end;
1235 spin_lock_irqsave(&par->lock_for_chan_update,
1237 if (par->which_dma_channel_done == 0) {
1238 lcdc_write(par->dma_start,
1240 lcdc_write(par->dma_end,
1242 } else if (par->which_dma_channel_done == 1) {
1243 lcdc_write(par->dma_start,
1245 lcdc_write(par->dma_end,
1248 spin_unlock_irqrestore(&par->lock_for_chan_update,
1258 struct da8xx_fb_par *par = info->par;
1265 fb_var_to_videomode(&par->mode, &info->var);
1267 par->cfg.bpp = info->var.bits_per_pixel;
1269 info->fix.visual = (par->cfg.bpp <= 8) ?
1271 info->fix.line_length = (par->mode.xres * par->cfg.bpp) / 8;
1273 ret = lcd_init(par, &par->cfg, &par->mode);
1275 dev_err(par->dev, "lcd init failed\n");
1279 par->dma_start = info->fix.smem_start +
1282 par->dma_end = par->dma_start +
1285 lcdc_write(par->dma_start, LCD_DMA_FRM_BUF_BASE_ADDR_0_REG);
1286 lcdc_write(par->dma_end, LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG);
1287 lcdc_write(par->dma_start, LCD_DMA_FRM_BUF_BASE_ADDR_1_REG);
1288 lcdc_write(par->dma_end, LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
1335 struct da8xx_fb_par *par;
1392 par = da8xx_fb_info->par;
1393 par->dev = &device->dev;
1394 par->lcdc_clk = tmp_lcdc_clk;
1395 par->lcdc_clk_rate = clk_get_rate(par->lcdc_clk);
1397 par->lcd_supply = devm_regulator_get_optional(&device->dev, "lcd");
1398 if (IS_ERR(par->lcd_supply)) {
1399 if (PTR_ERR(par->lcd_supply) == -EPROBE_DEFER) {
1404 par->lcd_supply = NULL;
1406 ret = regulator_enable(par->lcd_supply);
1412 par->cfg = *lcd_cfg;
1417 par->vram_size = lcdc_info->xres * lcdc_info->yres * lcd_cfg->bpp;
1419 par->vram_size = roundup(par->vram_size/8, ulcm);
1420 par->vram_size = par->vram_size * LCD_NUM_BUFFERS;
1422 par->vram_virt = dmam_alloc_coherent(par->dev,
1423 par->vram_size,
1424 &par->vram_phys,
1426 if (!par->vram_virt) {
1433 da8xx_fb_info->screen_base = (char __iomem *) par->vram_virt;
1434 da8xx_fb_fix.smem_start = par->vram_phys;
1435 da8xx_fb_fix.smem_len = par->vram_size;
1438 par->dma_start = par->vram_phys;
1439 par->dma_end = par->dma_start + lcdc_info->yres *
1443 par->v_palette_base = dmam_alloc_coherent(par->dev, PALETTE_SIZE,
1444 &par->p_palette_base,
1446 if (!par->v_palette_base) {
1453 par->irq = platform_get_irq(device, 0);
1454 if (par->irq < 0) {
1467 da8xx_fb_info->pseudo_palette = par->pseudo_palette;
1474 da8xx_fb_info->cmap.len = par->palette_sz;
1483 init_waitqueue_head(&par->vsync_wait);
1484 par->vsync_timeout = HZ / 5;
1485 par->which_dma_channel_done = -1;
1486 spin_lock_init(&par->lock_for_chan_update);
1497 ret = lcd_da8xx_cpufreq_register(par);
1511 ret = devm_request_irq(&device->dev, par->irq, lcdc_irq_handler, 0,
1512 DRIVER_NAME, par);
1519 lcd_da8xx_cpufreq_deregister(par);
1528 if (par->lcd_supply)
1529 regulator_disable(par->lcd_supply);
1607 struct da8xx_fb_par *par = info->par;
1611 if (par->lcd_supply) {
1612 ret = regulator_disable(par->lcd_supply);
1628 struct da8xx_fb_par *par = info->par;
1634 if (par->blank == FB_BLANK_UNBLANK) {
1637 if (par->lcd_supply) {
1638 ret = regulator_enable(par->lcd_supply);