#include <linux/delay.h>
#include <linux/interconnect.h>
#include <linux/of_irq.h>
#include <drm/drm_debugfs.h>
#include <drm/drm_drv.h>
#include <drm/drm_file.h>
#include <drm/drm_vblank.h>
#include "msm_drv.h"
#include "msm_gem.h"
#include "msm_mmu.h"
#include "mdp5_kms.h"
static int mdp5_hw_init(struct msm_kms *kms)
{ … }
struct mdp5_global_state *
mdp5_get_existing_global_state(struct mdp5_kms *mdp5_kms)
{ … }
struct mdp5_global_state *mdp5_get_global_state(struct drm_atomic_state *s)
{ … }
static struct drm_private_state *
mdp5_global_duplicate_state(struct drm_private_obj *obj)
{ … }
static void mdp5_global_destroy_state(struct drm_private_obj *obj,
struct drm_private_state *state)
{ … }
static void mdp5_global_print_state(struct drm_printer *p,
const struct drm_private_state *state)
{ … }
static const struct drm_private_state_funcs mdp5_global_state_funcs = …;
static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
{ … }
static void mdp5_enable_commit(struct msm_kms *kms)
{ … }
static void mdp5_disable_commit(struct msm_kms *kms)
{ … }
static void mdp5_prepare_commit(struct msm_kms *kms, struct drm_atomic_state *state)
{ … }
static void mdp5_flush_commit(struct msm_kms *kms, unsigned crtc_mask)
{ … }
static void mdp5_wait_flush(struct msm_kms *kms, unsigned crtc_mask)
{ … }
static void mdp5_complete_commit(struct msm_kms *kms, unsigned crtc_mask)
{ … }
static void mdp5_destroy(struct mdp5_kms *mdp5_kms);
static void mdp5_kms_destroy(struct msm_kms *kms)
{ … }
static const struct mdp_kms_funcs kms_funcs = …;
static int mdp5_disable(struct mdp5_kms *mdp5_kms)
{ … }
static int mdp5_enable(struct mdp5_kms *mdp5_kms)
{ … }
static struct drm_encoder *construct_encoder(struct mdp5_kms *mdp5_kms,
struct mdp5_interface *intf,
struct mdp5_ctl *ctl)
{ … }
static int get_dsi_id_from_intf(const struct mdp5_cfg_hw *hw_cfg, int intf_num)
{ … }
static int modeset_init_intf(struct mdp5_kms *mdp5_kms,
struct mdp5_interface *intf)
{ … }
static int modeset_init(struct mdp5_kms *mdp5_kms)
{ … }
static void read_mdp_hw_revision(struct mdp5_kms *mdp5_kms,
u32 *major, u32 *minor)
{ … }
static int get_clk(struct platform_device *pdev, struct clk **clkp,
const char *name, bool mandatory)
{ … }
static int mdp5_init(struct platform_device *pdev, struct drm_device *dev);
static int mdp5_kms_init(struct drm_device *dev)
{ … }
static void mdp5_destroy(struct mdp5_kms *mdp5_kms)
{ … }
static int construct_pipes(struct mdp5_kms *mdp5_kms, int cnt,
const enum mdp5_pipe *pipes, const uint32_t *offsets,
uint32_t caps)
{ … }
static int hwpipe_init(struct mdp5_kms *mdp5_kms)
{ … }
static int hwmixer_init(struct mdp5_kms *mdp5_kms)
{ … }
static int interface_init(struct mdp5_kms *mdp5_kms)
{ … }
static int mdp5_init(struct platform_device *pdev, struct drm_device *dev)
{ … }
static int mdp5_setup_interconnect(struct platform_device *pdev)
{ … }
static int mdp5_dev_probe(struct platform_device *pdev)
{ … }
static void mdp5_dev_remove(struct platform_device *pdev)
{ … }
static __maybe_unused int mdp5_runtime_suspend(struct device *dev)
{ … }
static __maybe_unused int mdp5_runtime_resume(struct device *dev)
{ … }
static const struct dev_pm_ops mdp5_pm_ops = …;
static const struct of_device_id mdp5_dt_match[] = …;
MODULE_DEVICE_TABLE(of, mdp5_dt_match);
static struct platform_driver mdp5_driver = …;
void __init msm_mdp_register(void)
{ … }
void __exit msm_mdp_unregister(void)
{ … }