1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright (C) 2019 STMicroelectronics - All Rights Reserved
4 * Author(s): Yannick Fertre <yannick.fertre@st.com> for STMicroelectronics.
5 *
6 */
7
8#ifndef _DSI_HOST_H
9#define _DSI_HOST_H
10
11#include <mipi_dsi.h>
12
13struct dsi_host_ops {
14	/**
15	 * init() - initialized the dsi_host
16	 *
17	 * @dev: dsi host device
18	 * @device: DSI peripheral device
19	 * @timing: Display timings
20	 * @max_data_lanes: maximum number of data lines
21	 * @phy_ops: set of function pointers for performing physical operations
22	 * @return 0 if OK, -ve on error
23	 */
24	int (*init)(struct udevice *dev,
25		    struct mipi_dsi_device *device,
26		    struct display_timing *timings,
27		    unsigned int max_data_lanes,
28		    const struct mipi_dsi_phy_ops *phy_ops);
29
30	/**
31	 * enable() - Enable the dsi_host
32	 *
33	 * @dev: dsi host device
34	 * @return 0 if OK, -ve on error
35	 */
36	int (*enable)(struct udevice *dev);
37
38	/**
39	 * disable() - Disable the dsi_host
40	 *
41	 * @dev: dsi host device
42	 * @return 0 if OK, -ve on error
43	 */
44	int (*disable)(struct udevice *dev);
45};
46
47#define dsi_host_get_ops(dev)	((struct dsi_host_ops *)(dev)->driver->ops)
48
49/**
50 * dsi_host_init
51 *
52 * @dev: dsi host device
53 * @device: DSI peripheral device
54 * @timing: Display timings
55 * @max_data_lanes: maximum number of data lines
56 * @phy_ops: set of function pointers for performing physical operations
57 * Return: 0 if OK, -ve on error
58 */
59int dsi_host_init(struct udevice *dev,
60		  struct mipi_dsi_device *device,
61		  struct display_timing *timings,
62		  unsigned int max_data_lanes,
63		  const struct mipi_dsi_phy_ops *phy_ops);
64
65/**
66 * dsi_host_enable
67 *
68 * @dev:	dsi host device
69 * Return: 0 if OK, -ve on error
70 */
71int dsi_host_enable(struct udevice *dev);
72
73#endif
74