tree: git://anongit.freedesktop.org/drm/drm-misc for-linux-next head: 2bdb481bf7a93c22b9fea8daefa2834aab23a70f commit: 1b5151bd3a2e076653a935874b39dd2c3a00452a [6/6] drm: xlnx: zynqmp_dpsub: Set input live format config: m68k-allmodconfig (https://download.01.org/0day-ci/archive/20240426/202404260616.KFGDpCDN-lkp@xxxxxxxxx/config) compiler: m68k-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240426/202404260616.KFGDpCDN-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202404260616.KFGDpCDN-lkp@xxxxxxxxx/ All warnings (new ones prefixed by >>): drivers/gpu/drm/xlnx/zynqmp_disp.c:164: warning: Function parameter or struct member 'blend' not described in 'zynqmp_disp' drivers/gpu/drm/xlnx/zynqmp_disp.c:164: warning: Function parameter or struct member 'avbuf' not described in 'zynqmp_disp' drivers/gpu/drm/xlnx/zynqmp_disp.c:164: warning: Function parameter or struct member 'audio' not described in 'zynqmp_disp' >> drivers/gpu/drm/xlnx/zynqmp_disp.c:954: warning: Function parameter or struct member 'media_bus_format' not described in 'zynqmp_disp_layer_find_live_format' >> drivers/gpu/drm/xlnx/zynqmp_disp.c:954: warning: Excess function parameter 'drm_fmt' description in 'zynqmp_disp_layer_find_live_format' >> drivers/gpu/drm/xlnx/zynqmp_disp.c:1129: warning: Function parameter or struct member 'media_bus_format' not described in 'zynqmp_disp_layer_set_live_format' drivers/gpu/drm/xlnx/zynqmp_disp.c:1129: warning: Excess function parameter 'info' description in 'zynqmp_disp_layer_set_live_format' vim +954 drivers/gpu/drm/xlnx/zynqmp_disp.c 938 939 /** 940 * zynqmp_disp_layer_find_live_format - Find format information for given 941 * media bus format 942 * @layer: The layer 943 * @drm_fmt: Media bus format to search 944 * 945 * Search display subsystem format information corresponding to the given media 946 * bus format @media_bus_format for the @layer, and return a pointer to the 947 * format descriptor. 948 * 949 * Return: A pointer to the format descriptor if found, NULL otherwise 950 */ 951 static const struct zynqmp_disp_format * 952 zynqmp_disp_layer_find_live_format(struct zynqmp_disp_layer *layer, 953 u32 media_bus_format) > 954 { 955 unsigned int i; 956 957 for (i = 0; i < layer->info->num_formats; i++) 958 if (layer->info->formats[i].bus_fmt == media_bus_format) 959 return &layer->info->formats[i]; 960 961 return NULL; 962 } 963 964 /** 965 * zynqmp_disp_layer_drm_formats - Return the DRM formats supported by the layer 966 * @layer: The layer 967 * @num_formats: Pointer to the returned number of formats 968 * 969 * NOTE: This function doesn't make sense for live video layers and will 970 * always return an empty list in such cases. zynqmp_disp_live_layer_formats() 971 * should be used to query a list of media bus formats supported by the live 972 * video input layer. 973 * 974 * Return: A newly allocated u32 array that stores all the DRM formats 975 * supported by the layer. The number of formats in the array is returned 976 * through the num_formats argument. 977 */ 978 u32 *zynqmp_disp_layer_drm_formats(struct zynqmp_disp_layer *layer, 979 unsigned int *num_formats) 980 { 981 unsigned int i; 982 u32 *formats; 983 984 if (WARN_ON(!layer->mode == ZYNQMP_DPSUB_LAYER_NONLIVE)) { 985 *num_formats = 0; 986 return NULL; 987 } 988 989 formats = kcalloc(layer->info->num_formats, sizeof(*formats), 990 GFP_KERNEL); 991 if (!formats) { 992 *num_formats = 0; 993 return NULL; 994 } 995 996 for (i = 0; i < layer->info->num_formats; ++i) 997 formats[i] = layer->info->formats[i].drm_fmt; 998 999 *num_formats = layer->info->num_formats; 1000 return formats; 1001 } 1002 1003 /** 1004 * zynqmp_disp_live_layer_formats - Return the media bus formats supported by 1005 * the live video layer 1006 * @layer: The layer 1007 * @num_formats: Pointer to the returned number of formats 1008 * 1009 * NOTE: This function should be used only for live video input layers. 1010 * 1011 * Return: A newly allocated u32 array of media bus formats supported by the 1012 * layer. The number of formats in the array is returned through the 1013 * @num_formats argument. 1014 */ 1015 u32 *zynqmp_disp_live_layer_formats(struct zynqmp_disp_layer *layer, 1016 unsigned int *num_formats) 1017 { 1018 unsigned int i; 1019 u32 *formats; 1020 1021 if (WARN_ON(layer->mode != ZYNQMP_DPSUB_LAYER_LIVE)) { 1022 *num_formats = 0; 1023 return NULL; 1024 } 1025 1026 formats = kcalloc(layer->info->num_formats, sizeof(*formats), 1027 GFP_KERNEL); 1028 if (!formats) { 1029 *num_formats = 0; 1030 return NULL; 1031 } 1032 1033 for (i = 0; i < layer->info->num_formats; ++i) 1034 formats[i] = layer->info->formats[i].bus_fmt; 1035 1036 *num_formats = layer->info->num_formats; 1037 return formats; 1038 } 1039 1040 /** 1041 * zynqmp_disp_layer_enable - Enable a layer 1042 * @layer: The layer 1043 * 1044 * Enable the @layer in the audio/video buffer manager and the blender. DMA 1045 * channels are started separately by zynqmp_disp_layer_update(). 1046 */ 1047 void zynqmp_disp_layer_enable(struct zynqmp_disp_layer *layer) 1048 { 1049 zynqmp_disp_avbuf_enable_video(layer->disp, layer); 1050 zynqmp_disp_blend_layer_enable(layer->disp, layer); 1051 } 1052 1053 /** 1054 * zynqmp_disp_layer_disable - Disable the layer 1055 * @layer: The layer 1056 * 1057 * Disable the layer by stopping its DMA channels and disabling it in the 1058 * audio/video buffer manager and the blender. 1059 */ 1060 void zynqmp_disp_layer_disable(struct zynqmp_disp_layer *layer) 1061 { 1062 unsigned int i; 1063 1064 if (layer->mode == ZYNQMP_DPSUB_LAYER_NONLIVE) { 1065 for (i = 0; i < layer->drm_fmt->num_planes; i++) 1066 dmaengine_terminate_sync(layer->dmas[i].chan); 1067 } 1068 1069 zynqmp_disp_avbuf_disable_video(layer->disp, layer); 1070 zynqmp_disp_blend_layer_disable(layer->disp, layer); 1071 } 1072 1073 /** 1074 * zynqmp_disp_layer_set_format - Set the layer format 1075 * @layer: The layer 1076 * @info: The format info 1077 * 1078 * NOTE: Use zynqmp_disp_layer_set_live_format() to set media bus format for 1079 * live video layers. 1080 * 1081 * Set the format for @layer to @info. The layer must be disabled. 1082 */ 1083 void zynqmp_disp_layer_set_format(struct zynqmp_disp_layer *layer, 1084 const struct drm_format_info *info) 1085 { 1086 unsigned int i; 1087 1088 if (WARN_ON(layer->mode != ZYNQMP_DPSUB_LAYER_NONLIVE)) 1089 return; 1090 1091 layer->disp_fmt = zynqmp_disp_layer_find_format(layer, info->format); 1092 if (WARN_ON(!layer->disp_fmt)) 1093 return; 1094 layer->drm_fmt = info; 1095 1096 zynqmp_disp_avbuf_set_format(layer->disp, layer, layer->disp_fmt); 1097 1098 /* 1099 * Set pconfig for each DMA channel to indicate they're part of a 1100 * video group. 1101 */ 1102 for (i = 0; i < info->num_planes; i++) { 1103 struct zynqmp_disp_layer_dma *dma = &layer->dmas[i]; 1104 struct xilinx_dpdma_peripheral_config pconfig = { 1105 .video_group = true, 1106 }; 1107 struct dma_slave_config config = { 1108 .direction = DMA_MEM_TO_DEV, 1109 .peripheral_config = &pconfig, 1110 .peripheral_size = sizeof(pconfig), 1111 }; 1112 1113 dmaengine_slave_config(dma->chan, &config); 1114 } 1115 } 1116 1117 /** 1118 * zynqmp_disp_layer_set_live_format - Set the live video layer format 1119 * @layer: The layer 1120 * @info: The format info 1121 * 1122 * NOTE: This function should not be used to set format for non-live video 1123 * layer. Use zynqmp_disp_layer_set_format() instead. 1124 * 1125 * Set the display format for the live @layer. The layer must be disabled. 1126 */ 1127 void zynqmp_disp_layer_set_live_format(struct zynqmp_disp_layer *layer, 1128 u32 media_bus_format) > 1129 { 1130 if (WARN_ON(layer->mode != ZYNQMP_DPSUB_LAYER_LIVE)) 1131 return; 1132 1133 layer->disp_fmt = zynqmp_disp_layer_find_live_format(layer, 1134 media_bus_format); 1135 if (WARN_ON(!layer->disp_fmt)) 1136 return; 1137 1138 zynqmp_disp_avbuf_set_format(layer->disp, layer, layer->disp_fmt); 1139 1140 layer->drm_fmt = drm_format_info(layer->disp_fmt->drm_fmt); 1141 } 1142 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki