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); |