drm/bridge: support rk1000 tv encoder

RK1000 is a digital-analog mixed chip which has tve output function.
RK1000's registers can be written and read through I2C interaface.
Because RK1000's I2C need dclk and mclk, RK1000 TVE should be registered
after RK1000 CORE.

Change-Id: I65b40826bd1dbf07d4fa94ecdf8c75005008731f
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
This commit is contained in:
Algea Cao
2020-06-22 17:55:25 +08:00
committed by Tao Huang
parent 4c61ce641f
commit deeec05202
3 changed files with 16 additions and 6 deletions

View File

@@ -134,6 +134,14 @@ config DRM_RK630_TVE
help
ROCKCHIP TVE bridge chip RK630 driver.
config DRM_RK1000_TVE
tristate "Rockchip RK1000 TVE bridge"
depends on OF
select DRM_KMS_HELPER
select MFD_RK1000
help
Rockchip TVE bridge chip driver.
config DRM_SIL_SII8620
tristate "Silicon Image SII8620 HDMI/MHL bridge"
depends on OF

View File

@@ -9,6 +9,7 @@ obj-$(CONFIG_DRM_NXP_PTN3460) += nxp-ptn3460.o
obj-$(CONFIG_DRM_PARADE_PS8622) += parade-ps8622.o
obj-$(CONFIG_DRM_PARADE_PS8640) += parade-ps8640.o
obj-$(CONFIG_DRM_RK630_TVE) += rk630-tve.o
obj-$(CONFIG_DRM_RK1000_TVE) += rk1000.o
obj-$(CONFIG_DRM_SIL_SII8620) += sil-sii8620.o
obj-$(CONFIG_DRM_SII902X) += sii902x.o
obj-$(CONFIG_DRM_SII9234) += sii9234.o

View File

@@ -18,7 +18,7 @@
#include <drm/drm_atomic_helper.h>
#include <drm/drm_crtc_helper.h>
#include <drm/drm_of.h>
#include <drm/drmP.h>
#include <drm/drm_probe_helper.h>
#include "../rockchip/rockchip_drm_drv.h"
@@ -30,11 +30,11 @@ static const struct drm_display_mode rk1000_cvbs_mode[2] = {
{ DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 27000, 720, 732,
738, 864, 0, 576, 582, 588, 625, 0,
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
.vrefresh = 50, 0, },
0, },
{ DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 27000, 720, 736,
742, 858, 0, 480, 486, 492, 529, 0,
DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC),
.vrefresh = 60, 0, },
0, },
};
struct rk1000_tve {
@@ -258,8 +258,8 @@ static const struct drm_connector_funcs rk1000_connector_funcs = {
static void
rk1000_bridge_mode_set(struct drm_bridge *bridge,
struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
const struct drm_display_mode *mode,
const struct drm_display_mode *adjusted_mode)
{
struct rk1000_tve *rk1000;
@@ -291,7 +291,8 @@ static void rk1000_bridge_disable(struct drm_bridge *bridge)
rk1000_tve_disable(rk1000);
}
static int rk1000_bridge_attach(struct drm_bridge *bridge)
static int rk1000_bridge_attach(struct drm_bridge *bridge,
enum drm_bridge_attach_flags flags)
{
struct rk1000_tve *rk1000 = bridge_to_rk1000(bridge);
int ret;