hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/mfd/stm32-timers.c
....@@ -172,10 +172,11 @@
172172 regmap_write(ddata->regmap, TIM_ARR, arr);
173173 }
174174
175
-static void stm32_timers_dma_probe(struct device *dev,
175
+static int stm32_timers_dma_probe(struct device *dev,
176176 struct stm32_timers *ddata)
177177 {
178178 int i;
179
+ int ret = 0;
179180 char name[4];
180181
181182 init_completion(&ddata->dma.completion);
....@@ -184,14 +185,23 @@
184185 /* Optional DMA support: get valid DMA channel(s) or NULL */
185186 for (i = STM32_TIMERS_DMA_CH1; i <= STM32_TIMERS_DMA_CH4; i++) {
186187 snprintf(name, ARRAY_SIZE(name), "ch%1d", i + 1);
187
- ddata->dma.chans[i] = dma_request_slave_channel(dev, name);
188
+ ddata->dma.chans[i] = dma_request_chan(dev, name);
188189 }
189
- ddata->dma.chans[STM32_TIMERS_DMA_UP] =
190
- dma_request_slave_channel(dev, "up");
191
- ddata->dma.chans[STM32_TIMERS_DMA_TRIG] =
192
- dma_request_slave_channel(dev, "trig");
193
- ddata->dma.chans[STM32_TIMERS_DMA_COM] =
194
- dma_request_slave_channel(dev, "com");
190
+ ddata->dma.chans[STM32_TIMERS_DMA_UP] = dma_request_chan(dev, "up");
191
+ ddata->dma.chans[STM32_TIMERS_DMA_TRIG] = dma_request_chan(dev, "trig");
192
+ ddata->dma.chans[STM32_TIMERS_DMA_COM] = dma_request_chan(dev, "com");
193
+
194
+ for (i = STM32_TIMERS_DMA_CH1; i < STM32_TIMERS_MAX_DMAS; i++) {
195
+ if (IS_ERR(ddata->dma.chans[i])) {
196
+ /* Save the first error code to return */
197
+ if (PTR_ERR(ddata->dma.chans[i]) != -ENODEV && !ret)
198
+ ret = PTR_ERR(ddata->dma.chans[i]);
199
+
200
+ ddata->dma.chans[i] = NULL;
201
+ }
202
+ }
203
+
204
+ return ret;
195205 }
196206
197207 static void stm32_timers_dma_remove(struct device *dev,
....@@ -235,7 +245,11 @@
235245
236246 stm32_timers_get_arr_size(ddata);
237247
238
- stm32_timers_dma_probe(dev, ddata);
248
+ ret = stm32_timers_dma_probe(dev, ddata);
249
+ if (ret) {
250
+ stm32_timers_dma_remove(dev, ddata);
251
+ return ret;
252
+ }
239253
240254 platform_set_drvdata(pdev, ddata);
241255