Lines Matching defs:ddata

57 	struct stm32_timers *ddata = dev_get_drvdata(dev);
59 struct regmap *regmap = ddata->regmap;
60 struct stm32_timers_dma *dma = &ddata->dma;
162 static void stm32_timers_get_arr_size(struct stm32_timers *ddata)
167 regmap_read(ddata->regmap, TIM_ARR, &arr);
173 regmap_write(ddata->regmap, TIM_ARR, ~0L);
174 regmap_read(ddata->regmap, TIM_ARR, &ddata->max_arr);
175 regmap_write(ddata->regmap, TIM_ARR, arr);
178 static int stm32_timers_probe_hwcfgr(struct device *dev, struct stm32_timers *ddata)
182 ddata->ipidr = (uintptr_t)device_get_match_data(dev);
183 if (!ddata->ipidr) {
185 stm32_timers_get_arr_size(ddata);
189 regmap_read(ddata->regmap, TIM_IPIDR, &val);
190 if (val != ddata->ipidr) {
195 regmap_read(ddata->regmap, TIM_HWCFGR2, &val);
198 ddata->max_arr = BIT(FIELD_GET(TIM_HWCFGR2_CNT_WIDTH, val)) - 1;
204 struct stm32_timers *ddata)
210 init_completion(&ddata->dma.completion);
211 mutex_init(&ddata->dma.lock);
216 ddata->dma.chans[i] = dma_request_chan(dev, name);
218 ddata->dma.chans[STM32_TIMERS_DMA_UP] = dma_request_chan(dev, "up");
219 ddata->dma.chans[STM32_TIMERS_DMA_TRIG] = dma_request_chan(dev, "trig");
220 ddata->dma.chans[STM32_TIMERS_DMA_COM] = dma_request_chan(dev, "com");
223 if (IS_ERR(ddata->dma.chans[i])) {
225 if (PTR_ERR(ddata->dma.chans[i]) != -ENODEV && !ret)
226 ret = PTR_ERR(ddata->dma.chans[i]);
228 ddata->dma.chans[i] = NULL;
236 struct stm32_timers *ddata)
241 if (ddata->dma.chans[i])
242 dma_release_channel(ddata->dma.chans[i]);
250 struct stm32_timers *ddata)
264 ddata->irq[STM32_TIMERS_IRQ_GLOBAL_BRK] = ret;
265 ddata->nr_irqs = 1;
274 ddata->irq[i] = ret;
275 ddata->nr_irqs++;
279 if (ddata->nr_irqs && ddata->nr_irqs != STM32_TIMERS_MAX_IRQS) {
280 dev_err(&pdev->dev, "Invalid number of IRQs %d\n", ddata->nr_irqs);
290 struct stm32_timers *ddata;
295 ddata = devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL);
296 if (!ddata)
304 ddata->dma.phys_base = res->start;
306 ddata->regmap = devm_regmap_init_mmio_clk(dev, "int", mmio,
308 if (IS_ERR(ddata->regmap))
309 return PTR_ERR(ddata->regmap);
311 ddata->clk = devm_clk_get(dev, NULL);
312 if (IS_ERR(ddata->clk))
313 return PTR_ERR(ddata->clk);
315 ret = stm32_timers_probe_hwcfgr(dev, ddata);
319 ret = stm32_timers_irq_probe(pdev, ddata);
323 ret = stm32_timers_dma_probe(dev, ddata);
325 stm32_timers_dma_remove(dev, ddata);
329 platform_set_drvdata(pdev, ddata);
333 stm32_timers_dma_remove(dev, ddata);
340 struct stm32_timers *ddata = platform_get_drvdata(pdev);
347 stm32_timers_dma_remove(&pdev->dev, ddata);