diff options
Diffstat (limited to 'drivers/gpu/drm/gma500/psb_intel_sdvo.c')
-rw-r--r-- | drivers/gpu/drm/gma500/psb_intel_sdvo.c | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/drivers/gpu/drm/gma500/psb_intel_sdvo.c b/drivers/gpu/drm/gma500/psb_intel_sdvo.c index 19e36603b23b..77841a113617 100644 --- a/drivers/gpu/drm/gma500/psb_intel_sdvo.c +++ b/drivers/gpu/drm/gma500/psb_intel_sdvo.c | |||
@@ -65,7 +65,7 @@ static const char *tv_format_names[] = { | |||
65 | #define TV_FORMAT_NUM (sizeof(tv_format_names) / sizeof(*tv_format_names)) | 65 | #define TV_FORMAT_NUM (sizeof(tv_format_names) / sizeof(*tv_format_names)) |
66 | 66 | ||
67 | struct psb_intel_sdvo { | 67 | struct psb_intel_sdvo { |
68 | struct psb_intel_encoder base; | 68 | struct gma_encoder base; |
69 | 69 | ||
70 | struct i2c_adapter *i2c; | 70 | struct i2c_adapter *i2c; |
71 | u8 slave_addr; | 71 | u8 slave_addr; |
@@ -140,7 +140,7 @@ struct psb_intel_sdvo { | |||
140 | }; | 140 | }; |
141 | 141 | ||
142 | struct psb_intel_sdvo_connector { | 142 | struct psb_intel_sdvo_connector { |
143 | struct psb_intel_connector base; | 143 | struct gma_connector base; |
144 | 144 | ||
145 | /* Mark the type of connector */ | 145 | /* Mark the type of connector */ |
146 | uint16_t output_flag; | 146 | uint16_t output_flag; |
@@ -200,13 +200,13 @@ static struct psb_intel_sdvo *to_psb_intel_sdvo(struct drm_encoder *encoder) | |||
200 | 200 | ||
201 | static struct psb_intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) | 201 | static struct psb_intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) |
202 | { | 202 | { |
203 | return container_of(psb_intel_attached_encoder(connector), | 203 | return container_of(gma_attached_encoder(connector), |
204 | struct psb_intel_sdvo, base); | 204 | struct psb_intel_sdvo, base); |
205 | } | 205 | } |
206 | 206 | ||
207 | static struct psb_intel_sdvo_connector *to_psb_intel_sdvo_connector(struct drm_connector *connector) | 207 | static struct psb_intel_sdvo_connector *to_psb_intel_sdvo_connector(struct drm_connector *connector) |
208 | { | 208 | { |
209 | return container_of(to_psb_intel_connector(connector), struct psb_intel_sdvo_connector, base); | 209 | return container_of(to_gma_connector(connector), struct psb_intel_sdvo_connector, base); |
210 | } | 210 | } |
211 | 211 | ||
212 | static bool | 212 | static bool |
@@ -987,7 +987,7 @@ static void psb_intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
987 | { | 987 | { |
988 | struct drm_device *dev = encoder->dev; | 988 | struct drm_device *dev = encoder->dev; |
989 | struct drm_crtc *crtc = encoder->crtc; | 989 | struct drm_crtc *crtc = encoder->crtc; |
990 | struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc); | 990 | struct gma_crtc *gma_crtc = to_gma_crtc(crtc); |
991 | struct psb_intel_sdvo *psb_intel_sdvo = to_psb_intel_sdvo(encoder); | 991 | struct psb_intel_sdvo *psb_intel_sdvo = to_psb_intel_sdvo(encoder); |
992 | u32 sdvox; | 992 | u32 sdvox; |
993 | struct psb_intel_sdvo_in_out_map in_out; | 993 | struct psb_intel_sdvo_in_out_map in_out; |
@@ -1070,7 +1070,7 @@ static void psb_intel_sdvo_mode_set(struct drm_encoder *encoder, | |||
1070 | } | 1070 | } |
1071 | sdvox |= (9 << 19) | SDVO_BORDER_ENABLE; | 1071 | sdvox |= (9 << 19) | SDVO_BORDER_ENABLE; |
1072 | 1072 | ||
1073 | if (psb_intel_crtc->pipe == 1) | 1073 | if (gma_crtc->pipe == 1) |
1074 | sdvox |= SDVO_PIPE_B_SELECT; | 1074 | sdvox |= SDVO_PIPE_B_SELECT; |
1075 | if (psb_intel_sdvo->has_hdmi_audio) | 1075 | if (psb_intel_sdvo->has_hdmi_audio) |
1076 | sdvox |= SDVO_AUDIO_ENABLE; | 1076 | sdvox |= SDVO_AUDIO_ENABLE; |
@@ -1121,7 +1121,7 @@ static void psb_intel_sdvo_dpms(struct drm_encoder *encoder, int mode) | |||
1121 | if ((temp & SDVO_ENABLE) == 0) | 1121 | if ((temp & SDVO_ENABLE) == 0) |
1122 | psb_intel_sdvo_write_sdvox(psb_intel_sdvo, temp | SDVO_ENABLE); | 1122 | psb_intel_sdvo_write_sdvox(psb_intel_sdvo, temp | SDVO_ENABLE); |
1123 | for (i = 0; i < 2; i++) | 1123 | for (i = 0; i < 2; i++) |
1124 | psb_intel_wait_for_vblank(dev); | 1124 | gma_wait_for_vblank(dev); |
1125 | 1125 | ||
1126 | status = psb_intel_sdvo_get_trained_inputs(psb_intel_sdvo, &input1, &input2); | 1126 | status = psb_intel_sdvo_get_trained_inputs(psb_intel_sdvo, &input1, &input2); |
1127 | /* Warn if the device reported failure to sync. | 1127 | /* Warn if the device reported failure to sync. |
@@ -1836,10 +1836,8 @@ done: | |||
1836 | static void psb_intel_sdvo_save(struct drm_connector *connector) | 1836 | static void psb_intel_sdvo_save(struct drm_connector *connector) |
1837 | { | 1837 | { |
1838 | struct drm_device *dev = connector->dev; | 1838 | struct drm_device *dev = connector->dev; |
1839 | struct psb_intel_encoder *psb_intel_encoder = | 1839 | struct gma_encoder *gma_encoder = gma_attached_encoder(connector); |
1840 | psb_intel_attached_encoder(connector); | 1840 | struct psb_intel_sdvo *sdvo = to_psb_intel_sdvo(&gma_encoder->base); |
1841 | struct psb_intel_sdvo *sdvo = | ||
1842 | to_psb_intel_sdvo(&psb_intel_encoder->base); | ||
1843 | 1841 | ||
1844 | sdvo->saveSDVO = REG_READ(sdvo->sdvo_reg); | 1842 | sdvo->saveSDVO = REG_READ(sdvo->sdvo_reg); |
1845 | } | 1843 | } |
@@ -1847,8 +1845,7 @@ static void psb_intel_sdvo_save(struct drm_connector *connector) | |||
1847 | static void psb_intel_sdvo_restore(struct drm_connector *connector) | 1845 | static void psb_intel_sdvo_restore(struct drm_connector *connector) |
1848 | { | 1846 | { |
1849 | struct drm_device *dev = connector->dev; | 1847 | struct drm_device *dev = connector->dev; |
1850 | struct drm_encoder *encoder = | 1848 | struct drm_encoder *encoder = &gma_attached_encoder(connector)->base; |
1851 | &psb_intel_attached_encoder(connector)->base; | ||
1852 | struct psb_intel_sdvo *sdvo = to_psb_intel_sdvo(encoder); | 1849 | struct psb_intel_sdvo *sdvo = to_psb_intel_sdvo(encoder); |
1853 | struct drm_crtc *crtc = encoder->crtc; | 1850 | struct drm_crtc *crtc = encoder->crtc; |
1854 | 1851 | ||
@@ -1864,9 +1861,9 @@ static void psb_intel_sdvo_restore(struct drm_connector *connector) | |||
1864 | static const struct drm_encoder_helper_funcs psb_intel_sdvo_helper_funcs = { | 1861 | static const struct drm_encoder_helper_funcs psb_intel_sdvo_helper_funcs = { |
1865 | .dpms = psb_intel_sdvo_dpms, | 1862 | .dpms = psb_intel_sdvo_dpms, |
1866 | .mode_fixup = psb_intel_sdvo_mode_fixup, | 1863 | .mode_fixup = psb_intel_sdvo_mode_fixup, |
1867 | .prepare = psb_intel_encoder_prepare, | 1864 | .prepare = gma_encoder_prepare, |
1868 | .mode_set = psb_intel_sdvo_mode_set, | 1865 | .mode_set = psb_intel_sdvo_mode_set, |
1869 | .commit = psb_intel_encoder_commit, | 1866 | .commit = gma_encoder_commit, |
1870 | }; | 1867 | }; |
1871 | 1868 | ||
1872 | static const struct drm_connector_funcs psb_intel_sdvo_connector_funcs = { | 1869 | static const struct drm_connector_funcs psb_intel_sdvo_connector_funcs = { |
@@ -1882,7 +1879,7 @@ static const struct drm_connector_funcs psb_intel_sdvo_connector_funcs = { | |||
1882 | static const struct drm_connector_helper_funcs psb_intel_sdvo_connector_helper_funcs = { | 1879 | static const struct drm_connector_helper_funcs psb_intel_sdvo_connector_helper_funcs = { |
1883 | .get_modes = psb_intel_sdvo_get_modes, | 1880 | .get_modes = psb_intel_sdvo_get_modes, |
1884 | .mode_valid = psb_intel_sdvo_mode_valid, | 1881 | .mode_valid = psb_intel_sdvo_mode_valid, |
1885 | .best_encoder = psb_intel_best_encoder, | 1882 | .best_encoder = gma_best_encoder, |
1886 | }; | 1883 | }; |
1887 | 1884 | ||
1888 | static void psb_intel_sdvo_enc_destroy(struct drm_encoder *encoder) | 1885 | static void psb_intel_sdvo_enc_destroy(struct drm_encoder *encoder) |
@@ -1894,7 +1891,7 @@ static void psb_intel_sdvo_enc_destroy(struct drm_encoder *encoder) | |||
1894 | psb_intel_sdvo->sdvo_lvds_fixed_mode); | 1891 | psb_intel_sdvo->sdvo_lvds_fixed_mode); |
1895 | 1892 | ||
1896 | i2c_del_adapter(&psb_intel_sdvo->ddc); | 1893 | i2c_del_adapter(&psb_intel_sdvo->ddc); |
1897 | psb_intel_encoder_destroy(encoder); | 1894 | gma_encoder_destroy(encoder); |
1898 | } | 1895 | } |
1899 | 1896 | ||
1900 | static const struct drm_encoder_funcs psb_intel_sdvo_enc_funcs = { | 1897 | static const struct drm_encoder_funcs psb_intel_sdvo_enc_funcs = { |
@@ -2055,7 +2052,7 @@ psb_intel_sdvo_connector_init(struct psb_intel_sdvo_connector *connector, | |||
2055 | connector->base.base.doublescan_allowed = 0; | 2052 | connector->base.base.doublescan_allowed = 0; |
2056 | connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; | 2053 | connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; |
2057 | 2054 | ||
2058 | psb_intel_connector_attach_encoder(&connector->base, &encoder->base); | 2055 | gma_connector_attach_encoder(&connector->base, &encoder->base); |
2059 | drm_sysfs_connector_add(&connector->base.base); | 2056 | drm_sysfs_connector_add(&connector->base.base); |
2060 | } | 2057 | } |
2061 | 2058 | ||
@@ -2075,7 +2072,7 @@ psb_intel_sdvo_dvi_init(struct psb_intel_sdvo *psb_intel_sdvo, int device) | |||
2075 | { | 2072 | { |
2076 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; | 2073 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; |
2077 | struct drm_connector *connector; | 2074 | struct drm_connector *connector; |
2078 | struct psb_intel_connector *intel_connector; | 2075 | struct gma_connector *intel_connector; |
2079 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; | 2076 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; |
2080 | 2077 | ||
2081 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); | 2078 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); |
@@ -2115,7 +2112,7 @@ psb_intel_sdvo_tv_init(struct psb_intel_sdvo *psb_intel_sdvo, int type) | |||
2115 | { | 2112 | { |
2116 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; | 2113 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; |
2117 | struct drm_connector *connector; | 2114 | struct drm_connector *connector; |
2118 | struct psb_intel_connector *intel_connector; | 2115 | struct gma_connector *intel_connector; |
2119 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; | 2116 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; |
2120 | 2117 | ||
2121 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); | 2118 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); |
@@ -2154,7 +2151,7 @@ psb_intel_sdvo_analog_init(struct psb_intel_sdvo *psb_intel_sdvo, int device) | |||
2154 | { | 2151 | { |
2155 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; | 2152 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; |
2156 | struct drm_connector *connector; | 2153 | struct drm_connector *connector; |
2157 | struct psb_intel_connector *intel_connector; | 2154 | struct gma_connector *intel_connector; |
2158 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; | 2155 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; |
2159 | 2156 | ||
2160 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); | 2157 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); |
@@ -2188,7 +2185,7 @@ psb_intel_sdvo_lvds_init(struct psb_intel_sdvo *psb_intel_sdvo, int device) | |||
2188 | { | 2185 | { |
2189 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; | 2186 | struct drm_encoder *encoder = &psb_intel_sdvo->base.base; |
2190 | struct drm_connector *connector; | 2187 | struct drm_connector *connector; |
2191 | struct psb_intel_connector *intel_connector; | 2188 | struct gma_connector *intel_connector; |
2192 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; | 2189 | struct psb_intel_sdvo_connector *psb_intel_sdvo_connector; |
2193 | 2190 | ||
2194 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); | 2191 | psb_intel_sdvo_connector = kzalloc(sizeof(struct psb_intel_sdvo_connector), GFP_KERNEL); |
@@ -2540,7 +2537,7 @@ psb_intel_sdvo_init_ddc_proxy(struct psb_intel_sdvo *sdvo, | |||
2540 | bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg) | 2537 | bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg) |
2541 | { | 2538 | { |
2542 | struct drm_psb_private *dev_priv = dev->dev_private; | 2539 | struct drm_psb_private *dev_priv = dev->dev_private; |
2543 | struct psb_intel_encoder *psb_intel_encoder; | 2540 | struct gma_encoder *gma_encoder; |
2544 | struct psb_intel_sdvo *psb_intel_sdvo; | 2541 | struct psb_intel_sdvo *psb_intel_sdvo; |
2545 | int i; | 2542 | int i; |
2546 | 2543 | ||
@@ -2557,9 +2554,9 @@ bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg) | |||
2557 | } | 2554 | } |
2558 | 2555 | ||
2559 | /* encoder type will be decided later */ | 2556 | /* encoder type will be decided later */ |
2560 | psb_intel_encoder = &psb_intel_sdvo->base; | 2557 | gma_encoder = &psb_intel_sdvo->base; |
2561 | psb_intel_encoder->type = INTEL_OUTPUT_SDVO; | 2558 | gma_encoder->type = INTEL_OUTPUT_SDVO; |
2562 | drm_encoder_init(dev, &psb_intel_encoder->base, &psb_intel_sdvo_enc_funcs, 0); | 2559 | drm_encoder_init(dev, &gma_encoder->base, &psb_intel_sdvo_enc_funcs, 0); |
2563 | 2560 | ||
2564 | /* Read the regs to test if we can talk to the device */ | 2561 | /* Read the regs to test if we can talk to the device */ |
2565 | for (i = 0; i < 0x40; i++) { | 2562 | for (i = 0; i < 0x40; i++) { |
@@ -2577,7 +2574,7 @@ bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg) | |||
2577 | else | 2574 | else |
2578 | dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; | 2575 | dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; |
2579 | 2576 | ||
2580 | drm_encoder_helper_add(&psb_intel_encoder->base, &psb_intel_sdvo_helper_funcs); | 2577 | drm_encoder_helper_add(&gma_encoder->base, &psb_intel_sdvo_helper_funcs); |
2581 | 2578 | ||
2582 | /* In default case sdvo lvds is false */ | 2579 | /* In default case sdvo lvds is false */ |
2583 | if (!psb_intel_sdvo_get_capabilities(psb_intel_sdvo, &psb_intel_sdvo->caps)) | 2580 | if (!psb_intel_sdvo_get_capabilities(psb_intel_sdvo, &psb_intel_sdvo->caps)) |
@@ -2620,7 +2617,7 @@ bool psb_intel_sdvo_init(struct drm_device *dev, int sdvo_reg) | |||
2620 | return true; | 2617 | return true; |
2621 | 2618 | ||
2622 | err: | 2619 | err: |
2623 | drm_encoder_cleanup(&psb_intel_encoder->base); | 2620 | drm_encoder_cleanup(&gma_encoder->base); |
2624 | i2c_del_adapter(&psb_intel_sdvo->ddc); | 2621 | i2c_del_adapter(&psb_intel_sdvo->ddc); |
2625 | kfree(psb_intel_sdvo); | 2622 | kfree(psb_intel_sdvo); |
2626 | 2623 | ||