2017-04-18 15:09 GMT+08:00 Eric Gao <eric....@rock-chips.com>: > Because the bitwidth is different for different display mode, so we need > to set them according to demand. > > Signed-off-by: Eric Gao <eric....@rock-chips.com> > Reviewed-by: Eddie Cai <eddie.cai.li...@gmail.com>
> > --- > > Changes in v2: > -Change the bitwidth for different display mode. > > drivers/video/rockchip/rk_vop.c | 20 ++++++++++++++++---- > 1 file changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_ > vop.c > index 84d6627..a637f7d 100644 > --- a/drivers/video/rockchip/rk_vop.c > +++ b/drivers/video/rockchip/rk_vop.c > @@ -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) > -- > 1.9.1 > > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot