| Date: | 2010-06-28 01:01:11 (13 years 5 months ago) |
|---|---|
| Author: | Lars C. |
| Commit: | bd9ee3a48fda75e5611c929441bf251cc1a86761 |
| Message: | fbdev: jz4740: Minor cleanups |
| Files: |
drivers/video/jz4740_fb.c (13 diffs) |
Change Details
| drivers/video/jz4740_fb.c | ||
|---|---|---|
| 1 | 1 | /* |
| 2 | 2 | * Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de> |
| 3 | * JZ4740 SoC LCD framebuffer driver | |
| 3 | * JZ4740 SoC LCD framebuffer driver | |
| 4 | 4 | * |
| 5 | * This program is free software; you can redistribute it and/or modify it | |
| 6 | * under the terms of the GNU General Public License as published by the | |
| 7 | * Free Software Foundation; either version 2 of the License, or (at your | |
| 5 | * This program is free software; you can redistribute it and/or modify it | |
| 6 | * under the terms of the GNU General Public License as published by the | |
| 7 | * Free Software Foundation; either version 2 of the License, or (at your | |
| 8 | 8 | * option) any later version. |
| 9 | 9 | * |
| 10 | * You should have received a copy of the GNU General Public License along | |
| 11 | * with this program; if not, write to the Free Software Foundation, Inc., | |
| 10 | * You should have received a copy of the GNU General Public License along | |
| 11 | * with this program; if not, write to the Free Software Foundation, Inc., | |
| 12 | 12 | * 675 Mass Ave, Cambridge, MA 02139, USA. |
| 13 | 13 | * |
| 14 | 14 | */ |
| ... | ... | |
| 112 | 112 | uint32_t addr; |
| 113 | 113 | uint32_t id; |
| 114 | 114 | uint32_t cmd; |
| 115 | } __attribute__((packed)); | |
| 115 | } __packed; | |
| 116 | 116 | |
| 117 | 117 | struct jzfb { |
| 118 | 118 | struct fb_info *fb; |
| ... | ... | |
| 136 | 136 | uint32_t pseudo_palette[16]; |
| 137 | 137 | }; |
| 138 | 138 | |
| 139 | static struct fb_fix_screeninfo jzfb_fix __devinitdata = { | |
| 139 | static const struct fb_fix_screeninfo jzfb_fix __devinitdata = { | |
| 140 | 140 | .id = "JZ4740 FB", |
| 141 | 141 | .type = FB_TYPE_PACKED_PIXELS, |
| 142 | 142 | .visual = FB_VISUAL_TRUECOLOR, |
| ... | ... | |
| 233 | 233 | if (regno >= 16) |
| 234 | 234 | return -EINVAL; |
| 235 | 235 | |
| 236 | color = jzfb_convert_color_to_hw(red, fb->var.red.length); | |
| 237 | color |= jzfb_convert_color_to_hw(green, fb->var.green.length); | |
| 238 | color |= jzfb_convert_color_to_hw(blue, fb->var.blue.length); | |
| 239 | color |= jzfb_convert_color_to_hw(transp, fb->var.transp.length); | |
| 236 | color = jzfb_convert_color_to_hw(red, &fb->var.red); | |
| 237 | color |= jzfb_convert_color_to_hw(green, &fb->var.green); | |
| 238 | color |= jzfb_convert_color_to_hw(blue, &fb->var.blue); | |
| 239 | color |= jzfb_convert_color_to_hw(transp, &fb->var.transp); | |
| 240 | 240 | |
| 241 | 241 | ((uint32_t *)(fb->pseudo_palette))[regno] = color; |
| 242 | 242 | |
| ... | ... | |
| 348 | 348 | if (mode == NULL) |
| 349 | 349 | return -EINVAL; |
| 350 | 350 | |
| 351 | if (mode == info->mode) | |
| 352 | return 0; | |
| 353 | ||
| 351 | 354 | info->mode = mode; |
| 352 | 355 | |
| 353 | 356 | hds = mode->hsync_len + mode->left_margin; |
| ... | ... | |
| 387 | 390 | break; |
| 388 | 391 | } |
| 389 | 392 | |
| 390 | cfg = 0; | |
| 391 | cfg |= JZ_LCD_CFG_PS_DISABLE; | |
| 392 | cfg |= JZ_LCD_CFG_CLS_DISABLE; | |
| 393 | cfg |= JZ_LCD_CFG_SPL_DISABLE; | |
| 394 | cfg |= JZ_LCD_CFG_REV_DISABLE; | |
| 393 | cfg = JZ_LCD_CFG_PS_DISABLE | JZ_LCD_CFG_CLS_DISABLE | | |
| 394 | JZ_LCD_CFG_SPL_DISABLE | JZ_LCD_CFG_REV_DISABLE; | |
| 395 | 395 | |
| 396 | 396 | if (!(mode->sync & FB_SYNC_HOR_HIGH_ACT)) |
| 397 | 397 | cfg |= JZ_LCD_CFG_HSYNC_ACTIVE_LOW; |
| ... | ... | |
| 442 | 442 | |
| 443 | 443 | if (!jzfb->is_enabled) |
| 444 | 444 | clk_disable(jzfb->ldclk); |
| 445 | ||
| 445 | 446 | mutex_unlock(&jzfb->lock); |
| 446 | 447 | |
| 447 | 448 | clk_set_rate(jzfb->lpclk, rate); |
| ... | ... | |
| 502 | 503 | jzfb->is_enabled = 1; |
| 503 | 504 | |
| 504 | 505 | mutex_unlock(&jzfb->lock); |
| 505 | ||
| 506 | 506 | break; |
| 507 | 507 | default: |
| 508 | 508 | mutex_lock(&jzfb->lock); |
| ... | ... | |
| 512 | 512 | } |
| 513 | 513 | |
| 514 | 514 | jzfb_disable(jzfb); |
| 515 | ||
| 516 | 515 | jzfb->is_enabled = 0; |
| 516 | ||
| 517 | 517 | mutex_unlock(&jzfb->lock); |
| 518 | 518 | break; |
| 519 | 519 | } |
| ... | ... | |
| 644 | 644 | } |
| 645 | 645 | |
| 646 | 646 | jzfb->base = ioremap(mem->start, resource_size(mem)); |
| 647 | ||
| 648 | 647 | if (!jzfb->base) { |
| 649 | 648 | dev_err(&pdev->dev, "Failed to ioremap register memory region\n"); |
| 650 | 649 | ret = -EBUSY; |
| ... | ... | |
| 653 | 652 | |
| 654 | 653 | platform_set_drvdata(pdev, jzfb); |
| 655 | 654 | |
| 655 | mutex_init(&jzfb->lock); | |
| 656 | ||
| 656 | 657 | fb_videomode_to_modelist(pdata->modes, pdata->num_modes, |
| 657 | 658 | &fb->modelist); |
| 658 | fb->mode = pdata->modes; | |
| 659 | ||
| 660 | fb_videomode_to_var(&fb->var, fb->mode); | |
| 659 | fb_videomode_to_var(&fb->var, pdata->modes); | |
| 661 | 660 | fb->var.bits_per_pixel = pdata->bpp; |
| 662 | 661 | jzfb_check_var(&fb->var, fb); |
| 663 | 662 | |
| ... | ... | |
| 678 | 677 | |
| 679 | 678 | fb_alloc_cmap(&fb->cmap, 256, 0); |
| 680 | 679 | |
| 681 | mutex_init(&jzfb->lock); | |
| 682 | ||
| 683 | 680 | clk_enable(jzfb->ldclk); |
| 684 | 681 | jzfb->is_enabled = 1; |
| 685 | 682 | |
| 686 | 683 | writel(jzfb->framedesc->next, jzfb->base + JZ_REG_LCD_DA0); |
| 684 | ||
| 685 | fb->mode = NULL; | |
| 687 | 686 | jzfb_set_par(fb); |
| 688 | 687 | |
| 689 | 688 | jz_gpio_bulk_request(jz_lcd_ctrl_pins, jzfb_num_ctrl_pins(jzfb)); |
| ... | ... | |
| 814 | 813 | |
| 815 | 814 | MODULE_LICENSE("GPL"); |
| 816 | 815 | MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>"); |
| 817 | MODULE_DESCRIPTION("JZ4720/JZ4740 SoC LCD framebuffer driver"); | |
| 816 | MODULE_DESCRIPTION("JZ4740 SoC LCD framebuffer driver"); | |
| 818 | 817 | MODULE_ALIAS("platform:jz4740-fb"); |
Branches:
ben-wpan
ben-wpan-stefan
5396a9238205f20f811ea57898980d3ca82df0b6
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9
