diff options
author | Jingoo Han <jg1.han@samsung.com> | 2012-09-12 00:34:24 -0400 |
---|---|---|
committer | Florian Tobias Schandinat <FlorianSchandinat@gmx.de> | 2012-09-22 17:39:53 -0400 |
commit | e3c02009003eebf84f7c56c7f330521553c8d299 (patch) | |
tree | e46f7aadc47479976ce8bf8d9892d0bc5c2d5680 | |
parent | 42affc2de4d96634ba05b4e99313028e878a004c (diff) |
video: exynos_dp: add bit-masking for LINK_TRAINING_CTL register
This patch adds bit-masking for LINK_TRAINING_CTL register, when
pre-emphasis level is set. The bit 3 and bit 2 of LINK_TRAINING_CTL
register are used for pre-emphasis level setting, so other bits
should be masked.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
-rw-r--r-- | drivers/video/exynos/exynos_dp_reg.c | 16 | ||||
-rw-r--r-- | drivers/video/exynos/exynos_dp_reg.h | 1 |
2 files changed, 13 insertions, 4 deletions
diff --git a/drivers/video/exynos/exynos_dp_reg.c b/drivers/video/exynos/exynos_dp_reg.c index 20e441f66149..365be69d9b5c 100644 --- a/drivers/video/exynos/exynos_dp_reg.c +++ b/drivers/video/exynos/exynos_dp_reg.c | |||
@@ -895,7 +895,9 @@ void exynos_dp_set_lane0_pre_emphasis(struct exynos_dp_device *dp, u32 level) | |||
895 | { | 895 | { |
896 | u32 reg; | 896 | u32 reg; |
897 | 897 | ||
898 | reg = level << PRE_EMPHASIS_SET_SHIFT; | 898 | reg = readl(dp->reg_base + EXYNOS_DP_LN0_LINK_TRAINING_CTL); |
899 | reg &= ~PRE_EMPHASIS_SET_MASK; | ||
900 | reg |= level << PRE_EMPHASIS_SET_SHIFT; | ||
899 | writel(reg, dp->reg_base + EXYNOS_DP_LN0_LINK_TRAINING_CTL); | 901 | writel(reg, dp->reg_base + EXYNOS_DP_LN0_LINK_TRAINING_CTL); |
900 | } | 902 | } |
901 | 903 | ||
@@ -903,7 +905,9 @@ void exynos_dp_set_lane1_pre_emphasis(struct exynos_dp_device *dp, u32 level) | |||
903 | { | 905 | { |
904 | u32 reg; | 906 | u32 reg; |
905 | 907 | ||
906 | reg = level << PRE_EMPHASIS_SET_SHIFT; | 908 | reg = readl(dp->reg_base + EXYNOS_DP_LN1_LINK_TRAINING_CTL); |
909 | reg &= ~PRE_EMPHASIS_SET_MASK; | ||
910 | reg |= level << PRE_EMPHASIS_SET_SHIFT; | ||
907 | writel(reg, dp->reg_base + EXYNOS_DP_LN1_LINK_TRAINING_CTL); | 911 | writel(reg, dp->reg_base + EXYNOS_DP_LN1_LINK_TRAINING_CTL); |
908 | } | 912 | } |
909 | 913 | ||
@@ -911,7 +915,9 @@ void exynos_dp_set_lane2_pre_emphasis(struct exynos_dp_device *dp, u32 level) | |||
911 | { | 915 | { |
912 | u32 reg; | 916 | u32 reg; |
913 | 917 | ||
914 | reg = level << PRE_EMPHASIS_SET_SHIFT; | 918 | reg = readl(dp->reg_base + EXYNOS_DP_LN2_LINK_TRAINING_CTL); |
919 | reg &= ~PRE_EMPHASIS_SET_MASK; | ||
920 | reg |= level << PRE_EMPHASIS_SET_SHIFT; | ||
915 | writel(reg, dp->reg_base + EXYNOS_DP_LN2_LINK_TRAINING_CTL); | 921 | writel(reg, dp->reg_base + EXYNOS_DP_LN2_LINK_TRAINING_CTL); |
916 | } | 922 | } |
917 | 923 | ||
@@ -919,7 +925,9 @@ void exynos_dp_set_lane3_pre_emphasis(struct exynos_dp_device *dp, u32 level) | |||
919 | { | 925 | { |
920 | u32 reg; | 926 | u32 reg; |
921 | 927 | ||
922 | reg = level << PRE_EMPHASIS_SET_SHIFT; | 928 | reg = readl(dp->reg_base + EXYNOS_DP_LN3_LINK_TRAINING_CTL); |
929 | reg &= ~PRE_EMPHASIS_SET_MASK; | ||
930 | reg |= level << PRE_EMPHASIS_SET_SHIFT; | ||
923 | writel(reg, dp->reg_base + EXYNOS_DP_LN3_LINK_TRAINING_CTL); | 931 | writel(reg, dp->reg_base + EXYNOS_DP_LN3_LINK_TRAINING_CTL); |
924 | } | 932 | } |
925 | 933 | ||
diff --git a/drivers/video/exynos/exynos_dp_reg.h b/drivers/video/exynos/exynos_dp_reg.h index 125b27cd57ae..9e9af50d7da3 100644 --- a/drivers/video/exynos/exynos_dp_reg.h +++ b/drivers/video/exynos/exynos_dp_reg.h | |||
@@ -285,6 +285,7 @@ | |||
285 | #define SW_TRAINING_PATTERN_SET_NORMAL (0x0 << 0) | 285 | #define SW_TRAINING_PATTERN_SET_NORMAL (0x0 << 0) |
286 | 286 | ||
287 | /* EXYNOS_DP_LN0_LINK_TRAINING_CTL */ | 287 | /* EXYNOS_DP_LN0_LINK_TRAINING_CTL */ |
288 | #define PRE_EMPHASIS_SET_MASK (0x3 << 3) | ||
288 | #define PRE_EMPHASIS_SET_SHIFT (3) | 289 | #define PRE_EMPHASIS_SET_SHIFT (3) |
289 | 290 | ||
290 | /* EXYNOS_DP_DEBUG_CTL */ | 291 | /* EXYNOS_DP_DEBUG_CTL */ |