Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
3c470f33
Commit
3c470f33
authored
Aug 24, 2011
by
Florian Tobias Schandinat
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pan-fixes' of
git://linuxtv.org/pinchartl/fbdev
into fbdev-next
parents
fcb8ce5c
0d5c6ca3
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
92 additions
and
106 deletions
+92
-106
drivers/staging/xgifb/XGI_main_26.c
drivers/staging/xgifb/XGI_main_26.c
+6
-16
drivers/video/68328fb.c
drivers/video/68328fb.c
+2
-2
drivers/video/acornfb.c
drivers/video/acornfb.c
+3
-2
drivers/video/arkfb.c
drivers/video/arkfb.c
+5
-4
drivers/video/atmel_lcdfb.c
drivers/video/atmel_lcdfb.c
+9
-6
drivers/video/aty/radeon_base.c
drivers/video/aty/radeon_base.c
+5
-5
drivers/video/da8xx-fb.c
drivers/video/da8xx-fb.c
+2
-2
drivers/video/fb-puv3.c
drivers/video/fb-puv3.c
+2
-2
drivers/video/g364fb.c
drivers/video/g364fb.c
+3
-2
drivers/video/gxt4500.c
drivers/video/gxt4500.c
+2
-2
drivers/video/hgafb.c
drivers/video/hgafb.c
+2
-2
drivers/video/imsttfb.c
drivers/video/imsttfb.c
+1
-1
drivers/video/intelfb/intelfbhw.c
drivers/video/intelfb/intelfbhw.c
+3
-3
drivers/video/mb862xx/mb862xxfbdrv.c
drivers/video/mb862xx/mb862xxfbdrv.c
+1
-1
drivers/video/mx3fb.c
drivers/video/mx3fb.c
+3
-3
drivers/video/neofb.c
drivers/video/neofb.c
+2
-2
drivers/video/pm2fb.c
drivers/video/pm2fb.c
+2
-2
drivers/video/pm3fb.c
drivers/video/pm3fb.c
+2
-2
drivers/video/s3c-fb.c
drivers/video/s3c-fb.c
+1
-1
drivers/video/s3fb.c
drivers/video/s3fb.c
+4
-3
drivers/video/savage/savagefb_driver.c
drivers/video/savage/savagefb_driver.c
+7
-9
drivers/video/sis/sis_main.c
drivers/video/sis/sis_main.c
+10
-20
drivers/video/sm501fb.c
drivers/video/sm501fb.c
+3
-3
drivers/video/tridentfb.c
drivers/video/tridentfb.c
+2
-2
drivers/video/vfb.c
drivers/video/vfb.c
+2
-2
drivers/video/vga16fb.c
drivers/video/vga16fb.c
+1
-1
drivers/video/vt8500lcdfb.c
drivers/video/vt8500lcdfb.c
+2
-2
drivers/video/vt8623fb.c
drivers/video/vt8623fb.c
+5
-4
No files found.
drivers/staging/xgifb/XGI_main_26.c
View file @
3c470f33
...
...
@@ -1364,26 +1364,16 @@ static int XGIfb_do_set_var(struct fb_var_screeninfo *var, int isactive,
}
#ifdef XGIFB_PAN
static
int
XGIfb_pan_var
(
struct
fb_var_screeninfo
*
var
)
static
int
XGIfb_pan_var
(
struct
fb_var_screeninfo
*
var
,
struct
fb_info
*
info
)
{
unsigned
int
base
;
/* printk("Inside pan_var"); */
if
(
var
->
xoffset
>
(
var
->
xres_virtual
-
var
->
xres
))
{
/* printk("Pan: xo: %d xv %d xr %d\n",
var->xoffset, var->xres_virtual, var->xres); */
return
-
EINVAL
;
}
if
(
var
->
yoffset
>
(
var
->
yres_virtual
-
var
->
yres
))
{
/* printk("Pan: yo: %d yv %d yr %d\n",
var->yoffset, var->yres_virtual, var->yres); */
return
-
EINVAL
;
}
base
=
var
->
yoffset
*
var
->
xres_virtual
+
var
->
xoffset
;
base
=
var
->
yoffset
*
info
->
var
.
xres_virtual
+
var
->
xoffset
;
/* calculate base bpp dep. */
switch
(
var
->
bits_per_pixel
)
{
switch
(
info
->
var
.
bits_per_pixel
)
{
case
16
:
base
>>=
1
;
break
;
...
...
@@ -1681,9 +1671,9 @@ static int XGIfb_pan_display(struct fb_var_screeninfo *var,
/* printk("\nInside pan_display:\n"); */
if
(
var
->
xoffset
>
(
var
->
xres_virtual
-
var
->
xres
))
if
(
var
->
xoffset
>
(
info
->
var
.
xres_virtual
-
info
->
var
.
xres
))
return
-
EINVAL
;
if
(
var
->
yoffset
>
(
var
->
yres_virtual
-
var
->
yres
))
if
(
var
->
yoffset
>
(
info
->
var
.
yres_virtual
-
info
->
var
.
yres
))
return
-
EINVAL
;
if
(
var
->
vmode
&
FB_VMODE_YWRAP
)
{
...
...
@@ -1696,7 +1686,7 @@ static int XGIfb_pan_display(struct fb_var_screeninfo *var,
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
}
err
=
XGIfb_pan_var
(
var
);
err
=
XGIfb_pan_var
(
var
,
info
);
if
(
err
<
0
)
return
err
;
...
...
drivers/video/68328fb.c
View file @
3c470f33
...
...
@@ -378,8 +378,8 @@ static int mc68x328fb_pan_display(struct fb_var_screeninfo *var,
||
var
->
xoffset
)
return
-
EINVAL
;
}
else
{
if
(
var
->
xoffset
+
var
->
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
var
->
yres
>
info
->
var
.
yres_virtual
)
if
(
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
}
info
->
var
.
xoffset
=
var
->
xoffset
;
...
...
drivers/video/acornfb.c
View file @
3c470f33
...
...
@@ -850,9 +850,10 @@ acornfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
u_int
y_bottom
=
var
->
yoffset
;
if
(
!
(
var
->
vmode
&
FB_VMODE_YWRAP
))
y_bottom
+=
var
->
yres
;
y_bottom
+=
info
->
var
.
yres
;
BUG_ON
(
y_bottom
>
var
->
yres_virtual
);
if
(
y_bottom
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
acornfb_update_dma
(
info
,
var
);
...
...
drivers/video/arkfb.c
View file @
3c470f33
...
...
@@ -908,13 +908,14 @@ static int arkfb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info
unsigned
int
offset
;
/* Calculate the offset */
if
(
var
->
bits_per_pixel
==
0
)
{
offset
=
(
var
->
yoffset
/
16
)
*
(
var
->
xres_virtual
/
2
)
+
(
var
->
xoffset
/
2
);
if
(
info
->
var
.
bits_per_pixel
==
0
)
{
offset
=
(
var
->
yoffset
/
16
)
*
(
info
->
var
.
xres_virtual
/
2
)
+
(
var
->
xoffset
/
2
);
offset
=
offset
>>
2
;
}
else
{
offset
=
(
var
->
yoffset
*
info
->
fix
.
line_length
)
+
(
var
->
xoffset
*
var
->
bits_per_pixel
/
8
);
offset
=
offset
>>
((
var
->
bits_per_pixel
==
4
)
?
2
:
3
);
(
var
->
xoffset
*
info
->
var
.
bits_per_pixel
/
8
);
offset
=
offset
>>
((
info
->
var
.
bits_per_pixel
==
4
)
?
2
:
3
);
}
/* Set the offset */
...
...
drivers/video/atmel_lcdfb.c
View file @
3c470f33
...
...
@@ -39,7 +39,8 @@
| FBINFO_HWACCEL_YPAN)
static
inline
void
atmel_lcdfb_update_dma2d
(
struct
atmel_lcdfb_info
*
sinfo
,
struct
fb_var_screeninfo
*
var
)
struct
fb_var_screeninfo
*
var
,
struct
fb_info
*
info
)
{
}
...
...
@@ -50,14 +51,16 @@ static inline void atmel_lcdfb_update_dma2d(struct atmel_lcdfb_info *sinfo,
| FBINFO_HWACCEL_YPAN)
static
void
atmel_lcdfb_update_dma2d
(
struct
atmel_lcdfb_info
*
sinfo
,
struct
fb_var_screeninfo
*
var
)
struct
fb_var_screeninfo
*
var
,
struct
fb_info
*
info
)
{
u32
dma2dcfg
;
u32
pixeloff
;
pixeloff
=
(
var
->
xoffset
*
var
->
bits_per_pixel
)
&
0x1f
;
pixeloff
=
(
var
->
xoffset
*
info
->
var
.
bits_per_pixel
)
&
0x1f
;
dma2dcfg
=
((
var
->
xres_virtual
-
var
->
xres
)
*
var
->
bits_per_pixel
)
/
8
;
dma2dcfg
=
(
info
->
var
.
xres_virtual
-
info
->
var
.
xres
)
*
info
->
var
.
bits_per_pixel
/
8
;
dma2dcfg
|=
pixeloff
<<
ATMEL_LCDC_PIXELOFF_OFFSET
;
lcdc_writel
(
sinfo
,
ATMEL_LCDC_DMA2DCFG
,
dma2dcfg
);
...
...
@@ -249,14 +252,14 @@ static void atmel_lcdfb_update_dma(struct fb_info *info,
unsigned
long
dma_addr
;
dma_addr
=
(
fix
->
smem_start
+
var
->
yoffset
*
fix
->
line_length
+
var
->
xoffset
*
var
->
bits_per_pixel
/
8
);
+
var
->
xoffset
*
info
->
var
.
bits_per_pixel
/
8
);
dma_addr
&=
~
3UL
;
/* Set framebuffer DMA base address and pixel offset */
lcdc_writel
(
sinfo
,
ATMEL_LCDC_DMABADDR1
,
dma_addr
);
atmel_lcdfb_update_dma2d
(
sinfo
,
var
);
atmel_lcdfb_update_dma2d
(
sinfo
,
var
,
info
);
}
static
inline
void
atmel_lcdfb_free_video_memory
(
struct
atmel_lcdfb_info
*
sinfo
)
...
...
drivers/video/aty/radeon_base.c
View file @
3c470f33
...
...
@@ -845,16 +845,16 @@ static int radeonfb_pan_display (struct fb_var_screeninfo *var,
{
struct
radeonfb_info
*
rinfo
=
info
->
par
;
if
((
var
->
xoffset
+
var
->
xres
>
var
->
xres_virtual
)
||
(
var
->
yoffset
+
var
->
yres
>
var
->
yres_virtual
))
return
-
EINVAL
;
if
((
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
)
||
(
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
))
return
-
EINVAL
;
if
(
rinfo
->
asleep
)
return
0
;
radeon_fifo_wait
(
2
);
OUTREG
(
CRTC_OFFSET
,
((
var
->
yoffset
*
var
->
xres_virtual
+
var
->
xoffset
)
*
var
->
bits_per_pixel
/
8
)
&
~
7
);
OUTREG
(
CRTC_OFFSET
,
(
var
->
yoffset
*
info
->
fix
.
line_length
+
var
->
xoffset
*
info
->
var
.
bits_per_pixel
/
8
)
&
~
7
);
return
0
;
}
...
...
drivers/video/da8xx-fb.c
View file @
3c470f33
...
...
@@ -877,8 +877,8 @@ static int da8xx_pan_display(struct fb_var_screeninfo *var,
start
=
fix
->
smem_start
+
new_var
.
yoffset
*
fix
->
line_length
+
new_var
.
xoffset
*
var
->
bits_per_pixel
/
8
;
end
=
start
+
var
->
yres
*
fix
->
line_length
-
1
;
new_var
.
xoffset
*
fbi
->
var
.
bits_per_pixel
/
8
;
end
=
start
+
fbi
->
var
.
yres
*
fix
->
line_length
-
1
;
par
->
dma_start
=
start
;
par
->
dma_end
=
end
;
}
...
...
drivers/video/fb-puv3.c
View file @
3c470f33
...
...
@@ -624,8 +624,8 @@ static int unifb_pan_display(struct fb_var_screeninfo *var,
||
var
->
xoffset
)
return
-
EINVAL
;
}
else
{
if
(
var
->
xoffset
+
var
->
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
var
->
yres
>
info
->
var
.
yres_virtual
)
if
(
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
}
info
->
var
.
xoffset
=
var
->
xoffset
;
...
...
drivers/video/g364fb.c
View file @
3c470f33
...
...
@@ -149,10 +149,11 @@ int g364fb_cursor(struct fb_info *info, struct fb_cursor *cursor)
static
int
g364fb_pan_display
(
struct
fb_var_screeninfo
*
var
,
struct
fb_info
*
info
)
{
if
(
var
->
xoffset
||
var
->
yoffset
+
var
->
yres
>
var
->
yres_virtual
)
if
(
var
->
xoffset
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
*
(
unsigned
int
*
)
TOP_REG
=
var
->
yoffset
*
var
->
xres
;
*
(
unsigned
int
*
)
TOP_REG
=
var
->
yoffset
*
info
->
var
.
xres
;
return
0
;
}
...
...
drivers/video/gxt4500.c
View file @
3c470f33
...
...
@@ -543,8 +543,8 @@ static int gxt4500_pan_display(struct fb_var_screeninfo *var,
if
(
var
->
xoffset
&
7
)
return
-
EINVAL
;
if
(
var
->
xoffset
+
var
->
xres
>
var
->
xres_virtual
||
var
->
yoffset
+
var
->
yres
>
var
->
yres_virtual
)
if
(
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
writereg
(
par
,
REFRESH_START
,
(
var
->
xoffset
<<
16
)
|
var
->
yoffset
);
...
...
drivers/video/hgafb.c
View file @
3c470f33
...
...
@@ -422,8 +422,8 @@ static int hgafb_pan_display(struct fb_var_screeninfo *var,
var
->
xoffset
)
return
-
EINVAL
;
}
else
{
if
(
var
->
xoffset
+
var
->
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
var
->
yres
>
info
->
var
.
yres_virtual
if
(
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
||
var
->
yoffset
%
8
)
return
-
EINVAL
;
}
...
...
drivers/video/imsttfb.c
View file @
3c470f33
...
...
@@ -749,7 +749,7 @@ set_offset (struct fb_var_screeninfo *var, struct fb_info *info)
{
struct
imstt_par
*
par
=
info
->
par
;
__u32
off
=
var
->
yoffset
*
(
info
->
fix
.
line_length
>>
3
)
+
((
var
->
xoffset
*
(
var
->
bits_per_pixel
>>
3
))
>>
3
);
+
((
var
->
xoffset
*
(
info
->
var
.
bits_per_pixel
>>
3
))
>>
3
);
write_reg_le32
(
par
->
dc_regs
,
SSR
,
off
);
}
...
...
drivers/video/intelfb/intelfbhw.c
View file @
3c470f33
...
...
@@ -390,12 +390,12 @@ int intelfbhw_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
xoffset
=
ROUND_DOWN_TO
(
var
->
xoffset
,
8
);
yoffset
=
var
->
yoffset
;
if
((
xoffset
+
var
->
xres
>
var
->
xres_virtual
)
||
(
yoffset
+
var
->
yres
>
var
->
yres_virtual
))
if
((
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
)
||
(
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
))
return
-
EINVAL
;
offset
=
(
yoffset
*
dinfo
->
pitch
)
+
(
xoffset
*
var
->
bits_per_pixel
)
/
8
;
(
xoffset
*
info
->
var
.
bits_per_pixel
)
/
8
;
offset
+=
dinfo
->
fb
.
offset
<<
12
;
...
...
drivers/video/mb862xx/mb862xxfbdrv.c
View file @
3c470f33
...
...
@@ -278,7 +278,7 @@ static int mb862xxfb_pan(struct fb_var_screeninfo *var,
reg
=
pack
(
var
->
yoffset
,
var
->
xoffset
);
outreg
(
disp
,
GC_L0WY_L0WX
,
reg
);
reg
=
pack
(
var
->
yres_virtual
,
var
->
xres_virtual
);
reg
=
pack
(
info
->
var
.
yres_virtual
,
info
->
var
.
xres_virtual
);
outreg
(
disp
,
GC_L0WH_L0WW
,
reg
);
return
0
;
}
...
...
drivers/video/mx3fb.c
View file @
3c470f33
...
...
@@ -1062,15 +1062,15 @@ static int mx3fb_pan_display(struct fb_var_screeninfo *var,
y_bottom
=
var
->
yoffset
;
if
(
!
(
var
->
vmode
&
FB_VMODE_YWRAP
))
y_bottom
+=
var
->
yres
;
y_bottom
+=
fbi
->
var
.
yres
;
if
(
y_bottom
>
fbi
->
var
.
yres_virtual
)
return
-
EINVAL
;
mutex_lock
(
&
mx3_fbi
->
mutex
);
offset
=
(
var
->
yoffset
*
var
->
xres_virtual
+
var
->
xoffset
)
*
(
var
->
bits_per_pixel
/
8
);
offset
=
var
->
yoffset
*
fbi
->
fix
.
line_length
+
var
->
xoffset
*
(
fbi
->
var
.
bits_per_pixel
/
8
);
base
=
fbi
->
fix
.
smem_start
+
offset
;
dev_dbg
(
fbi
->
device
,
"Updating SDC BG buf %d address=0x%08lX
\n
"
,
...
...
drivers/video/neofb.c
View file @
3c470f33
...
...
@@ -1185,8 +1185,8 @@ static int neofb_pan_display(struct fb_var_screeninfo *var,
DBG
(
"neofb_update_start"
);
Base
=
(
var
->
yoffset
*
var
->
xres_virtual
+
var
->
xoffset
)
>>
2
;
Base
*=
(
var
->
bits_per_pixel
+
7
)
/
8
;
Base
=
(
var
->
yoffset
*
info
->
var
.
xres_virtual
+
var
->
xoffset
)
>>
2
;
Base
*=
(
info
->
var
.
bits_per_pixel
+
7
)
/
8
;
neoUnlock
();
...
...
drivers/video/pm2fb.c
View file @
3c470f33
...
...
@@ -973,8 +973,8 @@ static int pm2fb_pan_display(struct fb_var_screeninfo *var,
{
struct
pm2fb_par
*
p
=
info
->
par
;
u32
base
;
u32
depth
=
(
var
->
bits_per_pixel
+
7
)
&
~
7
;
u32
xres
=
(
var
->
xres
+
31
)
&
~
31
;
u32
depth
=
(
info
->
var
.
bits_per_pixel
+
7
)
&
~
7
;
u32
xres
=
(
info
->
var
.
xres
+
31
)
&
~
31
;
depth
=
(
depth
>
32
)
?
32
:
depth
;
base
=
to3264
(
var
->
yoffset
*
xres
+
var
->
xoffset
,
depth
,
1
);
...
...
drivers/video/pm3fb.c
View file @
3c470f33
...
...
@@ -1147,9 +1147,9 @@ static int pm3fb_pan_display(struct fb_var_screeninfo *var,
struct
fb_info
*
info
)
{
struct
pm3_par
*
par
=
info
->
par
;
const
u32
xres
=
(
var
->
xres
+
31
)
&
~
31
;
const
u32
xres
=
(
info
->
var
.
xres
+
31
)
&
~
31
;
par
->
base
=
pm3fb_shift_bpp
(
var
->
bits_per_pixel
,
par
->
base
=
pm3fb_shift_bpp
(
info
->
var
.
bits_per_pixel
,
(
var
->
yoffset
*
xres
)
+
var
->
xoffset
);
PM3_WAIT
(
par
,
1
);
...
...
drivers/video/s3c-fb.c
View file @
3c470f33
...
...
@@ -883,7 +883,7 @@ static int s3c_fb_pan_display(struct fb_var_screeninfo *var,
}
}
/* Offset in bytes to the end of the displayed area */
end_boff
=
start_boff
+
var
->
yres
*
info
->
fix
.
line_length
;
end_boff
=
start_boff
+
info
->
var
.
yres
*
info
->
fix
.
line_length
;
/* Temporarily turn off per-vsync update from shadow registers until
* both start and end addresses are updated to prevent corruption */
...
...
drivers/video/s3fb.c
View file @
3c470f33
...
...
@@ -1019,12 +1019,13 @@ static int s3fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *info)
unsigned
int
offset
;
/* Calculate the offset */
if
(
var
->
bits_per_pixel
==
0
)
{
offset
=
(
var
->
yoffset
/
16
)
*
(
var
->
xres_virtual
/
2
)
+
(
var
->
xoffset
/
2
);
if
(
info
->
var
.
bits_per_pixel
==
0
)
{
offset
=
(
var
->
yoffset
/
16
)
*
(
info
->
var
.
xres_virtual
/
2
)
+
(
var
->
xoffset
/
2
);
offset
=
offset
>>
2
;
}
else
{
offset
=
(
var
->
yoffset
*
info
->
fix
.
line_length
)
+
(
var
->
xoffset
*
var
->
bits_per_pixel
/
8
);
(
var
->
xoffset
*
info
->
var
.
bits_per_pixel
/
8
);
offset
=
offset
>>
2
;
}
...
...
drivers/video/savage/savagefb_driver.c
View file @
3c470f33
...
...
@@ -1477,15 +1477,9 @@ static void savagefb_set_par_int(struct savagefb_par *par, struct savage_reg *r
vgaHWProtect
(
par
,
0
);
}
static
void
savagefb_update_start
(
struct
savagefb_par
*
par
,
struct
fb_var_screeninfo
*
var
)
static
void
savagefb_update_start
(
struct
savagefb_par
*
par
,
int
base
)
{
int
base
;
base
=
((
var
->
yoffset
*
var
->
xres_virtual
+
(
var
->
xoffset
&
~
1
))
*
((
var
->
bits_per_pixel
+
7
)
/
8
))
>>
2
;
/* now program the start address registers */
/* program the start address registers */
vga_out16
(
0x3d4
,
(
base
&
0x00ff00
)
|
0x0c
,
par
);
vga_out16
(
0x3d4
,
((
base
&
0x00ff
)
<<
8
)
|
0x0d
,
par
);
vga_out8
(
0x3d4
,
0x69
,
par
);
...
...
@@ -1550,8 +1544,12 @@ static int savagefb_pan_display(struct fb_var_screeninfo *var,
struct
fb_info
*
info
)
{
struct
savagefb_par
*
par
=
info
->
par
;
int
base
;
base
=
(
var
->
yoffset
*
info
->
fix
.
line_length
+
(
var
->
xoffset
&
~
1
)
*
((
info
->
var
.
bits_per_pixel
+
7
)
/
8
))
>>
2
;
savagefb_update_start
(
par
,
var
);
savagefb_update_start
(
par
,
base
);
return
0
;
}
...
...
drivers/video/sis/sis_main.c
View file @
3c470f33
...
...
@@ -1333,19 +1333,14 @@ sisfb_set_base_CRT2(struct sis_video_info *ivideo, unsigned int base)
}
static
int
sisfb_pan_var
(
struct
sis_video_info
*
ivideo
,
struct
fb_var_screeninfo
*
var
)
sisfb_pan_var
(
struct
sis_video_info
*
ivideo
,
struct
fb_info
*
info
,
struct
fb_var_screeninfo
*
var
)
{
if
(
var
->
xoffset
>
(
var
->
xres_virtual
-
var
->
xres
))
{
return
-
EINVAL
;
}
if
(
var
->
yoffset
>
(
var
->
yres_virtual
-
var
->
yres
))
{
return
-
EINVAL
;
}
ivideo
->
current_base
=
(
var
->
yoffset
*
var
->
xres_virtual
)
+
var
->
xoffset
;
ivideo
->
current_base
=
var
->
yoffset
*
info
->
var
.
xres_virtual
+
var
->
xoffset
;
/* calculate base bpp dep. */
switch
(
var
->
bits_per_pixel
)
{
switch
(
info
->
var
.
bits_per_pixel
)
{
case
32
:
break
;
case
16
:
...
...
@@ -1635,20 +1630,15 @@ sisfb_pan_display(struct fb_var_screeninfo *var, struct fb_info* info)
struct
sis_video_info
*
ivideo
=
(
struct
sis_video_info
*
)
info
->
par
;
int
err
;
if
(
var
->
xoffset
>
(
var
->
xres_virtual
-
var
->
xres
))
return
-
EINVAL
;
if
(
var
->
yoffset
>
(
var
->
yres_virtual
-
var
->
yres
))
return
-
EINVAL
;
if
(
var
->
vmode
&
FB_VMODE_YWRAP
)
if
(
var
->
vmode
&
FB_VMODE_YWRAP
)
return
-
EINVAL
;
if
(
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
)
if
(
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
if
((
err
=
sisfb_pan_var
(
ivideo
,
var
))
<
0
)
err
=
sisfb_pan_var
(
ivideo
,
info
,
var
);
if
(
err
<
0
)
return
err
;
info
->
var
.
xoffset
=
var
->
xoffset
;
...
...
drivers/video/sm501fb.c
View file @
3c470f33
...
...
@@ -582,7 +582,7 @@ static int sm501fb_pan_crt(struct fb_var_screeninfo *var,
{
struct
sm501fb_par
*
par
=
info
->
par
;
struct
sm501fb_info
*
fbi
=
par
->
info
;
unsigned
int
bytes_pixel
=
var
->
bits_per_pixel
/
8
;
unsigned
int
bytes_pixel
=
info
->
var
.
bits_per_pixel
/
8
;
unsigned
long
reg
;
unsigned
long
xoffs
;
...
...
@@ -614,10 +614,10 @@ static int sm501fb_pan_pnl(struct fb_var_screeninfo *var,
struct
sm501fb_info
*
fbi
=
par
->
info
;
unsigned
long
reg
;
reg
=
var
->
xoffset
|
(
var
->
xres_virtual
<<
16
);
reg
=
var
->
xoffset
|
(
info
->
var
.
xres_virtual
<<
16
);
smc501_writel
(
reg
,
fbi
->
regs
+
SM501_DC_PANEL_FB_WIDTH
);
reg
=
var
->
yoffset
|
(
var
->
yres_virtual
<<
16
);
reg
=
var
->
yoffset
|
(
info
->
var
.
yres_virtual
<<
16
);
smc501_writel
(
reg
,
fbi
->
regs
+
SM501_DC_PANEL_FB_HEIGHT
);
sm501fb_sync_regs
(
fbi
);
...
...
drivers/video/tridentfb.c
View file @
3c470f33
...
...
@@ -987,8 +987,8 @@ static int tridentfb_pan_display(struct fb_var_screeninfo *var,
unsigned
int
offset
;
debug
(
"enter
\n
"
);
offset
=
(
var
->
xoffset
+
(
var
->
yoffset
*
var
->
xres_virtual
))
*
var
->
bits_per_pixel
/
32
;
offset
=
(
var
->
xoffset
+
(
var
->
yoffset
*
info
->
var
.
xres_virtual
))
*
info
->
var
.
bits_per_pixel
/
32
;
set_screen_start
(
par
,
offset
);
debug
(
"exit
\n
"
);
return
0
;
...
...
drivers/video/vfb.c
View file @
3c470f33
...
...
@@ -395,8 +395,8 @@ static int vfb_pan_display(struct fb_var_screeninfo *var,
||
var
->
xoffset
)
return
-
EINVAL
;
}
else
{
if
(
var
->
xoffset
+
var
->
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
var
->
yres
>
info
->
var
.
yres_virtual
)
if
(
var
->
xoffset
+
info
->
var
.
xres
>
info
->
var
.
xres_virtual
||
var
->
yoffset
+
info
->
var
.
yres
>
info
->
var
.
yres_virtual
)
return
-
EINVAL
;
}
info
->
var
.
xoffset
=
var
->
xoffset
;
...
...
drivers/video/vga16fb.c
View file @
3c470f33
...
...
@@ -207,7 +207,7 @@ static void vga16fb_pan_var(struct fb_info *info,
* granularity if someone supports xoffset in bit resolution */
vga_io_r
(
VGA_IS1_RC
);
/* reset flip-flop */
vga_io_w
(
VGA_ATT_IW
,
VGA_ATC_PEL
);
if
(
var
->
bits_per_pixel
==
8
)
if
(
info
->
var
.
bits_per_pixel
==
8
)
vga_io_w
(
VGA_ATT_IW
,
(
xoffset
&
3
)
<<
1
);
else
vga_io_w
(
VGA_ATT_IW
,
xoffset
&
7
);
...
...
drivers/video/vt8500lcdfb.c
View file @
3c470f33
...
...
@@ -210,8 +210,8 @@ static int vt8500lcd_pan_display(struct fb_var_screeninfo *var,
struct
vt8500lcd_info
*
fbi
=
to_vt8500lcd_info
(
info
);
writel
((
1
<<
31
)
|
(((
var
->
xres_virtual
-
var
->
xres
)
*
pixlen
/
4
)
<<
20
)
|
(
off
>>
2
),
fbi
->
regbase
+
0x20
);
|
(((
info
->
var
.
xres_virtual
-
info
->
var
.
xres
)
*
pixlen
/
4
)
<<
20
)
|
(
off
>>
2
),
fbi
->
regbase
+
0x20
);
return
0
;
}
...
...
drivers/video/vt8623fb.c
View file @
3c470f33
...
...
@@ -620,13 +620,14 @@ static int vt8623fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *i
unsigned
int
offset
;
/* Calculate the offset */
if
(
var
->
bits_per_pixel
==
0
)
{
offset
=
(
var
->
yoffset
/
16
)
*
var
->
xres_virtual
+
var
->
xoffset
;
if
(
info
->
var
.
bits_per_pixel
==
0
)
{
offset
=
(
var
->
yoffset
/
16
)
*
info
->
var
.
xres_virtual
+
var
->
xoffset
;
offset
=
offset
>>
3
;
}
else
{
offset
=
(
var
->
yoffset
*
info
->
fix
.
line_length
)
+
(
var
->
xoffset
*
var
->
bits_per_pixel
/
8
);
offset
=
offset
>>
((
var
->
bits_per_pixel
==
4
)
?
2
:
1
);
(
var
->
xoffset
*
info
->
var
.
bits_per_pixel
/
8
);
offset
=
offset
>>
((
info
->
var
.
bits_per_pixel
==
4
)
?
2
:
1
);
}
/* Set the offset */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment