Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
20cdeaf9
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
20cdeaf9
编写于
10月 21, 2013
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/fb: merge more bits and pieces into oclass definitions
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
8613e731
变更
27
隐藏空白更改
内联
并排
Showing
27 changed file
with
272 addition
and
519 deletion
+272
-519
drivers/gpu/drm/nouveau/core/subdev/fb/base.c
drivers/gpu/drm/nouveau/core/subdev/fb/base.c
+2
-0
drivers/gpu/drm/nouveau/core/subdev/fb/nv04.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv04.c
+14
-12
drivers/gpu/drm/nouveau/core/subdev/fb/nv04.h
drivers/gpu/drm/nouveau/core/subdev/fb/nv04.h
+55
-0
drivers/gpu/drm/nouveau/core/subdev/fb/nv10.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv10.c
+12
-32
drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c
+12
-32
drivers/gpu/drm/nouveau/core/subdev/fb/nv20.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv20.c
+13
-33
drivers/gpu/drm/nouveau/core/subdev/fb/nv25.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv25.c
+13
-33
drivers/gpu/drm/nouveau/core/subdev/fb/nv30.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv30.c
+16
-36
drivers/gpu/drm/nouveau/core/subdev/fb/nv35.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv35.c
+13
-33
drivers/gpu/drm/nouveau/core/subdev/fb/nv36.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv36.c
+13
-33
drivers/gpu/drm/nouveau/core/subdev/fb/nv40.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv40.c
+14
-35
drivers/gpu/drm/nouveau/core/subdev/fb/nv41.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv41.c
+14
-35
drivers/gpu/drm/nouveau/core/subdev/fb/nv44.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv44.c
+13
-34
drivers/gpu/drm/nouveau/core/subdev/fb/nv46.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv46.c
+12
-33
drivers/gpu/drm/nouveau/core/subdev/fb/nv47.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv47.c
+13
-34
drivers/gpu/drm/nouveau/core/subdev/fb/nv49.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv49.c
+13
-34
drivers/gpu/drm/nouveau/core/subdev/fb/nv4e.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv4e.c
+12
-32
drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
+2
-2
drivers/gpu/drm/nouveau/core/subdev/fb/nv50.h
drivers/gpu/drm/nouveau/core/subdev/fb/nv50.h
+3
-0
drivers/gpu/drm/nouveau/core/subdev/fb/nv84.c
drivers/gpu/drm/nouveau/core/subdev/fb/nv84.c
+1
-0
drivers/gpu/drm/nouveau/core/subdev/fb/nva3.c
drivers/gpu/drm/nouveau/core/subdev/fb/nva3.c
+1
-0
drivers/gpu/drm/nouveau/core/subdev/fb/nvaa.c
drivers/gpu/drm/nouveau/core/subdev/fb/nvaa.c
+1
-0
drivers/gpu/drm/nouveau/core/subdev/fb/nvaf.c
drivers/gpu/drm/nouveau/core/subdev/fb/nvaf.c
+1
-0
drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c
drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c
+2
-4
drivers/gpu/drm/nouveau/core/subdev/fb/priv.h
drivers/gpu/drm/nouveau/core/subdev/fb/priv.h
+4
-31
drivers/gpu/drm/nouveau/core/subdev/fb/ramnv50.c
drivers/gpu/drm/nouveau/core/subdev/fb/ramnv50.c
+2
-1
drivers/gpu/drm/nouveau/core/subdev/fb/ramnvc0.c
drivers/gpu/drm/nouveau/core/subdev/fb/ramnvc0.c
+1
-0
未找到文件。
drivers/gpu/drm/nouveau/core/subdev/fb/base.c
浏览文件 @
20cdeaf9
...
...
@@ -133,6 +133,8 @@ nouveau_fb_create_(struct nouveau_object *parent, struct nouveau_object *engine,
if
(
ret
)
return
ret
;
pfb
->
memtype_valid
=
impl
->
memtype
;
ret
=
nouveau_object_ctor
(
nv_object
(
pfb
),
nv_object
(
pfb
),
impl
->
ram
,
NULL
,
0
,
&
ram
);
if
(
ret
)
{
...
...
drivers/gpu/drm/nouveau/core/subdev/fb/nv04.c
浏览文件 @
20cdeaf9
...
...
@@ -22,14 +22,10 @@
* Authors: Ben Skeggs
*/
#include "
priv
.h"
#include "
nv04
.h"
#define NV04_PFB_CFG0 0x00100200
struct
nv04_fb_priv
{
struct
nouveau_fb
base
;
};
bool
nv04_fb_memtype_valid
(
struct
nouveau_fb
*
pfb
,
u32
tile_flags
)
{
...
...
@@ -57,11 +53,12 @@ nv04_fb_init(struct nouveau_object *object)
return
0
;
}
static
int
int
nv04_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv04_fb_impl
*
impl
=
(
void
*
)
oclass
;
struct
nv04_fb_priv
*
priv
;
int
ret
;
...
...
@@ -70,18 +67,23 @@ nv04_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
impl
->
tile
.
regions
;
priv
->
base
.
tile
.
init
=
impl
->
tile
.
init
;
priv
->
base
.
tile
.
comp
=
impl
->
tile
.
comp
;
priv
->
base
.
tile
.
fini
=
impl
->
tile
.
fini
;
priv
->
base
.
tile
.
prog
=
impl
->
tile
.
prog
;
return
0
;
}
struct
nouveau_oclass
*
nv04_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x04
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
nv04_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x04
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv04_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv04_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv04_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv04_ram_oclass
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv04.h
0 → 100644
浏览文件 @
20cdeaf9
#ifndef __NVKM_FB_NV04_H__
#define __NVKM_FB_NV04_H__
#include "priv.h"
struct
nv04_fb_priv
{
struct
nouveau_fb
base
;
};
int
nv04_fb_ctor
(
struct
nouveau_object
*
,
struct
nouveau_object
*
,
struct
nouveau_oclass
*
,
void
*
,
u32
,
struct
nouveau_object
**
);
struct
nv04_fb_impl
{
struct
nouveau_fb_impl
base
;
struct
{
int
regions
;
void
(
*
init
)(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
(
*
comp
)(
struct
nouveau_fb
*
,
int
i
,
u32
size
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
(
*
fini
)(
struct
nouveau_fb
*
,
int
i
,
struct
nouveau_fb_tile
*
);
void
(
*
prog
)(
struct
nouveau_fb
*
,
int
i
,
struct
nouveau_fb_tile
*
);
}
tile
;
};
void
nv10_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
nv10_fb_tile_fini
(
struct
nouveau_fb
*
,
int
i
,
struct
nouveau_fb_tile
*
);
void
nv10_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
void
nv20_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
nv20_fb_tile_fini
(
struct
nouveau_fb
*
,
int
i
,
struct
nouveau_fb_tile
*
);
void
nv20_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
int
nv30_fb_init
(
struct
nouveau_object
*
);
void
nv30_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
nv40_fb_tile_comp
(
struct
nouveau_fb
*
,
int
i
,
u32
size
,
u32
flags
,
struct
nouveau_fb_tile
*
);
int
nv41_fb_init
(
struct
nouveau_object
*
);
void
nv41_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
int
nv44_fb_init
(
struct
nouveau_object
*
);
void
nv44_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
void
nv46_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
#endif
drivers/gpu/drm/nouveau/core/subdev/fb/nv10.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv10_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
void
nv10_fb_tile_init
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
...
...
@@ -57,35 +53,19 @@ nv10_fb_tile_prog(struct nouveau_fb *pfb, int i, struct nouveau_fb_tile *tile)
nv_rd32
(
pfb
,
0x100240
+
(
i
*
0x10
));
}
static
int
nv10_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv10_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv10_fb_tile_init
;
priv
->
base
.
tile
.
fini
=
nv10_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv10_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv10_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x10
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
10
_fb_ctor
,
nv10_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x10
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
_nouveau_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv10_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv10_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv10_fb_tile_init
,
.
tile
.
fini
=
nv10_fb_tile_fini
,
.
tile
.
prog
=
nv10_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c
浏览文件 @
20cdeaf9
...
...
@@ -24,41 +24,21 @@
*
*/
#include "priv.h"
struct
nv1a_fb_priv
{
struct
nouveau_fb
base
;
};
static
int
nv1a_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv1a_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv10_fb_tile_init
;
priv
->
base
.
tile
.
fini
=
nv10_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv10_fb_tile_prog
;
return
0
;
}
#include "nv04.h"
struct
nouveau_oclass
*
nv1a_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x1a
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
1a
_fb_ctor
,
nv1a_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x1a
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
_nouveau_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv10_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv10_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv10_fb_tile_init
,
.
tile
.
fini
=
nv10_fb_tile_fini
,
.
tile
.
prog
=
nv10_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv20.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv20_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
void
nv20_fb_tile_init
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
...
...
@@ -80,36 +76,20 @@ nv20_fb_tile_prog(struct nouveau_fb *pfb, int i, struct nouveau_fb_tile *tile)
nv_wr32
(
pfb
,
0x100300
+
(
i
*
0x04
),
tile
->
zcomp
);
}
static
int
nv20_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv20_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv20_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv20_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv20_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv20_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x20
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
20
_fb_ctor
,
nv20_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x20
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
_nouveau_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv20_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv20_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv20_fb_tile_init
,
.
tile
.
comp
=
nv20_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv20_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv25.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv25_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
static
void
nv25_fb_tile_comp
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
size
,
u32
flags
,
...
...
@@ -46,36 +42,20 @@ nv25_fb_tile_comp(struct nouveau_fb *pfb, int i, u32 size, u32 flags,
}
}
static
int
nv25_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv25_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv20_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv25_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv20_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv25_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x25
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
25
_fb_ctor
,
nv25_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x25
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
_nouveau_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv20_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv20_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv20_fb_tile_init
,
.
tile
.
comp
=
nv25_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv20_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv30.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv30_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
void
nv30_fb_tile_init
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
...
...
@@ -67,7 +63,7 @@ nv30_fb_tile_comp(struct nouveau_fb *pfb, int i, u32 size, u32 flags,
}
static
int
calc_bias
(
struct
nv
30
_fb_priv
*
priv
,
int
k
,
int
i
,
int
j
)
calc_bias
(
struct
nv
04
_fb_priv
*
priv
,
int
k
,
int
i
,
int
j
)
{
struct
nouveau_device
*
device
=
nv_device
(
priv
);
int
b
=
(
device
->
chipset
>
0x30
?
...
...
@@ -78,7 +74,7 @@ calc_bias(struct nv30_fb_priv *priv, int k, int i, int j)
}
static
int
calc_ref
(
struct
nv
30
_fb_priv
*
priv
,
int
l
,
int
k
,
int
i
)
calc_ref
(
struct
nv
04
_fb_priv
*
priv
,
int
l
,
int
k
,
int
i
)
{
int
j
,
x
=
0
;
...
...
@@ -95,7 +91,7 @@ int
nv30_fb_init
(
struct
nouveau_object
*
object
)
{
struct
nouveau_device
*
device
=
nv_device
(
object
);
struct
nv
30
_fb_priv
*
priv
=
(
void
*
)
object
;
struct
nv
04
_fb_priv
*
priv
=
(
void
*
)
object
;
int
ret
,
i
,
j
;
ret
=
nouveau_fb_init
(
&
priv
->
base
);
...
...
@@ -124,36 +120,20 @@ nv30_fb_init(struct nouveau_object *object)
return
0
;
}
static
int
nv30_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv30_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv30_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv30_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv20_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv30_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x30
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
30
_fb_ctor
,
nv30_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x30
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv30_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv20_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv20_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv30_fb_tile_init
,
.
tile
.
comp
=
nv30_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv20_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv35.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv35_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
static
void
nv35_fb_tile_comp
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
size
,
u32
flags
,
...
...
@@ -47,36 +43,20 @@ nv35_fb_tile_comp(struct nouveau_fb *pfb, int i, u32 size, u32 flags,
}
}
static
int
nv35_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv35_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv30_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv35_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv20_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv35_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x35
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
35
_fb_ctor
,
nv35_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x35
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv30_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv20_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv20_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv30_fb_tile_init
,
.
tile
.
comp
=
nv35_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv20_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv36.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv36_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
static
void
nv36_fb_tile_comp
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
size
,
u32
flags
,
...
...
@@ -47,36 +43,20 @@ nv36_fb_tile_comp(struct nouveau_fb *pfb, int i, u32 size, u32 flags,
}
}
static
int
nv36_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv36_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv30_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv36_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv20_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv36_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x36
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
36
_fb_ctor
,
nv36_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x36
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv30_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv20_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv20_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv30_fb_tile_init
,
.
tile
.
comp
=
nv36_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv20_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv40.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv40_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
void
nv40_fb_tile_comp
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
size
,
u32
flags
,
...
...
@@ -50,7 +46,7 @@ nv40_fb_tile_comp(struct nouveau_fb *pfb, int i, u32 size, u32 flags,
static
int
nv40_fb_init
(
struct
nouveau_object
*
object
)
{
struct
nv
40
_fb_priv
*
priv
=
(
void
*
)
object
;
struct
nv
04
_fb_priv
*
priv
=
(
void
*
)
object
;
int
ret
;
ret
=
nouveau_fb_init
(
&
priv
->
base
);
...
...
@@ -61,37 +57,20 @@ nv40_fb_init(struct nouveau_object *object)
return
0
;
}
static
int
nv40_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv40_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
8
;
priv
->
base
.
tile
.
init
=
nv30_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv40_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv20_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv40_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x40
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
40
_fb_ctor
,
nv40_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x40
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv40_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv40_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv40_ram_oclass
,
.
tile
.
regions
=
8
,
.
tile
.
init
=
nv30_fb_tile_init
,
.
tile
.
comp
=
nv40_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv20_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv41.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv41_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
void
nv41_fb_tile_prog
(
struct
nouveau_fb
*
pfb
,
int
i
,
struct
nouveau_fb_tile
*
tile
)
...
...
@@ -43,7 +39,7 @@ nv41_fb_tile_prog(struct nouveau_fb *pfb, int i, struct nouveau_fb_tile *tile)
int
nv41_fb_init
(
struct
nouveau_object
*
object
)
{
struct
nv
41
_fb_priv
*
priv
=
(
void
*
)
object
;
struct
nv
04
_fb_priv
*
priv
=
(
void
*
)
object
;
int
ret
;
ret
=
nouveau_fb_init
(
&
priv
->
base
);
...
...
@@ -54,37 +50,20 @@ nv41_fb_init(struct nouveau_object *object)
return
0
;
}
static
int
nv41_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv41_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
12
;
priv
->
base
.
tile
.
init
=
nv30_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv40_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv41_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv41_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x41
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
41
_fb_ctor
,
nv41_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x41
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv41_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv41_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv41_ram_oclass
,
.
tile
.
regions
=
12
,
.
tile
.
init
=
nv30_fb_tile_init
,
.
tile
.
comp
=
nv40_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv41_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv44.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv44_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
static
void
nv44_fb_tile_init
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
...
...
@@ -52,7 +48,7 @@ nv44_fb_tile_prog(struct nouveau_fb *pfb, int i, struct nouveau_fb_tile *tile)
int
nv44_fb_init
(
struct
nouveau_object
*
object
)
{
struct
nv
4
4_fb_priv
*
priv
=
(
void
*
)
object
;
struct
nv
0
4_fb_priv
*
priv
=
(
void
*
)
object
;
int
ret
;
ret
=
nouveau_fb_init
(
&
priv
->
base
);
...
...
@@ -64,36 +60,19 @@ nv44_fb_init(struct nouveau_object *object)
return
0
;
}
static
int
nv44_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv44_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
12
;
priv
->
base
.
tile
.
init
=
nv44_fb_tile_init
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv44_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv44_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x44
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
4
4_fb_ctor
,
nv44_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x44
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
0
4_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv44_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv44_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv44_ram_oclass
,
.
tile
.
regions
=
12
,
.
tile
.
init
=
nv44_fb_tile_init
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv44_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv46.c
浏览文件 @
20cdeaf9
...
...
@@ -24,11 +24,7 @@
*
*/
#include "priv.h"
struct
nv46_fb_priv
{
struct
nouveau_fb
base
;
};
#include "nv04.h"
void
nv46_fb_tile_init
(
struct
nouveau_fb
*
pfb
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
...
...
@@ -44,36 +40,19 @@ nv46_fb_tile_init(struct nouveau_fb *pfb, int i, u32 addr, u32 size, u32 pitch,
tile
->
pitch
=
pitch
;
}
static
int
nv46_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv46_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
15
;
priv
->
base
.
tile
.
init
=
nv46_fb_tile_init
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv44_fb_tile_prog
;
return
0
;
}
struct
nouveau_oclass
*
nv46_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x46
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
46
_fb_ctor
,
nv46_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x46
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv44_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv44_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv44_ram_oclass
,
.
tile
.
regions
=
15
,
.
tile
.
init
=
nv46_fb_tile_init
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv44_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv47.c
浏览文件 @
20cdeaf9
...
...
@@ -24,43 +24,22 @@
*
*/
#include "priv.h"
struct
nv47_fb_priv
{
struct
nouveau_fb
base
;
};
static
int
nv47_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv47_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
15
;
priv
->
base
.
tile
.
init
=
nv30_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv40_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv41_fb_tile_prog
;
return
0
;
}
#include "nv04.h"
struct
nouveau_oclass
*
nv47_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x47
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
47
_fb_ctor
,
nv47_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x47
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv41_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv41_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv41_ram_oclass
,
.
tile
.
regions
=
15
,
.
tile
.
init
=
nv30_fb_tile_init
,
.
tile
.
comp
=
nv40_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv41_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv49.c
浏览文件 @
20cdeaf9
...
...
@@ -24,43 +24,22 @@
*
*/
#include "priv.h"
struct
nv49_fb_priv
{
struct
nouveau_fb
base
;
};
static
int
nv49_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv49_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
15
;
priv
->
base
.
tile
.
init
=
nv30_fb_tile_init
;
priv
->
base
.
tile
.
comp
=
nv40_fb_tile_comp
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv41_fb_tile_prog
;
return
0
;
}
#include "nv04.h"
struct
nouveau_oclass
*
nv49_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x49
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
49
_fb_ctor
,
nv49_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x49
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv41_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv49_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv49_ram_oclass
,
.
tile
.
regions
=
15
,
.
tile
.
init
=
nv30_fb_tile_init
,
.
tile
.
comp
=
nv40_fb_tile_comp
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv41_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv4e.c
浏览文件 @
20cdeaf9
...
...
@@ -24,41 +24,21 @@
*
*/
#include "priv.h"
struct
nv4e_fb_priv
{
struct
nouveau_fb
base
;
};
static
int
nv4e_fb_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv4e_fb_priv
*
priv
;
int
ret
;
ret
=
nouveau_fb_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nv04_fb_memtype_valid
;
priv
->
base
.
tile
.
regions
=
12
;
priv
->
base
.
tile
.
init
=
nv46_fb_tile_init
;
priv
->
base
.
tile
.
fini
=
nv20_fb_tile_fini
;
priv
->
base
.
tile
.
prog
=
nv44_fb_tile_prog
;
return
0
;
}
#include "nv04.h"
struct
nouveau_oclass
*
nv4e_fb_oclass
=
&
(
struct
n
ouveau
_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x4e
),
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
4e
_fb_ctor
,
nv4e_fb_oclass
=
&
(
struct
n
v04
_fb_impl
)
{
.
base
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0x4e
),
.
base
.
base
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv
04
_fb_ctor
,
.
dtor
=
_nouveau_fb_dtor
,
.
init
=
nv44_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
ram
=
&
nv4e_ram_oclass
,
}.
base
;
.
base
.
memtype
=
nv04_fb_memtype_valid
,
.
base
.
ram
=
&
nv4e_ram_oclass
,
.
tile
.
regions
=
12
,
.
tile
.
init
=
nv46_fb_tile_init
,
.
tile
.
fini
=
nv20_fb_tile_fini
,
.
tile
.
prog
=
nv44_fb_tile_prog
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv50.c
浏览文件 @
20cdeaf9
...
...
@@ -43,7 +43,7 @@ nv50_fb_memtype[0x80] = {
1
,
0
,
2
,
0
,
1
,
0
,
2
,
0
,
1
,
1
,
2
,
2
,
1
,
1
,
0
,
0
};
static
bool
bool
nv50_fb_memtype_valid
(
struct
nouveau_fb
*
pfb
,
u32
memtype
)
{
return
nv50_fb_memtype
[(
memtype
&
0xff00
)
>>
8
]
!=
0
;
...
...
@@ -259,7 +259,6 @@ nv50_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
nv_warn
(
priv
,
"failed 0x100c08 page alloc
\n
"
);
}
priv
->
base
.
memtype_valid
=
nv50_fb_memtype_valid
;
nv_subdev
(
priv
)
->
intr
=
nv50_fb_intr
;
return
0
;
}
...
...
@@ -311,6 +310,7 @@ nv50_fb_oclass = &(struct nv50_fb_impl) {
.
init
=
nv50_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
base
.
memtype
=
nv50_fb_memtype_valid
,
.
base
.
ram
=
&
nv50_ram_oclass
,
.
trap
=
0x000707ff
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nv50.h
浏览文件 @
20cdeaf9
...
...
@@ -20,4 +20,7 @@ struct nv50_fb_impl {
u32
trap
;
};
void
__nv50_ram_put
(
struct
nouveau_fb
*
,
struct
nouveau_mem
*
);
extern
int
nv50_fb_memtype
[
0x80
];
#endif
drivers/gpu/drm/nouveau/core/subdev/fb/nv84.c
浏览文件 @
20cdeaf9
...
...
@@ -33,6 +33,7 @@ nv84_fb_oclass = &(struct nv50_fb_impl) {
.
init
=
nv50_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
base
.
memtype
=
nv50_fb_memtype_valid
,
.
base
.
ram
=
&
nv50_ram_oclass
,
.
trap
=
0x001d07ff
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nva3.c
浏览文件 @
20cdeaf9
...
...
@@ -33,6 +33,7 @@ nva3_fb_oclass = &(struct nv50_fb_impl) {
.
init
=
nv50_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
base
.
memtype
=
nv50_fb_memtype_valid
,
.
base
.
ram
=
&
nv50_ram_oclass
,
.
trap
=
0x000d0fff
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nvaa.c
浏览文件 @
20cdeaf9
...
...
@@ -33,6 +33,7 @@ nvaa_fb_oclass = &(struct nv50_fb_impl) {
.
init
=
nv50_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
base
.
memtype
=
nv50_fb_memtype_valid
,
.
base
.
ram
=
&
nv50_ram_oclass
,
.
trap
=
0x001d07ff
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nvaf.c
浏览文件 @
20cdeaf9
...
...
@@ -33,6 +33,7 @@ nvaf_fb_oclass = &(struct nv50_fb_impl) {
.
init
=
nv50_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
base
.
memtype
=
nv50_fb_memtype_valid
,
.
base
.
ram
=
&
nv50_ram_oclass
,
.
trap
=
0x089d1fff
,
}.
base
.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/nvc0.c
浏览文件 @
20cdeaf9
...
...
@@ -22,7 +22,7 @@
* Authors: Ben Skeggs
*/
#include "
priv
.h"
#include "
nv04
.h"
struct
nvc0_fb_priv
{
struct
nouveau_fb
base
;
...
...
@@ -83,8 +83,6 @@ nvc0_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
if
(
ret
)
return
ret
;
priv
->
base
.
memtype_valid
=
nvc0_fb_memtype_valid
;
priv
->
r100c10_page
=
alloc_page
(
GFP_KERNEL
|
__GFP_ZERO
);
if
(
priv
->
r100c10_page
)
{
priv
->
r100c10
=
pci_map_page
(
device
->
pdev
,
priv
->
r100c10_page
,
...
...
@@ -97,7 +95,6 @@ nvc0_fb_ctor(struct nouveau_object *parent, struct nouveau_object *engine,
return
0
;
}
struct
nouveau_oclass
*
nvc0_fb_oclass
=
&
(
struct
nouveau_fb_impl
)
{
.
base
.
handle
=
NV_SUBDEV
(
FB
,
0xc0
),
...
...
@@ -107,5 +104,6 @@ nvc0_fb_oclass = &(struct nouveau_fb_impl) {
.
init
=
nvc0_fb_init
,
.
fini
=
_nouveau_fb_fini
,
},
.
memtype
=
nvc0_fb_memtype_valid
,
.
ram
=
&
nvc0_ram_oclass
,
}.
base
;
drivers/gpu/drm/nouveau/core/subdev/fb/priv.h
浏览文件 @
20cdeaf9
...
...
@@ -54,40 +54,13 @@ int _nouveau_fb_fini(struct nouveau_object *, bool);
struct
nouveau_fb_impl
{
struct
nouveau_oclass
base
;
struct
nouveau_oclass
*
ram
;
bool
(
*
memtype
)(
struct
nouveau_fb
*
,
u32
);
};
struct
nouveau_bios
;
int
nouveau_fb_bios_memtype
(
struct
nouveau_bios
*
);
bool
nv04_fb_memtype_valid
(
struct
nouveau_fb
*
,
u32
memtype
);
bool
nv50_fb_memtype_valid
(
struct
nouveau_fb
*
,
u32
memtype
);
void
nv10_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
nv10_fb_tile_fini
(
struct
nouveau_fb
*
,
int
i
,
struct
nouveau_fb_tile
*
);
void
nv10_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
void
nv20_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
nv20_fb_tile_fini
(
struct
nouveau_fb
*
,
int
i
,
struct
nouveau_fb_tile
*
);
void
nv20_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
int
nv30_fb_init
(
struct
nouveau_object
*
);
void
nv30_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
nv40_fb_tile_comp
(
struct
nouveau_fb
*
,
int
i
,
u32
size
,
u32
flags
,
struct
nouveau_fb_tile
*
);
int
nv41_fb_init
(
struct
nouveau_object
*
);
void
nv41_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
int
nv44_fb_init
(
struct
nouveau_object
*
);
void
nv44_fb_tile_prog
(
struct
nouveau_fb
*
,
int
,
struct
nouveau_fb_tile
*
);
void
nv46_fb_tile_init
(
struct
nouveau_fb
*
,
int
i
,
u32
addr
,
u32
size
,
u32
pitch
,
u32
flags
,
struct
nouveau_fb_tile
*
);
void
__nv50_ram_put
(
struct
nouveau_fb
*
,
struct
nouveau_mem
*
);
extern
int
nv50_fb_memtype
[
0x80
];
struct
nouveau_bios
;
int
nouveau_fb_bios_memtype
(
struct
nouveau_bios
*
);
#endif
drivers/gpu/drm/nouveau/core/subdev/fb/ramnv50.c
浏览文件 @
20cdeaf9
...
...
@@ -24,7 +24,8 @@
#include <subdev/bios.h>
#include <core/mm.h>
#include "priv.h"
#include "nv50.h"
void
__nv50_ram_put
(
struct
nouveau_fb
*
pfb
,
struct
nouveau_mem
*
mem
)
...
...
drivers/gpu/drm/nouveau/core/subdev/fb/ramnvc0.c
浏览文件 @
20cdeaf9
...
...
@@ -26,6 +26,7 @@
#include <subdev/ltcg.h>
#include "priv.h"
#include "nv50.h"
extern
const
u8
nvc0_pte_storage_type_map
[
256
];
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录