Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion arch/arm/boot/dts/overlays/ov9281-overlay.dts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
data-lanes = <1 2>;
clock-noncontinuous;
link-frequencies =
/bits/ 64 <456000000>;
/bits/ 64 <400000000>;
};
};
};
Expand All @@ -50,6 +50,7 @@
csi1_ep: endpoint {
remote-endpoint = <&ov9281_0>;
data-lanes = <1 2>;
clock-noncontinuous;
};
};
};
Expand Down
47 changes: 46 additions & 1 deletion drivers/gpu/drm/vc4/vc4_hdmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,6 +401,13 @@ static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)

drm_print_regset32(&p, &vc4_hdmi->hdmi_regset);
drm_print_regset32(&p, &vc4_hdmi->hd_regset);
drm_print_regset32(&p, &vc4_hdmi->cec_regset);
drm_print_regset32(&p, &vc4_hdmi->csc_regset);
drm_print_regset32(&p, &vc4_hdmi->dvp_regset);
drm_print_regset32(&p, &vc4_hdmi->intr2_regset);
drm_print_regset32(&p, &vc4_hdmi->phy_regset);
drm_print_regset32(&p, &vc4_hdmi->ram_regset);
drm_print_regset32(&p, &vc4_hdmi->rm_regset);

return 0;
}
Expand Down Expand Up @@ -442,8 +449,9 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
connected = true;
} else if (drm_probe_ddc(vc4_hdmi->ddc))
connected = true;
if (HDMI_READ(HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED)
else if (HDMI_READ(HDMI_HOTPLUG) & VC4_HDMI_HOTPLUG_CONNECTED)
connected = true;

if (connected) {
if (connector->status != connector_status_connected) {
struct edid *edid = drm_get_edid(connector, vc4_hdmi->ddc);
Expand Down Expand Up @@ -2182,6 +2190,7 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi)
struct platform_device *pdev = vc4_hdmi->pdev;
struct device *dev = &pdev->dev;
struct resource *res;
int ret;

res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi");
if (!res)
Expand Down Expand Up @@ -2280,6 +2289,42 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi)
return PTR_ERR(vc4_hdmi->reset);
}

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->hdmi_regset, VC4_HDMI);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->hd_regset, VC4_HD);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->cec_regset, VC5_CEC);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->csc_regset, VC5_CSC);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->dvp_regset, VC5_DVP);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->phy_regset, VC5_PHY);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->ram_regset, VC5_RAM);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->rm_regset, VC5_RM);
if (ret)
return ret;

ret = vc4_hdmi_build_regset(vc4_hdmi, &vc4_hdmi->intr2_regset, VC5_INTR2);
if (ret)
return ret;

return 0;
}

Expand Down
9 changes: 9 additions & 0 deletions drivers/gpu/drm/vc4/vc4_hdmi.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,17 @@ struct vc4_hdmi {

struct reset_control *reset;

/* Common debugfs regset */
struct debugfs_regset32 hdmi_regset;
struct debugfs_regset32 hd_regset;
/* VC5 debugfs regset */
struct debugfs_regset32 cec_regset;
struct debugfs_regset32 csc_regset;
struct debugfs_regset32 dvp_regset;
struct debugfs_regset32 intr2_regset;
struct debugfs_regset32 phy_regset;
struct debugfs_regset32 ram_regset;
struct debugfs_regset32 rm_regset;
};

static inline struct vc4_hdmi *
Expand Down