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);