Hi! > [ Upstream commit b5a41620bb88efb9fb31a4fa5e652e3d5bead7d4 ] > > [Description] > port spdif fix to staging: > spdif hardwired to afmt inst 1. > spdif func pointer > spdif resource allocation (reserve last audio endpoint for spdif only) I'm sorry, but I don't understand this changelog. Code below modifies whitespace, adds a debug output, and uses local variable for pool->audio_count. Does not seem to be a bugfix, and does not seem to do anything with staging. Best regards, Pavel > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c > @@ -229,12 +229,10 @@ bool resource_construct( > DC_ERR("DC: failed to create audio!\n"); > return false; > } > - > if (!aud->funcs->endpoint_valid(aud)) { > aud->funcs->destroy(&aud); > break; > } > - > pool->audios[i] = aud; > pool->audio_count++; > } > @@ -1703,24 +1701,25 @@ static struct audio *find_first_free_audio( > const struct resource_pool *pool, > enum engine_id id) > { > - int i; > - for (i = 0; i < pool->audio_count; i++) { > + int i, available_audio_count; > + > + available_audio_count = pool->audio_count; > + > + for (i = 0; i < available_audio_count; i++) { > if ((res_ctx->is_audio_acquired[i] == false) && (res_ctx->is_stream_enc_acquired[i] == true)) { > /*we have enough audio endpoint, find the matching inst*/ > if (id != i) > continue; > - > return pool->audios[i]; > } > } > > - /* use engine id to find free audio */ > - if ((id < pool->audio_count) && (res_ctx->is_audio_acquired[id] == false)) { > + /* use engine id to find free audio */ > + if ((id < available_audio_count) && (res_ctx->is_audio_acquired[id] == false)) { > return pool->audios[id]; > } > - > /*not found the matching one, first come first serve*/ > - for (i = 0; i < pool->audio_count; i++) { > + for (i = 0; i < available_audio_count; i++) { > if (res_ctx->is_audio_acquired[i] == false) { > return pool->audios[i]; > } > diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c > index 7f6d724686f1a..abb559ce64085 100644 > --- a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c > +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c > @@ -611,6 +611,8 @@ void dce_aud_az_configure( > > AZ_REG_WRITE(AZALIA_F0_CODEC_PIN_CONTROL_SINK_INFO1, > value); > + DC_LOG_HW_AUDIO("\n\tAUDIO:az_configure: index: %u data, 0x%x, displayName %s: \n", > + audio->inst, value, audio_info->display_name); > > /* > *write the port ID: > @@ -922,7 +924,6 @@ static const struct audio_funcs funcs = { > .az_configure = dce_aud_az_configure, > .destroy = dce_aud_destroy, > }; > - > void dce_aud_destroy(struct audio **audio) > { > struct dce_audio *aud = DCE_AUD(*audio); > @@ -953,7 +954,6 @@ struct audio *dce_audio_create( > audio->regs = reg; > audio->shifts = shifts; > audio->masks = masks; > - > return &audio->base; > } > -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html