85 lines
1.8 KiB
C
85 lines
1.8 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||
|
/*
|
||
|
* Copyright: 2017 Cadence Design Systems, Inc.
|
||
|
*
|
||
|
* Author: Boris Brezillon <boris.brezillon@bootlin.com>
|
||
|
*/
|
||
|
|
||
|
#ifndef __CDNS_DSI_H__
|
||
|
#define __CDNS_DSI_H__
|
||
|
|
||
|
#include <drm/drm_bridge.h>
|
||
|
#include <drm/drm_mipi_dsi.h>
|
||
|
#include <drm/drm_panel.h>
|
||
|
|
||
|
#include <linux/bits.h>
|
||
|
#include <linux/completion.h>
|
||
|
#include <linux/phy/phy.h>
|
||
|
|
||
|
struct clk;
|
||
|
struct reset_control;
|
||
|
|
||
|
struct cdns_dsi_output {
|
||
|
struct mipi_dsi_device *dev;
|
||
|
struct drm_panel *panel;
|
||
|
struct drm_bridge *bridge;
|
||
|
union phy_configure_opts phy_opts;
|
||
|
};
|
||
|
|
||
|
enum cdns_dsi_input_id {
|
||
|
CDNS_SDI_INPUT,
|
||
|
CDNS_DPI_INPUT,
|
||
|
CDNS_DSC_INPUT,
|
||
|
};
|
||
|
|
||
|
struct cdns_dsi_cfg {
|
||
|
unsigned int hfp;
|
||
|
unsigned int hsa;
|
||
|
unsigned int hbp;
|
||
|
unsigned int hact;
|
||
|
unsigned int htotal;
|
||
|
};
|
||
|
|
||
|
struct cdns_dsi_input {
|
||
|
enum cdns_dsi_input_id id;
|
||
|
struct drm_bridge bridge;
|
||
|
};
|
||
|
|
||
|
struct cdns_dsi;
|
||
|
|
||
|
/**
|
||
|
* struct cdns_dsi_platform_ops - CDNS DSI Platform operations
|
||
|
* @init: Called in the CDNS DSI probe
|
||
|
* @deinit: Called in the CDNS DSI remove
|
||
|
* @enable: Called at the beginning of CDNS DSI bridge enable
|
||
|
* @disable: Called at the end of CDNS DSI bridge disable
|
||
|
*/
|
||
|
struct cdns_dsi_platform_ops {
|
||
|
int (*init)(struct cdns_dsi *dsi);
|
||
|
void (*deinit)(struct cdns_dsi *dsi);
|
||
|
void (*enable)(struct cdns_dsi *dsi);
|
||
|
void (*disable)(struct cdns_dsi *dsi);
|
||
|
};
|
||
|
|
||
|
struct cdns_dsi {
|
||
|
struct mipi_dsi_host base;
|
||
|
void __iomem *regs;
|
||
|
#ifdef CONFIG_DRM_CDNS_DSI_J721E
|
||
|
void __iomem *j721e_regs;
|
||
|
#endif
|
||
|
const struct cdns_dsi_platform_ops *platform_ops;
|
||
|
struct cdns_dsi_input input;
|
||
|
struct cdns_dsi_output output;
|
||
|
unsigned int direct_cmd_fifo_depth;
|
||
|
unsigned int rx_fifo_depth;
|
||
|
struct completion direct_cmd_comp;
|
||
|
struct clk *dsi_p_clk;
|
||
|
struct reset_control *dsi_p_rst;
|
||
|
struct clk *dsi_sys_clk;
|
||
|
bool link_initialized;
|
||
|
bool phy_initialized;
|
||
|
struct phy *dphy;
|
||
|
};
|
||
|
|
||
|
#endif /* !__CDNS_DSI_H__ */
|