• Cristian Marussi's avatar
    regulator: core: avoid unneeded .list_voltage calls · 6d30fc51
    Cristian Marussi authored
    Inside machine_constraints_voltage() a loop is in charge of verifying that
    each of the defined voltages are within the configured constraints and
    that those constraints are in fact compatible with the available voltages'
    list.
    
    When the registered regulator happens to be defined with a wide range of
    possible voltages the above O(n) loop can be costly.
    Moreover since this behaviour is triggered during the registration process,
    it means also that it can be easily triggered at probe time, slowing down
    considerably some module loading.
    
    On the other side if such wide range of voltage values happens to be also
    continuous and without discontinuity of any kind, the above potentially
    cumbersome operation is also useless.
    
    For these reasons, avoid such .list_voltage poll loop when regulator is
    described as 'continuous_voltage_range' as is, indeed, similarly already
    done inside regulator_is_supported_voltage().
    Signed-off-by: default avatarCristian Marussi <cristian.marussi@arm.com>
    Link: https://lore.kernel.org/r/20191209125239.46054-1-cristian.marussi@arm.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    6d30fc51
core.c 147 KB