git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
video
/
acornfb.c
diff --git
a/drivers/video/acornfb.c
b/drivers/video/acornfb.c
index
d91a2f8
..
98baecc
100644
(file)
--- a/
drivers/video/acornfb.c
+++ b/
drivers/video/acornfb.c
@@
-26,7
+26,7
@@
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/fb.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/fb.h>
-#include <linux/device.h>
+#include <linux/
platform_
device.h>
#include <linux/dma-mapping.h>
#include <asm/hardware.h>
#include <linux/dma-mapping.h>
#include <asm/hardware.h>
@@
-883,7
+883,7
@@
acornfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
* Note that we are entered with the kernel locked.
*/
static int
* Note that we are entered with the kernel locked.
*/
static int
-acornfb_mmap(struct fb_info *info, struct
file *file, struct
vm_area_struct *vma)
+acornfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
{
unsigned long off, start;
u32 len;
{
unsigned long off, start;
u32 len;
@@
-909,7
+909,7
@@
acornfb_mmap(struct fb_info *info, struct file *file, struct vm_area_struct *vma
* some updates to the screen occasionally, but process switches
* should cause the caches and buffers to be flushed often enough.
*/
* some updates to the screen occasionally, but process switches
* should cause the caches and buffers to be flushed often enough.
*/
- if (io_remap_p
age_range(vma, vma->vm_start, off
,
+ if (io_remap_p
fn_range(vma, vma->vm_start, off >> PAGE_SHIFT
,
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
vma->vm_end - vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
@@
-926,7
+926,6
@@
static struct fb_ops acornfb_ops = {
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
.fb_mmap = acornfb_mmap,
.fb_copyarea = cfb_copyarea,
.fb_imageblit = cfb_imageblit,
.fb_mmap = acornfb_mmap,
- .fb_cursor = soft_cursor,
};
/*
};
/*
@@
-1010,7
+1009,7
@@
static void __init acornfb_init_fbinfo(void)
first = 0;
fb_info.fbops = &acornfb_ops;
first = 0;
fb_info.fbops = &acornfb_ops;
- fb_info.flags = FBINFO_
FLAG_DEFAULT
;
+ fb_info.flags = FBINFO_
DEFAULT | FBINFO_HWACCEL_YPAN
;
fb_info.pseudo_palette = current_par.pseudo_palette;
strcpy(fb_info.fix.id, "Acorn");
fb_info.pseudo_palette = current_par.pseudo_palette;
strcpy(fb_info.fix.id, "Acorn");
@@
-1246,6
+1245,8
@@
acornfb_detect_monitortype(void)
/*
* This enables the unused memory to be freed on older Acorn machines.
/*
* This enables the unused memory to be freed on older Acorn machines.
+ * We are freeing memory on behalf of the architecture initialisation
+ * code here.
*/
static inline void
free_unused_pages(unsigned int virtual_start, unsigned int virtual_end)
*/
static inline void
free_unused_pages(unsigned int virtual_start, unsigned int virtual_end)
@@
-1268,7
+1269,7
@@
free_unused_pages(unsigned int virtual_start, unsigned int virtual_end)
*/
page = virt_to_page(virtual_start);
ClearPageReserved(page);
*/
page = virt_to_page(virtual_start);
ClearPageReserved(page);
-
atomic_set(&page->count, 1
);
+
init_page_count(page
);
free_page(virtual_start);
virtual_start += PAGE_SIZE;
free_page(virtual_start);
virtual_start += PAGE_SIZE;
@@
-1278,21
+1279,20
@@
free_unused_pages(unsigned int virtual_start, unsigned int virtual_end)
printk("acornfb: freed %dK memory\n", mb_freed);
}
printk("acornfb: freed %dK memory\n", mb_freed);
}
-static struct device acornfb_device = {
- .bus_id = "acornfb",
- .coherent_dma_mask = 0xffffffff,
-};
-
-int __init
-acornfb_init(void)
+static int __init acornfb_probe(struct platform_device *dev)
{
unsigned long size;
u_int h_sync, v_sync;
int rc, i;
{
unsigned long size;
u_int h_sync, v_sync;
int rc, i;
+ char *option = NULL;
+
+ if (fb_get_options("acornfb", &option))
+ return -ENODEV;
+ acornfb_setup(option);
acornfb_init_fbinfo();
acornfb_init_fbinfo();
- current_par.dev = &
acornfb_device
;
+ current_par.dev = &
dev->dev
;
if (current_par.montype == -1)
current_par.montype = acornfb_detect_monitortype();
if (current_par.montype == -1)
current_par.montype = acornfb_detect_monitortype();
@@
-1308,7
+1308,7
@@
acornfb_init(void)
/*
* Try to select a suitable default mode
*/
/*
* Try to select a suitable default mode
*/
- for (i = 0; i <
sizeof(modedb) / sizeof(*
modedb); i++) {
+ for (i = 0; i <
ARRAY_SIZE(
modedb); i++) {
unsigned long hs;
hs = modedb[i].refresh *
unsigned long hs;
hs = modedb[i].refresh *
@@
-1325,7
+1325,6
@@
acornfb_init(void)
}
}
}
}
- fb_info.currcon = -1;
fb_info.screen_base = (char *)SCREEN_BASE;
fb_info.fix.smem_start = SCREEN_START;
current_par.using_vram = 0;
fb_info.screen_base = (char *)SCREEN_BASE;
fb_info.fix.smem_start = SCREEN_START;
current_par.using_vram = 0;
@@
-1381,7
+1380,7
@@
acornfb_init(void)
*/
free_unused_pages(PAGE_OFFSET + size, PAGE_OFFSET + MAX_SIZE);
#endif
*/
free_unused_pages(PAGE_OFFSET + size, PAGE_OFFSET + MAX_SIZE);
#endif
-
+
fb_info.fix.smem_len = size;
current_par.palette_size = VIDC_PALETTE_SIZE;
fb_info.fix.smem_len = size;
current_par.palette_size = VIDC_PALETTE_SIZE;
@@
-1392,7
+1391,7
@@
acornfb_init(void)
*/
do {
rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb,
*/
do {
rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb,
-
sizeof(modedb) / sizeof(*
modedb),
+
ARRAY_SIZE(
modedb),
&acornfb_default_mode, DEFAULT_BPP);
/*
* If we found an exact match, all ok.
&acornfb_default_mode, DEFAULT_BPP);
/*
* If we found an exact match, all ok.
@@
-1409,7
+1408,7
@@
acornfb_init(void)
break;
rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb,
break;
rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb,
-
sizeof(modedb) / sizeof(*
modedb),
+
ARRAY_SIZE(
modedb),
&acornfb_default_mode, DEFAULT_BPP);
if (rc)
break;
&acornfb_default_mode, DEFAULT_BPP);
if (rc)
break;
@@
-1454,6
+1453,20
@@
acornfb_init(void)
return 0;
}
return 0;
}
+static struct platform_driver acornfb_driver = {
+ .probe = acornfb_probe,
+ .driver = {
+ .name = "acornfb",
+ },
+};
+
+static int __init acornfb_init(void)
+{
+ return platform_driver_register(&acornfb_driver);
+}
+
+module_init(acornfb_init);
+
MODULE_AUTHOR("Russell King");
MODULE_DESCRIPTION("VIDC 1/1a/20 framebuffer driver");
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Russell King");
MODULE_DESCRIPTION("VIDC 1/1a/20 framebuffer driver");
MODULE_LICENSE("GPL");