• Home
  • Raw
  • Download

Lines Matching +full:vga +full:- +full:connector

2  *  linux/arch/arm/mach-integrator/impd1.c
10 * This file provides the core support for the IM-PD1 module.
13 * lmid=n impd1.lmid=n - set the logic module position in stack to 'n'
25 #include <linux/platform_data/clk-integrator.h>
27 #include <linux/irqchip/arm-vic.h>
50 cur = readl(impd1->base + IMPD1_CTRL) & ~mask; in impd1_tweak_control()
51 writel(cur | val, impd1->base + IMPD1_CTRL); in impd1_tweak_control()
71 #define VGA 4 macro
73 #if PANEL == VGA
74 #define PANELTYPE vga
75 static struct clcd_panel vga = { variable
77 .name = "VGA",
91 .width = -1,
92 .height = -1,
96 .connector = IMPD1_CTRL_DISP_VGA,
119 .width = -1,
120 .height = -1,
123 .connector = IMPD1_CTRL_DISP_VGA,
147 .width = -1,
148 .height = -1,
153 .connector = IMPD1_CTRL_DISP_LCD,
179 .width = -1,
180 .height = -1,
185 .connector = IMPD1_CTRL_DISP_LCD,
196 impd1_tweak_control(fb->dev->dev.parent, IMPD1_CTRL_DISP_MASK, 0); in impd1fb_clcd_disable()
200 * Enable the relevant connector on the interface module.
204 impd1_tweak_control(fb->dev->dev.parent, IMPD1_CTRL_DISP_MASK, in impd1fb_clcd_enable()
205 fb->panel->connector | IMPD1_CTRL_DISP_ENABLE); in impd1fb_clcd_enable()
210 unsigned long framebase = fb->dev->res.start + 0x01000000; in impd1fb_clcd_setup()
214 fb->panel = &PANELTYPE; in impd1fb_clcd_setup()
217 printk(KERN_ERR "IM-PD1: unable to reserve framebuffer\n"); in impd1fb_clcd_setup()
218 return -EBUSY; in impd1fb_clcd_setup()
221 fb->fb.screen_base = ioremap(framebase, framesize); in impd1fb_clcd_setup()
222 if (!fb->fb.screen_base) { in impd1fb_clcd_setup()
223 printk(KERN_ERR "IM-PD1: unable to map framebuffer\n"); in impd1fb_clcd_setup()
224 ret = -ENOMEM; in impd1fb_clcd_setup()
228 fb->fb.fix.smem_start = framebase; in impd1fb_clcd_setup()
229 fb->fb.fix.smem_len = framesize; in impd1fb_clcd_setup()
242 start = vma->vm_pgoff + (fb->fb.fix.smem_start >> PAGE_SHIFT); in impd1fb_clcd_mmap()
243 size = vma->vm_end - vma->vm_start; in impd1fb_clcd_mmap()
245 return remap_pfn_range(vma, vma->vm_start, start, size, in impd1fb_clcd_mmap()
246 vma->vm_page_prot); in impd1fb_clcd_mmap()
251 iounmap(fb->fb.screen_base); in impd1fb_clcd_remove()
252 release_mem_region(fb->fb.fix.smem_start, fb->fb.fix.smem_len); in impd1fb_clcd_remove()
256 .name = "IM-PD/1",
322 * As this module is bool, it is OK to have this as __ref() - no
332 if (dev->id != module_id) in impd1_probe()
333 return -EINVAL; in impd1_probe()
335 if (!devm_request_mem_region(&dev->dev, dev->resource.start, in impd1_probe()
337 return -EBUSY; in impd1_probe()
339 impd1 = devm_kzalloc(&dev->dev, sizeof(struct impd1_module), in impd1_probe()
342 return -ENOMEM; in impd1_probe()
344 impd1->base = devm_ioremap(&dev->dev, dev->resource.start, SZ_4K); in impd1_probe()
345 if (!impd1->base) in impd1_probe()
346 return -ENOMEM; in impd1_probe()
348 integrator_impd1_clk_init(impd1->base, dev->id); in impd1_probe()
350 if (!devm_request_mem_region(&dev->dev, in impd1_probe()
351 dev->resource.start + 0x03000000, in impd1_probe()
353 return -EBUSY; in impd1_probe()
355 impd1->vic_base = devm_ioremap(&dev->dev, in impd1_probe()
356 dev->resource.start + 0x03000000, in impd1_probe()
358 if (!impd1->vic_base) in impd1_probe()
359 return -ENOMEM; in impd1_probe()
361 irq_base = vic_init_cascaded(impd1->vic_base, dev->irq, in impd1_probe()
366 dev_info(&dev->dev, "IM-PD1 found at 0x%08lx\n", in impd1_probe()
367 (unsigned long)dev->resource.start); in impd1_probe()
374 int irq1 = idev->irq[0]; in impd1_probe()
375 int irq2 = idev->irq[1]; in impd1_probe()
377 /* Translate IRQs to IM-PD1 local numberspace */ in impd1_probe()
383 pc_base = dev->resource.start + idev->offset; in impd1_probe()
384 snprintf(devname, 32, "lm%x:%5.5lx", dev->id, idev->offset >> 12); in impd1_probe()
387 if (idev->offset == 0x00400000) { in impd1_probe()
392 lookup = devm_kzalloc(&dev->dev, in impd1_probe()
395 chipname = devm_kstrdup(&dev->dev, devname, GFP_KERNEL); in impd1_probe()
396 mmciname = devm_kasprintf(&dev->dev, GFP_KERNEL, in impd1_probe()
397 "lm%x:00700", dev->id); in impd1_probe()
399 return -ENOMEM; in impd1_probe()
401 lookup->dev_id = mmciname; in impd1_probe()
416 lookup->table[0].chip_label = chipname; in impd1_probe()
417 lookup->table[0].chip_hwnum = 3; in impd1_probe()
418 lookup->table[0].con_id = "wp"; in impd1_probe()
419 lookup->table[1].chip_label = chipname; in impd1_probe()
420 lookup->table[1].chip_hwnum = 4; in impd1_probe()
421 lookup->table[1].con_id = "cd"; in impd1_probe()
422 lookup->table[1].flags = GPIO_ACTIVE_LOW; in impd1_probe()
426 d = amba_ahb_device_add_res(&dev->dev, devname, pc_base, SZ_4K, in impd1_probe()
428 idev->platform_data, idev->id, in impd1_probe()
429 &dev->resource); in impd1_probe()
431 dev_err(&dev->dev, "unable to register device: %ld\n", PTR_ERR(d)); in impd1_probe()
447 device_for_each_child(&dev->dev, NULL, impd1_remove_one); in impd1_remove()
448 integrator_impd1_clk_exit(dev->id); in impd1_remove()
480 MODULE_DESCRIPTION("Integrator/IM-PD1 logic module core driver");