|
@@ -39,6 +39,7 @@ nv04_display_create(struct drm_device *dev)
|
|
|
struct dcb_table *dcb = &drm->vbios.dcb;
|
|
|
struct drm_connector *connector, *ct;
|
|
|
struct drm_encoder *encoder;
|
|
|
+ struct nouveau_encoder *nv_encoder;
|
|
|
struct nouveau_crtc *crtc;
|
|
|
struct nv04_display *disp;
|
|
|
int i, ret;
|
|
@@ -110,11 +111,8 @@ nv04_display_create(struct drm_device *dev)
|
|
|
list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head)
|
|
|
crtc->save(&crtc->base);
|
|
|
|
|
|
- list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
|
|
- const struct drm_encoder_helper_funcs *func = encoder->helper_private;
|
|
|
-
|
|
|
- func->save(encoder);
|
|
|
- }
|
|
|
+ list_for_each_entry(nv_encoder, &dev->mode_config.encoder_list, base.base.head)
|
|
|
+ nv_encoder->enc_save(&nv_encoder->base.base);
|
|
|
|
|
|
nouveau_overlay_init(dev);
|
|
|
|
|
@@ -126,7 +124,7 @@ nv04_display_destroy(struct drm_device *dev)
|
|
|
{
|
|
|
struct nv04_display *disp = nv04_display(dev);
|
|
|
struct nouveau_drm *drm = nouveau_drm(dev);
|
|
|
- struct drm_encoder *encoder;
|
|
|
+ struct nouveau_encoder *encoder;
|
|
|
struct drm_crtc *crtc;
|
|
|
struct nouveau_crtc *nv_crtc;
|
|
|
|
|
@@ -140,11 +138,8 @@ nv04_display_destroy(struct drm_device *dev)
|
|
|
}
|
|
|
|
|
|
/* Restore state */
|
|
|
- list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
|
|
- const struct drm_encoder_helper_funcs *func = encoder->helper_private;
|
|
|
-
|
|
|
- func->restore(encoder);
|
|
|
- }
|
|
|
+ list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.base.head)
|
|
|
+ encoder->enc_restore(&encoder->base.base);
|
|
|
|
|
|
list_for_each_entry(nv_crtc, &dev->mode_config.crtc_list, base.head)
|
|
|
nv_crtc->restore(&nv_crtc->base);
|
|
@@ -160,8 +155,8 @@ nv04_display_destroy(struct drm_device *dev)
|
|
|
int
|
|
|
nv04_display_init(struct drm_device *dev)
|
|
|
{
|
|
|
- struct drm_encoder *encoder;
|
|
|
- struct drm_crtc *crtc;
|
|
|
+ struct nouveau_encoder *encoder;
|
|
|
+ struct nouveau_crtc *crtc;
|
|
|
|
|
|
/* meh.. modeset apparently doesn't setup all the regs and depends
|
|
|
* on pre-existing state, for now load the state of the card *before*
|
|
@@ -171,14 +166,11 @@ nv04_display_init(struct drm_device *dev)
|
|
|
* save/restore "pre-load" state, but more general so we can save
|
|
|
* on suspend too.
|
|
|
*/
|
|
|
- list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
|
|
|
- const struct drm_encoder_helper_funcs *func = encoder->helper_private;
|
|
|
-
|
|
|
- func->restore(encoder);
|
|
|
- }
|
|
|
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head)
|
|
|
+ crtc->save(&crtc->base);
|
|
|
|
|
|
- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
|
|
|
- crtc->funcs->restore(crtc);
|
|
|
+ list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.base.head)
|
|
|
+ encoder->enc_save(&encoder->base.base);
|
|
|
|
|
|
return 0;
|
|
|
}
|