@ -181,13 +181,11 @@ void rkvop_mode_set(struct rk3288_vop *regs,
*
* @ dev : VOP device that we want to connect to the display
* @ fbbase : Frame buffer address
* @ l2bpp Log2 of bits - per - pixels for the display
* @ ep_node : Device tree node to process - this is the offset of an endpoint
* node within the VOP ' s ' port ' list .
* @ return 0 if OK , - ve if something went wrong
*/
int rk_display_init ( struct udevice * dev , ulong fbbase ,
enum video_log2_bpp l2bpp , int ep_node )
int rk_display_init ( struct udevice * dev , ulong fbbase , int ep_node )
{
struct video_priv * uc_priv = dev_get_uclass_priv ( dev ) ;
const void * blob = gd - > fdt_blob ;
@ -199,6 +197,7 @@ int rk_display_init(struct udevice *dev, ulong fbbase,
int ret , remote , i , offset ;
struct display_plat * disp_uc_plat ;
struct clk clk ;
enum video_log2_bpp l2bpp ;
vop_id = fdtdec_get_int ( blob , ep_node , " reg " , - 1 ) ;
debug ( " vop_id=%d \n " , vop_id ) ;
@ -253,6 +252,19 @@ int rk_display_init(struct udevice *dev, ulong fbbase,
return ret ;
}
/* Set bitwidth for vop display according to vop mode */
switch ( vop_id ) {
case VOP_MODE_EDP :
case VOP_MODE_HDMI :
case VOP_MODE_LVDS :
l2bpp = VIDEO_BPP16 ;
break ;
case VOP_MODE_MIPI :
l2bpp = VIDEO_BPP32 ;
break ;
default :
l2bpp = VIDEO_BPP16 ;
}
rkvop_mode_set ( regs , & timing , vop_id ) ;
rkvop_enable ( regs , fbbase , 1 < < l2bpp , & timing ) ;
@ -330,7 +342,7 @@ static int rk_vop_probe(struct udevice *dev)
for ( node = fdt_first_subnode ( blob , port ) ;
node > 0 ;
node = fdt_next_subnode ( blob , node ) ) {
ret = rk_display_init ( dev , plat - > base , VIDEO_BPP16 , node ) ;
ret = rk_display_init ( dev , plat - > base , node ) ;
if ( ret )
debug ( " Device failed: ret=%d \n " , ret ) ;
if ( ! ret )