From 6788d8d0937cdf59c1b1cbfce51d4209525222cc Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Wed, 1 Nov 2017 15:54:08 +0800 Subject: [PATCH] drm/rockchip: rgb: Add support for Rockchip Soc RGB output interface Some Rockchip CRTCs, like rv1108, can directly output parallel and serial RGB data to panel or conversion chip, so we add this driver to probe encoder and connector. Change-Id: Ieab9271205cace962b7e871becaf903b9abebd94 Signed-off-by: Sandy Huang Reviewed-by: Sean Paul Reviewed-by: Mark Yao Signed-off-by: Mark Yao Signed-off-by: Tao Huang --- drivers/gpu/drm/rockchip/Kconfig | 9 +++++++++ drivers/gpu/drm/rockchip/Makefile | 1 + drivers/gpu/drm/rockchip/rockchip_rgb.c | 7 ++++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig index 0fef2d31841b..2cae35d16f61 100644 --- a/drivers/gpu/drm/rockchip/Kconfig +++ b/drivers/gpu/drm/rockchip/Kconfig @@ -74,4 +74,13 @@ config ROCKCHIP_DRM_TVE Choose this option to enable support for Rockchip TVE controllers. say Y to enable its driver. +config ROCKCHIP_RGB + bool "Rockchip RGB support" + depends on DRM_ROCKCHIP + depends on PINCTRL + help + Choose this option to enable support for Rockchip RGB output. + Some Rockchip CRTCs, like rv1108, can directly output parallel + and serial RGB format to panel or connect to a conversion chip. + say Y to enable its driver. endif diff --git a/drivers/gpu/drm/rockchip/Makefile b/drivers/gpu/drm/rockchip/Makefile index d277403f155c..e67c3a37930d 100644 --- a/drivers/gpu/drm/rockchip/Makefile +++ b/drivers/gpu/drm/rockchip/Makefile @@ -15,5 +15,6 @@ rockchipdrm-$(CONFIG_ROCKCHIP_DW_MIPI_DSI) += dw-mipi-dsi.o rockchipdrm-$(CONFIG_ROCKCHIP_INNO_HDMI) += inno_hdmi.o rockchipdrm-$(CONFIG_ROCKCHIP_LVDS) += rockchip_lvds.o rockchipdrm-$(CONFIG_ROCKCHIP_DRM_TVE) += rockchip_drm_tve.o +rockchipdrm-$(CONFIG_ROCKCHIP_RGB) += rockchip_rgb.o obj-$(CONFIG_DRM_ROCKCHIP) += rockchipdrm.o diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index e0c125d1b2f2..db1df44e3f40 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include "rockchip_drm_drv.h" @@ -85,7 +86,7 @@ rockchip_rgb_connector_detect(struct drm_connector *connector, bool force) } static const struct drm_connector_funcs rockchip_rgb_connector_funcs = { - .dpms = drm_atomic_helper_connector_dpms, + .dpms = drm_helper_connector_dpms, .detect = rockchip_rgb_connector_detect, .fill_modes = drm_helper_probe_single_connector_modes, .destroy = drm_connector_cleanup, @@ -263,7 +264,7 @@ static int rockchip_rgb_bind(struct device *dev, struct device *master, drm_connector_helper_add(connector, &rockchip_rgb_connector_helper_funcs); - ret = drm_mode_connector_attach_encoder(connector, encoder); + ret = drm_connector_attach_encoder(connector, encoder); if (ret < 0) { DRM_DEV_ERROR(dev, "failed to attach encoder: %d\n", ret); @@ -278,7 +279,7 @@ static int rockchip_rgb_bind(struct device *dev, struct device *master, connector->port = dev->of_node; } else { rgb->bridge->encoder = encoder; - ret = drm_bridge_attach(drm_dev, rgb->bridge); + ret = drm_bridge_attach(encoder, rgb->bridge, NULL); if (ret) { DRM_DEV_ERROR(dev, "failed to attach bridge: %d\n", ret);