#include <asm/arch/dp_info.h>
 #include <asm/arch/dp.h>
 
+struct exynos_dp *dp_regs;
+
+void exynos_dp_set_base_addr(void)
+{
+       dp_regs = (struct exynos_dp *)samsung_get_base_dp();
+}
+
 static void exynos_dp_enable_video_input(unsigned int enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->video_ctl1);
        reg &= ~VIDEO_EN_MASK;
 {
        /*enable video bist*/
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->video_ctl4);
        reg &= ~VIDEO_BIST_MASK;
 void exynos_dp_enable_video_mute(unsigned int enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->video_ctl1);
        reg &= ~(VIDEO_MUTE_MASK);
 static void exynos_dp_init_analog_param(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /*
         * Set termination
 
 static void exynos_dp_init_interrupt(void)
 {
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
        /* Set interrupt registers to initial states */
 
        /*
 void exynos_dp_reset(void)
 {
        unsigned int reg_func_1;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /*dp tx sw reset*/
        writel(RESET_DP_TX, &dp_regs->tx_sw_reset);
 void exynos_dp_enable_sw_func(unsigned int enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->func_en1);
        reg &= ~(SW_FUNC_EN_N);
 unsigned int exynos_dp_set_analog_power_down(unsigned int block, u32 enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->phy_pd);
        switch (block) {
 unsigned int exynos_dp_get_pll_lock_status(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->debug_ctl);
 
 static void exynos_dp_set_pll_power(unsigned int enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->pll_ctl);
        reg &= ~(DP_PLL_PD);
        int ret = EXYNOS_DP_SUCCESS;
        unsigned int retry_cnt = 10;
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /*Power On All Analog block */
        exynos_dp_set_analog_power_down(POWER_ALL, DP_DISABLE);
 void exynos_dp_init_hpd(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Clear interrupts releated to Hot Plug Dectect */
        reg = HOTPLUG_CHG | HPD_LOST | PLUG;
 static inline void exynos_dp_reset_aux(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Disable AUX channel module */
        reg = readl(&dp_regs->func_en2);
 void exynos_dp_init_aux(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Clear inerrupts related to AUX channel */
        reg = RPLY_RECEIV | AUX_ERR;
 void exynos_dp_config_interrupt(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* 0: mask, 1: unmask */
        reg = COMMON_INT_MASK_1;
 unsigned int exynos_dp_get_plug_in_status(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->sys_ctl3);
        if (reg & HPD_STATUS)
        unsigned int reg;
        unsigned int ret = 0;
        unsigned int retry_cnt;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Enable AUX CH operation */
        reg = readl(&dp_regs->aux_ch_ctl2);
                                unsigned char data)
 {
        unsigned int reg, ret;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Clear AUX CH data buffer */
        reg = BUF_CLR;
 {
        unsigned int reg;
        int retval;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Clear AUX CH data buffer */
        reg = BUF_CLR;
        unsigned int cur_data_idx;
        unsigned int retry_cnt;
        unsigned int ret = 0;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Clear AUX CH data buffer */
        reg = BUF_CLR;
        unsigned int cur_data_idx;
        unsigned int retry_cnt;
        unsigned int ret = 0;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Clear AUX CH data buffer */
        reg = BUF_CLR;
 {
        unsigned int reg;
        int retval;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Set EDID device address */
        reg = device_addr;
        unsigned int reg;
        int i;
        int retval;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        for (i = 0; i < 10; i++) {
                /* Clear AUX CH data buffer */
        unsigned int cur_data_idx;
        unsigned int defer = 0;
        int retval = 0;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        for (i = 0; i < count; i += 16) { /* use 16 burst */
                for (j = 0; j < 100; j++) {
 void exynos_dp_reset_macro(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->phy_test);
        reg |= MACRO_RST;
 void exynos_dp_set_link_bandwidth(unsigned char bwtype)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = (unsigned int)bwtype;
 
 {
        unsigned char ret;
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->link_bw_set);
        ret = (unsigned char)reg;
 void exynos_dp_set_lane_count(unsigned char count)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = (unsigned int)count;
 
 unsigned int exynos_dp_get_lane_count(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->lane_count_set);
 
 
 unsigned char exynos_dp_get_lanex_pre_emphasis(unsigned char lanecnt)
 {
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
        unsigned int reg_list[DP_LANE_CNT_4] = {
                (unsigned int)&dp_regs->ln0_link_training_ctl,
                (unsigned int)&dp_regs->ln1_link_training_ctl,
 void exynos_dp_set_lanex_pre_emphasis(unsigned char request_val,
                unsigned char lanecnt)
 {
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
        unsigned int reg_list[DP_LANE_CNT_4] = {
                (unsigned int)&dp_regs->ln0_link_training_ctl,
                (unsigned int)&dp_regs->ln1_link_training_ctl,
 {
        unsigned char i;
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
        unsigned int reg_list[DP_LANE_CNT_4] = {
                (unsigned int)&dp_regs->ln0_link_training_ctl,
                (unsigned int)&dp_regs->ln1_link_training_ctl,
 void exynos_dp_set_training_pattern(unsigned int pattern)
 {
        unsigned int reg = 0;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        switch (pattern) {
        case PRBS7:
 void exynos_dp_enable_enhanced_mode(unsigned char enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->sys_ctl4);
        reg &= ~ENHANCED;
 void exynos_dp_enable_scrambling(unsigned int enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->training_ptn_set);
        reg &= ~(SCRAMBLING_DISABLE);
 int exynos_dp_init_video(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Clear VID_CLK_CHG[1] and VID_FORMAT_CHG[3] and VSYNC_DET[7] */
        reg = VSYNC_DET | VID_FORMAT_CHG | VID_CLK_CHG;
 void exynos_dp_config_video_slave_mode(struct edp_video_info *video_info)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Video Slave mode setting */
        reg = readl(&dp_regs->func_en1);
 void exynos_dp_set_video_color_format(struct edp_video_info *video_info)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Configure the input color depth, color space, dynamic range */
        reg = (video_info->dynamic_range << IN_D_RANGE_SHIFT) |
        unsigned int reg;
        unsigned int bist_type = 0;
        struct edp_video_info video_info = edp_info->video_info;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* For master mode, you don't need to set the video format */
        if (video_info.master_mode == 0) {
 unsigned int exynos_dp_is_slave_video_stream_clock_on(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Update Video stream clk detect status */
        reg = readl(&dp_regs->sys_ctl1);
                unsigned int n_value)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        if (type == REGISTER_M) {
                reg = readl(&dp_regs->sys_ctl4);
 void exynos_dp_set_video_timing_mode(unsigned int type)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->video_ctl10);
        reg &= ~FORMAT_SEL;
 void exynos_dp_enable_video_master(unsigned int enable)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        reg = readl(&dp_regs->soc_general_ctl);
        if (enable) {
 void exynos_dp_start_video(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Enable Video input and disable Mute */
        reg = readl(&dp_regs->video_ctl1);
 unsigned int exynos_dp_is_video_stream_on(void)
 {
        unsigned int reg;
-       struct exynos_dp *dp_regs = (struct exynos_dp *)samsung_get_base_dp();
 
        /* Update STRM_VALID */
        reg = readl(&dp_regs->sys_ctl3);