Lines Matching +full:imx8mp +full:- +full:hdmi +full:- +full:tx
1 // SPDX-License-Identifier: GPL-2.0+
25 struct imx8mp_hdmi *hdmi = (struct imx8mp_hdmi *)data; in imx8mp_hdmi_mode_valid() local
27 if (mode->clock < 13500) in imx8mp_hdmi_mode_valid()
30 if (mode->clock > 297000) in imx8mp_hdmi_mode_valid()
33 if (clk_round_rate(hdmi->pixclk, mode->clock * 1000) != in imx8mp_hdmi_mode_valid()
34 mode->clock * 1000) in imx8mp_hdmi_mode_valid()
37 /* We don't support double-clocked and Interlaced modes */ in imx8mp_hdmi_mode_valid()
38 if ((mode->flags & DRM_MODE_FLAG_DBLCLK) || in imx8mp_hdmi_mode_valid()
39 (mode->flags & DRM_MODE_FLAG_INTERLACE)) in imx8mp_hdmi_mode_valid()
56 static void im8mp_hdmi_phy_setup_hpd(struct dw_hdmi *hdmi, void *data) in im8mp_hdmi_phy_setup_hpd() argument
62 dw_hdmi_phy_gen1_reset(hdmi); in im8mp_hdmi_phy_setup_hpd()
64 dw_hdmi_phy_setup_hpd(hdmi, data); in im8mp_hdmi_phy_setup_hpd()
77 struct device *dev = &pdev->dev; in imx8mp_dw_hdmi_probe()
79 struct imx8mp_hdmi *hdmi; in imx8mp_dw_hdmi_probe() local
81 hdmi = devm_kzalloc(dev, sizeof(*hdmi), GFP_KERNEL); in imx8mp_dw_hdmi_probe()
82 if (!hdmi) in imx8mp_dw_hdmi_probe()
83 return -ENOMEM; in imx8mp_dw_hdmi_probe()
85 plat_data = &hdmi->plat_data; in imx8mp_dw_hdmi_probe()
87 hdmi->pixclk = devm_clk_get(dev, "pix"); in imx8mp_dw_hdmi_probe()
88 if (IS_ERR(hdmi->pixclk)) in imx8mp_dw_hdmi_probe()
89 return dev_err_probe(dev, PTR_ERR(hdmi->pixclk), in imx8mp_dw_hdmi_probe()
92 plat_data->mode_valid = imx8mp_hdmi_mode_valid; in imx8mp_dw_hdmi_probe()
93 plat_data->phy_ops = &imx8mp_hdmi_phy_ops; in imx8mp_dw_hdmi_probe()
94 plat_data->phy_name = "SAMSUNG HDMI TX PHY"; in imx8mp_dw_hdmi_probe()
95 plat_data->priv_data = hdmi; in imx8mp_dw_hdmi_probe()
96 plat_data->phy_force_vendor = true; in imx8mp_dw_hdmi_probe()
98 hdmi->dw_hdmi = dw_hdmi_probe(pdev, plat_data); in imx8mp_dw_hdmi_probe()
99 if (IS_ERR(hdmi->dw_hdmi)) in imx8mp_dw_hdmi_probe()
100 return PTR_ERR(hdmi->dw_hdmi); in imx8mp_dw_hdmi_probe()
102 platform_set_drvdata(pdev, hdmi); in imx8mp_dw_hdmi_probe()
109 struct imx8mp_hdmi *hdmi = platform_get_drvdata(pdev); in imx8mp_dw_hdmi_remove() local
111 dw_hdmi_remove(hdmi->dw_hdmi); in imx8mp_dw_hdmi_remove()
121 struct imx8mp_hdmi *hdmi = dev_get_drvdata(dev); in imx8mp_dw_hdmi_pm_resume() local
123 dw_hdmi_resume(hdmi->dw_hdmi); in imx8mp_dw_hdmi_pm_resume()
134 { .compatible = "fsl,imx8mp-hdmi-tx" },
143 .name = "imx8mp-dw-hdmi-tx",
151 MODULE_DESCRIPTION("i.MX8MP HDMI encoder driver");