Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
8280eb8a
Commit
8280eb8a
authored
Jan 04, 2009
by
Geert Uytterhoeven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fbdev: c2p - Correct indentation
Signed-off-by:
Geert Uytterhoeven
<
geert@linux-m68k.org
>
parent
74511413
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
120 additions
and
118 deletions
+120
-118
drivers/video/c2p.c
drivers/video/c2p.c
+120
-118
No files found.
drivers/video/c2p.c
View file @
8280eb8a
...
...
@@ -21,71 +21,71 @@
* Basic transpose step
*/
#define _transp(d, i1, i2, shift, mask) \
do {
\
u32 t = (d[i1] ^ (d[i2] >> shift)) & mask; \
d[i1] ^= t; \
d[i2] ^= t << shift; \
} while (0)
#define _transp(d, i1, i2, shift, mask)
\
do {
\
u32 t = (d[i1] ^ (d[i2] >> shift)) & mask; \
d[i1] ^= t; \
d[i2] ^= t << shift; \
} while (0)
static
inline
u32
get_mask
(
int
n
)
{
switch
(
n
)
{
switch
(
n
)
{
case
1
:
return
0x55555555
;
break
;
return
0x55555555
;
break
;
case
2
:
return
0x33333333
;
break
;
return
0x33333333
;
break
;
case
4
:
return
0x0f0f0f0f
;
break
;
return
0x0f0f0f0f
;
break
;
case
8
:
return
0x00ff00ff
;
break
;
return
0x00ff00ff
;
break
;
case
16
:
return
0x0000ffff
;
break
;
}
return
0
;
return
0x0000ffff
;
break
;
}
return
0
;
}
#define transp_nx1(d, n) \
do {
\
u32 mask = get_mask(n); \
/* First block */
\
_transp(d, 0, 1, n, mask); \
/* Second block */
\
_transp(d, 2, 3, n, mask); \
/* Third block */
\
_transp(d, 4, 5, n, mask); \
/* Fourth block */
\
_transp(d, 6, 7, n, mask); \
} while (0)
#define transp_nx2(d, n) \
do {
\
u32 mask = get_mask(n); \
/* First block */
\
_transp(d, 0, 2, n, mask); \
_transp(d, 1, 3, n, mask); \
/* Second block */
\
_transp(d, 4, 6, n, mask); \
_transp(d, 5, 7, n, mask); \
} while (0)
#define transp_nx4(d, n) \
do {
\
u32 mask = get_mask(n); \
_transp(d, 0, 4, n, mask); \
_transp(d, 1, 5, n, mask); \
_transp(d, 2, 6, n, mask); \
_transp(d, 3, 7, n, mask); \
} while (0)
#define transp_nx1(d, n)
\
do {
\
u32 mask = get_mask(n); \
/* First block */
\
_transp(d, 0, 1, n, mask); \
/* Second block */
\
_transp(d, 2, 3, n, mask); \
/* Third block */
\
_transp(d, 4, 5, n, mask); \
/* Fourth block */
\
_transp(d, 6, 7, n, mask); \
} while (0)
#define transp_nx2(d, n)
\
do {
\
u32 mask = get_mask(n); \
/* First block */
\
_transp(d, 0, 2, n, mask); \
_transp(d, 1, 3, n, mask); \
/* Second block */
\
_transp(d, 4, 6, n, mask); \
_transp(d, 5, 7, n, mask); \
} while (0)
#define transp_nx4(d, n)
\
do {
\
u32 mask = get_mask(n); \
_transp(d, 0, 4, n, mask); \
_transp(d, 1, 5, n, mask); \
_transp(d, 2, 6, n, mask); \
_transp(d, 3, 7, n, mask); \
} while (0)
#define transp(d, n, m) transp_nx ## m(d, n)
...
...
@@ -99,11 +99,11 @@ static inline u32 get_mask(int n)
static
void
c2p_8bpp
(
u32
d
[
8
])
{
transp
(
d
,
16
,
4
);
transp
(
d
,
8
,
2
);
transp
(
d
,
4
,
1
);
transp
(
d
,
2
,
4
);
transp
(
d
,
1
,
2
);
transp
(
d
,
16
,
4
);
transp
(
d
,
8
,
2
);
transp
(
d
,
4
,
1
);
transp
(
d
,
2
,
4
);
transp
(
d
,
1
,
2
);
}
...
...
@@ -132,10 +132,10 @@ static inline unsigned long comp(unsigned long a, unsigned long b,
static
inline
void
store_planar
(
char
*
dst
,
u32
dst_inc
,
u32
bpp
,
u32
d
[
8
])
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
bpp
;
i
++
,
dst
+=
dst_inc
)
*
(
u32
*
)
dst
=
d
[
perm_c2p_8bpp
[
i
]];
for
(
i
=
0
;
i
<
bpp
;
i
++
,
dst
+=
dst_inc
)
*
(
u32
*
)
dst
=
d
[
perm_c2p_8bpp
[
i
]];
}
...
...
@@ -146,10 +146,10 @@ static inline void store_planar(char *dst, u32 dst_inc, u32 bpp, u32 d[8])
static
inline
void
store_planar_masked
(
char
*
dst
,
u32
dst_inc
,
u32
bpp
,
u32
d
[
8
],
u32
mask
)
{
int
i
;
int
i
;
for
(
i
=
0
;
i
<
bpp
;
i
++
,
dst
+=
dst_inc
)
*
(
u32
*
)
dst
=
comp
(
d
[
perm_c2p_8bpp
[
i
]],
*
(
u32
*
)
dst
,
mask
);
for
(
i
=
0
;
i
<
bpp
;
i
++
,
dst
+=
dst_inc
)
*
(
u32
*
)
dst
=
comp
(
d
[
perm_c2p_8bpp
[
i
]],
*
(
u32
*
)
dst
,
mask
);
}
...
...
@@ -169,63 +169,65 @@ static inline void store_planar_masked(char *dst, u32 dst_inc, u32 bpp,
void
c2p
(
u8
*
dst
,
const
u8
*
src
,
u32
dx
,
u32
dy
,
u32
width
,
u32
height
,
u32
dst_nextline
,
u32
dst_nextplane
,
u32
src_nextline
,
u32
bpp
)
{
int
dst_idx
;
u32
d
[
8
],
first
,
last
,
w
;
const
u8
*
c
;
u8
*
p
;
dst
+=
dy
*
dst_nextline
+
(
dx
&
~
31
);
dst_idx
=
dx
%
32
;
first
=
~
0UL
>>
dst_idx
;
last
=
~
(
~
0UL
>>
((
dst_idx
+
width
)
%
32
));
while
(
height
--
)
{
c
=
src
;
p
=
dst
;
w
=
width
;
if
(
dst_idx
+
width
<=
32
)
{
/* Single destination word */
first
&=
last
;
memset
(
d
,
0
,
sizeof
(
d
));
memcpy
((
u8
*
)
d
+
dst_idx
,
c
,
width
);
c
+=
width
;
c2p_8bpp
(
d
);
store_planar_masked
(
p
,
dst_nextplane
,
bpp
,
d
,
first
);
p
+=
4
;
}
else
{
/* Multiple destination words */
w
=
width
;
/* Leading bits */
if
(
dst_idx
)
{
w
=
32
-
dst_idx
;
memset
(
d
,
0
,
dst_idx
);
memcpy
((
u8
*
)
d
+
dst_idx
,
c
,
w
);
c
+=
w
;
c2p_8bpp
(
d
);
store_planar_masked
(
p
,
dst_nextplane
,
bpp
,
d
,
first
);
p
+=
4
;
w
=
width
-
w
;
}
/* Main chunk */
while
(
w
>=
32
)
{
memcpy
(
d
,
c
,
32
);
c
+=
32
;
c2p_8bpp
(
d
);
store_planar
(
p
,
dst_nextplane
,
bpp
,
d
);
p
+=
4
;
w
-=
32
;
}
/* Trailing bits */
w
%=
32
;
if
(
w
>
0
)
{
memcpy
(
d
,
c
,
w
);
memset
((
u8
*
)
d
+
w
,
0
,
32
-
w
);
c2p_8bpp
(
d
);
store_planar_masked
(
p
,
dst_nextplane
,
bpp
,
d
,
last
);
}
int
dst_idx
;
u32
d
[
8
],
first
,
last
,
w
;
const
u8
*
c
;
u8
*
p
;
dst
+=
dy
*
dst_nextline
+
(
dx
&
~
31
);
dst_idx
=
dx
%
32
;
first
=
~
0UL
>>
dst_idx
;
last
=
~
(
~
0UL
>>
((
dst_idx
+
width
)
%
32
));
while
(
height
--
)
{
c
=
src
;
p
=
dst
;
w
=
width
;
if
(
dst_idx
+
width
<=
32
)
{
/* Single destination word */
first
&=
last
;
memset
(
d
,
0
,
sizeof
(
d
));
memcpy
((
u8
*
)
d
+
dst_idx
,
c
,
width
);
c
+=
width
;
c2p_8bpp
(
d
);
store_planar_masked
(
p
,
dst_nextplane
,
bpp
,
d
,
first
);
p
+=
4
;
}
else
{
/* Multiple destination words */
w
=
width
;
/* Leading bits */
if
(
dst_idx
)
{
w
=
32
-
dst_idx
;
memset
(
d
,
0
,
dst_idx
);
memcpy
((
u8
*
)
d
+
dst_idx
,
c
,
w
);
c
+=
w
;
c2p_8bpp
(
d
);
store_planar_masked
(
p
,
dst_nextplane
,
bpp
,
d
,
first
);
p
+=
4
;
w
=
width
-
w
;
}
/* Main chunk */
while
(
w
>=
32
)
{
memcpy
(
d
,
c
,
32
);
c
+=
32
;
c2p_8bpp
(
d
);
store_planar
(
p
,
dst_nextplane
,
bpp
,
d
);
p
+=
4
;
w
-=
32
;
}
/* Trailing bits */
w
%=
32
;
if
(
w
>
0
)
{
memcpy
(
d
,
c
,
w
);
memset
((
u8
*
)
d
+
w
,
0
,
32
-
w
);
c2p_8bpp
(
d
);
store_planar_masked
(
p
,
dst_nextplane
,
bpp
,
d
,
last
);
}
}
src
+=
src_nextline
;
dst
+=
dst_nextline
;
}
src
+=
src_nextline
;
dst
+=
dst_nextline
;
}
}
EXPORT_SYMBOL_GPL
(
c2p
);
...
...
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