@@ -98,6 +98,7 @@ static int apple_dpxbar_set(struct mux_control *mux, int state)
9898 unsigned long flags ;
9999 unsigned int mux_state ;
100100 unsigned int dispext_bit ;
101+ unsigned int dispext_bit_en ;
101102 unsigned int atc_bit ;
102103 bool enable ;
103104 int ret = 0 ;
@@ -113,6 +114,7 @@ static int apple_dpxbar_set(struct mux_control *mux, int state)
113114 enable = false;
114115 } else if (state >= 0 && state < 9 ) {
115116 dispext_bit = 1 << state ;
117+ dispext_bit_en = 1 << (2 * state );
116118 mux_state = state ;
117119 enable = true;
118120 } else {
@@ -169,11 +171,12 @@ static int apple_dpxbar_set(struct mux_control *mux, int state)
169171
170172 if (dpxbar -> selected_dispext [index ] >= 0 ) {
171173 u32 prev_dispext_bit = 1 << dpxbar -> selected_dispext [index ];
174+ u32 prev_dispext_bit_en = 1 << (2 * dpxbar -> selected_dispext [index ]);
172175
173176 dpxbar_set32 (dpxbar , FIFO_WR_N_CLK_EN , prev_dispext_bit );
174177 dpxbar_set32 (dpxbar , FIFO_RD_N_CLK_EN , prev_dispext_bit );
175178 dpxbar_clear32 (dpxbar , FIFO_WR_UNK_EN , prev_dispext_bit );
176- dpxbar_clear32 (dpxbar , FIFO_RD_UNK_EN , prev_dispext_bit );
179+ dpxbar_clear32 (dpxbar , FIFO_RD_UNK_EN , prev_dispext_bit_en );
177180 dpxbar_clear32 (dpxbar , FIFO_WR_DPTX_CLK_EN , prev_dispext_bit );
178181 dpxbar_clear32 (dpxbar , FIFO_RD_PCLK1_EN , prev_dispext_bit );
179182 dpxbar_clear32 (dpxbar , CROSSBAR_DISPEXT_EN , prev_dispext_bit );
@@ -188,7 +191,7 @@ static int apple_dpxbar_set(struct mux_control *mux, int state)
188191 dpxbar_clear32 (dpxbar , FIFO_RD_N_CLK_EN , dispext_bit );
189192 dpxbar_clear32 (dpxbar , OUT_N_CLK_EN , atc_bit );
190193 dpxbar_set32 (dpxbar , FIFO_WR_UNK_EN , dispext_bit );
191- dpxbar_set32 (dpxbar , FIFO_RD_UNK_EN , dispext_bit );
194+ dpxbar_set32 (dpxbar , FIFO_RD_UNK_EN , dispext_bit_en );
192195 dpxbar_set32 (dpxbar , OUT_UNK_EN , atc_bit );
193196 dpxbar_set32 (dpxbar , FIFO_WR_DPTX_CLK_EN , dispext_bit );
194197 dpxbar_set32 (dpxbar , FIFO_RD_PCLK1_EN , dispext_bit );
0 commit comments