#include <drm/drm_atomic_helper.h>
#include <drm/drm_bridge.h>
#include <drm/drm_crtc.h>
#include <linux/bitfield.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_graph.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#define HTX_PVI_CTRL …
#define PVI_CTRL_OP_VSYNC_POL …
#define PVI_CTRL_OP_HSYNC_POL …
#define PVI_CTRL_OP_DE_POL …
#define PVI_CTRL_INP_VSYNC_POL …
#define PVI_CTRL_INP_HSYNC_POL …
#define PVI_CTRL_INP_DE_POL …
#define PVI_CTRL_MODE_MASK …
#define PVI_CTRL_MODE_LCDIF …
#define PVI_CTRL_EN …
struct imx8mp_hdmi_pvi { … };
static inline struct imx8mp_hdmi_pvi *
to_imx8mp_hdmi_pvi(struct drm_bridge *bridge)
{ … }
static int imx8mp_hdmi_pvi_bridge_attach(struct drm_bridge *bridge,
enum drm_bridge_attach_flags flags)
{ … }
static void imx8mp_hdmi_pvi_bridge_enable(struct drm_bridge *bridge,
struct drm_bridge_state *bridge_state)
{ … }
static void imx8mp_hdmi_pvi_bridge_disable(struct drm_bridge *bridge,
struct drm_bridge_state *bridge_state)
{ … }
static u32 *
imx8mp_hdmi_pvi_bridge_get_input_bus_fmts(struct drm_bridge *bridge,
struct drm_bridge_state *bridge_state,
struct drm_crtc_state *crtc_state,
struct drm_connector_state *conn_state,
u32 output_fmt,
unsigned int *num_input_fmts)
{ … }
static const struct drm_bridge_funcs imx_hdmi_pvi_bridge_funcs = …;
static int imx8mp_hdmi_pvi_probe(struct platform_device *pdev)
{ … }
static void imx8mp_hdmi_pvi_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id imx8mp_hdmi_pvi_match[] = …;
MODULE_DEVICE_TABLE(of, imx8mp_hdmi_pvi_match);
static struct platform_driver imx8mp_hdmi_pvi_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;