static void stm32_timers_get_arr_size(struct stm32_timers *ddata)
 {
+       u32 arr;
+
+       /* Backup ARR to restore it after getting the maximum value */
+       regmap_read(ddata->regmap, TIM_ARR, &arr);
+
        /*
         * Only the available bits will be written so when readback
         * we get the maximum value of auto reload register
         */
        regmap_write(ddata->regmap, TIM_ARR, ~0L);
        regmap_read(ddata->regmap, TIM_ARR, &ddata->max_arr);
-       regmap_write(ddata->regmap, TIM_ARR, 0x0);
+       regmap_write(ddata->regmap, TIM_ARR, arr);
 }
 
 static int stm32_timers_dma_probe(struct device *dev,