Lines Matching +full:panel +full:- +full:timing
4 * SPDX-License-Identifier: GPL-2.0+
11 #include <panel.h>
19 #include <dt-bindings/clock/rk3288-cru.h>
20 #include <dt-bindings/video/rk3288.h>
25 * struct rk_lvds_priv - private rockchip lvds display driver info
29 * @panel: Panel device that is used in driver
38 struct udevice *panel; member
46 writel(val, lvds->regs + offset); in lvds_writel()
48 writel(val, lvds->regs + offset + 0x100); in lvds_writel()
59 ret = panel_enable_backlight(priv->panel); in rk_lvds_enable()
66 if (uc_plat->source_id) in rk_lvds_enable()
71 rk_setreg(&priv->grf->soc_con6, val); in rk_lvds_enable()
74 val = priv->format; in rk_lvds_enable()
75 if (priv->output == LVDS_OUTPUT_DUAL) in rk_lvds_enable()
77 else if (priv->output == LVDS_OUTPUT_SINGLE) in rk_lvds_enable()
79 else if (priv->output == LVDS_OUTPUT_RGB) in rk_lvds_enable()
82 rk_setreg(&priv->grf->soc_con7, val); in rk_lvds_enable()
85 if (priv->output == LVDS_OUTPUT_RGB) { in rk_lvds_enable()
154 priv->regs + RK3288_LVDS_CFG_REGC); in rk_lvds_enable()
157 priv->regs + RK3288_LVDS_CFG_REG21); in rk_lvds_enable()
162 int rk_lvds_read_timing(struct udevice *dev, struct display_timing *timing) in rk_lvds_read_timing() argument
165 (gd->fdt_blob, dev_of_offset(dev), 0, timing)) { in rk_lvds_read_timing()
166 debug("%s: Failed to decode display timing\n", __func__); in rk_lvds_read_timing()
167 return -EINVAL; in rk_lvds_read_timing()
176 const void *blob = gd->fdt_blob; in rk_lvds_ofdata_to_platdata()
179 priv->regs = (void *)devfdt_get_addr(dev); in rk_lvds_ofdata_to_platdata()
180 priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); in rk_lvds_ofdata_to_platdata()
182 ret = fdtdec_get_int(blob, node, "rockchip,output", -1); in rk_lvds_ofdata_to_platdata()
183 if (ret != -1) { in rk_lvds_ofdata_to_platdata()
184 priv->output = ret; in rk_lvds_ofdata_to_platdata()
188 priv->output = LVDS_OUTPUT_RGB; in rk_lvds_ofdata_to_platdata()
191 ret = fdtdec_get_int(blob, node, "rockchip,data-mapping", -1); in rk_lvds_ofdata_to_platdata()
192 if (ret != -1) { in rk_lvds_ofdata_to_platdata()
193 priv->format = ret; in rk_lvds_ofdata_to_platdata()
194 debug("LVDS data-mapping : %d\n", ret); in rk_lvds_ofdata_to_platdata()
197 priv->format = LVDS_FORMAT_JEIDA; in rk_lvds_ofdata_to_platdata()
200 ret = fdtdec_get_int(blob, node, "rockchip,data-width", -1); in rk_lvds_ofdata_to_platdata()
201 if (ret != -1) { in rk_lvds_ofdata_to_platdata()
202 debug("LVDS data-width : %d\n", ret); in rk_lvds_ofdata_to_platdata()
204 priv->format |= LVDS_24BIT; in rk_lvds_ofdata_to_platdata()
206 priv->format |= LVDS_18BIT; in rk_lvds_ofdata_to_platdata()
208 debug("rockchip-lvds unsupport data-width[%d]\n", ret); in rk_lvds_ofdata_to_platdata()
209 ret = -EINVAL; in rk_lvds_ofdata_to_platdata()
213 priv->format |= LVDS_24BIT; in rk_lvds_ofdata_to_platdata()
224 ret = uclass_get_device_by_phandle(UCLASS_PANEL, dev, "rockchip,panel", in rk_lvds_probe()
225 &priv->panel); in rk_lvds_probe()
227 debug("%s: Cannot find panel for '%s' (ret=%d)\n", __func__, in rk_lvds_probe()
228 dev->name, ret); in rk_lvds_probe()
241 {.compatible = "rockchip,rk3288-lvds"},