Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
53e60da4
Commit
53e60da4
authored
Aug 20, 2015
by
Ben Skeggs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
drm/nouveau/falcon: convert to new-style nvkm_engine
Signed-off-by:
Ben Skeggs
<
bskeggs@redhat.com
>
parent
437b2296
Changes
36
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
640 additions
and
771 deletions
+640
-771
drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
+2
-3
drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
+14
-29
drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h
drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h
+5
-4
drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h
drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h
+4
-3
drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h
drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h
+6
-4
drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h
drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h
+2
-2
drivers/gpu/drm/nouveau/nvkm/engine/ce/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/ce/gf100.c
+30
-79
drivers/gpu/drm/nouveau/nvkm/engine/ce/gt215.c
drivers/gpu/drm/nouveau/nvkm/engine/ce/gt215.c
+11
-32
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
+108
-108
drivers/gpu/drm/nouveau/nvkm/engine/device/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/device/gf100.c
+0
-40
drivers/gpu/drm/nouveau/nvkm/engine/device/gk104.c
drivers/gpu/drm/nouveau/nvkm/engine/device/gk104.c
+0
-21
drivers/gpu/drm/nouveau/nvkm/engine/device/gm100.c
drivers/gpu/drm/nouveau/nvkm/engine/device/gm100.c
+0
-9
drivers/gpu/drm/nouveau/nvkm/engine/device/nv50.c
drivers/gpu/drm/nouveau/nvkm/engine/device/nv50.c
+0
-28
drivers/gpu/drm/nouveau/nvkm/engine/falcon.c
drivers/gpu/drm/nouveau/nvkm/engine/falcon.c
+66
-48
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/Kbuild
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/Kbuild
+2
-0
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/base.c
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/base.c
+32
-0
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/g98.c
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/g98.c
+11
-41
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gf100.c
+10
-39
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gk104.c
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gk104.c
+8
-45
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gt215.c
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gt215.c
+43
-0
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h
+11
-0
drivers/gpu/drm/nouveau/nvkm/engine/msppp/Kbuild
drivers/gpu/drm/nouveau/nvkm/engine/msppp/Kbuild
+2
-0
drivers/gpu/drm/nouveau/nvkm/engine/msppp/base.c
drivers/gpu/drm/nouveau/nvkm/engine/msppp/base.c
+31
-0
drivers/gpu/drm/nouveau/nvkm/engine/msppp/g98.c
drivers/gpu/drm/nouveau/nvkm/engine/msppp/g98.c
+10
-40
drivers/gpu/drm/nouveau/nvkm/engine/msppp/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/msppp/gf100.c
+10
-39
drivers/gpu/drm/nouveau/nvkm/engine/msppp/gt215.c
drivers/gpu/drm/nouveau/nvkm/engine/msppp/gt215.c
+43
-0
drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h
drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h
+9
-0
drivers/gpu/drm/nouveau/nvkm/engine/msvld/Kbuild
drivers/gpu/drm/nouveau/nvkm/engine/msvld/Kbuild
+3
-0
drivers/gpu/drm/nouveau/nvkm/engine/msvld/base.c
drivers/gpu/drm/nouveau/nvkm/engine/msvld/base.c
+31
-0
drivers/gpu/drm/nouveau/nvkm/engine/msvld/g98.c
drivers/gpu/drm/nouveau/nvkm/engine/msvld/g98.c
+10
-41
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gf100.c
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gf100.c
+10
-39
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gk104.c
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gk104.c
+8
-45
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gt215.c
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gt215.c
+43
-0
drivers/gpu/drm/nouveau/nvkm/engine/msvld/mcp89.c
drivers/gpu/drm/nouveau/nvkm/engine/msvld/mcp89.c
+43
-0
drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h
drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h
+11
-0
drivers/gpu/drm/nouveau/nvkm/engine/sec/g98.c
drivers/gpu/drm/nouveau/nvkm/engine/sec/g98.c
+11
-32
No files found.
drivers/gpu/drm/nouveau/include/nvkm/engine/ce.h
View file @
53e60da4
...
@@ -4,9 +4,8 @@
...
@@ -4,9 +4,8 @@
void
gt215_ce_intr
(
struct
nvkm_falcon
*
,
struct
nvkm_fifo_chan
*
);
void
gt215_ce_intr
(
struct
nvkm_falcon
*
,
struct
nvkm_fifo_chan
*
);
extern
struct
nvkm_oclass
gt215_ce_oclass
;
int
gt215_ce_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
extern
struct
nvkm_oclass
gf100_ce0_oclass
;
int
gf100_ce_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
extern
struct
nvkm_oclass
gf100_ce1_oclass
;
extern
struct
nvkm_oclass
gk104_ce0_oclass
;
extern
struct
nvkm_oclass
gk104_ce0_oclass
;
extern
struct
nvkm_oclass
gk104_ce1_oclass
;
extern
struct
nvkm_oclass
gk104_ce1_oclass
;
extern
struct
nvkm_oclass
gk104_ce2_oclass
;
extern
struct
nvkm_oclass
gk104_ce2_oclass
;
...
...
drivers/gpu/drm/nouveau/include/nvkm/engine/falcon.h
View file @
53e60da4
...
@@ -4,13 +4,9 @@
...
@@ -4,13 +4,9 @@
#include <core/engine.h>
#include <core/engine.h>
struct
nvkm_fifo_chan
;
struct
nvkm_fifo_chan
;
struct
nvkm_falcon_data
{
bool
external
;
};
struct
nvkm_falcon
{
struct
nvkm_falcon
{
struct
nvkm_engine
engine
;
const
struct
nvkm_falcon_func
*
func
;
const
struct
nvkm_falcon_func
*
func
;
struct
nvkm_engine
engine
;
u32
addr
;
u32
addr
;
u8
version
;
u8
version
;
...
@@ -32,32 +28,21 @@ struct nvkm_falcon {
...
@@ -32,32 +28,21 @@ struct nvkm_falcon {
}
data
;
}
data
;
};
};
int
nvkm_falcon_new_
(
const
struct
nvkm_falcon_func
*
,
struct
nvkm_device
*
,
int
index
,
bool
enable
,
u32
addr
,
struct
nvkm_engine
**
);
struct
nvkm_falcon_func
{
struct
nvkm_falcon_func
{
struct
{
u32
*
data
;
u32
size
;
}
code
;
struct
{
u32
*
data
;
u32
size
;
}
data
;
u32
pmc_enable
;
void
(
*
init
)(
struct
nvkm_falcon
*
);
void
(
*
intr
)(
struct
nvkm_falcon
*
,
struct
nvkm_fifo_chan
*
);
void
(
*
intr
)(
struct
nvkm_falcon
*
,
struct
nvkm_fifo_chan
*
);
struct
nvkm_sclass
sclass
[];
struct
nvkm_sclass
sclass
[];
};
};
#define nv_falcon(priv) ((struct nvkm_falcon *)priv)
#define nvkm_falcon_create(a,p,e,c,b,d,i,f,r) \
nvkm_falcon_create_((a), (p), (e), (c), (b), (d), (i), (f), \
sizeof(**r),(void **)r)
#define nvkm_falcon_destroy(p) \
nvkm_engine_destroy(&(p)->engine)
#define nvkm_falcon_init(p) ({ \
struct nvkm_falcon *_falcon = (p); \
_nvkm_falcon_init(nv_object(_falcon)); \
})
#define nvkm_falcon_fini(p,s) ({ \
struct nvkm_falcon *_falcon = (p); \
_nvkm_falcon_fini(nv_object(_falcon), (s)); \
})
int
nvkm_falcon_create_
(
const
struct
nvkm_falcon_func
*
,
struct
nvkm_object
*
,
struct
nvkm_object
*
,
struct
nvkm_oclass
*
,
u32
,
bool
,
const
char
*
,
const
char
*
,
int
,
void
**
);
#define _nvkm_falcon_dtor _nvkm_engine_dtor
int
_nvkm_falcon_init
(
struct
nvkm_object
*
);
int
_nvkm_falcon_fini
(
struct
nvkm_object
*
,
bool
);
#endif
#endif
drivers/gpu/drm/nouveau/include/nvkm/engine/mspdec.h
View file @
53e60da4
#ifndef __NVKM_MSPDEC_H__
#ifndef __NVKM_MSPDEC_H__
#define __NVKM_MSPDEC_H__
#define __NVKM_MSPDEC_H__
#include <core/engine.h>
#include <engine/falcon.h>
extern
struct
nvkm_oclass
g98_mspdec_oclass
;
int
g98_mspdec_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
extern
struct
nvkm_oclass
gf100_mspdec_oclass
;
int
gt215_mspdec_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
extern
struct
nvkm_oclass
gk104_mspdec_oclass
;
int
gf100_mspdec_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
int
gk104_mspdec_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
#endif
#endif
drivers/gpu/drm/nouveau/include/nvkm/engine/msppp.h
View file @
53e60da4
#ifndef __NVKM_MSPPP_H__
#ifndef __NVKM_MSPPP_H__
#define __NVKM_MSPPP_H__
#define __NVKM_MSPPP_H__
#include <core/engine.h>
#include <engine/falcon.h>
extern
struct
nvkm_oclass
g98_msppp_oclass
;
int
g98_msppp_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
extern
struct
nvkm_oclass
gf100_msppp_oclass
;
int
gt215_msppp_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
int
gf100_msppp_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
#endif
#endif
drivers/gpu/drm/nouveau/include/nvkm/engine/msvld.h
View file @
53e60da4
#ifndef __NVKM_MSVLD_H__
#ifndef __NVKM_MSVLD_H__
#define __NVKM_MSVLD_H__
#define __NVKM_MSVLD_H__
#include <core/engine.h>
#include <engine/falcon.h>
extern
struct
nvkm_oclass
g98_msvld_oclass
;
int
g98_msvld_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
extern
struct
nvkm_oclass
gf100_msvld_oclass
;
int
gt215_msvld_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
extern
struct
nvkm_oclass
gk104_msvld_oclass
;
int
mcp89_msvld_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
int
gf100_msvld_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
int
gk104_msvld_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
);
#endif
#endif
drivers/gpu/drm/nouveau/include/nvkm/engine/sec.h
View file @
53e60da4
#ifndef __NVKM_SEC_H__
#ifndef __NVKM_SEC_H__
#define __NVKM_SEC_H__
#define __NVKM_SEC_H__
#include <
core/engine
.h>
#include <
engine/falcon
.h>
extern
struct
nvkm_oclass
g98_sec_oclass
;
int
g98_sec_new
(
struct
nvkm_device
*
,
int
,
struct
nvkm_engine
**
)
;
#endif
#endif
drivers/gpu/drm/nouveau/nvkm/engine/ce/gf100.c
View file @
53e60da4
...
@@ -22,30 +22,26 @@
...
@@ -22,30 +22,26 @@
* Authors: Ben Skeggs
* Authors: Ben Skeggs
*/
*/
#include <engine/ce.h>
#include <engine/ce.h>
#include <engine/falcon.h>
#include "fuc/gf100.fuc3.h"
#include "fuc/gf100.fuc3.h"
#include <nvif/class.h>
#include <nvif/class.h>
static
int
static
void
gf100_ce_init
(
struct
nvkm_
object
*
object
)
gf100_ce_init
(
struct
nvkm_
falcon
*
ce
)
{
{
struct
nvkm_falcon
*
ce
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
ce
->
engine
.
subdev
.
device
;
struct
nvkm_device
*
device
=
ce
->
engine
.
subdev
.
device
;
const
int
idx
=
nv_engidx
(
&
ce
->
engine
)
-
NVDEV_ENGINE_CE0
;
const
int
index
=
ce
->
engine
.
subdev
.
index
-
NVDEV_ENGINE_CE0
;
u32
base
=
idx
*
0x1000
;
nvkm_wr32
(
device
,
ce
->
addr
+
0x084
,
index
);
int
ret
;
ret
=
nvkm_falcon_init
(
ce
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x104084
+
base
,
idx
);
return
0
;
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gf100_ce0_func
=
{
gf100_ce0
=
{
.
code
.
data
=
gf100_ce_code
,
.
code
.
size
=
sizeof
(
gf100_ce_code
),
.
data
.
data
=
gf100_ce_data
,
.
data
.
size
=
sizeof
(
gf100_ce_data
),
.
pmc_enable
=
0x00000040
,
.
init
=
gf100_ce_init
,
.
intr
=
gt215_ce_intr
,
.
intr
=
gt215_ce_intr
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
FERMI_DMA
},
{
-
1
,
-
1
,
FERMI_DMA
},
...
@@ -53,30 +49,14 @@ gf100_ce0_func = {
...
@@ -53,30 +49,14 @@ gf100_ce0_func = {
}
}
};
};
static
int
gf100_ce0_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_object
**
pobject
)
{
struct
nvkm_falcon
*
ce
;
int
ret
;
ret
=
nvkm_falcon_create
(
&
gf100_ce0_func
,
parent
,
engine
,
oclass
,
0x104000
,
true
,
"PCE0"
,
"ce0"
,
&
ce
);
*
pobject
=
nv_object
(
ce
);
if
(
ret
)
return
ret
;
nv_subdev
(
ce
)
->
unit
=
0x00000040
;
nv_falcon
(
ce
)
->
code
.
data
=
gf100_ce_code
;
nv_falcon
(
ce
)
->
code
.
size
=
sizeof
(
gf100_ce_code
);
nv_falcon
(
ce
)
->
data
.
data
=
gf100_ce_data
;
nv_falcon
(
ce
)
->
data
.
size
=
sizeof
(
gf100_ce_data
);
return
0
;
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gf100_ce1_func
=
{
gf100_ce1
=
{
.
code
.
data
=
gf100_ce_code
,
.
code
.
size
=
sizeof
(
gf100_ce_code
),
.
data
.
data
=
gf100_ce_data
,
.
data
.
size
=
sizeof
(
gf100_ce_data
),
.
pmc_enable
=
0x00000080
,
.
init
=
gf100_ce_init
,
.
intr
=
gt215_ce_intr
,
.
intr
=
gt215_ce_intr
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
FERMI_DECOMPRESS
},
{
-
1
,
-
1
,
FERMI_DECOMPRESS
},
...
@@ -84,46 +64,17 @@ gf100_ce1_func = {
...
@@ -84,46 +64,17 @@ gf100_ce1_func = {
}
}
};
};
static
int
int
gf100_ce1_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
gf100_ce_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
ce
;
if
(
index
==
NVDEV_ENGINE_CE0
)
{
int
ret
;
return
nvkm_falcon_new_
(
&
gf100_ce0
,
device
,
index
,
true
,
0x104000
,
pengine
);
ret
=
nvkm_falcon_create
(
&
gf100_ce1_func
,
parent
,
engine
,
oclass
,
}
else
0x105000
,
true
,
"PCE1"
,
"ce1"
,
&
ce
);
if
(
index
==
NVDEV_ENGINE_CE1
)
{
*
pobject
=
nv_object
(
ce
);
return
nvkm_falcon_new_
(
&
gf100_ce1
,
device
,
index
,
true
,
if
(
ret
)
0x105000
,
pengine
);
return
ret
;
}
return
-
ENODEV
;
nv_subdev
(
ce
)
->
unit
=
0x00000080
;
nv_falcon
(
ce
)
->
code
.
data
=
gf100_ce_code
;
nv_falcon
(
ce
)
->
code
.
size
=
sizeof
(
gf100_ce_code
);
nv_falcon
(
ce
)
->
data
.
data
=
gf100_ce_data
;
nv_falcon
(
ce
)
->
data
.
size
=
sizeof
(
gf100_ce_data
);
return
0
;
}
}
struct
nvkm_oclass
gf100_ce0_oclass
=
{
.
handle
=
NV_ENGINE
(
CE0
,
0xc0
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gf100_ce0_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
gf100_ce_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
struct
nvkm_oclass
gf100_ce1_oclass
=
{
.
handle
=
NV_ENGINE
(
CE1
,
0xc0
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gf100_ce1_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
gf100_ce_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/ce/gt215.c
View file @
53e60da4
...
@@ -61,7 +61,12 @@ gt215_ce_intr(struct nvkm_falcon *ce, struct nvkm_fifo_chan *chan)
...
@@ -61,7 +61,12 @@ gt215_ce_intr(struct nvkm_falcon *ce, struct nvkm_fifo_chan *chan)
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gt215_ce_func
=
{
gt215_ce
=
{
.
code
.
data
=
gt215_ce_code
,
.
code
.
size
=
sizeof
(
gt215_ce_code
),
.
data
.
data
=
gt215_ce_data
,
.
data
.
size
=
sizeof
(
gt215_ce_data
),
.
pmc_enable
=
0x00802000
,
.
intr
=
gt215_ce_intr
,
.
intr
=
gt215_ce_intr
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
GT212_DMA
},
{
-
1
,
-
1
,
GT212_DMA
},
...
@@ -69,36 +74,10 @@ gt215_ce_func = {
...
@@ -69,36 +74,10 @@ gt215_ce_func = {
}
}
};
};
static
int
int
gt215_ce_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
gt215_ce_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
bool
enable
=
(
nv_device
(
parent
)
->
chipset
!=
0xaf
);
return
nvkm_falcon_new_
(
&
gt215_ce
,
device
,
index
,
struct
nvkm_falcon
*
ce
;
(
device
->
chipset
!=
0xaf
),
0x104000
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
gt215_ce_func
,
parent
,
engine
,
oclass
,
0x104000
,
enable
,
"PCE0"
,
"ce0"
,
&
ce
);
*
pobject
=
nv_object
(
ce
);
if
(
ret
)
return
ret
;
nv_subdev
(
ce
)
->
unit
=
0x00802000
;
nv_falcon
(
ce
)
->
code
.
data
=
gt215_ce_code
;
nv_falcon
(
ce
)
->
code
.
size
=
sizeof
(
gt215_ce_code
);
nv_falcon
(
ce
)
->
data
.
data
=
gt215_ce_data
;
nv_falcon
(
ce
)
->
data
.
size
=
sizeof
(
gt215_ce_data
);
return
0
;
}
}
struct
nvkm_oclass
gt215_ce_oclass
=
{
.
handle
=
NV_ENGINE
(
CE0
,
0xa3
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gt215_ce_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
_nvkm_falcon_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c
View file @
53e60da4
This diff is collapsed.
Click to expand it.
drivers/gpu/drm/nouveau/nvkm/engine/device/gf100.c
View file @
53e60da4
...
@@ -32,11 +32,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -32,11 +32,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf100_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf100_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gf100_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
break
;
break
;
...
@@ -45,11 +40,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -45,11 +40,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gf100_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
break
;
break
;
...
@@ -58,10 +48,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -58,10 +48,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
break
;
break
;
...
@@ -70,11 +56,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -70,11 +56,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gf100_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
break
;
break
;
...
@@ -83,10 +64,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -83,10 +64,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf104_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
break
;
break
;
...
@@ -95,10 +72,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -95,10 +72,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf108_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf108_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf108_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf108_pm_oclass
;
break
;
break
;
...
@@ -107,11 +80,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -107,11 +80,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf110_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf110_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gf100_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf100_pm_oclass
;
break
;
break
;
...
@@ -120,10 +88,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -120,10 +88,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf119_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf119_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gf110_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gf110_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf117_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf117_pm_oclass
;
break
;
break
;
...
@@ -132,10 +96,6 @@ gf100_identify(struct nvkm_device *device)
...
@@ -132,10 +96,6 @@ gf100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
gf100_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
gf100_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf117_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
gf117_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gf100_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gf100_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gf100_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gf110_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gf110_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf117_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gf117_pm_oclass
;
break
;
break
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/device/gk104.c
View file @
53e60da4
...
@@ -36,9 +36,6 @@ gk104_identify(struct nvkm_device *device)
...
@@ -36,9 +36,6 @@ gk104_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gk104_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gk104_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gk104_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gk104_pm_oclass
;
break
;
break
;
case
0xe7
:
case
0xe7
:
...
@@ -50,9 +47,6 @@ gk104_identify(struct nvkm_device *device)
...
@@ -50,9 +47,6 @@ gk104_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gk104_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gk104_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gk104_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gk104_pm_oclass
;
break
;
break
;
case
0xe6
:
case
0xe6
:
...
@@ -64,9 +58,6 @@ gk104_identify(struct nvkm_device *device)
...
@@ -64,9 +58,6 @@ gk104_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gk104_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gk104_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gk104_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gk104_pm_oclass
;
break
;
break
;
case
0xea
:
case
0xea
:
...
@@ -86,9 +77,6 @@ gk104_identify(struct nvkm_device *device)
...
@@ -86,9 +77,6 @@ gk104_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gk104_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gk104_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
&
gk110_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
&
gk110_pm_oclass
;
break
;
break
;
case
0xf1
:
case
0xf1
:
...
@@ -100,9 +88,6 @@ gk104_identify(struct nvkm_device *device)
...
@@ -100,9 +88,6 @@ gk104_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gk104_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gk104_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
&
gk110_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
&
gk110_pm_oclass
;
break
;
break
;
case
0x106
:
case
0x106
:
...
@@ -114,9 +99,6 @@ gk104_identify(struct nvkm_device *device)
...
@@ -114,9 +99,6 @@ gk104_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gk104_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gk104_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
break
;
break
;
case
0x108
:
case
0x108
:
device
->
oclass
[
NVDEV_ENGINE_DMAOBJ
]
=
gf110_dmaeng_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DMAOBJ
]
=
gf110_dmaeng_oclass
;
...
@@ -127,9 +109,6 @@ gk104_identify(struct nvkm_device *device)
...
@@ -127,9 +109,6 @@ gk104_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gk104_ce0_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gk104_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
gk104_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
gk104_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
gf100_msppp_oclass
;
break
;
break
;
default:
default:
return
-
EINVAL
;
return
-
EINVAL
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/device/gm100.c
View file @
53e60da4
...
@@ -42,9 +42,6 @@ gm100_identify(struct nvkm_device *device)
...
@@ -42,9 +42,6 @@ gm100_identify(struct nvkm_device *device)
#endif
#endif
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gk104_ce2_oclass
;
#if 0
#if 0
device->oclass[NVDEV_ENGINE_MSVLD ] = &gk104_msvld_oclass;
device->oclass[NVDEV_ENGINE_MSPDEC ] = &gk104_mspdec_oclass;
device->oclass[NVDEV_ENGINE_MSPPP ] = &gf100_msppp_oclass;
#endif
#endif
break
;
break
;
case
0x124
:
case
0x124
:
...
@@ -63,9 +60,6 @@ gm100_identify(struct nvkm_device *device)
...
@@ -63,9 +60,6 @@ gm100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gm204_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gm204_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gm204_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gm204_ce2_oclass
;
#if 0
#if 0
device->oclass[NVDEV_ENGINE_MSVLD ] = &gk104_msvld_oclass;
device->oclass[NVDEV_ENGINE_MSPDEC ] = &gk104_mspdec_oclass;
device->oclass[NVDEV_ENGINE_MSPPP ] = &gf100_msppp_oclass;
#endif
#endif
break
;
break
;
case
0x126
:
case
0x126
:
...
@@ -84,9 +78,6 @@ gm100_identify(struct nvkm_device *device)
...
@@ -84,9 +78,6 @@ gm100_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gm204_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE1
]
=
&
gm204_ce1_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gm204_ce2_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE2
]
=
&
gm204_ce2_oclass
;
#if 0
#if 0
device->oclass[NVDEV_ENGINE_MSVLD ] = &gk104_msvld_oclass;
device->oclass[NVDEV_ENGINE_MSPDEC ] = &gk104_mspdec_oclass;
device->oclass[NVDEV_ENGINE_MSPPP ] = &gf100_msppp_oclass;
#endif
#endif
break
;
break
;
case
0x12b
:
case
0x12b
:
...
...
drivers/gpu/drm/nouveau/nvkm/engine/device/nv50.c
View file @
53e60da4
...
@@ -101,10 +101,6 @@ nv50_identify(struct nvkm_device *device)
...
@@ -101,10 +101,6 @@ nv50_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
g98_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SEC
]
=
&
g98_sec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
g98_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
g98_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
g94_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
g94_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
g84_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
g84_pm_oclass
;
break
;
break
;
...
@@ -125,10 +121,6 @@ nv50_identify(struct nvkm_device *device)
...
@@ -125,10 +121,6 @@ nv50_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
g98_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SEC
]
=
&
g98_sec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
g98_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
g98_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
g94_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
g94_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
g84_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
g84_pm_oclass
;
break
;
break
;
...
@@ -137,10 +129,6 @@ nv50_identify(struct nvkm_device *device)
...
@@ -137,10 +129,6 @@ nv50_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
g98_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SEC
]
=
&
g98_sec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
g98_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
g98_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
g94_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
g94_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
g84_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
g84_pm_oclass
;
break
;
break
;
...
@@ -150,10 +138,6 @@ nv50_identify(struct nvkm_device *device)
...
@@ -150,10 +138,6 @@ nv50_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MPEG
]
=
&
g84_mpeg_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MPEG
]
=
&
g84_mpeg_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
g98_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
g98_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
g98_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gt215_ce_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
break
;
break
;
...
@@ -162,10 +146,6 @@ nv50_identify(struct nvkm_device *device)
...
@@ -162,10 +146,6 @@ nv50_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
g98_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
g98_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
g98_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gt215_ce_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
break
;
break
;
...
@@ -174,10 +154,6 @@ nv50_identify(struct nvkm_device *device)
...
@@ -174,10 +154,6 @@ nv50_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
g98_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
g98_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
g98_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gt215_ce_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
break
;
break
;
...
@@ -186,10 +162,6 @@ nv50_identify(struct nvkm_device *device)
...
@@ -186,10 +162,6 @@ nv50_identify(struct nvkm_device *device)
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_FIFO
]
=
g84_fifo_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_SW
]
=
nv50_sw_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_GR
]
=
&
nv50_gr_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPDEC
]
=
&
g98_mspdec_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSVLD
]
=
&
g98_msvld_oclass
;
device
->
oclass
[
NVDEV_ENGINE_MSPPP
]
=
&
g98_msppp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_CE0
]
=
&
gt215_ce_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_DISP
]
=
gt215_disp_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
device
->
oclass
[
NVDEV_ENGINE_PM
]
=
gt215_pm_oclass
;
break
;
break
;
...
...
drivers/gpu/drm/nouveau/nvkm/engine/falcon.c
View file @
53e60da4
...
@@ -54,10 +54,11 @@ nvkm_falcon_cclass = {
...
@@ -54,10 +54,11 @@ nvkm_falcon_cclass = {
};
};
static
void
static
void
nvkm_falcon_intr
(
struct
nvkm_
subdev
*
subdev
)
nvkm_falcon_intr
(
struct
nvkm_
engine
*
engine
)
{
{
struct
nvkm_falcon
*
falcon
=
(
void
*
)
subdev
;
struct
nvkm_falcon
*
falcon
=
nvkm_falcon
(
engine
);
struct
nvkm_device
*
device
=
falcon
->
engine
.
subdev
.
device
;
struct
nvkm_subdev
*
subdev
=
&
falcon
->
engine
.
subdev
;
struct
nvkm_device
*
device
=
subdev
->
device
;
const
u32
base
=
falcon
->
addr
;
const
u32
base
=
falcon
->
addr
;
u32
dest
=
nvkm_rd32
(
device
,
base
+
0x01c
);
u32
dest
=
nvkm_rd32
(
device
,
base
+
0x01c
);
u32
intr
=
nvkm_rd32
(
device
,
base
+
0x008
)
&
dest
&
~
(
dest
>>
16
);
u32
intr
=
nvkm_rd32
(
device
,
base
+
0x008
)
&
dest
&
~
(
dest
>>
16
);
...
@@ -89,6 +90,27 @@ nvkm_falcon_intr(struct nvkm_subdev *subdev)
...
@@ -89,6 +90,27 @@ nvkm_falcon_intr(struct nvkm_subdev *subdev)
nvkm_fifo_chan_put
(
device
->
fifo
,
flags
,
&
chan
);
nvkm_fifo_chan_put
(
device
->
fifo
,
flags
,
&
chan
);
}
}
static
int
nvkm_falcon_fini
(
struct
nvkm_engine
*
engine
,
bool
suspend
)
{
struct
nvkm_falcon
*
falcon
=
nvkm_falcon
(
engine
);
struct
nvkm_device
*
device
=
falcon
->
engine
.
subdev
.
device
;
const
u32
base
=
falcon
->
addr
;
if
(
!
suspend
)
{
nvkm_memory_del
(
&
falcon
->
core
);
if
(
falcon
->
external
)
{
vfree
(
falcon
->
data
.
data
);
vfree
(
falcon
->
code
.
data
);
falcon
->
code
.
data
=
NULL
;
}
}
nvkm_mask
(
device
,
base
+
0x048
,
0x00000003
,
0x00000000
);
nvkm_wr32
(
device
,
base
+
0x014
,
0xffffffff
);
return
0
;
}
static
void
*
static
void
*
vmemdup
(
const
void
*
src
,
size_t
len
)
vmemdup
(
const
void
*
src
,
size_t
len
)
{
{
...
@@ -99,23 +121,16 @@ vmemdup(const void *src, size_t len)
...
@@ -99,23 +121,16 @@ vmemdup(const void *src, size_t len)
return
p
;
return
p
;
}
}
int
static
int
_nvkm_falcon_init
(
struct
nvkm_object
*
object
)
nvkm_falcon_oneinit
(
struct
nvkm_engine
*
engine
)
{
{
struct
nvkm_falcon
*
falcon
=
(
void
*
)
object
;
struct
nvkm_falcon
*
falcon
=
nvkm_falcon
(
engine
)
;
struct
nvkm_subdev
*
subdev
=
&
falcon
->
engine
.
subdev
;
struct
nvkm_subdev
*
subdev
=
&
falcon
->
engine
.
subdev
;
struct
nvkm_device
*
device
=
subdev
->
device
;
struct
nvkm_device
*
device
=
subdev
->
device
;
const
struct
firmware
*
fw
;
char
name
[
32
]
=
"internal"
;
const
u32
base
=
falcon
->
addr
;
const
u32
base
=
falcon
->
addr
;
int
ret
,
i
;
u32
caps
;
u32
caps
;
/* enable engine, and determine its capabilities */
/* determine falcon capabilities */
ret
=
nvkm_engine_init_old
(
&
falcon
->
engine
);
if
(
ret
)
return
ret
;
if
(
device
->
chipset
<
0xa3
||
if
(
device
->
chipset
<
0xa3
||
device
->
chipset
==
0xaa
||
device
->
chipset
==
0xac
)
{
device
->
chipset
==
0xaa
||
device
->
chipset
==
0xac
)
{
falcon
->
version
=
0
;
falcon
->
version
=
0
;
...
@@ -134,6 +149,19 @@ _nvkm_falcon_init(struct nvkm_object *object)
...
@@ -134,6 +149,19 @@ _nvkm_falcon_init(struct nvkm_object *object)
nvkm_debug
(
subdev
,
"secret level: %d
\n
"
,
falcon
->
secret
);
nvkm_debug
(
subdev
,
"secret level: %d
\n
"
,
falcon
->
secret
);
nvkm_debug
(
subdev
,
"code limit: %d
\n
"
,
falcon
->
code
.
limit
);
nvkm_debug
(
subdev
,
"code limit: %d
\n
"
,
falcon
->
code
.
limit
);
nvkm_debug
(
subdev
,
"data limit: %d
\n
"
,
falcon
->
data
.
limit
);
nvkm_debug
(
subdev
,
"data limit: %d
\n
"
,
falcon
->
data
.
limit
);
return
0
;
}
static
int
nvkm_falcon_init
(
struct
nvkm_engine
*
engine
)
{
struct
nvkm_falcon
*
falcon
=
nvkm_falcon
(
engine
);
struct
nvkm_subdev
*
subdev
=
&
falcon
->
engine
.
subdev
;
struct
nvkm_device
*
device
=
subdev
->
device
;
const
struct
firmware
*
fw
;
char
name
[
32
]
=
"internal"
;
const
u32
base
=
falcon
->
addr
;
int
ret
,
i
;
/* wait for 'uc halted' to be signalled before continuing */
/* wait for 'uc halted' to be signalled before continuing */
if
(
falcon
->
secret
&&
falcon
->
version
<
4
)
{
if
(
falcon
->
secret
&&
falcon
->
version
<
4
)
{
...
@@ -279,56 +307,46 @@ _nvkm_falcon_init(struct nvkm_object *object)
...
@@ -279,56 +307,46 @@ _nvkm_falcon_init(struct nvkm_object *object)
nvkm_wr32
(
device
,
base
+
0x104
,
0x00000000
);
/* ENTRY */
nvkm_wr32
(
device
,
base
+
0x104
,
0x00000000
);
/* ENTRY */
nvkm_wr32
(
device
,
base
+
0x100
,
0x00000002
);
/* TRIGGER */
nvkm_wr32
(
device
,
base
+
0x100
,
0x00000002
);
/* TRIGGER */
nvkm_wr32
(
device
,
base
+
0x048
,
0x00000003
);
/* FIFO | CHSW */
nvkm_wr32
(
device
,
base
+
0x048
,
0x00000003
);
/* FIFO | CHSW */
if
(
falcon
->
func
->
init
)
falcon
->
func
->
init
(
falcon
);
return
0
;
return
0
;
}
}
int
static
void
*
_nvkm_falcon_fini
(
struct
nvkm_object
*
object
,
bool
suspend
)
nvkm_falcon_dtor
(
struct
nvkm_engine
*
engine
)
{
{
struct
nvkm_falcon
*
falcon
=
(
void
*
)
object
;
return
nvkm_falcon
(
engine
);
struct
nvkm_device
*
device
=
falcon
->
engine
.
subdev
.
device
;
const
u32
base
=
falcon
->
addr
;
if
(
!
suspend
)
{
nvkm_memory_del
(
&
falcon
->
core
);
if
(
falcon
->
external
)
{
vfree
(
falcon
->
data
.
data
);
vfree
(
falcon
->
code
.
data
);
falcon
->
code
.
data
=
NULL
;
}
}
nvkm_mask
(
device
,
base
+
0x048
,
0x00000003
,
0x00000000
);
nvkm_wr32
(
device
,
base
+
0x014
,
0xffffffff
);
return
nvkm_engine_fini_old
(
&
falcon
->
engine
,
suspend
);
}
}
static
const
struct
nvkm_engine_func
static
const
struct
nvkm_engine_func
nvkm_falcon
=
{
nvkm_falcon
=
{
.
dtor
=
nvkm_falcon_dtor
,
.
oneinit
=
nvkm_falcon_oneinit
,
.
init
=
nvkm_falcon_init
,
.
fini
=
nvkm_falcon_fini
,
.
intr
=
nvkm_falcon_intr
,
.
fifo
.
sclass
=
nvkm_falcon_oclass_get
,
.
fifo
.
sclass
=
nvkm_falcon_oclass_get
,
.
cclass
=
&
nvkm_falcon_cclass
,
.
cclass
=
&
nvkm_falcon_cclass
,
};
};
int
int
nvkm_falcon_create_
(
const
struct
nvkm_falcon_func
*
func
,
nvkm_falcon_new_
(
const
struct
nvkm_falcon_func
*
func
,
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
struct
nvkm_device
*
device
,
int
index
,
bool
enable
,
struct
nvkm_oclass
*
oclass
,
u32
addr
,
bool
enable
,
u32
addr
,
struct
nvkm_engine
**
pengine
)
const
char
*
iname
,
const
char
*
fname
,
int
length
,
void
**
pobject
)
{
{
struct
nvkm_falcon
*
falcon
;
struct
nvkm_falcon
*
falcon
;
int
ret
;
ret
=
nvkm_engine_create_
(
parent
,
engine
,
oclass
,
enable
,
iname
,
fname
,
length
,
pobject
);
falcon
=
*
pobject
;
if
(
ret
)
return
ret
;
falcon
->
engine
.
subdev
.
intr
=
nvkm_falcon_intr
;
if
(
!
(
falcon
=
kzalloc
(
sizeof
(
*
falcon
),
GFP_KERNEL
)))
falcon
->
engine
.
func
=
&
nvkm_falcon
;
return
-
ENOMEM
;
falcon
->
func
=
func
;
falcon
->
func
=
func
;
falcon
->
addr
=
addr
;
falcon
->
addr
=
addr
;
return
0
;
falcon
->
code
.
data
=
func
->
code
.
data
;
falcon
->
code
.
size
=
func
->
code
.
size
;
falcon
->
data
.
data
=
func
->
data
.
data
;
falcon
->
data
.
size
=
func
->
data
.
size
;
*
pengine
=
&
falcon
->
engine
;
return
nvkm_engine_ctor
(
&
nvkm_falcon
,
device
,
index
,
func
->
pmc_enable
,
enable
,
&
falcon
->
engine
);
}
}
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/Kbuild
View file @
53e60da4
nvkm-y += nvkm/engine/mspdec/base.o
nvkm-y += nvkm/engine/mspdec/g98.o
nvkm-y += nvkm/engine/mspdec/g98.o
nvkm-y += nvkm/engine/mspdec/gt215.o
nvkm-y += nvkm/engine/mspdec/gf100.o
nvkm-y += nvkm/engine/mspdec/gf100.o
nvkm-y += nvkm/engine/mspdec/gk104.o
nvkm-y += nvkm/engine/mspdec/gk104.o
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/base.c
0 → 100644
View file @
53e60da4
/*
* Copyright 2015 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 <bskeggs@redhat.com>
*/
#include "priv.h"
int
nvkm_mspdec_new_
(
const
struct
nvkm_falcon_func
*
func
,
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_engine
**
pengine
)
{
return
nvkm_falcon_new_
(
func
,
device
,
index
,
true
,
0x085000
,
pengine
);
}
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/g98.c
View file @
53e60da4
...
@@ -21,61 +21,31 @@
...
@@ -21,61 +21,31 @@
*
*
* Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin
* Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin
*/
*/
#include <engine/mspdec.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
void
g98_mspdec_init
(
struct
nvkm_
object
*
object
)
g98_mspdec_init
(
struct
nvkm_
falcon
*
mspdec
)
{
{
struct
nvkm_falcon
*
mspdec
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
mspdec
->
engine
.
subdev
.
device
;
struct
nvkm_device
*
device
=
mspdec
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
mspdec
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x085010
,
0x0000ffd2
);
nvkm_wr32
(
device
,
0x085010
,
0x0000ffd2
);
nvkm_wr32
(
device
,
0x08501c
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08501c
,
0x0000fff2
);
return
0
;
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
g98_mspdec_func
=
{
g98_mspdec
=
{
.
pmc_enable
=
0x01020000
,
.
init
=
g98_mspdec_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
G98_MSPDEC
},
{
-
1
,
-
1
,
G98_MSPDEC
},
{
-
1
,
-
1
,
GT212_MSPDEC
},
{}
{}
}
,
}
};
};
static
int
int
g98_mspdec_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
g98_mspdec_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
mspdec
;
return
nvkm_mspdec_new_
(
&
g98_mspdec
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
g98_mspdec_func
,
parent
,
engine
,
oclass
,
0x085000
,
true
,
"PMSPDEC"
,
"mspdec"
,
&
mspdec
);
*
pobject
=
nv_object
(
mspdec
);
if
(
ret
)
return
ret
;
nv_subdev
(
mspdec
)
->
unit
=
0x01020000
;
return
0
;
}
}
struct
nvkm_oclass
g98_mspdec_oclass
=
{
.
handle
=
NV_ENGINE
(
MSPDEC
,
0x98
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
g98_mspdec_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
g98_mspdec_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gf100.c
View file @
53e60da4
...
@@ -21,60 +21,31 @@
...
@@ -21,60 +21,31 @@
*
*
* Authors: Maarten Lankhorst
* Authors: Maarten Lankhorst
*/
*/
#include <engine/mspdec.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
void
gf100_mspdec_init
(
struct
nvkm_
object
*
object
)
gf100_mspdec_init
(
struct
nvkm_
falcon
*
mspdec
)
{
{
struct
nvkm_falcon
*
mspdec
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
mspdec
->
engine
.
subdev
.
device
;
struct
nvkm_device
*
device
=
mspdec
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
mspdec
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x085010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x085010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08501c
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08501c
,
0x0000fff2
);
return
0
;
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gf100_mspdec_func
=
{
gf100_mspdec
=
{
.
pmc_enable
=
0x00020000
,
.
init
=
gf100_mspdec_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
GF100_MSPDEC
},
{
-
1
,
-
1
,
GF100_MSPDEC
},
{}
{}
}
}
};
};
static
int
int
gf100_mspdec_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
gf100_mspdec_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
mspdec
;
return
nvkm_mspdec_new_
(
&
gf100_mspdec
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
gf100_mspdec_func
,
parent
,
engine
,
oclass
,
0x085000
,
true
,
"PMSPDEC"
,
"mspdec"
,
&
mspdec
);
*
pobject
=
nv_object
(
mspdec
);
if
(
ret
)
return
ret
;
nv_subdev
(
mspdec
)
->
unit
=
0x00020000
;
return
0
;
}
}
struct
nvkm_oclass
gf100_mspdec_oclass
=
{
.
handle
=
NV_ENGINE
(
MSPDEC
,
0xc0
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gf100_mspdec_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
gf100_mspdec_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gk104.c
View file @
53e60da4
...
@@ -21,60 +21,23 @@
...
@@ -21,60 +21,23 @@
*
*
* Authors: Ben Skeggs
* Authors: Ben Skeggs
*/
*/
#include <engine/mspdec.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
gk104_mspdec_init
(
struct
nvkm_object
*
object
)
{
struct
nvkm_falcon
*
mspdec
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
mspdec
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
mspdec
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x085010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08501c
,
0x0000fff2
);
return
0
;
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gk104_mspdec_func
=
{
gk104_mspdec
=
{
.
pmc_enable
=
0x00020000
,
.
init
=
gf100_mspdec_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
GK104_MSPDEC
},
{
-
1
,
-
1
,
GK104_MSPDEC
},
{}
{}
}
}
};
};
static
int
int
gk104_mspdec_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
gk104_mspdec_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
falcon
;
return
nvkm_mspdec_new_
(
&
gk104_mspdec
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
gk104_mspdec_func
,
parent
,
engine
,
oclass
,
0x085000
,
true
,
"PMSPDEC"
,
"mspdec"
,
&
falcon
);
*
pobject
=
nv_object
(
falcon
);
if
(
ret
)
return
ret
;
nv_subdev
(
falcon
)
->
unit
=
0x00020000
;
return
0
;
}
}
struct
nvkm_oclass
gk104_mspdec_oclass
=
{
.
handle
=
NV_ENGINE
(
MSPDEC
,
0xe0
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gk104_mspdec_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
gk104_mspdec_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/gt215.c
0 → 100644
View file @
53e60da4
/*
* 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, Maarten Lankhorst, Ilia Mirkin
*/
#include "priv.h"
#include <nvif/class.h>
static
const
struct
nvkm_falcon_func
gt215_mspdec
=
{
.
pmc_enable
=
0x01020000
,
.
init
=
g98_mspdec_init
,
.
sclass
=
{
{
-
1
,
-
1
,
GT212_MSPDEC
},
{}
}
};
int
gt215_mspdec_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_engine
**
pengine
)
{
return
nvkm_mspdec_new_
(
&
gt215_mspdec
,
device
,
index
,
pengine
);
}
drivers/gpu/drm/nouveau/nvkm/engine/mspdec/priv.h
0 → 100644
View file @
53e60da4
#ifndef __NVKM_MSPDEC_PRIV_H__
#define __NVKM_MSPDEC_PRIV_H__
#include <engine/mspdec.h>
int
nvkm_mspdec_new_
(
const
struct
nvkm_falcon_func
*
,
struct
nvkm_device
*
,
int
index
,
struct
nvkm_engine
**
);
void
g98_mspdec_init
(
struct
nvkm_falcon
*
);
void
gf100_mspdec_init
(
struct
nvkm_falcon
*
);
#endif
drivers/gpu/drm/nouveau/nvkm/engine/msppp/Kbuild
View file @
53e60da4
nvkm-y += nvkm/engine/msppp/base.o
nvkm-y += nvkm/engine/msppp/g98.o
nvkm-y += nvkm/engine/msppp/g98.o
nvkm-y += nvkm/engine/msppp/gt215.o
nvkm-y += nvkm/engine/msppp/gf100.o
nvkm-y += nvkm/engine/msppp/gf100.o
drivers/gpu/drm/nouveau/nvkm/engine/msppp/base.c
0 → 100644
View file @
53e60da4
/*
* Copyright 2015 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 <bskeggs@redhat.com>
*/
#include "priv.h"
int
nvkm_msppp_new_
(
const
struct
nvkm_falcon_func
*
func
,
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_engine
**
pengine
)
{
return
nvkm_falcon_new_
(
func
,
device
,
index
,
true
,
0x086000
,
pengine
);
}
drivers/gpu/drm/nouveau/nvkm/engine/msppp/g98.c
View file @
53e60da4
...
@@ -21,61 +21,31 @@
...
@@ -21,61 +21,31 @@
*
*
* Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin
* Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin
*/
*/
#include <engine/msppp.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
void
g98_msppp_init
(
struct
nvkm_
object
*
object
)
g98_msppp_init
(
struct
nvkm_
falcon
*
msppp
)
{
{
struct
nvkm_falcon
*
msppp
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
msppp
->
engine
.
subdev
.
device
;
struct
nvkm_device
*
device
=
msppp
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
msppp
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x086010
,
0x0000ffd2
);
nvkm_wr32
(
device
,
0x086010
,
0x0000ffd2
);
nvkm_wr32
(
device
,
0x08601c
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08601c
,
0x0000fff2
);
return
0
;
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
g98_msppp_func
=
{
g98_msppp
=
{
.
pmc_enable
=
0x00400002
,
.
init
=
g98_msppp_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
G98_MSPPP
},
{
-
1
,
-
1
,
G98_MSPPP
},
{
-
1
,
-
1
,
GT212_MSPPP
},
{}
{}
}
}
};
};
static
int
int
g98_msppp_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
g98_msppp_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
msppp
;
return
nvkm_msppp_new_
(
&
g98_msppp
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
g98_msppp_func
,
parent
,
engine
,
oclass
,
0x086000
,
true
,
"PMSPPP"
,
"msppp"
,
&
msppp
);
*
pobject
=
nv_object
(
msppp
);
if
(
ret
)
return
ret
;
nv_subdev
(
msppp
)
->
unit
=
0x00400002
;
return
0
;
}
}
struct
nvkm_oclass
g98_msppp_oclass
=
{
.
handle
=
NV_ENGINE
(
MSPPP
,
0x98
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
g98_msppp_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
g98_msppp_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/msppp/gf100.c
View file @
53e60da4
...
@@ -21,60 +21,31 @@
...
@@ -21,60 +21,31 @@
*
*
* Authors: Maarten Lankhorst
* Authors: Maarten Lankhorst
*/
*/
#include <engine/msppp.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
static
void
gf100_msppp_init
(
struct
nvkm_
object
*
object
)
gf100_msppp_init
(
struct
nvkm_
falcon
*
msppp
)
{
{
struct
nvkm_falcon
*
msppp
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
msppp
->
engine
.
subdev
.
device
;
struct
nvkm_device
*
device
=
msppp
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
msppp
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x086010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x086010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08601c
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08601c
,
0x0000fff2
);
return
0
;
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gf100_msppp_func
=
{
gf100_msppp
=
{
.
pmc_enable
=
0x00000002
,
.
init
=
gf100_msppp_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
GF100_MSPPP
},
{
-
1
,
-
1
,
GF100_MSPPP
},
{}
{}
}
}
};
};
static
int
int
gf100_msppp_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
gf100_msppp_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
msppp
;
return
nvkm_msppp_new_
(
&
gf100_msppp
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
gf100_msppp_func
,
parent
,
engine
,
oclass
,
0x086000
,
true
,
"PMSPPP"
,
"msppp"
,
&
msppp
);
*
pobject
=
nv_object
(
msppp
);
if
(
ret
)
return
ret
;
nv_subdev
(
msppp
)
->
unit
=
0x00000002
;
return
0
;
}
}
struct
nvkm_oclass
gf100_msppp_oclass
=
{
.
handle
=
NV_ENGINE
(
MSPPP
,
0xc0
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gf100_msppp_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
gf100_msppp_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/msppp/gt215.c
0 → 100644
View file @
53e60da4
/*
* 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, Maarten Lankhorst, Ilia Mirkin
*/
#include "priv.h"
#include <nvif/class.h>
static
const
struct
nvkm_falcon_func
gt215_msppp
=
{
.
pmc_enable
=
0x00400002
,
.
init
=
g98_msppp_init
,
.
sclass
=
{
{
-
1
,
-
1
,
GT212_MSPPP
},
{}
}
};
int
gt215_msppp_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_engine
**
pengine
)
{
return
nvkm_msppp_new_
(
&
gt215_msppp
,
device
,
index
,
pengine
);
}
drivers/gpu/drm/nouveau/nvkm/engine/msppp/priv.h
0 → 100644
View file @
53e60da4
#ifndef __NVKM_MSPPP_PRIV_H__
#define __NVKM_MSPPP_PRIV_H__
#include <engine/msppp.h>
int
nvkm_msppp_new_
(
const
struct
nvkm_falcon_func
*
,
struct
nvkm_device
*
,
int
index
,
struct
nvkm_engine
**
);
void
g98_msppp_init
(
struct
nvkm_falcon
*
);
#endif
drivers/gpu/drm/nouveau/nvkm/engine/msvld/Kbuild
View file @
53e60da4
nvkm-y += nvkm/engine/msvld/base.o
nvkm-y += nvkm/engine/msvld/g98.o
nvkm-y += nvkm/engine/msvld/g98.o
nvkm-y += nvkm/engine/msvld/gt215.o
nvkm-y += nvkm/engine/msvld/mcp89.o
nvkm-y += nvkm/engine/msvld/gf100.o
nvkm-y += nvkm/engine/msvld/gf100.o
nvkm-y += nvkm/engine/msvld/gk104.o
nvkm-y += nvkm/engine/msvld/gk104.o
drivers/gpu/drm/nouveau/nvkm/engine/msvld/base.c
0 → 100644
View file @
53e60da4
/*
* Copyright 2015 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 <bskeggs@redhat.com>
*/
#include "priv.h"
int
nvkm_msvld_new_
(
const
struct
nvkm_falcon_func
*
func
,
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_engine
**
pengine
)
{
return
nvkm_falcon_new_
(
func
,
device
,
index
,
true
,
0x084000
,
pengine
);
}
drivers/gpu/drm/nouveau/nvkm/engine/msvld/g98.c
View file @
53e60da4
...
@@ -21,62 +21,31 @@
...
@@ -21,62 +21,31 @@
*
*
* Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin
* Authors: Ben Skeggs, Maarten Lankhorst, Ilia Mirkin
*/
*/
#include <engine/msvld.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
void
g98_msvld_init
(
struct
nvkm_
object
*
object
)
g98_msvld_init
(
struct
nvkm_
falcon
*
msvld
)
{
{
struct
nvkm_falcon
*
msvld
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
msvld
->
engine
.
subdev
.
device
;
struct
nvkm_device
*
device
=
msvld
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
msvld
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x084010
,
0x0000ffd2
);
nvkm_wr32
(
device
,
0x084010
,
0x0000ffd2
);
nvkm_wr32
(
device
,
0x08401c
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08401c
,
0x0000fff2
);
return
0
;
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
g98_msvld_func
=
{
g98_msvld
=
{
.
pmc_enable
=
0x04008000
,
.
init
=
g98_msvld_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
G98_MSVLD
},
{
-
1
,
-
1
,
G98_MSVLD
},
{
-
1
,
-
1
,
GT212_MSVLD
},
{
-
1
,
-
1
,
IGT21A_MSVLD
},
{}
{}
}
}
};
};
static
int
int
g98_msvld_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
g98_msvld_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
msvld
;
return
nvkm_msvld_new_
(
&
g98_msvld
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
g98_msvld_func
,
parent
,
engine
,
oclass
,
0x084000
,
true
,
"PMSVLD"
,
"msvld"
,
&
msvld
);
*
pobject
=
nv_object
(
msvld
);
if
(
ret
)
return
ret
;
nv_subdev
(
msvld
)
->
unit
=
0x04008000
;
return
0
;
}
}
struct
nvkm_oclass
g98_msvld_oclass
=
{
.
handle
=
NV_ENGINE
(
MSVLD
,
0x98
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
g98_msvld_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
g98_msvld_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gf100.c
View file @
53e60da4
...
@@ -21,60 +21,31 @@
...
@@ -21,60 +21,31 @@
*
*
* Authors: Maarten Lankhorst
* Authors: Maarten Lankhorst
*/
*/
#include <engine/msvld.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
void
gf100_msvld_init
(
struct
nvkm_
object
*
object
)
gf100_msvld_init
(
struct
nvkm_
falcon
*
msvld
)
{
{
struct
nvkm_falcon
*
msvld
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
msvld
->
engine
.
subdev
.
device
;
struct
nvkm_device
*
device
=
msvld
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
msvld
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x084010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x084010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08401c
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08401c
,
0x0000fff2
);
return
0
;
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gf100_msvld_func
=
{
gf100_msvld
=
{
.
pmc_enable
=
0x00008000
,
.
init
=
gf100_msvld_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
GF100_MSVLD
},
{
-
1
,
-
1
,
GF100_MSVLD
},
{}
{}
}
}
};
};
static
int
int
gf100_msvld_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
gf100_msvld_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
msvld
;
return
nvkm_msvld_new_
(
&
gf100_msvld
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
gf100_msvld_func
,
parent
,
engine
,
oclass
,
0x084000
,
true
,
"PMSVLD"
,
"msvld"
,
&
msvld
);
*
pobject
=
nv_object
(
msvld
);
if
(
ret
)
return
ret
;
nv_subdev
(
msvld
)
->
unit
=
0x00008000
;
return
0
;
}
}
struct
nvkm_oclass
gf100_msvld_oclass
=
{
.
handle
=
NV_ENGINE
(
MSVLD
,
0xc0
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gf100_msvld_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
gf100_msvld_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gk104.c
View file @
53e60da4
...
@@ -21,60 +21,23 @@
...
@@ -21,60 +21,23 @@
*
*
* Authors: Ben Skeggs
* Authors: Ben Skeggs
*/
*/
#include <engine/msvld.h>
#include "priv.h"
#include <engine/falcon.h>
#include <nvif/class.h>
#include <nvif/class.h>
static
int
gk104_msvld_init
(
struct
nvkm_object
*
object
)
{
struct
nvkm_falcon
*
msvld
=
(
void
*
)
object
;
struct
nvkm_device
*
device
=
msvld
->
engine
.
subdev
.
device
;
int
ret
;
ret
=
nvkm_falcon_init
(
msvld
);
if
(
ret
)
return
ret
;
nvkm_wr32
(
device
,
0x084010
,
0x0000fff2
);
nvkm_wr32
(
device
,
0x08401c
,
0x0000fff2
);
return
0
;
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
gk104_msvld_func
=
{
gk104_msvld
=
{
.
pmc_enable
=
0x00008000
,
.
init
=
gf100_msvld_init
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
GK104_MSVLD
},
{
-
1
,
-
1
,
GK104_MSVLD
},
{}
{}
}
}
};
};
static
int
int
gk104_msvld_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
gk104_msvld_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
msvld
;
return
nvkm_msvld_new_
(
&
gk104_msvld
,
device
,
index
,
pengine
);
int
ret
;
ret
=
nvkm_falcon_create
(
&
gk104_msvld_func
,
parent
,
engine
,
oclass
,
0x084000
,
true
,
"PMSVLD"
,
"msvld"
,
&
msvld
);
*
pobject
=
nv_object
(
msvld
);
if
(
ret
)
return
ret
;
nv_subdev
(
msvld
)
->
unit
=
0x00008000
;
return
0
;
}
}
struct
nvkm_oclass
gk104_msvld_oclass
=
{
.
handle
=
NV_ENGINE
(
MSVLD
,
0xe0
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
gk104_msvld_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
gk104_msvld_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
drivers/gpu/drm/nouveau/nvkm/engine/msvld/gt215.c
0 → 100644
View file @
53e60da4
/*
* 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, Maarten Lankhorst, Ilia Mirkin
*/
#include "priv.h"
#include <nvif/class.h>
static
const
struct
nvkm_falcon_func
gt215_msvld
=
{
.
pmc_enable
=
0x04008000
,
.
init
=
g98_msvld_init
,
.
sclass
=
{
{
-
1
,
-
1
,
GT212_MSVLD
},
{}
}
};
int
gt215_msvld_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_engine
**
pengine
)
{
return
nvkm_msvld_new_
(
&
gt215_msvld
,
device
,
index
,
pengine
);
}
drivers/gpu/drm/nouveau/nvkm/engine/msvld/mcp89.c
0 → 100644
View file @
53e60da4
/*
* 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, Maarten Lankhorst, Ilia Mirkin
*/
#include "priv.h"
#include <nvif/class.h>
static
const
struct
nvkm_falcon_func
mcp89_msvld
=
{
.
pmc_enable
=
0x04008000
,
.
init
=
g98_msvld_init
,
.
sclass
=
{
{
-
1
,
-
1
,
IGT21A_MSVLD
},
{}
}
};
int
mcp89_msvld_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_engine
**
pengine
)
{
return
nvkm_msvld_new_
(
&
mcp89_msvld
,
device
,
index
,
pengine
);
}
drivers/gpu/drm/nouveau/nvkm/engine/msvld/priv.h
0 → 100644
View file @
53e60da4
#ifndef __NVKM_MSVLD_PRIV_H__
#define __NVKM_MSVLD_PRIV_H__
#include <engine/msvld.h>
int
nvkm_msvld_new_
(
const
struct
nvkm_falcon_func
*
,
struct
nvkm_device
*
,
int
index
,
struct
nvkm_engine
**
);
void
g98_msvld_init
(
struct
nvkm_falcon
*
);
void
gf100_msvld_init
(
struct
nvkm_falcon
*
);
#endif
drivers/gpu/drm/nouveau/nvkm/engine/sec/g98.c
View file @
53e60da4
...
@@ -22,7 +22,6 @@
...
@@ -22,7 +22,6 @@
* Authors: Ben Skeggs
* Authors: Ben Skeggs
*/
*/
#include <engine/sec.h>
#include <engine/sec.h>
#include <engine/falcon.h>
#include <engine/fifo.h>
#include <engine/fifo.h>
#include "fuc/g98.fuc0s.h"
#include "fuc/g98.fuc0s.h"
...
@@ -61,7 +60,12 @@ g98_sec_intr(struct nvkm_falcon *sec, struct nvkm_fifo_chan *chan)
...
@@ -61,7 +60,12 @@ g98_sec_intr(struct nvkm_falcon *sec, struct nvkm_fifo_chan *chan)
}
}
static
const
struct
nvkm_falcon_func
static
const
struct
nvkm_falcon_func
g98_sec_func
=
{
g98_sec
=
{
.
code
.
data
=
g98_sec_code
,
.
code
.
size
=
sizeof
(
g98_sec_code
),
.
data
.
data
=
g98_sec_data
,
.
data
.
size
=
sizeof
(
g98_sec_data
),
.
pmc_enable
=
0x00004000
,
.
intr
=
g98_sec_intr
,
.
intr
=
g98_sec_intr
,
.
sclass
=
{
.
sclass
=
{
{
-
1
,
-
1
,
G98_SEC
},
{
-
1
,
-
1
,
G98_SEC
},
...
@@ -69,35 +73,10 @@ g98_sec_func = {
...
@@ -69,35 +73,10 @@ g98_sec_func = {
}
}
};
};
static
int
int
g98_sec_ctor
(
struct
nvkm_object
*
parent
,
struct
nvkm_object
*
engine
,
g98_sec_new
(
struct
nvkm_device
*
device
,
int
index
,
struct
nvkm_oclass
*
oclass
,
void
*
data
,
u32
size
,
struct
nvkm_engine
**
pengine
)
struct
nvkm_object
**
pobject
)
{
{
struct
nvkm_falcon
*
sec
;
return
nvkm_falcon_new_
(
&
g98_sec
,
device
,
index
,
int
ret
;
true
,
0x087000
,
pengine
);
ret
=
nvkm_falcon_create
(
&
g98_sec_func
,
parent
,
engine
,
oclass
,
0x087000
,
true
,
"PSEC"
,
"sec"
,
&
sec
);
*
pobject
=
nv_object
(
sec
);
if
(
ret
)
return
ret
;
nv_subdev
(
sec
)
->
unit
=
0x00004000
;
nv_falcon
(
sec
)
->
code
.
data
=
g98_sec_code
;
nv_falcon
(
sec
)
->
code
.
size
=
sizeof
(
g98_sec_code
);
nv_falcon
(
sec
)
->
data
.
data
=
g98_sec_data
;
nv_falcon
(
sec
)
->
data
.
size
=
sizeof
(
g98_sec_data
);
return
0
;
}
}
struct
nvkm_oclass
g98_sec_oclass
=
{
.
handle
=
NV_ENGINE
(
SEC
,
0x98
),
.
ofuncs
=
&
(
struct
nvkm_ofuncs
)
{
.
ctor
=
g98_sec_ctor
,
.
dtor
=
_nvkm_falcon_dtor
,
.
init
=
_nvkm_falcon_init
,
.
fini
=
_nvkm_falcon_fini
,
},
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment