Commit d56f57ac authored by Daniel Vetter's avatar Daniel Vetter

drm/gma500: Move to private save/restore hooks

I want to remove the core ones since with atomic drivers system
suspend/resume is solved much differently. And there's only 2 drivers
(nouveau besides gma500) really using them.

v2: Fixup build noise 0day reported.

Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1449218769-16577-13-git-send-email-daniel.vetter@ffwll.ch
Reviewed-by: Thierry Reding <treding@nvidia.com> (v1)
parent 458091b5
...@@ -619,6 +619,8 @@ const struct psb_ops cdv_chip_ops = { ...@@ -619,6 +619,8 @@ const struct psb_ops cdv_chip_ops = {
.init_pm = cdv_init_pm, .init_pm = cdv_init_pm,
.save_regs = cdv_save_display_registers, .save_regs = cdv_save_display_registers,
.restore_regs = cdv_restore_display_registers, .restore_regs = cdv_restore_display_registers,
.save_crtc = gma_crtc_save,
.restore_crtc = gma_crtc_restore,
.power_down = cdv_power_down, .power_down = cdv_power_down,
.power_up = cdv_power_up, .power_up = cdv_power_up,
.update_wm = cdv_update_wm, .update_wm = cdv_update_wm,
......
...@@ -983,8 +983,6 @@ const struct drm_crtc_helper_funcs cdv_intel_helper_funcs = { ...@@ -983,8 +983,6 @@ const struct drm_crtc_helper_funcs cdv_intel_helper_funcs = {
}; };
const struct drm_crtc_funcs cdv_intel_crtc_funcs = { const struct drm_crtc_funcs cdv_intel_crtc_funcs = {
.save = gma_crtc_save,
.restore = gma_crtc_restore,
.cursor_set = gma_crtc_cursor_set, .cursor_set = gma_crtc_cursor_set,
.cursor_move = gma_crtc_cursor_move, .cursor_move = gma_crtc_cursor_move,
.gamma_set = gma_crtc_gamma_set, .gamma_set = gma_crtc_gamma_set,
......
...@@ -270,8 +270,6 @@ static const struct drm_connector_helper_funcs ...@@ -270,8 +270,6 @@ static const struct drm_connector_helper_funcs
static const struct drm_connector_funcs cdv_hdmi_connector_funcs = { static const struct drm_connector_funcs cdv_hdmi_connector_funcs = {
.dpms = drm_helper_connector_dpms, .dpms = drm_helper_connector_dpms,
.save = cdv_hdmi_save,
.restore = cdv_hdmi_restore,
.detect = cdv_hdmi_detect, .detect = cdv_hdmi_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.set_property = cdv_hdmi_set_property, .set_property = cdv_hdmi_set_property,
...@@ -306,6 +304,9 @@ void cdv_hdmi_init(struct drm_device *dev, ...@@ -306,6 +304,9 @@ void cdv_hdmi_init(struct drm_device *dev,
connector = &gma_connector->base; connector = &gma_connector->base;
connector->polled = DRM_CONNECTOR_POLL_HPD; connector->polled = DRM_CONNECTOR_POLL_HPD;
gma_connector->save = cdv_hdmi_save;
gma_connector->restore = cdv_hdmi_restore;
encoder = &gma_encoder->base; encoder = &gma_encoder->base;
drm_connector_init(dev, connector, drm_connector_init(dev, connector,
&cdv_hdmi_connector_funcs, &cdv_hdmi_connector_funcs,
......
...@@ -530,8 +530,6 @@ static const struct drm_connector_helper_funcs ...@@ -530,8 +530,6 @@ static const struct drm_connector_helper_funcs
static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = { static const struct drm_connector_funcs cdv_intel_lvds_connector_funcs = {
.dpms = drm_helper_connector_dpms, .dpms = drm_helper_connector_dpms,
.save = cdv_intel_lvds_save,
.restore = cdv_intel_lvds_restore,
.detect = cdv_intel_lvds_detect, .detect = cdv_intel_lvds_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.set_property = cdv_intel_lvds_set_property, .set_property = cdv_intel_lvds_set_property,
...@@ -643,6 +641,8 @@ void cdv_intel_lvds_init(struct drm_device *dev, ...@@ -643,6 +641,8 @@ void cdv_intel_lvds_init(struct drm_device *dev,
gma_encoder->dev_priv = lvds_priv; gma_encoder->dev_priv = lvds_priv;
connector = &gma_connector->base; connector = &gma_connector->base;
gma_connector->save = cdv_intel_lvds_save;
gma_connector->restore = cdv_intel_lvds_restore;
encoder = &gma_encoder->base; encoder = &gma_encoder->base;
......
...@@ -546,6 +546,8 @@ const struct psb_ops mdfld_chip_ops = { ...@@ -546,6 +546,8 @@ const struct psb_ops mdfld_chip_ops = {
.save_regs = mdfld_save_registers, .save_regs = mdfld_save_registers,
.restore_regs = mdfld_restore_registers, .restore_regs = mdfld_restore_registers,
.save_crtc = gma_crtc_save,
.restore_crtc = gma_crtc_restore,
.power_down = mdfld_power_down, .power_down = mdfld_power_down,
.power_up = mdfld_power_up, .power_up = mdfld_power_up,
}; };
...@@ -405,8 +405,6 @@ static struct drm_encoder *mdfld_dsi_connector_best_encoder( ...@@ -405,8 +405,6 @@ static struct drm_encoder *mdfld_dsi_connector_best_encoder(
/*DSI connector funcs*/ /*DSI connector funcs*/
static const struct drm_connector_funcs mdfld_dsi_connector_funcs = { static const struct drm_connector_funcs mdfld_dsi_connector_funcs = {
.dpms = /*drm_helper_connector_dpms*/mdfld_dsi_connector_dpms, .dpms = /*drm_helper_connector_dpms*/mdfld_dsi_connector_dpms,
.save = mdfld_dsi_connector_save,
.restore = mdfld_dsi_connector_restore,
.detect = mdfld_dsi_connector_detect, .detect = mdfld_dsi_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.set_property = mdfld_dsi_connector_set_property, .set_property = mdfld_dsi_connector_set_property,
...@@ -563,6 +561,9 @@ void mdfld_dsi_output_init(struct drm_device *dev, ...@@ -563,6 +561,9 @@ void mdfld_dsi_output_init(struct drm_device *dev,
connector = &dsi_connector->base.base; connector = &dsi_connector->base.base;
dsi_connector->base.save = mdfld_dsi_connector_save;
dsi_connector->base.restore = mdfld_dsi_connector_restore;
drm_connector_init(dev, connector, &mdfld_dsi_connector_funcs, drm_connector_init(dev, connector, &mdfld_dsi_connector_funcs,
DRM_MODE_CONNECTOR_LVDS); DRM_MODE_CONNECTOR_LVDS);
drm_connector_helper_add(connector, &mdfld_dsi_connector_helper_funcs); drm_connector_helper_add(connector, &mdfld_dsi_connector_helper_funcs);
......
...@@ -568,6 +568,8 @@ const struct psb_ops oaktrail_chip_ops = { ...@@ -568,6 +568,8 @@ const struct psb_ops oaktrail_chip_ops = {
.save_regs = oaktrail_save_display_registers, .save_regs = oaktrail_save_display_registers,
.restore_regs = oaktrail_restore_display_registers, .restore_regs = oaktrail_restore_display_registers,
.save_crtc = gma_crtc_save,
.restore_crtc = gma_crtc_restore,
.power_down = oaktrail_power_down, .power_down = oaktrail_power_down,
.power_up = oaktrail_power_up, .power_up = oaktrail_power_up,
......
...@@ -181,7 +181,7 @@ static int psb_save_display_registers(struct drm_device *dev) ...@@ -181,7 +181,7 @@ static int psb_save_display_registers(struct drm_device *dev)
{ {
struct drm_psb_private *dev_priv = dev->dev_private; struct drm_psb_private *dev_priv = dev->dev_private;
struct drm_crtc *crtc; struct drm_crtc *crtc;
struct drm_connector *connector; struct gma_connector *connector;
struct psb_state *regs = &dev_priv->regs.psb; struct psb_state *regs = &dev_priv->regs.psb;
/* Display arbitration control + watermarks */ /* Display arbitration control + watermarks */
...@@ -198,12 +198,12 @@ static int psb_save_display_registers(struct drm_device *dev) ...@@ -198,12 +198,12 @@ static int psb_save_display_registers(struct drm_device *dev)
drm_modeset_lock_all(dev); drm_modeset_lock_all(dev);
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
if (drm_helper_crtc_in_use(crtc)) if (drm_helper_crtc_in_use(crtc))
crtc->funcs->save(crtc); dev_priv->ops->save_crtc(crtc);
} }
list_for_each_entry(connector, &dev->mode_config.connector_list, head) list_for_each_entry(connector, &dev->mode_config.connector_list, base.head)
if (connector->funcs->save) if (connector->save)
connector->funcs->save(connector); connector->save(&connector->base);
drm_modeset_unlock_all(dev); drm_modeset_unlock_all(dev);
return 0; return 0;
...@@ -219,7 +219,7 @@ static int psb_restore_display_registers(struct drm_device *dev) ...@@ -219,7 +219,7 @@ static int psb_restore_display_registers(struct drm_device *dev)
{ {
struct drm_psb_private *dev_priv = dev->dev_private; struct drm_psb_private *dev_priv = dev->dev_private;
struct drm_crtc *crtc; struct drm_crtc *crtc;
struct drm_connector *connector; struct gma_connector *connector;
struct psb_state *regs = &dev_priv->regs.psb; struct psb_state *regs = &dev_priv->regs.psb;
/* Display arbitration + watermarks */ /* Display arbitration + watermarks */
...@@ -238,11 +238,11 @@ static int psb_restore_display_registers(struct drm_device *dev) ...@@ -238,11 +238,11 @@ static int psb_restore_display_registers(struct drm_device *dev)
drm_modeset_lock_all(dev); drm_modeset_lock_all(dev);
list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
if (drm_helper_crtc_in_use(crtc)) if (drm_helper_crtc_in_use(crtc))
crtc->funcs->restore(crtc); dev_priv->ops->restore_crtc(crtc);
list_for_each_entry(connector, &dev->mode_config.connector_list, head) list_for_each_entry(connector, &dev->mode_config.connector_list, base.head)
if (connector->funcs->restore) if (connector->restore)
connector->funcs->restore(connector); connector->restore(&connector->base);
drm_modeset_unlock_all(dev); drm_modeset_unlock_all(dev);
return 0; return 0;
...@@ -354,6 +354,8 @@ const struct psb_ops psb_chip_ops = { ...@@ -354,6 +354,8 @@ const struct psb_ops psb_chip_ops = {
.init_pm = psb_init_pm, .init_pm = psb_init_pm,
.save_regs = psb_save_display_registers, .save_regs = psb_save_display_registers,
.restore_regs = psb_restore_display_registers, .restore_regs = psb_restore_display_registers,
.save_crtc = gma_crtc_save,
.restore_crtc = gma_crtc_restore,
.power_down = psb_power_down, .power_down = psb_power_down,
.power_up = psb_power_up, .power_up = psb_power_up,
}; };
......
...@@ -653,6 +653,8 @@ struct psb_ops { ...@@ -653,6 +653,8 @@ struct psb_ops {
void (*init_pm)(struct drm_device *dev); void (*init_pm)(struct drm_device *dev);
int (*save_regs)(struct drm_device *dev); int (*save_regs)(struct drm_device *dev);
int (*restore_regs)(struct drm_device *dev); int (*restore_regs)(struct drm_device *dev);
void (*save_crtc)(struct drm_crtc *crtc);
void (*restore_crtc)(struct drm_crtc *crtc);
int (*power_up)(struct drm_device *dev); int (*power_up)(struct drm_device *dev);
int (*power_down)(struct drm_device *dev); int (*power_down)(struct drm_device *dev);
void (*update_wm)(struct drm_device *dev, struct drm_crtc *crtc); void (*update_wm)(struct drm_device *dev, struct drm_crtc *crtc);
......
...@@ -439,8 +439,6 @@ const struct drm_crtc_helper_funcs psb_intel_helper_funcs = { ...@@ -439,8 +439,6 @@ const struct drm_crtc_helper_funcs psb_intel_helper_funcs = {
}; };
const struct drm_crtc_funcs psb_intel_crtc_funcs = { const struct drm_crtc_funcs psb_intel_crtc_funcs = {
.save = gma_crtc_save,
.restore = gma_crtc_restore,
.cursor_set = gma_crtc_cursor_set, .cursor_set = gma_crtc_cursor_set,
.cursor_move = gma_crtc_cursor_move, .cursor_move = gma_crtc_cursor_move,
.gamma_set = gma_crtc_gamma_set, .gamma_set = gma_crtc_gamma_set,
......
...@@ -140,6 +140,9 @@ struct gma_encoder { ...@@ -140,6 +140,9 @@ struct gma_encoder {
struct gma_connector { struct gma_connector {
struct drm_connector base; struct drm_connector base;
struct gma_encoder *encoder; struct gma_encoder *encoder;
void (*save)(struct drm_connector *connector);
void (*restore)(struct drm_connector *connector);
}; };
struct psb_intel_crtc_state { struct psb_intel_crtc_state {
......
...@@ -653,8 +653,6 @@ const struct drm_connector_helper_funcs ...@@ -653,8 +653,6 @@ const struct drm_connector_helper_funcs
const struct drm_connector_funcs psb_intel_lvds_connector_funcs = { const struct drm_connector_funcs psb_intel_lvds_connector_funcs = {
.dpms = drm_helper_connector_dpms, .dpms = drm_helper_connector_dpms,
.save = psb_intel_lvds_save,
.restore = psb_intel_lvds_restore,
.detect = psb_intel_lvds_detect, .detect = psb_intel_lvds_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.set_property = psb_intel_lvds_set_property, .set_property = psb_intel_lvds_set_property,
...@@ -715,6 +713,9 @@ void psb_intel_lvds_init(struct drm_device *dev, ...@@ -715,6 +713,9 @@ void psb_intel_lvds_init(struct drm_device *dev,
gma_encoder->dev_priv = lvds_priv; gma_encoder->dev_priv = lvds_priv;
connector = &gma_connector->base; connector = &gma_connector->base;
gma_connector->save = psb_intel_lvds_save;
gma_connector->restore = psb_intel_lvds_restore;
encoder = &gma_encoder->base; encoder = &gma_encoder->base;
drm_connector_init(dev, connector, drm_connector_init(dev, connector,
&psb_intel_lvds_connector_funcs, &psb_intel_lvds_connector_funcs,
......
...@@ -1837,8 +1837,6 @@ static const struct drm_encoder_helper_funcs psb_intel_sdvo_helper_funcs = { ...@@ -1837,8 +1837,6 @@ static const struct drm_encoder_helper_funcs psb_intel_sdvo_helper_funcs = {
static const struct drm_connector_funcs psb_intel_sdvo_connector_funcs = { static const struct drm_connector_funcs psb_intel_sdvo_connector_funcs = {
.dpms = drm_helper_connector_dpms, .dpms = drm_helper_connector_dpms,
.save = psb_intel_sdvo_save,
.restore = psb_intel_sdvo_restore,
.detect = psb_intel_sdvo_detect, .detect = psb_intel_sdvo_detect,
.fill_modes = drm_helper_probe_single_connector_modes, .fill_modes = drm_helper_probe_single_connector_modes,
.set_property = psb_intel_sdvo_set_property, .set_property = psb_intel_sdvo_set_property,
...@@ -2021,6 +2019,9 @@ psb_intel_sdvo_connector_init(struct psb_intel_sdvo_connector *connector, ...@@ -2021,6 +2019,9 @@ psb_intel_sdvo_connector_init(struct psb_intel_sdvo_connector *connector,
connector->base.base.doublescan_allowed = 0; connector->base.base.doublescan_allowed = 0;
connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB;
connector->base.save = psb_intel_sdvo_save;
connector->base.restore = psb_intel_sdvo_restore;
gma_connector_attach_encoder(&connector->base, &encoder->base); gma_connector_attach_encoder(&connector->base, &encoder->base);
drm_connector_register(&connector->base.base); drm_connector_register(&connector->base.base);
} }
......
...@@ -563,8 +563,6 @@ static void vmw_sou_connector_destroy(struct drm_connector *connector) ...@@ -563,8 +563,6 @@ static void vmw_sou_connector_destroy(struct drm_connector *connector)
static struct drm_connector_funcs vmw_sou_connector_funcs = { static struct drm_connector_funcs vmw_sou_connector_funcs = {
.dpms = vmw_du_connector_dpms, .dpms = vmw_du_connector_dpms,
.detect = vmw_du_connector_detect,
.fill_modes = vmw_du_connector_fill_modes,
.set_property = vmw_du_connector_set_property, .set_property = vmw_du_connector_set_property,
.destroy = vmw_sou_connector_destroy, .destroy = vmw_sou_connector_destroy,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment