Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'counter-fixes-for-6.12' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wbg/counter into char-misc-next

William writes:

Counter fixes for 6.12

Fix device_node handling in stm32-timer-cnt by calling required
of_node_put() after device node is no longer needed. Check and handle
clk_enable() failures in stm32-timer-cnt and ti-ecap-capture.

Signed-off-by: William Breathitt Gray <wbg@kernel.org>

* tag 'counter-fixes-for-6.12' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wbg/counter:
counter: ti-ecap-capture: Add check for clk_enable()
counter: stm32-timer-cnt: Add check for clk_enable()
counter: stm32-timer-cnt: fix device_node handling in probe_encoder()

+20 -4
+14 -3
drivers/counter/stm32-timer-cnt.c
··· 214 214 { 215 215 struct stm32_timer_cnt *const priv = counter_priv(counter); 216 216 u32 cr1; 217 + int ret; 217 218 218 219 if (enable) { 219 220 regmap_read(priv->regmap, TIM_CR1, &cr1); 220 - if (!(cr1 & TIM_CR1_CEN)) 221 - clk_enable(priv->clk); 221 + if (!(cr1 & TIM_CR1_CEN)) { 222 + ret = clk_enable(priv->clk); 223 + if (ret) { 224 + dev_err(counter->parent, "Cannot enable clock %d\n", ret); 225 + return ret; 226 + } 227 + } 222 228 223 229 regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_CEN, 224 230 TIM_CR1_CEN); ··· 700 694 } 701 695 702 696 ret = of_property_read_u32(tnode, "reg", &idx); 697 + of_node_put(tnode); 703 698 if (ret) { 704 699 dev_err(dev, "Can't get index (%d)\n", ret); 705 700 return ret; ··· 823 816 return ret; 824 817 825 818 if (priv->enabled) { 826 - clk_enable(priv->clk); 819 + ret = clk_enable(priv->clk); 820 + if (ret) { 821 + dev_err(dev, "Cannot enable clock %d\n", ret); 822 + return ret; 823 + } 827 824 828 825 /* Restore registers that may have been lost */ 829 826 regmap_write(priv->regmap, TIM_SMCR, priv->bak.smcr);
+6 -1
drivers/counter/ti-ecap-capture.c
··· 574 574 { 575 575 struct counter_device *counter_dev = dev_get_drvdata(dev); 576 576 struct ecap_cnt_dev *ecap_dev = counter_priv(counter_dev); 577 + int ret; 577 578 578 - clk_enable(ecap_dev->clk); 579 + ret = clk_enable(ecap_dev->clk); 580 + if (ret) { 581 + dev_err(dev, "Cannot enable clock %d\n", ret); 582 + return ret; 583 + } 579 584 580 585 ecap_cnt_capture_set_evmode(counter_dev, ecap_dev->pm_ctx.ev_mode); 581 586