@@ -2179,14 +2179,12 @@ static int vop_plane_info_dump(struct seq_file *s, struct drm_plane *plane)
2179
2179
2180
2180
static int vop_crtc_debugfs_dump (struct drm_crtc * crtc , struct seq_file * s )
2181
2181
{
2182
- struct drm_device * dev = crtc -> dev ;
2183
2182
struct vop * vop = to_vop (crtc );
2184
2183
struct drm_crtc_state * crtc_state = crtc -> state ;
2185
2184
struct drm_display_mode * mode = & crtc -> state -> adjusted_mode ;
2186
2185
struct rockchip_crtc_state * state = to_rockchip_crtc_state (crtc -> state );
2187
2186
bool interlaced = !!(mode -> flags & DRM_MODE_FLAG_INTERLACE );
2188
2187
struct drm_plane * plane ;
2189
- struct drm_connector * connector ;
2190
2188
int i ;
2191
2189
2192
2190
DEBUG_PRINT ("VOP [%s]: %s\n" , dev_name (vop -> dev ),
@@ -2195,13 +2193,8 @@ static int vop_crtc_debugfs_dump(struct drm_crtc *crtc, struct seq_file *s)
2195
2193
if (!crtc_state -> active )
2196
2194
return 0 ;
2197
2195
2198
- DEBUG_PRINT (" Connector:" );
2199
- mutex_lock (& dev -> mode_config .mutex );
2200
- drm_for_each_connector (connector , dev )
2201
- if (connector -> state -> crtc == crtc )
2202
- DEBUG_PRINT (" %s" , drm_get_connector_name (connector -> connector_type ));
2203
- mutex_unlock (& dev -> mode_config .mutex );
2204
- DEBUG_PRINT ("\n" );
2196
+ DEBUG_PRINT (" Connector: %s\n" ,
2197
+ drm_get_connector_name (state -> output_type ));
2205
2198
DEBUG_PRINT ("\toverlay_mode[%d] bus_format[%x] output_mode[%x]" ,
2206
2199
state -> yuv_overlay , state -> bus_format , state -> output_mode );
2207
2200
DEBUG_PRINT (" color_space[%d]\n" ,
@@ -2341,8 +2334,8 @@ vop_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *mode,
2341
2334
/*
2342
2335
* Hdmi or DisplayPort request a Accurate clock.
2343
2336
*/
2344
- if (output_type & BIT ( DRM_MODE_CONNECTOR_HDMIA ) ||
2345
- output_type & BIT ( DRM_MODE_CONNECTOR_DisplayPort ) )
2337
+ if (output_type == DRM_MODE_CONNECTOR_HDMIA ||
2338
+ output_type == DRM_MODE_CONNECTOR_DisplayPort )
2346
2339
if (clock != request_clock )
2347
2340
return MODE_CLOCK_RANGE ;
2348
2341
@@ -2727,11 +2720,10 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
2727
2720
bool interlaced = !!(adjusted_mode -> flags & DRM_MODE_FLAG_INTERLACE );
2728
2721
int for_ddr_freq = 0 ;
2729
2722
bool dclk_inv ;
2730
- unsigned long possible_output ;
2731
2723
2732
2724
rockchip_set_system_status (sys_status );
2733
2725
vop_lock (vop );
2734
- DRM_DEV_INFO (vop -> dev , "Update mode to %dx%d%s%d, type: 0x%x \n" ,
2726
+ DRM_DEV_INFO (vop -> dev , "Update mode to %dx%d%s%d, type: %d \n" ,
2735
2727
hdisplay , vdisplay , interlaced ? "i" : "p" ,
2736
2728
adjusted_mode -> vrefresh , s -> output_type );
2737
2729
vop_initial (crtc );
@@ -2761,70 +2753,61 @@ static void vop_crtc_enable(struct drm_crtc *crtc)
2761
2753
"failed to set dclk's parents\n" );
2762
2754
}
2763
2755
2764
- possible_output = s -> output_type ;
2765
- while (possible_output ) {
2766
- int i ;
2767
-
2768
- i = __ffs (possible_output );
2769
- possible_output &= ~BIT (i );
2756
+ switch (s -> output_type ) {
2757
+ case DRM_MODE_CONNECTOR_DPI :
2758
+ VOP_CTRL_SET (vop , rgb_en , 1 );
2759
+ VOP_CTRL_SET (vop , rgb_pin_pol , val );
2760
+ VOP_CTRL_SET (vop , rgb_dclk_pol , dclk_inv );
2770
2761
2771
- switch (i ) {
2772
- case DRM_MODE_CONNECTOR_DPI :
2773
- VOP_CTRL_SET (vop , rgb_en , 1 );
2774
- VOP_CTRL_SET (vop , rgb_pin_pol , val );
2775
- VOP_CTRL_SET (vop , rgb_dclk_pol , dclk_inv );
2776
-
2777
- VOP_GRF_SET (vop , grf_dclk_inv , !dclk_inv );
2778
- break ;
2779
- case DRM_MODE_CONNECTOR_LVDS :
2780
- VOP_CTRL_SET (vop , lvds_en , 1 );
2781
- VOP_CTRL_SET (vop , lvds_pin_pol , val );
2782
- VOP_CTRL_SET (vop , lvds_dclk_pol , dclk_inv );
2762
+ VOP_GRF_SET (vop , grf_dclk_inv , !dclk_inv );
2763
+ break ;
2764
+ case DRM_MODE_CONNECTOR_LVDS :
2765
+ VOP_CTRL_SET (vop , lvds_en , 1 );
2766
+ VOP_CTRL_SET (vop , lvds_pin_pol , val );
2767
+ VOP_CTRL_SET (vop , lvds_dclk_pol , dclk_inv );
2783
2768
2784
- VOP_GRF_SET (vop , grf_dclk_inv , !dclk_inv );
2785
- break ;
2786
- case DRM_MODE_CONNECTOR_eDP :
2787
- VOP_CTRL_SET (vop , edp_en , 1 );
2788
- VOP_CTRL_SET (vop , edp_pin_pol , val );
2789
- VOP_CTRL_SET (vop , edp_dclk_pol , dclk_inv );
2790
- break ;
2791
- case DRM_MODE_CONNECTOR_HDMIA :
2792
- VOP_CTRL_SET (vop , hdmi_en , 1 );
2793
- VOP_CTRL_SET (vop , hdmi_pin_pol , val );
2794
- VOP_CTRL_SET (vop , hdmi_dclk_pol , 1 );
2795
- break ;
2796
- case DRM_MODE_CONNECTOR_DSI :
2797
- VOP_CTRL_SET (vop , mipi_en , 1 );
2798
- VOP_CTRL_SET (vop , mipi_pin_pol , val );
2799
- VOP_CTRL_SET (vop , mipi_dclk_pol , dclk_inv );
2800
- VOP_CTRL_SET (vop , mipi_dual_channel_en ,
2801
- !!(s -> output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_CHANNEL ));
2802
- VOP_CTRL_SET (vop , data01_swap ,
2803
- !!(s -> output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_LINK ));
2804
- break ;
2805
- case DRM_MODE_CONNECTOR_DisplayPort :
2806
- VOP_CTRL_SET (vop , dp_dclk_pol , 0 );
2807
- VOP_CTRL_SET (vop , dp_pin_pol , val );
2808
- VOP_CTRL_SET (vop , dp_en , 1 );
2809
- break ;
2810
- case DRM_MODE_CONNECTOR_TV :
2811
- if (vdisplay == CVBS_PAL_VDISPLAY )
2812
- VOP_CTRL_SET (vop , tve_sw_mode , 1 );
2813
- else
2814
- VOP_CTRL_SET (vop , tve_sw_mode , 0 );
2815
-
2816
- VOP_CTRL_SET (vop , tve_dclk_pol , 1 );
2817
- VOP_CTRL_SET (vop , tve_dclk_en , 1 );
2818
- /* use the same pol reg with hdmi */
2819
- VOP_CTRL_SET (vop , hdmi_pin_pol , val );
2820
- VOP_CTRL_SET (vop , sw_genlock , 1 );
2821
- VOP_CTRL_SET (vop , sw_uv_offset_en , 1 );
2822
- VOP_CTRL_SET (vop , dither_up_en , 1 );
2823
- break ;
2824
- default :
2825
- DRM_ERROR ("unsupported connector_type[%d]\n" , i );
2826
- break ;
2827
- }
2769
+ VOP_GRF_SET (vop , grf_dclk_inv , !dclk_inv );
2770
+ break ;
2771
+ case DRM_MODE_CONNECTOR_eDP :
2772
+ VOP_CTRL_SET (vop , edp_en , 1 );
2773
+ VOP_CTRL_SET (vop , edp_pin_pol , val );
2774
+ VOP_CTRL_SET (vop , edp_dclk_pol , dclk_inv );
2775
+ break ;
2776
+ case DRM_MODE_CONNECTOR_HDMIA :
2777
+ VOP_CTRL_SET (vop , hdmi_en , 1 );
2778
+ VOP_CTRL_SET (vop , hdmi_pin_pol , val );
2779
+ VOP_CTRL_SET (vop , hdmi_dclk_pol , 1 );
2780
+ break ;
2781
+ case DRM_MODE_CONNECTOR_DSI :
2782
+ VOP_CTRL_SET (vop , mipi_en , 1 );
2783
+ VOP_CTRL_SET (vop , mipi_pin_pol , val );
2784
+ VOP_CTRL_SET (vop , mipi_dclk_pol , dclk_inv );
2785
+ VOP_CTRL_SET (vop , mipi_dual_channel_en ,
2786
+ !!(s -> output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_CHANNEL ));
2787
+ VOP_CTRL_SET (vop , data01_swap ,
2788
+ !!(s -> output_flags & ROCKCHIP_OUTPUT_DSI_DUAL_LINK ));
2789
+ break ;
2790
+ case DRM_MODE_CONNECTOR_DisplayPort :
2791
+ VOP_CTRL_SET (vop , dp_dclk_pol , 0 );
2792
+ VOP_CTRL_SET (vop , dp_pin_pol , val );
2793
+ VOP_CTRL_SET (vop , dp_en , 1 );
2794
+ break ;
2795
+ case DRM_MODE_CONNECTOR_TV :
2796
+ if (vdisplay == CVBS_PAL_VDISPLAY )
2797
+ VOP_CTRL_SET (vop , tve_sw_mode , 1 );
2798
+ else
2799
+ VOP_CTRL_SET (vop , tve_sw_mode , 0 );
2800
+
2801
+ VOP_CTRL_SET (vop , tve_dclk_pol , 1 );
2802
+ VOP_CTRL_SET (vop , tve_dclk_en , 1 );
2803
+ /* use the same pol reg with hdmi */
2804
+ VOP_CTRL_SET (vop , hdmi_pin_pol , val );
2805
+ VOP_CTRL_SET (vop , sw_genlock , 1 );
2806
+ VOP_CTRL_SET (vop , sw_uv_offset_en , 1 );
2807
+ VOP_CTRL_SET (vop , dither_up_en , 1 );
2808
+ break ;
2809
+ default :
2810
+ DRM_ERROR ("unsupport connector_type[%d]\n" , s -> output_type );
2828
2811
}
2829
2812
2830
2813
vop_update_csc (crtc );
@@ -3049,7 +3032,7 @@ static void vop_dclk_source_generate(struct drm_crtc *crtc,
3049
3032
if (vop -> pll )
3050
3033
vop -> pll -> use_count -- ;
3051
3034
3052
- if (!( s -> output_type & BIT ( DRM_MODE_CONNECTOR_HDMIA )) &&
3035
+ if (s -> output_type != DRM_MODE_CONNECTOR_HDMIA &&
3053
3036
!private -> default_pll .use_count )
3054
3037
vop -> pll = & private -> default_pll ;
3055
3038
else
@@ -3701,9 +3684,6 @@ static struct drm_crtc_state *vop_crtc_duplicate_state(struct drm_crtc *crtc)
3701
3684
return NULL ;
3702
3685
3703
3686
__drm_atomic_helper_crtc_duplicate_state (crtc , & rockchip_state -> base );
3704
-
3705
- rockchip_state -> output_type = 0 ;
3706
-
3707
3687
return & rockchip_state -> base ;
3708
3688
}
3709
3689
0 commit comments