.. | .. |
---|
15 | 15 | #include <drm/drm_encoder.h> |
---|
16 | 16 | #include <linux/workqueue.h> |
---|
17 | 17 | |
---|
| 18 | +/** |
---|
| 19 | + * struct drm_writeback_connector - DRM writeback connector |
---|
| 20 | + */ |
---|
18 | 21 | struct drm_writeback_connector { |
---|
| 22 | + /** |
---|
| 23 | + * @base: base drm_connector object |
---|
| 24 | + */ |
---|
19 | 25 | struct drm_connector base; |
---|
20 | 26 | |
---|
21 | 27 | /** |
---|
.. | .. |
---|
78 | 84 | char timeline_name[32]; |
---|
79 | 85 | }; |
---|
80 | 86 | |
---|
| 87 | +/** |
---|
| 88 | + * struct drm_writeback_job - DRM writeback job |
---|
| 89 | + */ |
---|
81 | 90 | struct drm_writeback_job { |
---|
| 91 | + /** |
---|
| 92 | + * @connector: |
---|
| 93 | + * |
---|
| 94 | + * Back-pointer to the writeback connector associated with the job |
---|
| 95 | + */ |
---|
| 96 | + struct drm_writeback_connector *connector; |
---|
| 97 | + |
---|
| 98 | + /** |
---|
| 99 | + * @prepared: |
---|
| 100 | + * |
---|
| 101 | + * Set when the job has been prepared with drm_writeback_prepare_job() |
---|
| 102 | + */ |
---|
| 103 | + bool prepared; |
---|
| 104 | + |
---|
82 | 105 | /** |
---|
83 | 106 | * @cleanup_work: |
---|
84 | 107 | * |
---|
.. | .. |
---|
98 | 121 | * @fb: |
---|
99 | 122 | * |
---|
100 | 123 | * Framebuffer to be written to by the writeback connector. Do not set |
---|
101 | | - * directly, use drm_atomic_set_writeback_fb_for_connector() |
---|
| 124 | + * directly, use drm_writeback_set_fb() |
---|
102 | 125 | */ |
---|
103 | 126 | struct drm_framebuffer *fb; |
---|
104 | 127 | |
---|
.. | .. |
---|
108 | 131 | * Fence which will signal once the writeback has completed |
---|
109 | 132 | */ |
---|
110 | 133 | struct dma_fence *out_fence; |
---|
| 134 | + |
---|
| 135 | + /** |
---|
| 136 | + * @priv: |
---|
| 137 | + * |
---|
| 138 | + * Driver-private data |
---|
| 139 | + */ |
---|
| 140 | + void *priv; |
---|
111 | 141 | }; |
---|
112 | 142 | |
---|
113 | 143 | static inline struct drm_writeback_connector * |
---|
.. | .. |
---|
122 | 152 | const struct drm_encoder_helper_funcs *enc_helper_funcs, |
---|
123 | 153 | const u32 *formats, int n_formats); |
---|
124 | 154 | |
---|
| 155 | +int drm_writeback_set_fb(struct drm_connector_state *conn_state, |
---|
| 156 | + struct drm_framebuffer *fb); |
---|
| 157 | + |
---|
| 158 | +int drm_writeback_prepare_job(struct drm_writeback_job *job); |
---|
| 159 | + |
---|
125 | 160 | void drm_writeback_queue_job(struct drm_writeback_connector *wb_connector, |
---|
126 | | - struct drm_writeback_job *job); |
---|
| 161 | + struct drm_connector_state *conn_state); |
---|
127 | 162 | |
---|
128 | 163 | void drm_writeback_cleanup_job(struct drm_writeback_job *job); |
---|
129 | 164 | |
---|