Lines Matching +full:versatile +full:- +full:tft +full:- +full:panel
2 #include <linux/dma-mapping.h>
5 #include <linux/platform_data/video-clcd-versatile.h>
11 #include "amba-clcd-versatile.h"
29 .width = -1,
30 .height = -1,
53 .width = -1,
54 .height = -1,
61 /* Sanyo TM38QV67A02A - 3.8 inch QVGA (320x240) Color TFT */
78 .width = -1,
79 .height = -1,
102 .width = -1,
103 .height = -1,
110 /* Epson L2F50113T00 - 2.2 inch 176x220 Color TFT */
127 .width = -1,
128 .height = -1,
148 if (strcmp(panels[i]->mode.name, name) == 0) in versatile_clcd_get_panel()
154 pr_err("CLCD: couldn't get parameters for panel %s\n", name); in versatile_clcd_get_panel()
163 fb->fb.screen_base = dma_alloc_wc(&fb->dev->dev, framesize, &dma, in versatile_clcd_setup_dma()
165 if (!fb->fb.screen_base) { in versatile_clcd_setup_dma()
167 return -ENOMEM; in versatile_clcd_setup_dma()
170 fb->fb.fix.smem_start = dma; in versatile_clcd_setup_dma()
171 fb->fb.fix.smem_len = framesize; in versatile_clcd_setup_dma()
178 return dma_mmap_wc(&fb->dev->dev, vma, fb->fb.screen_base, in versatile_clcd_mmap_dma()
179 fb->fb.fix.smem_start, fb->fb.fix.smem_len); in versatile_clcd_mmap_dma()
184 dma_free_wc(&fb->dev->dev, fb->fb.fix.smem_len, fb->fb.screen_base, in versatile_clcd_remove_dma()
185 fb->fb.fix.smem_start); in versatile_clcd_remove_dma()
208 .compatible = "arm,core-module-integrator",
212 .compatible = "arm,versatile-sysreg",
216 .compatible = "arm,realview-eb-syscon",
220 .compatible = "arm,realview-pb1176-syscon",
224 .compatible = "arm,realview-pb11mp-syscon",
228 .compatible = "arm,realview-pba8-syscon",
232 .compatible = "arm,realview-pbx-syscon",
278 struct fb_var_screeninfo *var = &fb->fb.var; in integrator_clcd_enable()
281 dev_info(&fb->dev->dev, "enable Integrator CLCD connectors\n"); in integrator_clcd_enable()
286 if (var->bits_per_pixel <= 8 || in integrator_clcd_enable()
287 (var->bits_per_pixel == 16 && var->green.length == 5)) in integrator_clcd_enable()
290 else if (fb->fb.var.bits_per_pixel <= 16) in integrator_clcd_enable()
303 * This configuration register in the Versatile and RealView
321 /* The Versatile can detect the connected panel type */
331 /* IB2 control register for the Versatile daughterboard */
339 dev_info(&fb->dev->dev, "disable Versatile CLCD connectors\n"); in versatile_clcd_disable()
347 dev_info(&fb->dev->dev, "disable IB2 display\n"); in versatile_clcd_disable()
357 struct fb_var_screeninfo *var = &fb->fb.var; in versatile_clcd_enable()
360 dev_info(&fb->dev->dev, "enable Versatile CLCD connectors\n"); in versatile_clcd_enable()
361 switch (var->green.length) { in versatile_clcd_enable()
366 if (var->red.offset == 0) in versatile_clcd_enable()
390 dev_info(&fb->dev->dev, "enable IB2 display\n"); in versatile_clcd_enable()
403 if (fb->fb.var.green.length == 6) in versatile_clcd_decode()
404 regs->cntl &= ~CNTL_BGR; in versatile_clcd_decode()
409 dev_info(&fb->dev->dev, "disable RealView CLCD connectors\n"); in realview_clcd_disable()
418 dev_info(&fb->dev->dev, "enable RealView CLCD connectors\n"); in realview_clcd_enable()
455 static void versatile_panel_probe(struct device *dev, struct device_node *panel) in versatile_panel_probe() argument
463 * The Versatile CLCD has a panel auto-detection mechanism. in versatile_panel_probe()
464 * We use this and look for the compatible panel in the in versatile_panel_probe()
474 /* First find corresponding panel information */ in versatile_panel_probe()
478 if (val == vpanel->id) { in versatile_panel_probe()
479 dev_err(dev, "autodetected panel \"%s\"\n", in versatile_panel_probe()
480 vpanel->compatible); in versatile_panel_probe()
485 dev_err(dev, "could not auto-detect panel\n"); in versatile_panel_probe()
489 if (!of_device_is_compatible(panel, vpanel->compatible)) in versatile_panel_probe()
490 dev_err(dev, "panel in DT is not compatible with the " in versatile_panel_probe()
491 "auto-detected panel, continuing anyway\n"); in versatile_panel_probe()
498 if (!vpanel->ib2) in versatile_panel_probe()
502 "arm,versatile-ib2-syscon"); in versatile_panel_probe()
510 int versatile_clcd_init_panel(struct clcd_fb *fb, struct device_node *panel) in versatile_clcd_init_panel() argument
516 struct device *dev = &fb->dev->dev; in versatile_clcd_init_panel()
524 versatile_clcd_type = (enum versatile_clcd)clcd_id->data; in versatile_clcd_init_panel()
528 dev_err(dev, "no Versatile syscon regmap\n"); in versatile_clcd_init_panel()
535 fb->board->enable = integrator_clcd_enable; in versatile_clcd_init_panel()
537 fb->board->caps = CLCD_CAP_5551 | CLCD_CAP_RGB565 | in versatile_clcd_init_panel()
543 fb->board->enable = versatile_clcd_enable; in versatile_clcd_init_panel()
544 fb->board->disable = versatile_clcd_disable; in versatile_clcd_init_panel()
545 fb->board->decode = versatile_clcd_decode; in versatile_clcd_init_panel()
546 versatile_panel_probe(dev, panel); in versatile_clcd_init_panel()
547 dev_info(dev, "set up callbacks for Versatile\n"); in versatile_clcd_init_panel()
555 fb->board->enable = realview_clcd_enable; in versatile_clcd_init_panel()
556 fb->board->disable = realview_clcd_disable; in versatile_clcd_init_panel()
560 dev_info(dev, "unknown Versatile system controller\n"); in versatile_clcd_init_panel()