Subversion Repositories Kolibri OS

Rev

Rev 5354 | Rev 6937 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5354 Rev 6084
Line 24... Line 24...
24
#ifndef _INTEL_DSI_H
24
#ifndef _INTEL_DSI_H
25
#define _INTEL_DSI_H
25
#define _INTEL_DSI_H
Line 26... Line 26...
26
 
26
 
27
#include 
27
#include 
-
 
28
#include 
28
#include 
29
#include 
Line 29... Line -...
29
#include "intel_drv.h"
-
 
30
 
30
#include "intel_drv.h"
31
struct intel_dsi_device {
-
 
32
	unsigned int panel_id;
-
 
33
	const char *name;
-
 
34
	const struct intel_dsi_dev_ops *dev_ops;
-
 
35
	void *dev_priv;
-
 
36
};
31
 
37
 
-
 
38
struct intel_dsi_dev_ops {
-
 
39
	bool (*init)(struct intel_dsi_device *dsi);
-
 
40
 
-
 
41
	void (*panel_reset)(struct intel_dsi_device *dsi);
-
 
42
 
-
 
43
	void (*disable_panel_power)(struct intel_dsi_device *dsi);
-
 
44
 
-
 
45
	/* one time programmable commands if needed */
-
 
46
	void (*send_otp_cmds)(struct intel_dsi_device *dsi);
-
 
47
 
-
 
48
	/* This callback must be able to assume DSI commands can be sent */
-
 
49
	void (*enable)(struct intel_dsi_device *dsi);
-
 
50
 
-
 
51
	/* This callback must be able to assume DSI commands can be sent */
-
 
52
	void (*disable)(struct intel_dsi_device *dsi);
-
 
53
 
32
/* Dual Link support */
54
	int (*mode_valid)(struct intel_dsi_device *dsi,
-
 
55
			  struct drm_display_mode *mode);
-
 
56
 
-
 
57
	bool (*mode_fixup)(struct intel_dsi_device *dsi,
-
 
58
			   const struct drm_display_mode *mode,
-
 
59
			   struct drm_display_mode *adjusted_mode);
-
 
60
 
33
#define DSI_DUAL_LINK_NONE		0
61
	void (*mode_set)(struct intel_dsi_device *dsi,
-
 
62
			 struct drm_display_mode *mode,
-
 
63
			 struct drm_display_mode *adjusted_mode);
-
 
64
 
-
 
65
	enum drm_connector_status (*detect)(struct intel_dsi_device *dsi);
-
 
Line 66... Line -...
66
 
-
 
67
	bool (*get_hw_state)(struct intel_dsi_device *dev);
-
 
68
 
34
#define DSI_DUAL_LINK_FRONT_BACK	1
69
	struct drm_display_mode *(*get_modes)(struct intel_dsi_device *dsi);
-
 
Line 70... Line 35...
70
 
35
#define DSI_DUAL_LINK_PIXEL_ALT		2
71
	void (*destroy) (struct intel_dsi_device *dsi);
36
 
Line -... Line 37...
-
 
37
struct intel_dsi_host;
-
 
38
 
-
 
39
struct intel_dsi {
-
 
40
	struct intel_encoder base;
72
};
41
 
Line 73... Line 42...
73
 
42
	struct drm_panel *panel;
Line -... Line 43...
-
 
43
	struct intel_dsi_host *dsi_hosts[I915_MAX_PORTS];
-
 
44
 
-
 
45
	/* GPIO Desc for CRC based Panel control */
74
struct intel_dsi {
46
	struct gpio_desc *gpio_panel;
75
	struct intel_encoder base;
47
 
Line 76... Line 48...
76
 
48
	struct intel_connector *attached_connector;
77
	struct intel_dsi_device dev;
49
 
Line 99... Line 71...
99
	/* eot for MIPI_EOT_DISABLE register */
71
	/* eot for MIPI_EOT_DISABLE register */
100
	u8 eotp_pkt;
72
	u8 eotp_pkt;
101
	u8 clock_stop;
73
	u8 clock_stop;
Line 102... Line 74...
102
 
74
 
-
 
75
	u8 escape_clk_div;
-
 
76
	u8 dual_link;
103
	u8 escape_clk_div;
77
	u8 pixel_overlap;
104
	u32 port_bits;
78
	u32 port_bits;
105
	u32 bw_timer;
79
	u32 bw_timer;
106
	u32 dphy_reg;
80
	u32 dphy_reg;
107
	u32 video_frmt_cfg_bits;
81
	u32 video_frmt_cfg_bits;
Line 125... Line 99...
125
	u16 panel_on_delay;
99
	u16 panel_on_delay;
126
	u16 panel_off_delay;
100
	u16 panel_off_delay;
127
	u16 panel_pwr_cycle_delay;
101
	u16 panel_pwr_cycle_delay;
128
};
102
};
Line -... Line 103...
-
 
103
 
-
 
104
struct intel_dsi_host {
-
 
105
	struct mipi_dsi_host base;
-
 
106
	struct intel_dsi *intel_dsi;
-
 
107
	enum port port;
-
 
108
 
-
 
109
	/* our little hack */
-
 
110
	struct mipi_dsi_device *device;
-
 
111
};
-
 
112
 
-
 
113
static inline struct intel_dsi_host *to_intel_dsi_host(struct mipi_dsi_host *h)
-
 
114
{
-
 
115
	return container_of(h, struct intel_dsi_host, base);
-
 
116
}
-
 
117
 
-
 
118
#define for_each_dsi_port(__port, __ports_mask) \
-
 
119
	for ((__port) = PORT_A; (__port) < I915_MAX_PORTS; (__port)++)	\
-
 
120
		if ((__ports_mask) & (1 << (__port)))
129
 
121
 
130
static inline struct intel_dsi *enc_to_intel_dsi(struct drm_encoder *encoder)
122
static inline struct intel_dsi *enc_to_intel_dsi(struct drm_encoder *encoder)
131
{
123
{
132
	return container_of(encoder, struct intel_dsi, base.base);
124
	return container_of(encoder, struct intel_dsi, base.base);
Line 133... Line 125...
133
}
125
}
134
 
126
 
135
extern void vlv_enable_dsi_pll(struct intel_encoder *encoder);
127
extern void intel_enable_dsi_pll(struct intel_encoder *encoder);
-
 
128
extern void intel_disable_dsi_pll(struct intel_encoder *encoder);
-
 
129
extern u32 vlv_get_dsi_pclk(struct intel_encoder *encoder, int pipe_bpp);
-
 
130
extern u32 bxt_get_dsi_pclk(struct intel_encoder *encoder, int pipe_bpp);
Line 136... Line 131...
136
extern void vlv_disable_dsi_pll(struct intel_encoder *encoder);
131
extern void intel_dsi_reset_clocks(struct intel_encoder *encoder,
Line 137... Line 132...
137
extern u32 vlv_get_dsi_pclk(struct intel_encoder *encoder, int pipe_bpp);
132
							enum port port);