Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
7d9115de
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看板
提交
7d9115de
编写于
7月 11, 2012
作者:
B
Ben Skeggs
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
drm/nouveau/mc: port to subdev interfaces
Signed-off-by:
N
Ben Skeggs
<
bskeggs@redhat.com
>
上级
cb75d97e
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
543 addition
and
118 deletion
+543
-118
drivers/gpu/drm/nouveau/Makefile
drivers/gpu/drm/nouveau/Makefile
+4
-1
drivers/gpu/drm/nouveau/core/include/subdev/mc.h
drivers/gpu/drm/nouveau/core/include/subdev/mc.h
+49
-0
drivers/gpu/drm/nouveau/core/subdev/device/nv04.c
drivers/gpu/drm/nouveau/core/subdev/device/nv04.c
+3
-0
drivers/gpu/drm/nouveau/core/subdev/device/nv10.c
drivers/gpu/drm/nouveau/core/subdev/device/nv10.c
+9
-0
drivers/gpu/drm/nouveau/core/subdev/device/nv20.c
drivers/gpu/drm/nouveau/core/subdev/device/nv20.c
+5
-0
drivers/gpu/drm/nouveau/core/subdev/device/nv30.c
drivers/gpu/drm/nouveau/core/subdev/device/nv30.c
+6
-0
drivers/gpu/drm/nouveau/core/subdev/device/nv40.c
drivers/gpu/drm/nouveau/core/subdev/device/nv40.c
+17
-0
drivers/gpu/drm/nouveau/core/subdev/device/nv50.c
drivers/gpu/drm/nouveau/core/subdev/device/nv50.c
+15
-0
drivers/gpu/drm/nouveau/core/subdev/device/nvc0.c
drivers/gpu/drm/nouveau/core/subdev/device/nvc0.c
+9
-0
drivers/gpu/drm/nouveau/core/subdev/device/nve0.c
drivers/gpu/drm/nouveau/core/subdev/device/nve0.c
+3
-0
drivers/gpu/drm/nouveau/core/subdev/mc/base.c
drivers/gpu/drm/nouveau/core/subdev/mc/base.c
+49
-0
drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c
drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c
+74
-15
drivers/gpu/drm/nouveau/core/subdev/mc/nv40.c
drivers/gpu/drm/nouveau/core/subdev/mc/nv40.c
+0
-28
drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c
drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c
+74
-0
drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c
drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c
+66
-26
drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c
drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c
+73
-0
drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c
drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c
+73
-0
drivers/gpu/drm/nouveau/nouveau_compat.c
drivers/gpu/drm/nouveau/nouveau_compat.c
+9
-0
drivers/gpu/drm/nouveau/nouveau_compat.h
drivers/gpu/drm/nouveau/nouveau_compat.h
+2
-0
drivers/gpu/drm/nouveau/nouveau_drv.c
drivers/gpu/drm/nouveau/nouveau_drv.c
+0
-1
drivers/gpu/drm/nouveau/nouveau_drv.h
drivers/gpu/drm/nouveau/nouveau_drv.h
+0
-18
drivers/gpu/drm/nouveau/nouveau_irq.c
drivers/gpu/drm/nouveau/nouveau_irq.c
+2
-2
drivers/gpu/drm/nouveau/nouveau_state.c
drivers/gpu/drm/nouveau/nouveau_state.c
+1
-27
未找到文件。
drivers/gpu/drm/nouveau/Makefile
浏览文件 @
7d9115de
...
@@ -69,9 +69,12 @@ nouveau-y += core/subdev/i2c/bit.o
...
@@ -69,9 +69,12 @@ nouveau-y += core/subdev/i2c/bit.o
nouveau-y
+=
core/subdev/instmem/nv04.o
nouveau-y
+=
core/subdev/instmem/nv04.o
nouveau-y
+=
core/subdev/instmem/nv50.o
nouveau-y
+=
core/subdev/instmem/nv50.o
nouveau-y
+=
core/subdev/instmem/nvc0.o
nouveau-y
+=
core/subdev/instmem/nvc0.o
nouveau-y
+=
core/subdev/mc/base.o
nouveau-y
+=
core/subdev/mc/nv04.o
nouveau-y
+=
core/subdev/mc/nv04.o
nouveau-y
+=
core/subdev/mc/nv4
0
.o
nouveau-y
+=
core/subdev/mc/nv4
4
.o
nouveau-y
+=
core/subdev/mc/nv50.o
nouveau-y
+=
core/subdev/mc/nv50.o
nouveau-y
+=
core/subdev/mc/nv98.o
nouveau-y
+=
core/subdev/mc/nvc0.o
nouveau-y
+=
core/subdev/timer/nv04.o
nouveau-y
+=
core/subdev/timer/nv04.o
nouveau-y
+=
core/subdev/vm/base.o
nouveau-y
+=
core/subdev/vm/base.o
nouveau-y
+=
core/subdev/vm/nv50.o
nouveau-y
+=
core/subdev/vm/nv50.o
...
...
drivers/gpu/drm/nouveau/core/include/subdev/mc.h
0 → 100644
浏览文件 @
7d9115de
#ifndef __NOUVEAU_MC_H__
#define __NOUVEAU_MC_H__
#include <core/subdev.h>
#include <core/device.h>
struct
nouveau_mc_intr
{
u32
stat
;
u32
unit
;
};
struct
nouveau_mc
{
struct
nouveau_subdev
base
;
const
struct
nouveau_mc_intr
*
intr_map
;
};
static
inline
struct
nouveau_mc
*
nouveau_mc
(
void
*
obj
)
{
return
(
void
*
)
nv_device
(
obj
)
->
subdev
[
NVDEV_SUBDEV_MC
];
}
#define nouveau_mc_create(p,e,o,d) \
nouveau_subdev_create_((p), (e), (o), 0, "PMC", "master", \
sizeof(**d), (void **)d)
#define nouveau_mc_destroy(p) \
nouveau_subdev_destroy(&(p)->base)
#define nouveau_mc_init(p) \
nouveau_subdev_init(&(p)->base)
#define nouveau_mc_fini(p,s) \
nouveau_subdev_fini(&(p)->base, (s))
#define _nouveau_mc_dtor _nouveau_subdev_dtor
#define _nouveau_mc_init _nouveau_subdev_init
#define _nouveau_mc_fini _nouveau_subdev_fini
extern
struct
nouveau_oclass
nv04_mc_oclass
;
extern
struct
nouveau_oclass
nv44_mc_oclass
;
extern
struct
nouveau_oclass
nv50_mc_oclass
;
extern
struct
nouveau_oclass
nv98_mc_oclass
;
extern
struct
nouveau_oclass
nvc0_mc_oclass
;
void
nouveau_mc_intr
(
struct
nouveau_subdev
*
);
extern
const
struct
nouveau_mc_intr
nv04_mc_intr
[];
int
nv04_mc_init
(
struct
nouveau_object
*
);
int
nv50_mc_init
(
struct
nouveau_object
*
);
#endif
drivers/gpu/drm/nouveau/core/subdev/device/nv04.c
浏览文件 @
7d9115de
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nv04_identify
(
struct
nouveau_device
*
device
)
nv04_identify
(
struct
nouveau_device
*
device
)
...
@@ -37,12 +38,14 @@ nv04_identify(struct nouveau_device *device)
...
@@ -37,12 +38,14 @@ nv04_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv04_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv04_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x05
:
case
0x05
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv05_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv05_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown RIVA chipset
\n
"
);
nv_fatal
(
device
,
"unknown RIVA chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/device/nv10.c
浏览文件 @
7d9115de
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nv10_identify
(
struct
nouveau_device
*
device
)
nv10_identify
(
struct
nouveau_device
*
device
)
...
@@ -39,6 +40,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -39,6 +40,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x15
:
case
0x15
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -46,6 +48,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -46,6 +48,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x16
:
case
0x16
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -53,6 +56,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -53,6 +56,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x1a
:
case
0x1a
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -60,6 +64,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -60,6 +64,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x11
:
case
0x11
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -67,6 +72,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -67,6 +72,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x17
:
case
0x17
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -74,6 +80,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -74,6 +80,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x1f
:
case
0x1f
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -81,6 +88,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -81,6 +88,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x18
:
case
0x18
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -88,6 +96,7 @@ nv10_identify(struct nouveau_device *device)
...
@@ -88,6 +96,7 @@ nv10_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown Celsius chipset
\n
"
);
nv_fatal
(
device
,
"unknown Celsius chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/device/nv20.c
浏览文件 @
7d9115de
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nv20_identify
(
struct
nouveau_device
*
device
)
nv20_identify
(
struct
nouveau_device
*
device
)
...
@@ -39,6 +40,7 @@ nv20_identify(struct nouveau_device *device)
...
@@ -39,6 +40,7 @@ nv20_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x25
:
case
0x25
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -46,6 +48,7 @@ nv20_identify(struct nouveau_device *device)
...
@@ -46,6 +48,7 @@ nv20_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x28
:
case
0x28
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -53,6 +56,7 @@ nv20_identify(struct nouveau_device *device)
...
@@ -53,6 +56,7 @@ nv20_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x2a
:
case
0x2a
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -60,6 +64,7 @@ nv20_identify(struct nouveau_device *device)
...
@@ -60,6 +64,7 @@ nv20_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown Kelvin chipset
\n
"
);
nv_fatal
(
device
,
"unknown Kelvin chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/device/nv30.c
浏览文件 @
7d9115de
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nv30_identify
(
struct
nouveau_device
*
device
)
nv30_identify
(
struct
nouveau_device
*
device
)
...
@@ -39,6 +40,7 @@ nv30_identify(struct nouveau_device *device)
...
@@ -39,6 +40,7 @@ nv30_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x35
:
case
0x35
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -46,6 +48,7 @@ nv30_identify(struct nouveau_device *device)
...
@@ -46,6 +48,7 @@ nv30_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x31
:
case
0x31
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -53,6 +56,7 @@ nv30_identify(struct nouveau_device *device)
...
@@ -53,6 +56,7 @@ nv30_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x36
:
case
0x36
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -60,6 +64,7 @@ nv30_identify(struct nouveau_device *device)
...
@@ -60,6 +64,7 @@ nv30_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv20_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x34
:
case
0x34
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -67,6 +72,7 @@ nv30_identify(struct nouveau_device *device)
...
@@ -67,6 +72,7 @@ nv30_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv04_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv10_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown Rankine chipset
\n
"
);
nv_fatal
(
device
,
"unknown Rankine chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/device/nv40.c
浏览文件 @
7d9115de
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nv40_identify
(
struct
nouveau_device
*
device
)
nv40_identify
(
struct
nouveau_device
*
device
)
...
@@ -39,6 +40,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -39,6 +40,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x41
:
case
0x41
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -46,6 +48,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -46,6 +48,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x42
:
case
0x42
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -53,6 +56,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -53,6 +56,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x43
:
case
0x43
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -60,6 +64,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -60,6 +64,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x45
:
case
0x45
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -67,6 +72,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -67,6 +72,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x47
:
case
0x47
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -74,6 +80,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -74,6 +80,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x49
:
case
0x49
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -81,6 +88,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -81,6 +88,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x4b
:
case
0x4b
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -88,6 +96,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -88,6 +96,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv04_mc_oclass
;
break
;
break
;
case
0x44
:
case
0x44
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -95,6 +104,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -95,6 +104,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
case
0x46
:
case
0x46
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -102,6 +112,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -102,6 +112,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
case
0x4a
:
case
0x4a
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -109,6 +120,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -109,6 +120,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
case
0x4c
:
case
0x4c
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -116,6 +128,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -116,6 +128,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
case
0x4e
:
case
0x4e
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -123,6 +136,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -123,6 +136,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
case
0x63
:
case
0x63
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -130,6 +144,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -130,6 +144,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
case
0x67
:
case
0x67
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -137,6 +152,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -137,6 +152,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
case
0x68
:
case
0x68
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -144,6 +160,7 @@ nv40_identify(struct nouveau_device *device)
...
@@ -144,6 +160,7 @@ nv40_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv40_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv1a_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv44_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown Curie chipset
\n
"
);
nv_fatal
(
device
,
"unknown Curie chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/device/nv50.c
浏览文件 @
7d9115de
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nv50_identify
(
struct
nouveau_device
*
device
)
nv50_identify
(
struct
nouveau_device
*
device
)
...
@@ -39,6 +40,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -39,6 +40,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv50_mc_oclass
;
break
;
break
;
case
0x84
:
case
0x84
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -46,6 +48,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -46,6 +48,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv50_mc_oclass
;
break
;
break
;
case
0x86
:
case
0x86
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -53,6 +56,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -53,6 +56,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv50_mc_oclass
;
break
;
break
;
case
0x92
:
case
0x92
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -60,6 +64,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -60,6 +64,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv50_mc_oclass
;
break
;
break
;
case
0x94
:
case
0x94
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -67,6 +72,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -67,6 +72,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv50_mc_oclass
;
break
;
break
;
case
0x96
:
case
0x96
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -74,6 +80,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -74,6 +80,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv50_mc_oclass
;
break
;
break
;
case
0x98
:
case
0x98
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -81,6 +88,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -81,6 +88,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
case
0xa0
:
case
0xa0
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -88,6 +96,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -88,6 +96,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
case
0xaa
:
case
0xaa
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -95,6 +104,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -95,6 +104,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
case
0xac
:
case
0xac
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -102,6 +112,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -102,6 +112,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nv50_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
case
0xa3
:
case
0xa3
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -109,6 +120,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -109,6 +120,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
case
0xa5
:
case
0xa5
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -116,6 +128,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -116,6 +128,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
case
0xa8
:
case
0xa8
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -123,6 +136,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -123,6 +136,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
case
0xaf
:
case
0xaf
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -130,6 +144,7 @@ nv50_identify(struct nouveau_device *device)
...
@@ -130,6 +144,7 @@ nv50_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nva3_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nv98_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown Tesla chipset
\n
"
);
nv_fatal
(
device
,
"unknown Tesla chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/device/nvc0.c
浏览文件 @
7d9115de
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nvc0_identify
(
struct
nouveau_device
*
device
)
nvc0_identify
(
struct
nouveau_device
*
device
)
...
@@ -39,6 +40,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -39,6 +40,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xc4
:
case
0xc4
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -46,6 +48,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -46,6 +48,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xc3
:
case
0xc3
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -53,6 +56,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -53,6 +56,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xce
:
case
0xce
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -60,6 +64,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -60,6 +64,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xcf
:
case
0xcf
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -67,6 +72,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -67,6 +72,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xc1
:
case
0xc1
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -74,6 +80,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -74,6 +80,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xc8
:
case
0xc8
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -81,6 +88,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -81,6 +88,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xd9
:
case
0xd9
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -88,6 +96,7 @@ nvc0_identify(struct nouveau_device *device)
...
@@ -88,6 +96,7 @@ nvc0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown Fermi chipset
\n
"
);
nv_fatal
(
device
,
"unknown Fermi chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/device/nve0.c
浏览文件 @
7d9115de
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/devinit.h>
#include <subdev/devinit.h>
#include <subdev/mc.h>
int
int
nve0_identify
(
struct
nouveau_device
*
device
)
nve0_identify
(
struct
nouveau_device
*
device
)
...
@@ -39,6 +40,7 @@ nve0_identify(struct nouveau_device *device)
...
@@ -39,6 +40,7 @@ nve0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
case
0xe7
:
case
0xe7
:
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_VBIOS
]
=
&
nouveau_bios_oclass
;
...
@@ -46,6 +48,7 @@ nve0_identify(struct nouveau_device *device)
...
@@ -46,6 +48,7 @@ nve0_identify(struct nouveau_device *device)
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_I2C
]
=
&
nouveau_i2c_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_CLOCK
]
=
&
nvc0_clock_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_DEVINIT
]
=
&
nv50_devinit_oclass
;
device
->
oclass
[
NVDEV_SUBDEV_MC
]
=
&
nvc0_mc_oclass
;
break
;
break
;
default:
default:
nv_fatal
(
device
,
"unknown Kepler chipset
\n
"
);
nv_fatal
(
device
,
"unknown Kepler chipset
\n
"
);
...
...
drivers/gpu/drm/nouveau/core/subdev/mc/base.c
0 → 100644
浏览文件 @
7d9115de
/*
* Copyright 2012 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs
*/
#include <subdev/mc.h>
void
nouveau_mc_intr
(
struct
nouveau_subdev
*
subdev
)
{
struct
nouveau_mc
*
pmc
=
nouveau_mc
(
subdev
);
const
struct
nouveau_mc_intr
*
map
=
pmc
->
intr_map
;
struct
nouveau_subdev
*
unit
;
u32
stat
;
stat
=
nv_rd32
(
pmc
,
0x000100
);
while
(
stat
&&
map
->
stat
)
{
if
(
stat
&
map
->
stat
)
{
unit
=
nouveau_subdev
(
subdev
,
map
->
unit
);
if
(
unit
&&
unit
->
intr
)
unit
->
intr
(
unit
);
stat
&=
~
map
->
stat
;
}
map
++
;
}
if
(
stat
)
{
nv_error
(
pmc
,
"unknown intr 0x%08x
\n
"
,
stat
);
}
}
drivers/gpu/drm/nouveau/core/subdev/mc/nv04.c
浏览文件 @
7d9115de
#include "drmP.h"
/*
#include "drm.h"
* Copyright 2012 Red Hat Inc.
#include "nouveau_drv.h"
*
#include <nouveau_drm.h>
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs
*/
int
#include <subdev/mc.h>
nv04_mc_init
(
struct
drm_device
*
dev
)
{
struct
nv04_mc_priv
{
/* Power up everything, resetting each individual unit will
struct
nouveau_mc
base
;
* be done later if needed.
};
*/
nv_wr32
(
dev
,
NV03_PMC_ENABLE
,
0xFFFFFFFF
);
const
struct
nouveau_mc_intr
nv04_mc_intr
[]
=
{
{
0x00000001
,
NVDEV_ENGINE_MPEG
},
/* NV17- MPEG/ME */
{
0x00000100
,
NVDEV_ENGINE_FIFO
},
{
0x00001000
,
NVDEV_ENGINE_GR
},
{
0x00020000
,
NVDEV_ENGINE_VP
},
/* NV40- */
{
0x00100000
,
NVDEV_SUBDEV_TIMER
},
{
0x01000000
,
NVDEV_ENGINE_DISP
},
/* NV04- PCRTC0 */
{
0x02000000
,
NVDEV_ENGINE_DISP
},
/* NV11- PCRTC1 */
{
0x10000000
,
NVDEV_SUBDEV_GPIO
},
/* PBUS */
{
0x80000000
,
NVDEV_ENGINE_SW
},
{}
};
static
int
nv04_mc_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv04_mc_priv
*
priv
;
int
ret
;
/* Disable PROM access. */
ret
=
nouveau_mc_create
(
parent
,
engine
,
oclass
,
&
priv
);
nv_wr32
(
dev
,
NV_PBUS_PCI_NV_20
,
NV_PBUS_PCI_NV_20_ROM_SHADOW_ENABLED
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
nv_subdev
(
priv
)
->
intr
=
nouveau_mc_intr
;
priv
->
base
.
intr_map
=
nv04_mc_intr
;
return
0
;
return
0
;
}
}
void
int
nv04_mc_
takedown
(
struct
drm_device
*
dev
)
nv04_mc_
init
(
struct
nouveau_object
*
object
)
{
{
struct
nv04_mc_priv
*
priv
=
(
void
*
)
object
;
nv_wr32
(
priv
,
0x000200
,
0xffffffff
);
/* everything enabled */
nv_wr32
(
priv
,
0x001850
,
0x00000001
);
/* disable rom access */
return
nouveau_mc_init
(
&
priv
->
base
);
}
}
struct
nouveau_oclass
nv04_mc_oclass
=
{
.
handle
=
NV_SUBDEV
(
MC
,
0x04
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv04_mc_ctor
,
.
dtor
=
_nouveau_mc_dtor
,
.
init
=
nv04_mc_init
,
.
fini
=
_nouveau_mc_fini
,
},
};
drivers/gpu/drm/nouveau/core/subdev/mc/nv40.c
已删除
100644 → 0
浏览文件 @
cb75d97e
#include "drmP.h"
#include "drm.h"
#include "nouveau_drv.h"
#include <nouveau_drm.h>
int
nv40_mc_init
(
struct
drm_device
*
dev
)
{
/* Power up everything, resetting each individual unit will
* be done later if needed.
*/
nv_wr32
(
dev
,
NV03_PMC_ENABLE
,
0xFFFFFFFF
);
if
(
nv44_graph_class
(
dev
))
{
u32
tmp
=
nv_rd32
(
dev
,
NV04_PFB_FIFO_DATA
);
nv_wr32
(
dev
,
NV40_PMC_1700
,
tmp
);
nv_wr32
(
dev
,
NV40_PMC_1704
,
0
);
nv_wr32
(
dev
,
NV40_PMC_1708
,
0
);
nv_wr32
(
dev
,
NV40_PMC_170C
,
tmp
);
}
return
0
;
}
void
nv40_mc_takedown
(
struct
drm_device
*
dev
)
{
}
drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c
0 → 100644
浏览文件 @
7d9115de
/*
* Copyright 2012 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs
*/
#include <subdev/mc.h>
struct
nv44_mc_priv
{
struct
nouveau_mc
base
;
};
static
int
nv44_mc_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv44_mc_priv
*
priv
;
int
ret
;
ret
=
nouveau_mc_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
nv_subdev
(
priv
)
->
intr
=
nouveau_mc_intr
;
priv
->
base
.
intr_map
=
nv04_mc_intr
;
return
0
;
}
static
int
nv44_mc_init
(
struct
nouveau_object
*
object
)
{
struct
nv44_mc_priv
*
priv
=
(
void
*
)
object
;
u32
tmp
=
nv_rd32
(
priv
,
0x10020c
);
nv_wr32
(
priv
,
0x000200
,
0xffffffff
);
/* everything enabled */
nv_wr32
(
priv
,
0x001700
,
tmp
);
nv_wr32
(
priv
,
0x001704
,
0
);
nv_wr32
(
priv
,
0x001708
,
0
);
nv_wr32
(
priv
,
0x00170c
,
tmp
);
return
nouveau_mc_init
(
&
priv
->
base
);
}
struct
nouveau_oclass
nv44_mc_oclass
=
{
.
handle
=
NV_SUBDEV
(
MC
,
0x44
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv44_mc_ctor
,
.
dtor
=
_nouveau_mc_dtor
,
.
init
=
nv44_mc_init
,
.
fini
=
_nouveau_mc_fini
,
},
};
drivers/gpu/drm/nouveau/core/subdev/mc/nv50.c
浏览文件 @
7d9115de
/*
/*
* Copyright (C) 2007 Ben Skeggs.
* Copyright 2012 Red Hat Inc.
* All Rights Reserved.
*
*
* Permission is hereby granted, free of charge, to any person obtaining
* Permission is hereby granted, free of charge, to any person obtaining a
* a copy of this software and associated documentation files (the
* copy of this software and associated documentation files (the "Software"),
* "Software"), to deal in the Software without restriction, including
* to deal in the Software without restriction, including without limitation
* without limitation the rights to use, copy, modify, merge, publish,
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* distribute, sublicense, and/or sell copies of the Software, and to
* and/or sell copies of the Software, and to permit persons to whom the
* permit persons to whom the Software is furnished to do so, subject to
* Software is furnished to do so, subject to the following conditions:
* the following conditions:
*
*
* The above copyright notice and this permission notice (including the
* The above copyright notice and this permission notice shall be included in
* next paragraph) shall be included in all copies or substantial
* all copies or substantial portions of the Software.
* portions of the Software.
*
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR
*
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
*
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
*
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
*
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
*
IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
*
THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
*
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
*
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
*
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
*
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
*
WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
* OTHER DEALINGS IN THE SOFTWARE.
*
*
* Authors: Ben Skeggs
*/
*/
#include "drmP.h"
#include <subdev/mc.h>
#include "drm.h"
#include "nouveau_drv.h"
int
struct
nv50_mc_priv
{
nv50_mc_init
(
struct
drm_device
*
dev
)
struct
nouveau_mc
base
;
};
static
const
struct
nouveau_mc_intr
nv50_mc_intr
[]
=
{
{
0x00000001
,
NVDEV_ENGINE_MPEG
},
{
0x00000100
,
NVDEV_ENGINE_FIFO
},
{
0x00001000
,
NVDEV_ENGINE_GR
},
{
0x00004000
,
NVDEV_ENGINE_CRYPT
},
/* NV84- */
{
0x00008000
,
NVDEV_ENGINE_BSP
},
/* NV84- */
{
0x00100000
,
NVDEV_SUBDEV_TIMER
},
{
0x00200000
,
NVDEV_SUBDEV_GPIO
},
{
0x04000000
,
NVDEV_ENGINE_DISP
},
{
0x80000000
,
NVDEV_ENGINE_SW
},
{},
};
static
int
nv50_mc_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
{
nv_wr32
(
dev
,
NV03_PMC_ENABLE
,
0xFFFFFFFF
);
struct
nv50_mc_priv
*
priv
;
int
ret
;
ret
=
nouveau_mc_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
nv_subdev
(
priv
)
->
intr
=
nouveau_mc_intr
;
priv
->
base
.
intr_map
=
nv50_mc_intr
;
return
0
;
return
0
;
}
}
void
nv50_mc_takedown
(
struct
drm_device
*
dev
)
int
nv50_mc_init
(
struct
nouveau_object
*
object
)
{
{
struct
nv50_mc_priv
*
priv
=
(
void
*
)
object
;
nv_wr32
(
priv
,
0x000200
,
0xffffffff
);
/* everything on */
return
nouveau_mc_init
(
&
priv
->
base
);
}
}
struct
nouveau_oclass
nv50_mc_oclass
=
{
.
handle
=
NV_SUBDEV
(
MC
,
0x50
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv50_mc_ctor
,
.
dtor
=
_nouveau_mc_dtor
,
.
init
=
nv50_mc_init
,
.
fini
=
_nouveau_mc_fini
,
},
};
drivers/gpu/drm/nouveau/core/subdev/mc/nv98.c
0 → 100644
浏览文件 @
7d9115de
/*
* Copyright 2012 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs
*/
#include <subdev/mc.h>
struct
nv98_mc_priv
{
struct
nouveau_mc
base
;
};
static
const
struct
nouveau_mc_intr
nv98_mc_intr
[]
=
{
{
0x00000001
,
NVDEV_ENGINE_PPP
},
{
0x00000100
,
NVDEV_ENGINE_FIFO
},
{
0x00001000
,
NVDEV_ENGINE_GR
},
{
0x00004000
,
NVDEV_ENGINE_CRYPT
},
/* NV84:NVA3 */
{
0x00008000
,
NVDEV_ENGINE_BSP
},
{
0x00100000
,
NVDEV_SUBDEV_TIMER
},
{
0x00200000
,
NVDEV_SUBDEV_GPIO
},
{
0x00400000
,
NVDEV_ENGINE_COPY0
},
/* NVA3- */
{
0x04000000
,
NVDEV_ENGINE_DISP
},
{
0x80000000
,
NVDEV_ENGINE_SW
},
{},
};
static
int
nv98_mc_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nv98_mc_priv
*
priv
;
int
ret
;
ret
=
nouveau_mc_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
nv_subdev
(
priv
)
->
intr
=
nouveau_mc_intr
;
priv
->
base
.
intr_map
=
nv98_mc_intr
;
return
0
;
}
struct
nouveau_oclass
nv98_mc_oclass
=
{
.
handle
=
NV_SUBDEV
(
MC
,
0x98
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nv98_mc_ctor
,
.
dtor
=
_nouveau_mc_dtor
,
.
init
=
nv50_mc_init
,
.
fini
=
_nouveau_mc_fini
,
},
};
drivers/gpu/drm/nouveau/core/subdev/mc/nvc0.c
0 → 100644
浏览文件 @
7d9115de
/*
* Copyright 2012 Red Hat Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors: Ben Skeggs
*/
#include <subdev/mc.h>
struct
nvc0_mc_priv
{
struct
nouveau_mc
base
;
};
static
const
struct
nouveau_mc_intr
nvc0_mc_intr
[]
=
{
{
0x00000001
,
NVDEV_ENGINE_PPP
},
{
0x00000020
,
NVDEV_ENGINE_COPY0
},
{
0x00000040
,
NVDEV_ENGINE_COPY1
},
{
0x00000100
,
NVDEV_ENGINE_FIFO
},
{
0x00001000
,
NVDEV_ENGINE_GR
},
{
0x00008000
,
NVDEV_ENGINE_BSP
},
{
0x00100000
,
NVDEV_SUBDEV_TIMER
},
{
0x00200000
,
NVDEV_SUBDEV_GPIO
},
{
0x04000000
,
NVDEV_ENGINE_DISP
},
{
0x80000000
,
NVDEV_ENGINE_SW
},
{},
};
static
int
nvc0_mc_ctor
(
struct
nouveau_object
*
parent
,
struct
nouveau_object
*
engine
,
struct
nouveau_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nouveau_object
**
pobject
)
{
struct
nvc0_mc_priv
*
priv
;
int
ret
;
ret
=
nouveau_mc_create
(
parent
,
engine
,
oclass
,
&
priv
);
*
pobject
=
nv_object
(
priv
);
if
(
ret
)
return
ret
;
nv_subdev
(
priv
)
->
intr
=
nouveau_mc_intr
;
priv
->
base
.
intr_map
=
nvc0_mc_intr
;
return
0
;
}
struct
nouveau_oclass
nvc0_mc_oclass
=
{
.
handle
=
NV_SUBDEV
(
MC
,
0xc0
),
.
ofuncs
=
&
(
struct
nouveau_ofuncs
)
{
.
ctor
=
nvc0_mc_ctor
,
.
dtor
=
_nouveau_mc_dtor
,
.
init
=
nv50_mc_init
,
.
fini
=
_nouveau_mc_fini
,
},
};
drivers/gpu/drm/nouveau/nouveau_compat.c
浏览文件 @
7d9115de
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
#include <subdev/gpio.h>
#include <subdev/gpio.h>
#include <subdev/i2c.h>
#include <subdev/i2c.h>
#include <subdev/clock.h>
#include <subdev/clock.h>
#include <subdev/mc.h>
void
*
nouveau_newpriv
(
struct
drm_device
*
);
void
*
nouveau_newpriv
(
struct
drm_device
*
);
...
@@ -293,3 +294,11 @@ nouveau_bios_init_exec(struct drm_device *dev, uint16_t table)
...
@@ -293,3 +294,11 @@ nouveau_bios_init_exec(struct drm_device *dev, uint16_t table)
{
{
nouveau_bios_run_init_table
(
dev
,
table
,
NULL
,
0
);
nouveau_bios_run_init_table
(
dev
,
table
,
NULL
,
0
);
}
}
void
nv_intr
(
struct
drm_device
*
dev
)
{
struct
nouveau_drm
*
drm
=
nouveau_newpriv
(
dev
);
struct
nouveau_mc
*
pmc
=
nouveau_mc
(
drm
->
device
);
nv_subdev
(
pmc
)
->
intr
(
pmc
);
}
drivers/gpu/drm/nouveau/nouveau_compat.h
浏览文件 @
7d9115de
...
@@ -51,4 +51,6 @@ struct dcb_output;
...
@@ -51,4 +51,6 @@ struct dcb_output;
void
nouveau_bios_run_init_table
(
struct
drm_device
*
,
u16
,
struct
dcb_output
*
,
int
);
void
nouveau_bios_run_init_table
(
struct
drm_device
*
,
u16
,
struct
dcb_output
*
,
int
);
void
nouveau_bios_init_exec
(
struct
drm_device
*
,
u16
);
void
nouveau_bios_init_exec
(
struct
drm_device
*
,
u16
);
void
nv_intr
(
struct
drm_device
*
);
#endif
#endif
drivers/gpu/drm/nouveau/nouveau_drv.c
浏览文件 @
7d9115de
...
@@ -252,7 +252,6 @@ nouveau_pci_resume(struct pci_dev *pdev)
...
@@ -252,7 +252,6 @@ nouveau_pci_resume(struct pci_dev *pdev)
NV_INFO
(
dev
,
"Reinitialising engines...
\n
"
);
NV_INFO
(
dev
,
"Reinitialising engines...
\n
"
);
engine
->
instmem
.
resume
(
dev
);
engine
->
instmem
.
resume
(
dev
);
engine
->
mc
.
init
(
dev
);
engine
->
timer
.
init
(
dev
);
engine
->
timer
.
init
(
dev
);
engine
->
fb
.
init
(
dev
);
engine
->
fb
.
init
(
dev
);
for
(
i
=
0
;
i
<
NVOBJ_ENGINE_NR
;
i
++
)
{
for
(
i
=
0
;
i
<
NVOBJ_ENGINE_NR
;
i
++
)
{
...
...
drivers/gpu/drm/nouveau/nouveau_drv.h
浏览文件 @
7d9115de
...
@@ -324,11 +324,6 @@ struct nouveau_instmem_engine {
...
@@ -324,11 +324,6 @@ struct nouveau_instmem_engine {
void
(
*
flush
)(
struct
drm_device
*
);
void
(
*
flush
)(
struct
drm_device
*
);
};
};
struct
nouveau_mc_engine
{
int
(
*
init
)(
struct
drm_device
*
dev
);
void
(
*
takedown
)(
struct
drm_device
*
dev
);
};
struct
nouveau_timer_engine
{
struct
nouveau_timer_engine
{
int
(
*
init
)(
struct
drm_device
*
dev
);
int
(
*
init
)(
struct
drm_device
*
dev
);
void
(
*
takedown
)(
struct
drm_device
*
dev
);
void
(
*
takedown
)(
struct
drm_device
*
dev
);
...
@@ -544,7 +539,6 @@ struct nouveau_vram_engine {
...
@@ -544,7 +539,6 @@ struct nouveau_vram_engine {
struct
nouveau_engine
{
struct
nouveau_engine
{
struct
nouveau_instmem_engine
instmem
;
struct
nouveau_instmem_engine
instmem
;
struct
nouveau_mc_engine
mc
;
struct
nouveau_timer_engine
timer
;
struct
nouveau_timer_engine
timer
;
struct
nouveau_fb_engine
fb
;
struct
nouveau_fb_engine
fb
;
struct
nouveau_display_engine
display
;
struct
nouveau_display_engine
display
;
...
@@ -1210,18 +1204,6 @@ extern void nvc0_instmem_takedown(struct drm_device *);
...
@@ -1210,18 +1204,6 @@ extern void nvc0_instmem_takedown(struct drm_device *);
extern
int
nvc0_instmem_suspend
(
struct
drm_device
*
);
extern
int
nvc0_instmem_suspend
(
struct
drm_device
*
);
extern
void
nvc0_instmem_resume
(
struct
drm_device
*
);
extern
void
nvc0_instmem_resume
(
struct
drm_device
*
);
/* nv04_mc.c */
extern
int
nv04_mc_init
(
struct
drm_device
*
);
extern
void
nv04_mc_takedown
(
struct
drm_device
*
);
/* nv40_mc.c */
extern
int
nv40_mc_init
(
struct
drm_device
*
);
extern
void
nv40_mc_takedown
(
struct
drm_device
*
);
/* nv50_mc.c */
extern
int
nv50_mc_init
(
struct
drm_device
*
);
extern
void
nv50_mc_takedown
(
struct
drm_device
*
);
/* nv04_timer.c */
/* nv04_timer.c */
extern
int
nv04_timer_init
(
struct
drm_device
*
);
extern
int
nv04_timer_init
(
struct
drm_device
*
);
extern
uint64_t
nv04_timer_read
(
struct
drm_device
*
);
extern
uint64_t
nv04_timer_read
(
struct
drm_device
*
);
...
...
drivers/gpu/drm/nouveau/nouveau_irq.c
浏览文件 @
7d9115de
...
@@ -87,12 +87,12 @@ nouveau_irq_handler(DRM_IRQ_ARGS)
...
@@ -87,12 +87,12 @@ nouveau_irq_handler(DRM_IRQ_ARGS)
stat
&=
~
(
1
<<
i
);
stat
&=
~
(
1
<<
i
);
}
}
nv_intr
(
dev
);
if
(
dev_priv
->
msi_enabled
)
if
(
dev_priv
->
msi_enabled
)
nv_wr08
(
dev
,
0x00088068
,
0xff
);
nv_wr08
(
dev
,
0x00088068
,
0xff
);
spin_unlock_irqrestore
(
&
dev_priv
->
context_switch_lock
,
flags
);
spin_unlock_irqrestore
(
&
dev_priv
->
context_switch_lock
,
flags
);
if
(
stat
&&
nouveau_ratelimit
())
NV_ERROR
(
dev
,
"PMC - unhandled INTR 0x%08x
\n
"
,
stat
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
...
...
drivers/gpu/drm/nouveau/nouveau_state.c
浏览文件 @
7d9115de
...
@@ -61,8 +61,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -61,8 +61,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
mc
.
init
=
nv04_mc_init
;
engine
->
mc
.
takedown
=
nv04_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -91,8 +89,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -91,8 +89,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
mc
.
init
=
nv04_mc_init
;
engine
->
mc
.
takedown
=
nv04_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -128,8 +124,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -128,8 +124,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
mc
.
init
=
nv04_mc_init
;
engine
->
mc
.
takedown
=
nv04_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -161,8 +155,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -161,8 +155,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
mc
.
init
=
nv04_mc_init
;
engine
->
mc
.
takedown
=
nv04_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -197,8 +189,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -197,8 +189,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
map
=
nv04_instmem_map
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv04_instmem_unmap
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
instmem
.
flush
=
nv04_instmem_flush
;
engine
->
mc
.
init
=
nv40_mc_init
;
engine
->
mc
.
takedown
=
nv40_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -241,8 +231,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -241,8 +231,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
flush
=
nv50_instmem_flush
;
engine
->
instmem
.
flush
=
nv50_instmem_flush
;
else
else
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
mc
.
init
=
nv50_mc_init
;
engine
->
mc
.
takedown
=
nv50_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -299,8 +287,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -299,8 +287,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv50_instmem_map
;
engine
->
instmem
.
map
=
nv50_instmem_map
;
engine
->
instmem
.
unmap
=
nv50_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv50_instmem_unmap
;
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
mc
.
init
=
nv50_mc_init
;
engine
->
mc
.
takedown
=
nv50_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -336,8 +322,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -336,8 +322,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv50_instmem_map
;
engine
->
instmem
.
map
=
nv50_instmem_map
;
engine
->
instmem
.
unmap
=
nv50_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv50_instmem_unmap
;
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
mc
.
init
=
nv50_mc_init
;
engine
->
mc
.
takedown
=
nv50_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -371,8 +355,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
...
@@ -371,8 +355,6 @@ static int nouveau_init_engine_ptrs(struct drm_device *dev)
engine
->
instmem
.
map
=
nv50_instmem_map
;
engine
->
instmem
.
map
=
nv50_instmem_map
;
engine
->
instmem
.
unmap
=
nv50_instmem_unmap
;
engine
->
instmem
.
unmap
=
nv50_instmem_unmap
;
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
instmem
.
flush
=
nv84_instmem_flush
;
engine
->
mc
.
init
=
nv50_mc_init
;
engine
->
mc
.
takedown
=
nv50_mc_takedown
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
init
=
nv04_timer_init
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
read
=
nv04_timer_read
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
engine
->
timer
.
takedown
=
nv04_timer_takedown
;
...
@@ -533,15 +515,10 @@ nouveau_card_init(struct drm_device *dev)
...
@@ -533,15 +515,10 @@ nouveau_card_init(struct drm_device *dev)
nv_mask
(
dev
,
0x00088080
,
0x00000800
,
0x00000000
);
nv_mask
(
dev
,
0x00088080
,
0x00000800
,
0x00000000
);
}
}
/* PMC */
ret
=
engine
->
mc
.
init
(
dev
);
if
(
ret
)
goto
out_bios
;
/* PTIMER */
/* PTIMER */
ret
=
engine
->
timer
.
init
(
dev
);
ret
=
engine
->
timer
.
init
(
dev
);
if
(
ret
)
if
(
ret
)
goto
out_
mc
;
goto
out_
bios
;
/* PFB */
/* PFB */
ret
=
engine
->
fb
.
init
(
dev
);
ret
=
engine
->
fb
.
init
(
dev
);
...
@@ -795,8 +772,6 @@ nouveau_card_init(struct drm_device *dev)
...
@@ -795,8 +772,6 @@ nouveau_card_init(struct drm_device *dev)
engine
->
fb
.
takedown
(
dev
);
engine
->
fb
.
takedown
(
dev
);
out_timer:
out_timer:
engine
->
timer
.
takedown
(
dev
);
engine
->
timer
.
takedown
(
dev
);
out_mc:
engine
->
mc
.
takedown
(
dev
);
out_bios:
out_bios:
nouveau_bios_takedown
(
dev
);
nouveau_bios_takedown
(
dev
);
out_display_early:
out_display_early:
...
@@ -850,7 +825,6 @@ static void nouveau_card_takedown(struct drm_device *dev)
...
@@ -850,7 +825,6 @@ static void nouveau_card_takedown(struct drm_device *dev)
engine
->
vram
.
takedown
(
dev
);
engine
->
vram
.
takedown
(
dev
);
engine
->
fb
.
takedown
(
dev
);
engine
->
fb
.
takedown
(
dev
);
engine
->
timer
.
takedown
(
dev
);
engine
->
timer
.
takedown
(
dev
);
engine
->
mc
.
takedown
(
dev
);
nouveau_bios_takedown
(
dev
);
nouveau_bios_takedown
(
dev
);
engine
->
display
.
late_takedown
(
dev
);
engine
->
display
.
late_takedown
(
dev
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录