mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 17:22:22 +02:00
video: rockchip: Add HDMI support for RK3568
HDMI on RK3568 is mostly simplified, all this does is enabling DDC for display timings and HPD. Signed-off-by: Dang Huynh <danct12@riseup.net>
This commit is contained in:
committed by
Ondrej Jirman
parent
bc5dcbbd1a
commit
8dc4a136b1
@@ -14,6 +14,7 @@ obj-$(CONFIG_DISPLAY_ROCKCHIP_LVDS) += rk_lvds.o
|
|||||||
obj-hdmi-$(CONFIG_ROCKCHIP_RK3288) += rk3288_hdmi.o
|
obj-hdmi-$(CONFIG_ROCKCHIP_RK3288) += rk3288_hdmi.o
|
||||||
obj-hdmi-$(CONFIG_ROCKCHIP_RK3328) += rk3328_hdmi.o
|
obj-hdmi-$(CONFIG_ROCKCHIP_RK3328) += rk3328_hdmi.o
|
||||||
obj-hdmi-$(CONFIG_ROCKCHIP_RK3399) += rk3399_hdmi.o
|
obj-hdmi-$(CONFIG_ROCKCHIP_RK3399) += rk3399_hdmi.o
|
||||||
|
obj-hdmi-$(CONFIG_ROCKCHIP_RK3568) += rk3568_hdmi.o
|
||||||
obj-$(CONFIG_DISPLAY_ROCKCHIP_HDMI) += rk_hdmi.o $(obj-hdmi-y)
|
obj-$(CONFIG_DISPLAY_ROCKCHIP_HDMI) += rk_hdmi.o $(obj-hdmi-y)
|
||||||
obj-mipi-$(CONFIG_ROCKCHIP_RK3288) += rk3288_mipi.o
|
obj-mipi-$(CONFIG_ROCKCHIP_RK3288) += rk3288_mipi.o
|
||||||
obj-mipi-$(CONFIG_ROCKCHIP_RK3399) += rk3399_mipi.o
|
obj-mipi-$(CONFIG_ROCKCHIP_RK3399) += rk3399_mipi.o
|
||||||
|
63
drivers/video/rockchip/rk3568_hdmi.c
Normal file
63
drivers/video/rockchip/rk3568_hdmi.c
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0+
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2024 Dang Huynh <danct12@riseup.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <display.h>
|
||||||
|
#include <dm.h>
|
||||||
|
#include <dw_hdmi.h>
|
||||||
|
#include <edid.h>
|
||||||
|
#include <asm/arch-rockchip/hardware.h>
|
||||||
|
#include <asm/arch-rockchip/grf_rk3568.h>
|
||||||
|
#include "rk_hdmi.h"
|
||||||
|
|
||||||
|
#define RK3568_IO_DDC_IN_MSK ((3 << 14) | (3 << (14 + 16)))
|
||||||
|
|
||||||
|
static int rk3568_hdmi_enable(struct udevice *dev, int panel_bpp,
|
||||||
|
const struct display_timing *edid)
|
||||||
|
{
|
||||||
|
struct rk_hdmi_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
|
return dw_hdmi_enable(&priv->hdmi, edid);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rk3568_hdmi_of_to_plat(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct rk_hdmi_priv *priv = dev_get_priv(dev);
|
||||||
|
struct dw_hdmi *hdmi = &priv->hdmi;
|
||||||
|
|
||||||
|
hdmi->i2c_clk_high = 0x71;
|
||||||
|
hdmi->i2c_clk_low = 0x76;
|
||||||
|
|
||||||
|
return rk_hdmi_of_to_plat(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int rk3568_hdmi_probe(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct rk_hdmi_priv *priv = dev_get_priv(dev);
|
||||||
|
struct rk3568_grf *grf = priv->grf;
|
||||||
|
|
||||||
|
writel(RK3568_IO_DDC_IN_MSK, &grf->vo_con1);
|
||||||
|
|
||||||
|
return rk_hdmi_probe(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct dm_display_ops rk3568_hdmi_ops = {
|
||||||
|
.read_edid = rk_hdmi_read_edid,
|
||||||
|
.enable = rk3568_hdmi_enable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct udevice_id rk3568_hdmi_ids[] = {
|
||||||
|
{ .compatible = "rockchip,rk3568-dw-hdmi" },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
U_BOOT_DRIVER(rk3568_hdmi_rockchip) = {
|
||||||
|
.name = "rk3568_hdmi_rockchip",
|
||||||
|
.id = UCLASS_DISPLAY,
|
||||||
|
.of_match = rk3568_hdmi_ids,
|
||||||
|
.ops = &rk3568_hdmi_ops,
|
||||||
|
.of_to_plat = rk3568_hdmi_of_to_plat,
|
||||||
|
.probe = rk3568_hdmi_probe,
|
||||||
|
.priv_auto = sizeof(struct rk_hdmi_priv),
|
||||||
|
};
|
Reference in New Issue
Block a user