| /* 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__ */ |