Merge "refactor(st-i2c): use fdt_read_uint32_default()" into integration

This commit is contained in:
Manish Pandey 2024-02-26 12:09:27 +01:00 committed by TrustedFirmware Code Review
commit 13caddef46
2 changed files with 26 additions and 38 deletions

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2021, STMicroelectronics - All Rights Reserved * Copyright (c) 2016-2024, STMicroelectronics - All Rights Reserved
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
@ -8,17 +8,17 @@
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h> #include <stdlib.h>
#include <libfdt.h>
#include <platform_def.h>
#include <common/debug.h> #include <common/debug.h>
#include <common/fdt_wrappers.h>
#include <drivers/clk.h> #include <drivers/clk.h>
#include <drivers/delay_timer.h> #include <drivers/delay_timer.h>
#include <drivers/st/stm32_gpio.h> #include <drivers/st/stm32_gpio.h>
#include <drivers/st/stm32_i2c.h> #include <drivers/st/stm32_i2c.h>
#include <lib/mmio.h> #include <lib/mmio.h>
#include <lib/utils.h> #include <lib/utils.h>
#include <libfdt.h>
#include <platform_def.h>
/* STM32 I2C registers offsets */ /* STM32 I2C registers offsets */
#define I2C_CR1 0x00U #define I2C_CR1 0x00U
@ -97,41 +97,30 @@ static int i2c_config_analog_filter(struct i2c_handle_s *hi2c,
int stm32_i2c_get_setup_from_fdt(void *fdt, int node, int stm32_i2c_get_setup_from_fdt(void *fdt, int node,
struct stm32_i2c_init_s *init) struct stm32_i2c_init_s *init)
{ {
const fdt32_t *cuint; uint32_t read_val;
cuint = fdt_getprop(fdt, node, "i2c-scl-rising-time-ns", NULL); init->rise_time = fdt_read_uint32_default(fdt, node,
if (cuint == NULL) { "i2c-scl-rising-time-ns",
init->rise_time = STM32_I2C_RISE_TIME_DEFAULT; STM32_I2C_RISE_TIME_DEFAULT);
} else {
init->rise_time = fdt32_to_cpu(*cuint);
}
cuint = fdt_getprop(fdt, node, "i2c-scl-falling-time-ns", NULL); init->fall_time = fdt_read_uint32_default(fdt, node,
if (cuint == NULL) { "i2c-scl-falling-time-ns",
init->fall_time = STM32_I2C_FALL_TIME_DEFAULT; STM32_I2C_FALL_TIME_DEFAULT);
} else {
init->fall_time = fdt32_to_cpu(*cuint);
}
cuint = fdt_getprop(fdt, node, "clock-frequency", NULL); read_val = fdt_read_uint32_default(fdt, node, "clock-frequency",
if (cuint == NULL) { STANDARD_RATE);
init->speed_mode = STM32_I2C_SPEED_DEFAULT; switch (read_val) {
} else { case FAST_PLUS_RATE:
switch (fdt32_to_cpu(*cuint)) { init->speed_mode = I2C_SPEED_FAST_PLUS;
case STANDARD_RATE:
init->speed_mode = I2C_SPEED_STANDARD;
break; break;
case FAST_RATE: case FAST_RATE:
init->speed_mode = I2C_SPEED_FAST; init->speed_mode = I2C_SPEED_FAST;
break; break;
case FAST_PLUS_RATE: case STANDARD_RATE:
init->speed_mode = I2C_SPEED_FAST_PLUS;
break;
default: default:
init->speed_mode = STM32_I2C_SPEED_DEFAULT; init->speed_mode = I2C_SPEED_STANDARD;
break; break;
} }
}
return dt_set_pinctrl_config(node); return dt_set_pinctrl_config(node);
} }

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2016-2019, STMicroelectronics - All Rights Reserved * Copyright (c) 2016-2024, STMicroelectronics - All Rights Reserved
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
@ -294,7 +294,6 @@ struct i2c_handle_s {
/* STM32 specific defines */ /* STM32 specific defines */
#define STM32_I2C_RISE_TIME_DEFAULT 25 /* ns */ #define STM32_I2C_RISE_TIME_DEFAULT 25 /* ns */
#define STM32_I2C_FALL_TIME_DEFAULT 10 /* ns */ #define STM32_I2C_FALL_TIME_DEFAULT 10 /* ns */
#define STM32_I2C_SPEED_DEFAULT I2C_SPEED_STANDARD
#define STM32_I2C_ANALOG_FILTER_DELAY_MIN 50 /* ns */ #define STM32_I2C_ANALOG_FILTER_DELAY_MIN 50 /* ns */
#define STM32_I2C_ANALOG_FILTER_DELAY_MAX 260 /* ns */ #define STM32_I2C_ANALOG_FILTER_DELAY_MAX 260 /* ns */
#define STM32_I2C_DIGITAL_FILTER_MAX 16 #define STM32_I2C_DIGITAL_FILTER_MAX 16