diff options
author | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2009-09-22 16:47:14 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 07:39:51 -0700 |
commit | 09cf11806e4b4be92af76253ff9834c48b416129 (patch) | |
tree | a7a14f280d772f5caebf75af95059be8c2e5649a /drivers/video/via/viafbdev.c | |
parent | 81228a36a5d05181fff990c852a9abdf03c75593 (diff) | |
download | kernel_samsung_smdk4412-09cf11806e4b4be92af76253ff9834c48b416129.zip kernel_samsung_smdk4412-09cf11806e4b4be92af76253ff9834c48b416129.tar.gz kernel_samsung_smdk4412-09cf11806e4b4be92af76253ff9834c48b416129.tar.bz2 |
viafb: split viafb_set_start_addr up
Move individual start address setting to viafb_set_primary_address and
viafb_set_secondary_address and make it more flexible to reuse it for
panning. Using central functions makes it easier to follow HW
manipulations.
Remove crt locking as it should be only needed for timing manipulation.
Move iga_path manipulation to via_pci_probe.
Remove memset for screen cleaning as it is currently done only for the
second screen. This is not needed for normal operation but has a little
chance of causing unwanted display artifacts. This can be fixed later
more consistent and more efficient (using viafb_fillrect) if needed.
This is a code clenup, no notable runtime changes expected.
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: Scott Fang <ScottFang@viatech.com.cn>
Cc: Joseph Chan <JosephChan@via.com.tw>
Cc: Harald Welte <laforge@gnumonks.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/video/via/viafbdev.c')
-rw-r--r-- | drivers/video/via/viafbdev.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c index 6612ddc..743eed4 100644 --- a/drivers/video/via/viafbdev.c +++ b/drivers/video/via/viafbdev.c @@ -481,12 +481,7 @@ static int viafb_pan_display(struct fb_var_screeninfo *var, var->bits_per_pixel / 16; DEBUG_MSG(KERN_INFO "\nviafb_pan_display,offset =%d ", offset); - - viafb_write_reg_mask(0x48, 0x3d4, ((offset >> 24) & 0x3), 0x3); - viafb_write_reg_mask(0x34, 0x3d4, ((offset >> 16) & 0xff), 0xff); - viafb_write_reg_mask(0x0c, 0x3d4, ((offset >> 8) & 0xff), 0xff); - viafb_write_reg_mask(0x0d, 0x3d4, (offset & 0xff), 0xff); - + viafb_set_primary_address(offset); return 0; } @@ -1353,7 +1348,8 @@ static void viafb_set_device(struct device_t active_dev) viafb_SAMM_ON = active_dev.samm; viafb_primary_dev = active_dev.primary_dev; - viafb_set_start_addr(); + viafb_set_primary_address(0); + viafb_set_secondary_address(viafb_SAMM_ON ? viafb_second_offset : 0); viafb_set_iga_path(); } @@ -1537,7 +1533,8 @@ static int apply_device_setting(struct viafb_ioctl_setting setting_info, if (viafb_SAMM_ON) viafb_primary_dev = setting_info.primary_device; - viafb_set_start_addr(); + viafb_set_primary_address(0); + viafb_set_secondary_address(viafb_SAMM_ON ? viafb_second_offset : 0); viafb_set_iga_path(); } need_set_mode = 1; @@ -2275,6 +2272,8 @@ static int __devinit via_pci_probe(void) viafb_second_offset; } + viaparinfo->iga_path = IGA1; + viaparinfo1->iga_path = IGA2; memcpy(viafbinfo1, viafbinfo, sizeof(struct fb_info)); viafbinfo1->screen_base = viafbinfo->screen_base + viafb_second_offset; |