Skip to content

Commit 9062e97

Browse files
erwangonashif
authored andcommitted
drivers: stm32: check clock_control_on return value
Check clock_control_on return value now that it is checking appropriate bus is used in the request. Signed-off-by: Erwan Gouriou <[email protected]>
1 parent f6b014e commit 9062e97

File tree

12 files changed

+52
-17
lines changed

12 files changed

+52
-17
lines changed

drivers/dma/dma_stm32f4x.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,11 @@ static int dma_stm32_init(struct device *dev)
499499

500500
__ASSERT_NO_MSG(ddata->clk);
501501

502-
clock_control_on(ddata->clk, (clock_control_subsys_t *) &cdata->pclken);
502+
if (clock_control_on(ddata->clk,
503+
(clock_control_subsys_t *) &cdata->pclken) != 0) {
504+
LOG_ERR("Could not enable DMA clock\n");
505+
return -EIO;
506+
}
503507

504508
/* Set controller specific configuration */
505509
cdata->config(ddata);

drivers/entropy/entropy_stm32.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ static int entropy_stm32_rng_init(struct device *dev)
151151
{
152152
struct entropy_stm32_rng_dev_data *dev_data;
153153
struct entropy_stm32_rng_dev_cfg *dev_cfg;
154+
int res;
154155

155156
__ASSERT_NO_MSG(dev != NULL);
156157

@@ -186,8 +187,9 @@ static int entropy_stm32_rng_init(struct device *dev)
186187
dev_data->clock = device_get_binding(STM32_CLOCK_CONTROL_NAME);
187188
__ASSERT_NO_MSG(dev_data->clock != NULL);
188189

189-
clock_control_on(dev_data->clock,
190+
res = clock_control_on(dev_data->clock,
190191
(clock_control_subsys_t *)&dev_cfg->pclken);
192+
__ASSERT_NO_MSG(res);
191193

192194
LL_RNG_Enable(dev_data->rng);
193195

drivers/ethernet/eth_stm32_hal.c

+10-4
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ static int eth_initialize(struct device *dev)
263263
{
264264
struct eth_stm32_hal_dev_data *dev_data;
265265
struct eth_stm32_hal_dev_cfg *cfg;
266+
int ret = 0;
266267

267268
__ASSERT_NO_MSG(dev != NULL);
268269

@@ -276,15 +277,20 @@ static int eth_initialize(struct device *dev)
276277
__ASSERT_NO_MSG(dev_data->clock != NULL);
277278

278279
/* enable clock */
279-
clock_control_on(dev_data->clock,
280+
ret = clock_control_on(dev_data->clock,
280281
(clock_control_subsys_t *)&cfg->pclken);
281-
clock_control_on(dev_data->clock,
282+
ret |= clock_control_on(dev_data->clock,
282283
(clock_control_subsys_t *)&cfg->pclken_tx);
283-
clock_control_on(dev_data->clock,
284+
ret |= clock_control_on(dev_data->clock,
284285
(clock_control_subsys_t *)&cfg->pclken_rx);
285-
clock_control_on(dev_data->clock,
286+
ret |= clock_control_on(dev_data->clock,
286287
(clock_control_subsys_t *)&cfg->pclken_ptp);
287288

289+
if (ret) {
290+
LOG_ERR("Failed to enable ethernet clock");
291+
return -EIO;
292+
}
293+
288294
__ASSERT_NO_MSG(cfg->config_func != NULL);
289295

290296
cfg->config_func();

drivers/flash/flash_stm32.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,9 @@ static int stm32_flash_init(struct device *dev)
252252
#endif
253253

254254
/* enable clock */
255-
clock_control_on(clk, (clock_control_subsys_t *)&p->pclken);
255+
if (clock_control_on(clk, (clock_control_subsys_t *)&p->pclken) != 0) {
256+
return -EIO;
257+
}
256258
#endif
257259

258260
k_sem_init(&p->sem, 1, 1);

drivers/gpio/gpio_stm32.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,10 @@ static int gpio_stm32_init(struct device *device)
192192
struct device *clk =
193193
device_get_binding(STM32_CLOCK_CONTROL_NAME);
194194

195-
clock_control_on(clk, (clock_control_subsys_t *) &cfg->pclken);
195+
if (clock_control_on(clk,
196+
(clock_control_subsys_t *) &cfg->pclken) != 0) {
197+
return -EIO;
198+
}
196199

197200
return 0;
198201
}

drivers/i2c/i2c_ll_stm32.c

+5-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,11 @@ static int i2c_stm32_init(struct device *dev)
170170
#endif
171171

172172
__ASSERT_NO_MSG(clock);
173-
clock_control_on(clock, (clock_control_subsys_t *) &cfg->pclken);
173+
if (clock_control_on(clock,
174+
(clock_control_subsys_t *) &cfg->pclken) != 0) {
175+
LOG_ERR("i2c: failure enabling clock");
176+
return -EIO;
177+
}
174178

175179
#if defined(CONFIG_SOC_SERIES_STM32F3X) || defined(CONFIG_SOC_SERIES_STM32F0X)
176180
/*

drivers/i2s/i2s_ll_stm32.c

+1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ static int i2s_stm32_enable_clock(struct device *dev)
9999

100100
ret = clock_control_on(clk, (clock_control_subsys_t *) &cfg->pclken);
101101
if (ret != 0) {
102+
LOG_ERR("Could not enable I2S clock");
102103
return -EIO;
103104
}
104105

drivers/pwm/pwm_stm32.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,10 @@ static int pwm_stm32_init(struct device *dev)
196196
__pwm_stm32_get_clock(dev);
197197

198198
/* enable clock */
199-
clock_control_on(data->clock,
200-
(clock_control_subsys_t *)&config->pclken);
199+
if (clock_control_on(data->clock,
200+
(clock_control_subsys_t *)&config->pclken) != 0) {
201+
return -EIO;
202+
}
201203

202204
return 0;
203205
}

drivers/rtc/rtc_ll_stm32.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,10 @@ static int rtc_stm32_init(struct device *dev)
214214
k_sem_init(DEV_SEM(dev), 1, UINT_MAX);
215215
DEV_DATA(dev)->cb_fn = NULL;
216216

217-
clock_control_on(clk, (clock_control_subsys_t *) &cfg->pclken);
217+
if (clock_control_on(clk,
218+
(clock_control_subsys_t *) &cfg->pclken) != 0) {
219+
return -EIO;
220+
}
218221

219222
LL_PWR_EnableBkUpAccess();
220223
LL_RCC_ForceBackupDomainReset();

drivers/serial/uart_stm32.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,10 @@ static int uart_stm32_init(struct device *dev)
311311

312312
__uart_stm32_get_clock(dev);
313313
/* enable clock */
314-
clock_control_on(data->clock,
315-
(clock_control_subsys_t *)&config->pclken);
314+
if (clock_control_on(data->clock,
315+
(clock_control_subsys_t *)&config->pclken) != 0) {
316+
return -EIO;
317+
}
316318

317319
LL_USART_Disable(UartInstance);
318320

drivers/spi/spi_ll_stm32.c

+5-2
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,11 @@ static int spi_stm32_init(struct device *dev)
465465

466466
__ASSERT_NO_MSG(device_get_binding(STM32_CLOCK_CONTROL_NAME));
467467

468-
clock_control_on(device_get_binding(STM32_CLOCK_CONTROL_NAME),
469-
(clock_control_subsys_t) &cfg->pclken);
468+
if (clock_control_on(device_get_binding(STM32_CLOCK_CONTROL_NAME),
469+
(clock_control_subsys_t) &cfg->pclken) != 0) {
470+
LOG_ERR("Could not enable SPI clock");
471+
return -EIO;
472+
}
470473

471474
#ifdef CONFIG_SPI_STM32_INTERRUPT
472475
cfg->irq_config(dev);

drivers/usb/device/usb_dc_stm32.c

+4-1
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,10 @@ static int usb_dc_stm32_clock_enable(void)
253253
}
254254
#endif /* RCC_HSI48_SUPPORT / LL_RCC_USB_CLKSOURCE_NONE */
255255

256-
clock_control_on(clk, (clock_control_subsys_t *)&pclken);
256+
if (clock_control_on(clk, (clock_control_subsys_t *)&pclken) != 0) {
257+
LOG_ERR("Unable to enable USB clock");
258+
return -EIO;
259+
}
257260

258261
#ifdef DT_USB_HS_BASE_ADDRESS
259262

0 commit comments

Comments
 (0)