peakvol: prevent division by zero

When calculating the time_ratio, a situation may occur
where cd->initial_ramp is equal to zero. To avoid dividing
by zero it is necessary to insert an additional condition

Signed-off-by: Kwasowiec, Fabiola <fabiola.kwasowiec@intel.com>
This commit is contained in:
Kwasowiec, Fabiola 2023-03-29 10:14:10 +02:00 committed by Liam Girdwood
parent 13d5800424
commit 694dd4d4a5
1 changed files with 3 additions and 0 deletions

View File

@ -252,6 +252,9 @@ static inline int32_t volume_windows_fade_ramp(struct vol_data *cd, int32_t ramp
int32_t pow_value; /* Q2.30 */
int32_t volume_delta = cd->tvolume[channel] - cd->rvolume[channel]; /* Q16.16 */
if (!cd->initial_ramp)
return cd->tvolume[channel];
time_ratio = (((int64_t)ramp_time) << 30) / (cd->initial_ramp << 3);
pow_value = volume_pow_175(time_ratio);
return cd->rvolume[channel] + Q_MULTSR_32X32((int64_t)volume_delta, pow_value, 16, 30, 16);