Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/dp: Use function arguments for audio operations

The dp_audio read and write operations uses members in struct dp_catalog
for passing arguments and return values. This adds unnecessary
complexity to the implementation, as it turns out after detangling the
logic that no state is actually held in these variables.

Clean this up by using function arguments and return values for passing
the data.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/585350/
Link: https://lore.kernel.org/r/20240328-msm-dp-cleanup-v2-6-a5aed9798d32@quicinc.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>

authored by

Bjorn Andersson and committed by
Dmitry Baryshkov
0c946674 07823889

+28 -49
+5 -15
drivers/gpu/drm/msm/dp/dp_audio.c
··· 32 32 enum dp_catalog_audio_sdp_type sdp, 33 33 enum dp_catalog_audio_header_type header) 34 34 { 35 - catalog->sdp_type = sdp; 36 - catalog->sdp_header = header; 37 - dp_catalog_audio_get_header(catalog); 38 - 39 - return catalog->audio_data; 35 + return dp_catalog_audio_get_header(catalog, sdp, header); 40 36 } 41 37 42 38 static void dp_audio_set_header(struct dp_catalog *catalog, ··· 40 44 enum dp_catalog_audio_sdp_type sdp, 41 45 enum dp_catalog_audio_header_type header) 42 46 { 43 - catalog->sdp_type = sdp; 44 - catalog->sdp_header = header; 45 - catalog->audio_data = data; 46 - dp_catalog_audio_set_header(catalog); 47 + dp_catalog_audio_set_header(catalog, sdp, header, data); 47 48 } 48 49 49 50 static void dp_audio_stream_sdp(struct dp_audio_private *audio) ··· 310 317 break; 311 318 } 312 319 313 - catalog->audio_data = select; 314 - dp_catalog_audio_config_acr(catalog); 320 + dp_catalog_audio_config_acr(catalog, select); 315 321 } 316 322 317 323 static void dp_audio_safe_to_exit_level(struct dp_audio_private *audio) ··· 336 344 break; 337 345 } 338 346 339 - catalog->audio_data = safe_to_exit_level; 340 - dp_catalog_audio_sfe_level(catalog); 347 + dp_catalog_audio_sfe_level(catalog, safe_to_exit_level); 341 348 } 342 349 343 350 static void dp_audio_enable(struct dp_audio_private *audio, bool enable) 344 351 { 345 352 struct dp_catalog *catalog = audio->catalog; 346 353 347 - catalog->audio_data = enable; 348 - dp_catalog_audio_enable(catalog); 354 + dp_catalog_audio_enable(catalog, enable); 349 355 } 350 356 351 357 static struct dp_audio_private *dp_audio_get_data(struct platform_device *pdev)
+13 -26
drivers/gpu/drm/msm/dp/dp_catalog.c
··· 1160 1160 return &catalog->dp_catalog; 1161 1161 } 1162 1162 1163 - void dp_catalog_audio_get_header(struct dp_catalog *dp_catalog) 1163 + u32 dp_catalog_audio_get_header(struct dp_catalog *dp_catalog, 1164 + enum dp_catalog_audio_sdp_type sdp, 1165 + enum dp_catalog_audio_header_type header) 1164 1166 { 1165 1167 struct dp_catalog_private *catalog; 1166 1168 u32 (*sdp_map)[DP_AUDIO_SDP_HEADER_MAX]; 1167 - enum dp_catalog_audio_sdp_type sdp; 1168 - enum dp_catalog_audio_header_type header; 1169 - 1170 - if (!dp_catalog) 1171 - return; 1172 1169 1173 1170 catalog = container_of(dp_catalog, 1174 1171 struct dp_catalog_private, dp_catalog); 1175 1172 1176 1173 sdp_map = catalog->audio_map; 1177 - sdp = dp_catalog->sdp_type; 1178 - header = dp_catalog->sdp_header; 1179 1174 1180 - dp_catalog->audio_data = dp_read_link(catalog, 1181 - sdp_map[sdp][header]); 1175 + return dp_read_link(catalog, sdp_map[sdp][header]); 1182 1176 } 1183 1177 1184 - void dp_catalog_audio_set_header(struct dp_catalog *dp_catalog) 1178 + void dp_catalog_audio_set_header(struct dp_catalog *dp_catalog, 1179 + enum dp_catalog_audio_sdp_type sdp, 1180 + enum dp_catalog_audio_header_type header, 1181 + u32 data) 1185 1182 { 1186 1183 struct dp_catalog_private *catalog; 1187 1184 u32 (*sdp_map)[DP_AUDIO_SDP_HEADER_MAX]; 1188 - enum dp_catalog_audio_sdp_type sdp; 1189 - enum dp_catalog_audio_header_type header; 1190 - u32 data; 1191 1185 1192 1186 if (!dp_catalog) 1193 1187 return; ··· 1190 1196 struct dp_catalog_private, dp_catalog); 1191 1197 1192 1198 sdp_map = catalog->audio_map; 1193 - sdp = dp_catalog->sdp_type; 1194 - header = dp_catalog->sdp_header; 1195 - data = dp_catalog->audio_data; 1196 1199 1197 1200 dp_write_link(catalog, sdp_map[sdp][header], data); 1198 1201 } 1199 1202 1200 - void dp_catalog_audio_config_acr(struct dp_catalog *dp_catalog) 1203 + void dp_catalog_audio_config_acr(struct dp_catalog *dp_catalog, u32 select) 1201 1204 { 1202 1205 struct dp_catalog_private *catalog; 1203 - u32 acr_ctrl, select; 1206 + u32 acr_ctrl; 1204 1207 1205 1208 if (!dp_catalog) 1206 1209 return; ··· 1205 1214 catalog = container_of(dp_catalog, 1206 1215 struct dp_catalog_private, dp_catalog); 1207 1216 1208 - select = dp_catalog->audio_data; 1209 1217 acr_ctrl = select << 4 | BIT(31) | BIT(8) | BIT(14); 1210 1218 1211 1219 drm_dbg_dp(catalog->drm_dev, "select: %#x, acr_ctrl: %#x\n", ··· 1213 1223 dp_write_link(catalog, MMSS_DP_AUDIO_ACR_CTRL, acr_ctrl); 1214 1224 } 1215 1225 1216 - void dp_catalog_audio_enable(struct dp_catalog *dp_catalog) 1226 + void dp_catalog_audio_enable(struct dp_catalog *dp_catalog, bool enable) 1217 1227 { 1218 1228 struct dp_catalog_private *catalog; 1219 - bool enable; 1220 1229 u32 audio_ctrl; 1221 1230 1222 1231 if (!dp_catalog) ··· 1224 1235 catalog = container_of(dp_catalog, 1225 1236 struct dp_catalog_private, dp_catalog); 1226 1237 1227 - enable = !!dp_catalog->audio_data; 1228 1238 audio_ctrl = dp_read_link(catalog, MMSS_DP_AUDIO_CFG); 1229 1239 1230 1240 if (enable) ··· 1318 1330 catalog->audio_map = sdp_map; 1319 1331 } 1320 1332 1321 - void dp_catalog_audio_sfe_level(struct dp_catalog *dp_catalog) 1333 + void dp_catalog_audio_sfe_level(struct dp_catalog *dp_catalog, u32 safe_to_exit_level) 1322 1334 { 1323 1335 struct dp_catalog_private *catalog; 1324 - u32 mainlink_levels, safe_to_exit_level; 1336 + u32 mainlink_levels; 1325 1337 1326 1338 if (!dp_catalog) 1327 1339 return; ··· 1329 1341 catalog = container_of(dp_catalog, 1330 1342 struct dp_catalog_private, dp_catalog); 1331 1343 1332 - safe_to_exit_level = dp_catalog->audio_data; 1333 1344 mainlink_levels = dp_read_link(catalog, REG_DP_MAINLINK_LEVELS); 1334 1345 mainlink_levels &= 0xFE0; 1335 1346 mainlink_levels |= safe_to_exit_level;
+10 -8
drivers/gpu/drm/msm/dp/dp_catalog.h
··· 48 48 }; 49 49 50 50 struct dp_catalog { 51 - enum dp_catalog_audio_sdp_type sdp_type; 52 - enum dp_catalog_audio_header_type sdp_header; 53 - u32 audio_data; 54 51 bool wide_bus_en; 55 52 }; 56 53 ··· 112 115 struct dp_catalog *dp_catalog_get(struct device *dev); 113 116 114 117 /* DP Audio APIs */ 115 - void dp_catalog_audio_get_header(struct dp_catalog *catalog); 116 - void dp_catalog_audio_set_header(struct dp_catalog *catalog); 117 - void dp_catalog_audio_config_acr(struct dp_catalog *catalog); 118 - void dp_catalog_audio_enable(struct dp_catalog *catalog); 118 + u32 dp_catalog_audio_get_header(struct dp_catalog *dp_catalog, 119 + enum dp_catalog_audio_sdp_type sdp, 120 + enum dp_catalog_audio_header_type header); 121 + void dp_catalog_audio_set_header(struct dp_catalog *dp_catalog, 122 + enum dp_catalog_audio_sdp_type sdp, 123 + enum dp_catalog_audio_header_type header, 124 + u32 data); 125 + void dp_catalog_audio_config_acr(struct dp_catalog *catalog, u32 select); 126 + void dp_catalog_audio_enable(struct dp_catalog *catalog, bool enable); 119 127 void dp_catalog_audio_config_sdp(struct dp_catalog *catalog); 120 128 void dp_catalog_audio_init(struct dp_catalog *catalog); 121 - void dp_catalog_audio_sfe_level(struct dp_catalog *catalog); 129 + void dp_catalog_audio_sfe_level(struct dp_catalog *catalog, u32 safe_to_exit_level); 122 130 123 131 #endif /* _DP_CATALOG_H_ */