diff options
author | Patrik Jakobsson <patrik.r.jakobsson@gmail.com> | 2013-07-12 09:33:47 -0400 |
---|---|---|
committer | Patrik Jakobsson <patrik.r.jakobsson@gmail.com> | 2013-07-23 19:47:31 -0400 |
commit | f0ff07b73b9b5be1f725f333d1516d569c697104 (patch) | |
tree | ac2e0aab675060bb8c546425e3fda1342c57fa87 | |
parent | 0e5b26ab67bbc3f762444264cdc8be7db12f374c (diff) |
drm/gma500/cdv: Convert to generic save/restore
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
-rw-r--r-- | drivers/gpu/drm/gma500/cdv_intel_display.c | 172 |
1 files changed, 2 insertions, 170 deletions
diff --git a/drivers/gpu/drm/gma500/cdv_intel_display.c b/drivers/gpu/drm/gma500/cdv_intel_display.c index 257e0e8820ec..b84912ff1711 100644 --- a/drivers/gpu/drm/gma500/cdv_intel_display.c +++ b/drivers/gpu/drm/gma500/cdv_intel_display.c | |||
@@ -867,174 +867,6 @@ static int cdv_intel_crtc_mode_set(struct drm_crtc *crtc, | |||
867 | return 0; | 867 | return 0; |
868 | } | 868 | } |
869 | 869 | ||
870 | |||
871 | /** | ||
872 | * Save HW states of giving crtc | ||
873 | */ | ||
874 | static void cdv_intel_crtc_save(struct drm_crtc *crtc) | ||
875 | { | ||
876 | struct drm_device *dev = crtc->dev; | ||
877 | struct drm_psb_private *dev_priv = dev->dev_private; | ||
878 | struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc); | ||
879 | struct psb_intel_crtc_state *crtc_state = psb_intel_crtc->crtc_state; | ||
880 | const struct psb_offset *map = &dev_priv->regmap[psb_intel_crtc->pipe]; | ||
881 | uint32_t paletteReg; | ||
882 | int i; | ||
883 | |||
884 | if (!crtc_state) { | ||
885 | dev_dbg(dev->dev, "No CRTC state found\n"); | ||
886 | return; | ||
887 | } | ||
888 | |||
889 | crtc_state->saveDSPCNTR = REG_READ(map->cntr); | ||
890 | crtc_state->savePIPECONF = REG_READ(map->conf); | ||
891 | crtc_state->savePIPESRC = REG_READ(map->src); | ||
892 | crtc_state->saveFP0 = REG_READ(map->fp0); | ||
893 | crtc_state->saveFP1 = REG_READ(map->fp1); | ||
894 | crtc_state->saveDPLL = REG_READ(map->dpll); | ||
895 | crtc_state->saveHTOTAL = REG_READ(map->htotal); | ||
896 | crtc_state->saveHBLANK = REG_READ(map->hblank); | ||
897 | crtc_state->saveHSYNC = REG_READ(map->hsync); | ||
898 | crtc_state->saveVTOTAL = REG_READ(map->vtotal); | ||
899 | crtc_state->saveVBLANK = REG_READ(map->vblank); | ||
900 | crtc_state->saveVSYNC = REG_READ(map->vsync); | ||
901 | crtc_state->saveDSPSTRIDE = REG_READ(map->stride); | ||
902 | |||
903 | /*NOTE: DSPSIZE DSPPOS only for psb*/ | ||
904 | crtc_state->saveDSPSIZE = REG_READ(map->size); | ||
905 | crtc_state->saveDSPPOS = REG_READ(map->pos); | ||
906 | |||
907 | crtc_state->saveDSPBASE = REG_READ(map->base); | ||
908 | |||
909 | DRM_DEBUG("(%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x)\n", | ||
910 | crtc_state->saveDSPCNTR, | ||
911 | crtc_state->savePIPECONF, | ||
912 | crtc_state->savePIPESRC, | ||
913 | crtc_state->saveFP0, | ||
914 | crtc_state->saveFP1, | ||
915 | crtc_state->saveDPLL, | ||
916 | crtc_state->saveHTOTAL, | ||
917 | crtc_state->saveHBLANK, | ||
918 | crtc_state->saveHSYNC, | ||
919 | crtc_state->saveVTOTAL, | ||
920 | crtc_state->saveVBLANK, | ||
921 | crtc_state->saveVSYNC, | ||
922 | crtc_state->saveDSPSTRIDE, | ||
923 | crtc_state->saveDSPSIZE, | ||
924 | crtc_state->saveDSPPOS, | ||
925 | crtc_state->saveDSPBASE | ||
926 | ); | ||
927 | |||
928 | paletteReg = map->palette; | ||
929 | for (i = 0; i < 256; ++i) | ||
930 | crtc_state->savePalette[i] = REG_READ(paletteReg + (i << 2)); | ||
931 | } | ||
932 | |||
933 | /** | ||
934 | * Restore HW states of giving crtc | ||
935 | */ | ||
936 | static void cdv_intel_crtc_restore(struct drm_crtc *crtc) | ||
937 | { | ||
938 | struct drm_device *dev = crtc->dev; | ||
939 | struct drm_psb_private *dev_priv = dev->dev_private; | ||
940 | struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc); | ||
941 | struct psb_intel_crtc_state *crtc_state = psb_intel_crtc->crtc_state; | ||
942 | const struct psb_offset *map = &dev_priv->regmap[psb_intel_crtc->pipe]; | ||
943 | uint32_t paletteReg; | ||
944 | int i; | ||
945 | |||
946 | if (!crtc_state) { | ||
947 | dev_dbg(dev->dev, "No crtc state\n"); | ||
948 | return; | ||
949 | } | ||
950 | |||
951 | DRM_DEBUG( | ||
952 | "current:(%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x)\n", | ||
953 | REG_READ(map->cntr), | ||
954 | REG_READ(map->conf), | ||
955 | REG_READ(map->src), | ||
956 | REG_READ(map->fp0), | ||
957 | REG_READ(map->fp1), | ||
958 | REG_READ(map->dpll), | ||
959 | REG_READ(map->htotal), | ||
960 | REG_READ(map->hblank), | ||
961 | REG_READ(map->hsync), | ||
962 | REG_READ(map->vtotal), | ||
963 | REG_READ(map->vblank), | ||
964 | REG_READ(map->vsync), | ||
965 | REG_READ(map->stride), | ||
966 | REG_READ(map->size), | ||
967 | REG_READ(map->pos), | ||
968 | REG_READ(map->base) | ||
969 | ); | ||
970 | |||
971 | DRM_DEBUG( | ||
972 | "saved: (%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x)\n", | ||
973 | crtc_state->saveDSPCNTR, | ||
974 | crtc_state->savePIPECONF, | ||
975 | crtc_state->savePIPESRC, | ||
976 | crtc_state->saveFP0, | ||
977 | crtc_state->saveFP1, | ||
978 | crtc_state->saveDPLL, | ||
979 | crtc_state->saveHTOTAL, | ||
980 | crtc_state->saveHBLANK, | ||
981 | crtc_state->saveHSYNC, | ||
982 | crtc_state->saveVTOTAL, | ||
983 | crtc_state->saveVBLANK, | ||
984 | crtc_state->saveVSYNC, | ||
985 | crtc_state->saveDSPSTRIDE, | ||
986 | crtc_state->saveDSPSIZE, | ||
987 | crtc_state->saveDSPPOS, | ||
988 | crtc_state->saveDSPBASE | ||
989 | ); | ||
990 | |||
991 | |||
992 | if (crtc_state->saveDPLL & DPLL_VCO_ENABLE) { | ||
993 | REG_WRITE(map->dpll, | ||
994 | crtc_state->saveDPLL & ~DPLL_VCO_ENABLE); | ||
995 | REG_READ(map->dpll); | ||
996 | DRM_DEBUG("write dpll: %x\n", | ||
997 | REG_READ(map->dpll)); | ||
998 | udelay(150); | ||
999 | } | ||
1000 | |||
1001 | REG_WRITE(map->fp0, crtc_state->saveFP0); | ||
1002 | REG_READ(map->fp0); | ||
1003 | |||
1004 | REG_WRITE(map->fp1, crtc_state->saveFP1); | ||
1005 | REG_READ(map->fp1); | ||
1006 | |||
1007 | REG_WRITE(map->dpll, crtc_state->saveDPLL); | ||
1008 | REG_READ(map->dpll); | ||
1009 | udelay(150); | ||
1010 | |||
1011 | REG_WRITE(map->htotal, crtc_state->saveHTOTAL); | ||
1012 | REG_WRITE(map->hblank, crtc_state->saveHBLANK); | ||
1013 | REG_WRITE(map->hsync, crtc_state->saveHSYNC); | ||
1014 | REG_WRITE(map->vtotal, crtc_state->saveVTOTAL); | ||
1015 | REG_WRITE(map->vblank, crtc_state->saveVBLANK); | ||
1016 | REG_WRITE(map->vsync, crtc_state->saveVSYNC); | ||
1017 | REG_WRITE(map->stride, crtc_state->saveDSPSTRIDE); | ||
1018 | |||
1019 | REG_WRITE(map->size, crtc_state->saveDSPSIZE); | ||
1020 | REG_WRITE(map->pos, crtc_state->saveDSPPOS); | ||
1021 | |||
1022 | REG_WRITE(map->src, crtc_state->savePIPESRC); | ||
1023 | REG_WRITE(map->base, crtc_state->saveDSPBASE); | ||
1024 | REG_WRITE(map->conf, crtc_state->savePIPECONF); | ||
1025 | |||
1026 | gma_wait_for_vblank(dev); | ||
1027 | |||
1028 | REG_WRITE(map->cntr, crtc_state->saveDSPCNTR); | ||
1029 | REG_WRITE(map->base, crtc_state->saveDSPBASE); | ||
1030 | |||
1031 | gma_wait_for_vblank(dev); | ||
1032 | |||
1033 | paletteReg = map->palette; | ||
1034 | for (i = 0; i < 256; ++i) | ||
1035 | REG_WRITE(paletteReg + (i << 2), crtc_state->savePalette[i]); | ||
1036 | } | ||
1037 | |||
1038 | static int cdv_crtc_set_config(struct drm_mode_set *set) | 870 | static int cdv_crtc_set_config(struct drm_mode_set *set) |
1039 | { | 871 | { |
1040 | int ret = 0; | 872 | int ret = 0; |
@@ -1203,8 +1035,8 @@ const struct drm_crtc_helper_funcs cdv_intel_helper_funcs = { | |||
1203 | }; | 1035 | }; |
1204 | 1036 | ||
1205 | const struct drm_crtc_funcs cdv_intel_crtc_funcs = { | 1037 | const struct drm_crtc_funcs cdv_intel_crtc_funcs = { |
1206 | .save = cdv_intel_crtc_save, | 1038 | .save = gma_crtc_save, |
1207 | .restore = cdv_intel_crtc_restore, | 1039 | .restore = gma_crtc_restore, |
1208 | .cursor_set = gma_crtc_cursor_set, | 1040 | .cursor_set = gma_crtc_cursor_set, |
1209 | .cursor_move = gma_crtc_cursor_move, | 1041 | .cursor_move = gma_crtc_cursor_move, |
1210 | .gamma_set = gma_crtc_gamma_set, | 1042 | .gamma_set = gma_crtc_gamma_set, |