On Thu, 14 Nov 2019 12:50:29 +0100, Nikhil Mahale wrote: > > On 11/14/19 4:32 PM, Takashi Iwai wrote: > > On Thu, 14 Nov 2019 04:37:04 +0100, > > Nikhil Mahale wrote: > >> > >> @@ -3494,11 +3500,86 @@ static const struct drm_audio_component_audio_ops nvhdmi_audio_ops = { > >> .master_unbind = generic_acomp_master_unbind, > >> }; > >> > >> +static int nvhdmi_find_pcm_slot(struct hdmi_spec *spec, > >> + struct hdmi_spec_per_pin *per_pin) > >> +{ > >> + int i; > >> + > >> + /* > >> + * generic_hdmi_build_pcms() allocates (num_nids + dev_num - 1) > >> + * number of pcms. > >> + * > >> + * The per_pin of pin_nid_idx=n and dev_id=m prefers to get pcm-n if m==0. > >> + * This guarantees that dynamic pcm assignments are compatible with the > >> + * legacy static per_pin-pmc assignment that existed in the days before > >> + * DP-MST. > >> + * > >> + * per_pin of m!=0 prefers to get pcm=(num_nids + (m - 1)). > >> + */ > >> + if (per_pin->dev_id == 0 && > >> + !test_bit(per_pin->pin_nid_idx, &spec->pcm_bitmap)) > >> + return per_pin->pin_nid_idx; > >> + > >> + if (per_pin->dev_id != 0 && > >> + !(test_bit(spec->num_nids + (per_pin->dev_id - 1), > >> + &spec->pcm_bitmap))) { > >> + return spec->num_nids + (per_pin->dev_id - 1); > >> + } > >> + > >> + /* have a second try; check the area over num_nids */ > >> + for (i = spec->num_nids; i < spec->pcm_used; i++) { > >> + if (!test_bit(i, &spec->pcm_bitmap)) > >> + return i; > >> + } > >> + > >> + /* the last try; check the empty slots in pins */ > >> + for (i = 0; i < spec->num_nids; i++) { > >> + if (!test_bit(i, &spec->pcm_bitmap)) > >> + return i; > >> + } > >> + return -EBUSY; > >> +} > > > > I think this can be applied for Intel case, too. No need for creating > > yet another indirect branch. > > Do you mean I should replace existing logic in hdmi_find_pcm_slot() > by this new logic? Yes. It's a dynamic assignment for DP-MST in anyway, so the compatibility of the assigned index shouldn't be a big matter. Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel