|
64 | 64 |
|
65 | 65 | #define ZYNQMP_DISP_MAX_NUM_SUB_PLANES 3 |
66 | 66 |
|
| 67 | +/** |
| 68 | + * enum zynqmp_dpsub_layer_mode - Layer mode |
| 69 | + * @ZYNQMP_DPSUB_LAYER_NONLIVE: non-live (memory) mode |
| 70 | + * @ZYNQMP_DPSUB_LAYER_LIVE: live (stream) mode |
| 71 | + */ |
| 72 | +enum zynqmp_dpsub_layer_mode { |
| 73 | + ZYNQMP_DPSUB_LAYER_NONLIVE, |
| 74 | + ZYNQMP_DPSUB_LAYER_LIVE, |
| 75 | +}; |
| 76 | + |
67 | 77 | /** |
68 | 78 | * struct zynqmp_disp_format - Display subsystem format information |
69 | 79 | * @drm_fmt: DRM format (4CC) |
@@ -902,15 +912,12 @@ u32 *zynqmp_disp_layer_drm_formats(struct zynqmp_disp_layer *layer, |
902 | 912 | /** |
903 | 913 | * zynqmp_disp_layer_enable - Enable a layer |
904 | 914 | * @layer: The layer |
905 | | - * @mode: Operating mode of layer |
906 | 915 | * |
907 | 916 | * Enable the @layer in the audio/video buffer manager and the blender. DMA |
908 | 917 | * channels are started separately by zynqmp_disp_layer_update(). |
909 | 918 | */ |
910 | | -void zynqmp_disp_layer_enable(struct zynqmp_disp_layer *layer, |
911 | | - enum zynqmp_dpsub_layer_mode mode) |
| 919 | +void zynqmp_disp_layer_enable(struct zynqmp_disp_layer *layer) |
912 | 920 | { |
913 | | - layer->mode = mode; |
914 | 921 | zynqmp_disp_avbuf_enable_video(layer->disp, layer); |
915 | 922 | zynqmp_disp_blend_layer_enable(layer->disp, layer); |
916 | 923 | } |
@@ -1134,6 +1141,12 @@ static int zynqmp_disp_create_layers(struct zynqmp_disp *disp) |
1134 | 1141 | layer->id = i; |
1135 | 1142 | layer->disp = disp; |
1136 | 1143 | layer->info = &layer_info[i]; |
| 1144 | + /* |
| 1145 | + * For now assume dpsub works in either live or non-live mode for both layers. |
| 1146 | + * Hybrid mode is not supported yet. |
| 1147 | + */ |
| 1148 | + layer->mode = disp->dpsub->dma_enabled ? ZYNQMP_DPSUB_LAYER_NONLIVE |
| 1149 | + : ZYNQMP_DPSUB_LAYER_LIVE; |
1137 | 1150 |
|
1138 | 1151 | ret = zynqmp_disp_layer_request_dma(disp, layer); |
1139 | 1152 | if (ret) |
|
0 commit comments