1 #ifndef __NOUVEAU_SOFTWARE_H__
2 #define __NOUVEAU_SOFTWARE_H__
4 struct nouveau_software_priv
{
5 struct nouveau_exec_engine base
;
6 struct list_head vblank
;
7 spinlock_t peephole_lock
;
10 struct nouveau_software_chan
{
11 struct list_head flip
;
13 struct list_head list
;
23 nouveau_software_context_new(struct nouveau_software_chan
*pch
)
25 INIT_LIST_HEAD(&pch
->flip
);
26 INIT_LIST_HEAD(&pch
->vblank
.list
);
30 nouveau_software_create(struct nouveau_software_priv
*psw
)
32 INIT_LIST_HEAD(&psw
->vblank
);
33 spin_lock_init(&psw
->peephole_lock
);
37 nouveau_software_class(struct drm_device
*dev
)
39 struct drm_nouveau_private
*dev_priv
= dev
->dev_private
;
40 if (dev_priv
->card_type
<= NV_04
)
42 if (dev_priv
->card_type
<= NV_40
)
44 if (dev_priv
->card_type
<= NV_50
)
46 if (dev_priv
->card_type
<= NV_E0
)
51 int nv04_software_create(struct drm_device
*);
52 int nv50_software_create(struct drm_device
*);
53 int nvc0_software_create(struct drm_device
*);
54 u64
nvc0_software_crtc(struct nouveau_channel
*, int crtc
);