Lines Matching full:rgb
66 void (*enable)(struct rockchip_rgb *rgb);
67 void (*disable)(struct rockchip_rgb *rgb);
173 struct rockchip_rgb *rgb = connector_to_rgb(connector); in rockchip_rgb_atomic_connector_get_property() local
177 *val = rgb->id; in rockchip_rgb_atomic_connector_get_property()
181 DRM_ERROR("failed to get rockchip RGB property\n"); in rockchip_rgb_atomic_connector_get_property()
197 struct rockchip_rgb *rgb = connector_to_rgb(connector); in rockchip_rgb_connector_get_modes() local
198 struct drm_panel *panel = rgb->panel; in rockchip_rgb_connector_get_modes()
206 struct rockchip_rgb *rgb = connector_to_rgb(connector); in rockchip_rgb_connector_best_encoder() local
208 return &rgb->encoder; in rockchip_rgb_connector_best_encoder()
219 struct rockchip_rgb *rgb = encoder_to_rgb(encoder); in rockchip_rgb_encoder_enable() local
221 pinctrl_pm_select_default_state(rgb->dev); in rockchip_rgb_encoder_enable()
223 if (rgb->funcs && rgb->funcs->enable) in rockchip_rgb_encoder_enable()
224 rgb->funcs->enable(rgb); in rockchip_rgb_encoder_enable()
226 if (rgb->phy && !rgb->phy_enabled) { in rockchip_rgb_encoder_enable()
227 phy_power_on(rgb->phy); in rockchip_rgb_encoder_enable()
228 rgb->phy_enabled = true; in rockchip_rgb_encoder_enable()
231 if (rgb->panel) { in rockchip_rgb_encoder_enable()
232 drm_panel_prepare(rgb->panel); in rockchip_rgb_encoder_enable()
233 drm_panel_enable(rgb->panel); in rockchip_rgb_encoder_enable()
239 struct rockchip_rgb *rgb = encoder_to_rgb(encoder); in rockchip_rgb_encoder_disable() local
241 if (rgb->panel) { in rockchip_rgb_encoder_disable()
242 drm_panel_disable(rgb->panel); in rockchip_rgb_encoder_disable()
243 drm_panel_unprepare(rgb->panel); in rockchip_rgb_encoder_disable()
246 if (rgb->phy && rgb->phy_enabled) { in rockchip_rgb_encoder_disable()
247 phy_power_off(rgb->phy); in rockchip_rgb_encoder_disable()
248 rgb->phy_enabled = false; in rockchip_rgb_encoder_disable()
251 if (rgb->funcs && rgb->funcs->disable) in rockchip_rgb_encoder_disable()
252 rgb->funcs->disable(rgb); in rockchip_rgb_encoder_disable()
254 pinctrl_pm_select_sleep_state(rgb->dev); in rockchip_rgb_encoder_disable()
333 struct rockchip_rgb *rgb = encoder_to_rgb(encoder); in rockchip_rgb_encoder_loader_protect() local
335 if (rgb->is_mcu_panel) { in rockchip_rgb_encoder_loader_protect()
336 struct rockchip_mcu_panel *mcu_panel = to_rockchip_mcu_panel(rgb->panel); in rockchip_rgb_encoder_loader_protect()
344 if (rgb->panel) in rockchip_rgb_encoder_loader_protect()
345 panel_simple_loader_protect(rgb->panel); in rockchip_rgb_encoder_loader_protect()
348 phy_init(rgb->phy); in rockchip_rgb_encoder_loader_protect()
349 if (rgb->phy) { in rockchip_rgb_encoder_loader_protect()
350 rgb->phy->power_count++; in rockchip_rgb_encoder_loader_protect()
351 rgb->phy_enabled = true; in rockchip_rgb_encoder_loader_protect()
354 phy_exit(rgb->phy); in rockchip_rgb_encoder_loader_protect()
355 if (rgb->phy) { in rockchip_rgb_encoder_loader_protect()
356 rgb->phy->power_count--; in rockchip_rgb_encoder_loader_protect()
357 rgb->phy_enabled = false; in rockchip_rgb_encoder_loader_protect()
368 struct rockchip_rgb *rgb = encoder_to_rgb(encoder); in rockchip_rgb_encoder_mode_valid() local
369 struct device *dev = rgb->dev; in rockchip_rgb_encoder_mode_valid()
371 u32 max_clock = rgb->max_dclk_rate; in rockchip_rgb_encoder_mode_valid()
456 static int rockchip_mcu_panel_init(struct rockchip_rgb *rgb, struct device_node *np_mcu_panel) in rockchip_mcu_panel_init() argument
458 struct device *dev = rgb->dev; in rockchip_mcu_panel_init()
460 struct rockchip_mcu_panel *mcu_panel = to_rockchip_mcu_panel(rgb->panel); in rockchip_mcu_panel_init()
545 * vopl/vopb -> rgb in rockchip_mcu_panel_init()
546 * vop2/vop3 -> vp -> rgb in rockchip_mcu_panel_init()
776 struct rockchip_rgb *rgb = dev_get_drvdata(dev); in rockchip_rgb_bind() local
778 struct drm_encoder *encoder = &rgb->encoder; in rockchip_rgb_bind()
795 rgb->panel = &mcu_panel->base; in rockchip_rgb_bind()
797 ret = rockchip_mcu_panel_init(rgb, np_mcu_panel); in rockchip_rgb_bind()
804 rgb->panel->backlight = rockchip_mcu_panel_find_backlight(np_mcu_panel); in rockchip_rgb_bind()
805 if (!rgb->panel->backlight) { in rockchip_rgb_bind()
818 rgb->is_mcu_panel = true; in rockchip_rgb_bind()
821 &rgb->panel, &rgb->bridge); in rockchip_rgb_bind()
840 if (rgb->panel) { in rockchip_rgb_bind()
843 connector = &rgb->connector; in rockchip_rgb_bind()
864 rgb->sub_dev.connector = &rgb->connector; in rockchip_rgb_bind()
865 rgb->sub_dev.of_node = rgb->dev->of_node; in rockchip_rgb_bind()
866 rgb->sub_dev.loader_protect = rockchip_rgb_encoder_loader_protect; in rockchip_rgb_bind()
868 rockchip_drm_register_sub_dev(&rgb->sub_dev); in rockchip_rgb_bind()
870 rgb->bridge->encoder = encoder; in rockchip_rgb_bind()
871 ret = drm_bridge_attach(encoder, rgb->bridge, NULL, 0); in rockchip_rgb_bind()
891 struct rockchip_rgb *rgb = dev_get_drvdata(dev); in rockchip_rgb_unbind() local
893 if (rgb->sub_dev.connector) in rockchip_rgb_unbind()
894 rockchip_drm_unregister_sub_dev(&rgb->sub_dev); in rockchip_rgb_unbind()
895 if (rgb->panel) in rockchip_rgb_unbind()
896 drm_connector_cleanup(&rgb->connector); in rockchip_rgb_unbind()
898 drm_encoder_cleanup(&rgb->encoder); in rockchip_rgb_unbind()
909 struct rockchip_rgb *rgb; in rockchip_rgb_probe() local
913 rgb = devm_kzalloc(&pdev->dev, sizeof(*rgb), GFP_KERNEL); in rockchip_rgb_probe()
914 if (!rgb) in rockchip_rgb_probe()
917 id = of_alias_get_id(dev->of_node, "rgb"); in rockchip_rgb_probe()
923 rgb->max_dclk_rate = rgb_data->max_dclk_rate; in rockchip_rgb_probe()
924 rgb->funcs = rgb_data->funcs; in rockchip_rgb_probe()
926 rgb->id = id; in rockchip_rgb_probe()
927 rgb->dev = dev; in rockchip_rgb_probe()
928 platform_set_drvdata(pdev, rgb); in rockchip_rgb_probe()
930 rgb->data_sync_bypass = in rockchip_rgb_probe()
934 rgb->grf = syscon_node_to_regmap(dev->parent->of_node); in rockchip_rgb_probe()
935 if (IS_ERR(rgb->grf)) { in rockchip_rgb_probe()
936 ret = PTR_ERR(rgb->grf); in rockchip_rgb_probe()
942 rgb->phy = devm_phy_optional_get(dev, "phy"); in rockchip_rgb_probe()
943 if (IS_ERR(rgb->phy)) { in rockchip_rgb_probe()
944 ret = PTR_ERR(rgb->phy); in rockchip_rgb_probe()
959 static void px30_rgb_enable(struct rockchip_rgb *rgb) in px30_rgb_enable() argument
961 int pipe = drm_of_encoder_active_endpoint_id(rgb->dev->of_node, in px30_rgb_enable()
962 &rgb->encoder); in px30_rgb_enable()
964 regmap_write(rgb->grf, PX30_GRF_PD_VO_CON1, PX30_RGB_VOP_SEL(pipe) | in px30_rgb_enable()
965 PX30_RGB_DATA_SYNC_BYPASS(rgb->data_sync_bypass)); in px30_rgb_enable()
976 static void rk1808_rgb_enable(struct rockchip_rgb *rgb) in rk1808_rgb_enable() argument
978 regmap_write(rgb->grf, RK1808_GRF_PD_VO_CON1, in rk1808_rgb_enable()
979 RK1808_RGB_DATA_SYNC_BYPASS(rgb->data_sync_bypass)); in rk1808_rgb_enable()
990 static void rk3288_rgb_enable(struct rockchip_rgb *rgb) in rk3288_rgb_enable() argument
992 int pipe = drm_of_encoder_active_endpoint_id(rgb->dev->of_node, in rk3288_rgb_enable()
993 &rgb->encoder); in rk3288_rgb_enable()
995 regmap_write(rgb->grf, RK3288_GRF_SOC_CON6, RK3288_LVDS_LCDC_SEL(pipe)); in rk3288_rgb_enable()
996 regmap_write(rgb->grf, RK3288_GRF_SOC_CON7, in rk3288_rgb_enable()
1002 static void rk3288_rgb_disable(struct rockchip_rgb *rgb) in rk3288_rgb_disable() argument
1004 regmap_write(rgb->grf, RK3288_GRF_SOC_CON7, in rk3288_rgb_disable()
1018 static void rk3562_rgb_enable(struct rockchip_rgb *rgb) in rk3562_rgb_enable() argument
1020 regmap_write(rgb->grf, RK3562_GRF_IOC_VO_IO_CON, in rk3562_rgb_enable()
1021 RK3562_RGB_DATA_BYPASS(rgb->data_sync_bypass)); in rk3562_rgb_enable()
1032 static void rk3568_rgb_enable(struct rockchip_rgb *rgb) in rk3568_rgb_enable() argument
1034 regmap_write(rgb->grf, RK3568_GRF_VO_CON1, in rk3568_rgb_enable()
1035 RK3568_RGB_DATA_BYPASS(rgb->data_sync_bypass)); in rk3568_rgb_enable()
1046 static void rv1126_rgb_enable(struct rockchip_rgb *rgb) in rv1126_rgb_enable() argument
1048 regmap_write(rgb->grf, RV1126_GRF_IOFUNC_CON3, in rv1126_rgb_enable()
1049 RV1126_LCDC_IO_BYPASS(rgb->data_sync_bypass)); in rv1126_rgb_enable()
1060 static void rv1106_rgb_enable(struct rockchip_rgb *rgb) in rv1106_rgb_enable() argument
1062 regmap_write(rgb->grf, RV1106_VENC_GRF_VOP_IO_WRAPPER, in rv1106_rgb_enable()
1063 RV1106_IO_BYPASS_SEL(rgb->data_sync_bypass ? 0x3 : 0x0)); in rv1106_rgb_enable()
1064 regmap_write(rgb->grf, RV1106_VOGRF_VOP_PIPE_BYPASS, in rv1106_rgb_enable()
1065 RV1106_VOP_PIPE_BYPASS(rgb->data_sync_bypass ? 0x3 : 0x0)); in rv1106_rgb_enable()
1078 { .compatible = "rockchip,px30-rgb", .data = &px30_rgb },
1079 { .compatible = "rockchip,rk1808-rgb", .data = &rk1808_rgb },
1080 { .compatible = "rockchip,rk3066-rgb", },
1081 { .compatible = "rockchip,rk3128-rgb", },
1082 { .compatible = "rockchip,rk3288-rgb", .data = &rk3288_rgb },
1083 { .compatible = "rockchip,rk3308-rgb", },
1084 { .compatible = "rockchip,rk3368-rgb", },
1085 { .compatible = "rockchip,rk3562-rgb", .data = &rk3562_rgb },
1086 { .compatible = "rockchip,rk3568-rgb", .data = &rk3568_rgb },
1087 { .compatible = "rockchip,rk3588-rgb", },
1088 { .compatible = "rockchip,rv1106-rgb", .data = &rv1106_rgb},
1089 { .compatible = "rockchip,rv1108-rgb", },
1090 { .compatible = "rockchip,rv1126-rgb", .data = &rv1126_rgb},
1099 .name = "rockchip-rgb",