|
21 | 21 | #if defined(CONFIG_PINCTRL)
|
22 | 22 | #include <zephyr/drivers/pinctrl.h>
|
23 | 23 | #endif
|
| 24 | +#if defined(CONFIG_RESET) |
| 25 | +#include <zephyr/drivers/reset.h> |
| 26 | +#endif |
24 | 27 |
|
25 | 28 | #include <errno.h>
|
26 | 29 | #include <zephyr/sys/sys_io.h>
|
@@ -847,6 +850,15 @@ static int i2c_dw_initialize(const struct device *dev)
|
847 | 850 | union ic_con_register ic_con;
|
848 | 851 | int ret = 0;
|
849 | 852 |
|
| 853 | +#if defined(CONFIG_RESET) |
| 854 | + if (rom->reset.dev) { |
| 855 | + ret = reset_line_toggle_dt(&rom->reset); |
| 856 | + if (ret) { |
| 857 | + return ret; |
| 858 | + } |
| 859 | + } |
| 860 | +#endif |
| 861 | + |
850 | 862 | #if defined(CONFIG_PINCTRL)
|
851 | 863 | ret = pinctrl_apply_state(rom->pcfg, PINCTRL_STATE_DEFAULT);
|
852 | 864 | if (ret) {
|
@@ -922,6 +934,14 @@ static int i2c_dw_initialize(const struct device *dev)
|
922 | 934 | #define PINCTRL_DW_CONFIG(n)
|
923 | 935 | #endif
|
924 | 936 |
|
| 937 | +#if defined(CONFIG_RESET) |
| 938 | +#define RESET_DW_CONFIG(n) \ |
| 939 | + IF_ENABLED(DT_INST_NODE_HAS_PROP(0, resets), \ |
| 940 | + (.reset = RESET_DT_SPEC_INST_GET(n),)) |
| 941 | +#else |
| 942 | +#define RESET_DW_CONFIG(n) |
| 943 | +#endif |
| 944 | + |
925 | 945 | #define I2C_DW_INIT_PCIE0(n)
|
926 | 946 | #define I2C_DW_INIT_PCIE1(n) DEVICE_PCIE_INST_INIT(n, pcie),
|
927 | 947 | #define I2C_DW_INIT_PCIE(n) \
|
@@ -985,6 +1005,7 @@ static int i2c_dw_initialize(const struct device *dev)
|
985 | 1005 | I2C_CONFIG_REG_INIT(n) \
|
986 | 1006 | .config_func = i2c_config_##n, \
|
987 | 1007 | .bitrate = DT_INST_PROP(n, clock_frequency), \
|
| 1008 | + RESET_DW_CONFIG(n) \ |
988 | 1009 | PINCTRL_DW_CONFIG(n) \
|
989 | 1010 | I2C_DW_INIT_PCIE(n) \
|
990 | 1011 | }; \
|
|
0 commit comments