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

drm/amdgpu: use static ids for ACP platform devs

mfd_add_hotplug_devices() assigns child platform devices with
PLATFORM_DEVID_AUTO, but the ACP machine drivers expect the platform
device names to never change. Use mfd_add_devices() instead and give
each cell a unique id.

Signed-off-by: Brady Norander <bradynorander@gmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Brady Norander and committed by
Alex Deucher
0300e6d6 c8e7e3c2

+8 -2
+8 -2
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
··· 302 302 adev->acp.acp_res[2].end = adev->acp.acp_res[2].start; 303 303 304 304 adev->acp.acp_cell[0].name = "acp_audio_dma"; 305 + adev->acp.acp_cell[0].id = 0; 305 306 adev->acp.acp_cell[0].num_resources = 3; 306 307 adev->acp.acp_cell[0].resources = &adev->acp.acp_res[0]; 307 308 adev->acp.acp_cell[0].platform_data = &adev->asic_type; 308 309 adev->acp.acp_cell[0].pdata_size = sizeof(adev->asic_type); 309 310 310 311 adev->acp.acp_cell[1].name = "designware-i2s"; 312 + adev->acp.acp_cell[1].id = 1; 311 313 adev->acp.acp_cell[1].num_resources = 1; 312 314 adev->acp.acp_cell[1].resources = &adev->acp.acp_res[1]; 313 315 adev->acp.acp_cell[1].platform_data = &i2s_pdata[0]; 314 316 adev->acp.acp_cell[1].pdata_size = sizeof(struct i2s_platform_data); 315 - r = mfd_add_hotplug_devices(adev->acp.parent, adev->acp.acp_cell, 2); 317 + r = mfd_add_devices(adev->acp.parent, 0, adev->acp.acp_cell, 2, NULL, 0, NULL); 316 318 if (r) 317 319 goto failure; 318 320 r = device_for_each_child(adev->acp.parent, &adev->acp.acp_genpd->gpd, ··· 412 410 adev->acp.acp_res[4].end = adev->acp.acp_res[4].start; 413 411 414 412 adev->acp.acp_cell[0].name = "acp_audio_dma"; 413 + adev->acp.acp_cell[0].id = 0; 415 414 adev->acp.acp_cell[0].num_resources = 5; 416 415 adev->acp.acp_cell[0].resources = &adev->acp.acp_res[0]; 417 416 adev->acp.acp_cell[0].platform_data = &adev->asic_type; 418 417 adev->acp.acp_cell[0].pdata_size = sizeof(adev->asic_type); 419 418 420 419 adev->acp.acp_cell[1].name = "designware-i2s"; 420 + adev->acp.acp_cell[1].id = 1; 421 421 adev->acp.acp_cell[1].num_resources = 1; 422 422 adev->acp.acp_cell[1].resources = &adev->acp.acp_res[1]; 423 423 adev->acp.acp_cell[1].platform_data = &i2s_pdata[0]; 424 424 adev->acp.acp_cell[1].pdata_size = sizeof(struct i2s_platform_data); 425 425 426 426 adev->acp.acp_cell[2].name = "designware-i2s"; 427 + adev->acp.acp_cell[2].id = 2; 427 428 adev->acp.acp_cell[2].num_resources = 1; 428 429 adev->acp.acp_cell[2].resources = &adev->acp.acp_res[2]; 429 430 adev->acp.acp_cell[2].platform_data = &i2s_pdata[1]; 430 431 adev->acp.acp_cell[2].pdata_size = sizeof(struct i2s_platform_data); 431 432 432 433 adev->acp.acp_cell[3].name = "designware-i2s"; 434 + adev->acp.acp_cell[3].id = 3; 433 435 adev->acp.acp_cell[3].num_resources = 1; 434 436 adev->acp.acp_cell[3].resources = &adev->acp.acp_res[3]; 435 437 adev->acp.acp_cell[3].platform_data = &i2s_pdata[2]; 436 438 adev->acp.acp_cell[3].pdata_size = sizeof(struct i2s_platform_data); 437 439 438 - r = mfd_add_hotplug_devices(adev->acp.parent, adev->acp.acp_cell, ACP_DEVS); 440 + r = mfd_add_devices(adev->acp.parent, 0, adev->acp.acp_cell, ACP_DEVS, NULL, 0, NULL); 439 441 if (r) 440 442 goto failure; 441 443