| .. | .. |
|---|
| 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 | |
|---|