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

Lines Matching refs:sfb

236 	struct s3c_fb *sfb = win->parent;
238 dev_dbg(sfb->dev, "checking parameters\n");
244 dev_dbg(sfb->dev, "win %d: unsupported bpp %d\n",
258 if (sfb->variant.palette[win->index] != 0) {
320 dev_err(sfb->dev, "invalid bpp\n");
323 dev_dbg(sfb->dev, "%s: verified parameters\n", __func__);
329 * @sfb: The hardware state.
335 static int s3c_fb_calc_pixclk(struct s3c_fb *sfb, unsigned int pixclk)
337 unsigned long clk = clk_get_rate(sfb->bus_clk);
347 dev_dbg(sfb->dev, "pixclk=%u, clk=%lu, div=%d (%lu)\n",
380 struct s3c_fb *sfb = win->parent;
384 writel(size, sfb->regs + OSD_BASE(win->index, sfb->variant)
396 struct s3c_fb *sfb = win->parent;
399 writel(alpha, sfb->regs + VIDOSD_C(win->index, sfb->variant));
410 struct s3c_fb *sfb = win->parent;
414 if (sfb->variant.has_prtcon) {
415 writel(PRTCON_PROTECT, sfb->regs + PRTCON);
416 } else if (sfb->variant.has_shadowcon) {
417 reg = readl(sfb->regs + SHADOWCON);
419 sfb->regs + SHADOWCON);
422 if (sfb->variant.has_prtcon) {
423 writel(0, sfb->regs + PRTCON);
424 } else if (sfb->variant.has_shadowcon) {
425 reg = readl(sfb->regs + SHADOWCON);
427 sfb->regs + SHADOWCON);
442 struct s3c_fb *sfb = win->parent;
443 void __iomem *regs = sfb->regs;
451 dev_dbg(sfb->dev, "setting framebuffer parameters\n");
486 if (win_no == sfb->pdata->default_win) {
487 clkdiv = s3c_fb_calc_pixclk(sfb, var->pixclock);
489 data = sfb->pdata->vidcon0;
499 if (sfb->variant.is_2443)
509 writel(data, regs + sfb->variant.vidtcon);
516 writel(data, regs + sfb->variant.vidtcon + 4);
520 writel(data, regs +sfb->variant.vidtcon + 8 );
528 writel(info->fix.smem_start, buf + sfb->variant.buf_start);
531 writel(data, buf + sfb->variant.buf_end);
536 writel(data, regs + sfb->variant.buf_size + (win_no * 4));
541 writel(data, regs + VIDOSD_A(win_no, sfb->variant));
547 writel(data, regs + VIDOSD_B(win_no, sfb->variant));
620 void __iomem *keycon = regs + sfb->variant.keycon;
634 writel(data, regs + sfb->variant.wincon + (win_no * 4));
635 writel(0x0, regs + sfb->variant.winmap + (win_no * 4));
638 if (sfb->variant.has_shadowcon) {
639 data = readl(sfb->regs + SHADOWCON);
641 writel(data, sfb->regs + SHADOWCON);
651 * @sfb: The hardware information.
663 static void s3c_fb_update_palette(struct s3c_fb *sfb,
671 palreg = sfb->regs + sfb->variant.palette[win->index];
673 dev_dbg(sfb->dev, "%s: win %d, reg %d (%p): %08x\n",
678 palcon = readl(sfb->regs + WPALCON);
679 writel(palcon | WPALCON_PAL_UPDATE, sfb->regs + WPALCON);
686 writel(palcon, sfb->regs + WPALCON);
711 struct s3c_fb *sfb = win->parent;
714 dev_dbg(sfb->dev, "%s: win %d: %d => rgb=%d/%d/%d\n",
738 s3c_fb_update_palette(sfb, win, regno, val);
752 * @sfb: The main framebuffer state.
755 static void s3c_fb_enable(struct s3c_fb *sfb, int enable)
757 u32 vidcon0 = readl(sfb->regs + VIDCON0);
773 writel(vidcon0, sfb->regs + VIDCON0);
786 struct s3c_fb *sfb = win->parent;
790 dev_dbg(sfb->dev, "blank mode %d\n", blank_mode);
792 wincon = readl(sfb->regs + sfb->variant.wincon + (index * 4));
797 sfb->enabled &= ~(1 << index);
803 sfb->regs + sfb->variant.winmap + (index * 4));
807 writel(0x0, sfb->regs + sfb->variant.winmap + (index * 4));
809 sfb->enabled |= (1 << index);
818 writel(wincon, sfb->regs + sfb->variant.wincon + (index * 4));
831 * s3c_fb_enable(sfb, sfb->enabled ? 1 : 0);
837 if (index == sfb->pdata->default_win)
838 s3c_fb_enable(sfb, blank_mode != FB_BLANK_POWERDOWN ? 1 : 0);
858 struct s3c_fb *sfb = win->parent;
859 void __iomem *buf = sfb->regs + win->index * 8;
879 dev_err(sfb->dev, "invalid bpp\n");
890 writel(info->fix.smem_start + start_boff, buf + sfb->variant.buf_start);
891 writel(info->fix.smem_start + end_boff, buf + sfb->variant.buf_end);
900 * @sfb: main hardware state
902 static void s3c_fb_enable_irq(struct s3c_fb *sfb)
904 void __iomem *regs = sfb->regs;
907 if (!test_and_set_bit(S3C_FB_VSYNC_IRQ_EN, &sfb->irq_flags)) {
925 * @sfb: main hardware state
927 static void s3c_fb_disable_irq(struct s3c_fb *sfb)
929 void __iomem *regs = sfb->regs;
932 if (test_and_clear_bit(S3C_FB_VSYNC_IRQ_EN, &sfb->irq_flags)) {
945 struct s3c_fb *sfb = dev_id;
946 void __iomem *regs = sfb->regs;
956 sfb->vsync_info.count++;
957 wake_up_interruptible(&sfb->vsync_info.wait);
963 s3c_fb_disable_irq(sfb);
970 * @sfb: main hardware state
973 static int s3c_fb_wait_for_vsync(struct s3c_fb *sfb, u32 crtc)
981 count = sfb->vsync_info.count;
982 s3c_fb_enable_irq(sfb);
983 ret = wait_event_interruptible_timeout(sfb->vsync_info.wait,
984 count != sfb->vsync_info.count,
996 struct s3c_fb *sfb = win->parent;
1007 ret = s3c_fb_wait_for_vsync(sfb, crtc);
1053 * @sfb: The base resources for the hardware.
1058 static int __devinit s3c_fb_alloc_memory(struct s3c_fb *sfb,
1066 dev_dbg(sfb->dev, "allocating memory for display\n");
1071 dev_dbg(sfb->dev, "real_size=%u (%u.%u), virt_size=%u (%u.%u)\n",
1082 dev_dbg(sfb->dev, "want %u bytes for window\n", size);
1084 fbi->screen_base = dma_alloc_writecombine(sfb->dev, size,
1089 dev_dbg(sfb->dev, "mapped %x to %p\n",
1100 * @sfb: The base resources for the hardware.
1105 static void s3c_fb_free_memory(struct s3c_fb *sfb, struct s3c_fb_win *win)
1110 dma_free_writecombine(sfb->dev, PAGE_ALIGN(fbi->fix.smem_len),
1121 static void s3c_fb_release_win(struct s3c_fb *sfb, struct s3c_fb_win *win)
1126 if (sfb->variant.has_shadowcon) {
1127 data = readl(sfb->regs + SHADOWCON);
1130 writel(data, sfb->regs + SHADOWCON);
1135 s3c_fb_free_memory(sfb, win);
1142 * @sfb: The base resources for the hardware
1149 static int __devinit s3c_fb_probe_win(struct s3c_fb *sfb, unsigned int win_no,
1161 dev_dbg(sfb->dev, "probing window %d, variant %p\n", win_no, variant);
1163 init_waitqueue_head(&sfb->vsync_info.wait);
1168 palette_size * sizeof(u32), sfb->dev);
1170 dev_err(sfb->dev, "failed to allocate framebuffer\n");
1174 windata = sfb->pdata->win[win_no];
1186 win->parent = sfb;
1191 ret = s3c_fb_alloc_memory(sfb, win);
1193 dev_err(sfb->dev, "failed to allocate display memory\n");
1233 dev_err(sfb->dev, "check_var failed on initial video params\n");
1243 dev_err(sfb->dev, "failed to allocate fb cmap\n");
1247 dev_dbg(sfb->dev, "about to register framebuffer\n");
1253 dev_err(sfb->dev, "failed to register framebuffer\n");
1257 dev_info(sfb->dev, "window %d: fb %s\n", win_no, fbinfo->fix.id);
1264 * @sfb: The base resources for the hardware.
1269 static void s3c_fb_clear_win(struct s3c_fb *sfb, int win)
1271 void __iomem *regs = sfb->regs;
1274 writel(0, regs + sfb->variant.wincon + (win * 4));
1275 writel(0, regs + VIDOSD_A(win, sfb->variant));
1276 writel(0, regs + VIDOSD_B(win, sfb->variant));
1277 writel(0, regs + VIDOSD_C(win, sfb->variant));
1287 struct s3c_fb *sfb;
1305 sfb = kzalloc(sizeof(struct s3c_fb), GFP_KERNEL);
1306 if (!sfb) {
1311 dev_dbg(dev, "allocate new framebuffer %p\n", sfb);
1313 sfb->dev = dev;
1314 sfb->pdata = pd;
1315 sfb->variant = fbdrv->variant;
1317 sfb->bus_clk = clk_get(dev, "lcd");
1318 if (IS_ERR(sfb->bus_clk)) {
1323 clk_enable(sfb->bus_clk);
1332 sfb->regs_res = request_mem_region(res->start, resource_size(res),
1334 if (!sfb->regs_res) {
1340 sfb->regs = ioremap(res->start, resource_size(res));
1341 if (!sfb->regs) {
1353 sfb->irq_no = res->start;
1354 ret = request_irq(sfb->irq_no, s3c_fb_irq,
1355 0, "s3c_fb", sfb);
1361 dev_dbg(dev, "got resources (regs %p), probing windows\n", sfb->regs);
1367 writel(pd->vidcon1, sfb->regs + VIDCON1);
1372 s3c_fb_clear_win(sfb, win);
1376 void __iomem *regs = sfb->regs + sfb->variant.keycon;
1392 ret = s3c_fb_probe_win(sfb, win, fbdrv->win[win],
1393 &sfb->windows[win]);
1397 s3c_fb_release_win(sfb, sfb->windows[win]);
1402 platform_set_drvdata(pdev, sfb);
1407 free_irq(sfb->irq_no, sfb);
1410 iounmap(sfb->regs);
1413 release_resource(sfb->regs_res);
1414 kfree(sfb->regs_res);
1417 clk_disable(sfb->bus_clk);
1418 clk_put(sfb->bus_clk);
1421 kfree(sfb);
1434 struct s3c_fb *sfb = platform_get_drvdata(pdev);
1438 if (sfb->windows[win])
1439 s3c_fb_release_win(sfb, sfb->windows[win]);
1441 free_irq(sfb->irq_no, sfb);
1443 iounmap(sfb->regs);
1445 clk_disable(sfb->bus_clk);
1446 clk_put(sfb->bus_clk);
1448 release_resource(sfb->regs_res);
1449 kfree(sfb->regs_res);
1451 kfree(sfb);
1459 struct s3c_fb *sfb = platform_get_drvdata(pdev);
1464 win = sfb->windows[win_no];
1472 clk_disable(sfb->bus_clk);
1478 struct s3c_fb *sfb = platform_get_drvdata(pdev);
1479 struct s3c_fb_platdata *pd = sfb->pdata;
1483 clk_enable(sfb->bus_clk);
1486 writel(pd->vidcon1, sfb->regs + VIDCON1);
1489 for (win_no = 0; win_no < sfb->variant.nr_windows; win_no++)
1490 s3c_fb_clear_win(sfb, win_no);
1492 for (win_no = 0; win_no < sfb->variant.nr_windows - 1; win_no++) {
1493 void __iomem *regs = sfb->regs + sfb->variant.keycon;
1502 win = sfb->windows[win_no];