From 8ea8925ebe761a23be0fd066357f422a78c670ce Mon Sep 17 00:00:00 2001 From: Kumar Gala Date: Tue, 24 Mar 2020 16:00:26 -0500 Subject: [PATCH] drivers: esp32: Convert esp32 drivers to new DT_INST macros Convert older DT_INST_ macro use in esp32 drivers to the new include/devicetree.h DT_INST macro APIs. Signed-off-by: Kumar Gala --- drivers/entropy/entropy_esp32.c | 6 ++++-- drivers/gpio/gpio_esp32.c | 6 ++++-- drivers/i2c/i2c_esp32.c | 26 ++++++++++++++------------ drivers/pinmux/pinmux_esp32.c | 4 +++- drivers/pwm/pwm_led_esp32.c | 6 ++++-- drivers/serial/uart_esp32.c | 28 +++++++++++++++------------- drivers/watchdog/wdt_esp32.c | 10 ++++++---- include/drivers/gpio/gpio_esp32.h | 4 ++-- 8 files changed, 52 insertions(+), 38 deletions(-) diff --git a/drivers/entropy/entropy_esp32.c b/drivers/entropy/entropy_esp32.c index 42fda8c86e0..d4910bb7df7 100644 --- a/drivers/entropy/entropy_esp32.c +++ b/drivers/entropy/entropy_esp32.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT espressif_esp32_trng + #include #include @@ -17,7 +19,7 @@ static inline u32_t entropy_esp32_get_u32(void) * https://www.esp32.com/viewtopic.php?f=2&t=3033&p=14227 * also check: ECO and Workarounds for Bugs Document, point 3.3 */ - volatile u32_t *rng_data_reg = (u32_t *)DT_INST_0_ESPRESSIF_ESP32_TRNG_BASE_ADDRESS; + volatile u32_t *rng_data_reg = (u32_t *)DT_INST_REG_ADDR(0); /* Read just once. This is not optimal as the generator has * limited throughput due to scarce sources of entropy, specially @@ -54,7 +56,7 @@ static struct entropy_driver_api entropy_esp32_api_funcs = { .get_entropy = entropy_esp32_get_entropy }; -DEVICE_AND_API_INIT(entropy_esp32, DT_INST_0_ESPRESSIF_ESP32_TRNG_LABEL, +DEVICE_AND_API_INIT(entropy_esp32, DT_INST_LABEL(0), entropy_esp32_init, NULL, NULL, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEVICE, &entropy_esp32_api_funcs); diff --git a/drivers/gpio/gpio_esp32.c b/drivers/gpio/gpio_esp32.c index 4df3ee6e46f..6b9d68a3955 100644 --- a/drivers/gpio/gpio_esp32.c +++ b/drivers/gpio/gpio_esp32.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT espressif_esp32_gpio + /* Include esp-idf headers first to avoid redefining BIT() macro */ #include #include @@ -361,10 +363,10 @@ static struct gpio_esp32_data gpio_1_data = { /* 32..39 */ #define GPIO_DEVICE_INIT(_id) \ static struct gpio_driver_config gpio_##_id##_cfg = { \ - .port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_##_id##_ESPRESSIF_ESP32_GPIO_NGPIOS),\ + .port_pin_mask = GPIO_PORT_PIN_MASK_FROM_NGPIOS(DT_INST_PROP(_id, ngpios)),\ }; \ DEVICE_AND_API_INIT(gpio_esp32_##_id, \ - DT_INST_##_id##_ESPRESSIF_ESP32_GPIO_LABEL, \ + DT_INST_LABEL(_id), \ gpio_esp32_init, \ &gpio_##_id##_data, &gpio_##_id##_cfg, \ POST_KERNEL, \ diff --git a/drivers/i2c/i2c_esp32.c b/drivers/i2c/i2c_esp32.c index be3eaa4cb73..ec6f6ebeaa7 100644 --- a/drivers/i2c/i2c_esp32.c +++ b/drivers/i2c/i2c_esp32.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT espressif_esp32_i2c + /* Include esp-idf headers first to avoid redefining BIT() macro */ #include #include @@ -564,7 +566,7 @@ static const struct i2c_driver_api i2c_esp32_driver_api = { .transfer = i2c_esp32_transfer, }; -#ifdef DT_INST_0_ESPRESSIF_ESP32_I2C +#if DT_HAS_DRV_INST(0) DEVICE_DECLARE(i2c_esp32_0); static void i2c_esp32_connect_irq_0(void) @@ -583,8 +585,8 @@ static const struct i2c_esp32_config i2c_esp32_config_0 = { .scl_in = I2CEXT0_SCL_IN_IDX, }, .pins = { - .scl = DT_INST_0_ESPRESSIF_ESP32_I2C_SCL_PIN, - .sda = DT_INST_0_ESPRESSIF_ESP32_I2C_SDA_PIN, + .scl = DT_INST_PROP(0, scl_pin), + .sda = DT_INST_PROP(0, sda_pin), }, .peripheral = { .clk = DPORT_I2C_EXT0_CLK_EN, @@ -601,18 +603,18 @@ static const struct i2c_esp32_config i2c_esp32_config_0 = { .line = CONFIG_I2C_ESP32_0_IRQ, }, .default_config = I2C_MODE_MASTER, /* FIXME: Zephyr don't support I2C_SLAVE_MODE */ - .bitrate = DT_INST_0_ESPRESSIF_ESP32_I2C_CLOCK_FREQUENCY, + .bitrate = DT_INST_PROP(0, clock_frequency), }; static struct i2c_esp32_data i2c_esp32_data_0; -DEVICE_AND_API_INIT(i2c_esp32_0, DT_INST_0_ESPRESSIF_ESP32_I2C_LABEL, &i2c_esp32_init, +DEVICE_AND_API_INIT(i2c_esp32_0, DT_INST_LABEL(0), &i2c_esp32_init, &i2c_esp32_data_0, &i2c_esp32_config_0, POST_KERNEL, CONFIG_I2C_INIT_PRIORITY, &i2c_esp32_driver_api); -#endif /* DT_INST_0_ESPRESSIF_ESP32_I2C */ +#endif /* DT_HAS_DRV_INST(0) */ -#ifdef DT_INST_1_ESPRESSIF_ESP32_I2C +#if DT_HAS_DRV_INST(1) DEVICE_DECLARE(i2c_esp32_1); static void i2c_esp32_connect_irq_1(void) @@ -631,8 +633,8 @@ static const struct i2c_esp32_config i2c_esp32_config_1 = { .scl_in = I2CEXT1_SCL_IN_IDX, }, .pins = { - .scl = DT_INST_1_ESPRESSIF_ESP32_I2C_SCL_PIN, - .sda = DT_INST_1_ESPRESSIF_ESP32_I2C_SDA_PIN, + .scl = DT_INST_PROP(1, scl_pin), + .sda = DT_INST_PROP(1, sda_pin), }, .peripheral = { .clk = DPORT_I2C_EXT1_CLK_EN, @@ -649,16 +651,16 @@ static const struct i2c_esp32_config i2c_esp32_config_1 = { .line = CONFIG_I2C_ESP32_1_IRQ, }, .default_config = I2C_MODE_MASTER, /* FIXME: Zephyr don't support I2C_SLAVE_MODE */ - .bitrate = DT_INST_1_ESPRESSIF_ESP32_I2C_CLOCK_FREQUENCY, + .bitrate = DT_INST_PROP(1, clock_frequency), }; static struct i2c_esp32_data i2c_esp32_data_1; -DEVICE_AND_API_INIT(i2c_esp32_1, DT_INST_1_ESPRESSIF_ESP32_I2C_LABEL, &i2c_esp32_init, +DEVICE_AND_API_INIT(i2c_esp32_1, DT_INST_LABEL(1), &i2c_esp32_init, &i2c_esp32_data_1, &i2c_esp32_config_1, POST_KERNEL, CONFIG_I2C_INIT_PRIORITY, &i2c_esp32_driver_api); -#endif /* DT_INST_1_ESPRESSIF_ESP32_I2C */ +#endif /* DT_HAS_DRV_INST(1) */ static int i2c_esp32_init(struct device *dev) { diff --git a/drivers/pinmux/pinmux_esp32.c b/drivers/pinmux/pinmux_esp32.c index 237103028bb..43875924458 100644 --- a/drivers/pinmux/pinmux_esp32.c +++ b/drivers/pinmux/pinmux_esp32.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT espressif_esp32_pinmux + /* Include esp-idf headers first to avoid redefining BIT() macro */ #include #include @@ -53,7 +55,7 @@ static u32_t *reg_for_pin(u32_t pin) return NULL; } - return (u32_t *)(DT_INST_0_ESPRESSIF_ESP32_PINMUX_BASE_ADDRESS + off); + return (u32_t *)(DT_INST_REG_ADDR(0) + off); } static int set_reg(u32_t pin, u32_t clr_mask, u32_t set_mask) diff --git a/drivers/pwm/pwm_led_esp32.c b/drivers/pwm/pwm_led_esp32.c index 1bbac4483e6..192139a20c5 100644 --- a/drivers/pwm/pwm_led_esp32.c +++ b/drivers/pwm/pwm_led_esp32.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT espressif_esp32_gpio + /* Include esp-idf headers first to avoid redefining BIT() macro */ #include #include @@ -92,14 +94,14 @@ static const char *esp32_get_gpio_for_pin(int pin) { if (pin < 32) { #if defined(CONFIG_GPIO_ESP32_0) - return DT_INST_0_ESPRESSIF_ESP32_GPIO_LABEL; + return DT_INST_LABEL(0); #else return NULL; #endif /* CONFIG_GPIO_ESP32_0 */ } #if defined(CONFIG_GPIO_ESP32_1) - return DT_INST_1_ESPRESSIF_ESP32_GPIO_LABEL; + return DT_INST_LABEL(1); #else return NULL; #endif /* CONFIG_GPIO_ESP32_1 */ diff --git a/drivers/serial/uart_esp32.c b/drivers/serial/uart_esp32.c index 6938db1bbfc..27fbb1dab0a 100644 --- a/drivers/serial/uart_esp32.c +++ b/drivers/serial/uart_esp32.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT espressif_esp32_uart + /* Include esp-idf headers first to avoid redefining BIT() macro */ #include #include @@ -480,9 +482,9 @@ ESP32_UART_IRQ_HANDLER_DECL(idx); \ static const struct uart_esp32_config uart_esp32_cfg_port_##idx = { \ .dev_conf = { \ .base = \ - (u8_t *)DT_INST_##idx##_ESPRESSIF_ESP32_UART_BASE_ADDRESS, \ + (u8_t *)DT_INST_REG_ADDR(idx), \ .sys_clk_freq = \ - DT_INST_0_CADENCE_TENSILICA_XTENSA_LX6_CLOCK_FREQUENCY,\ + DT_PROP(DT_INST(0, cadence_tensilica_xtensa_lx6), clock_frequency),\ ESP32_UART_IRQ_HANDLER_FUNC(idx) \ }, \ \ @@ -499,12 +501,12 @@ static const struct uart_esp32_config uart_esp32_cfg_port_##idx = { \ }, \ \ .pins = { \ - .tx = DT_INST_##idx##_ESPRESSIF_ESP32_UART_TX_PIN, \ - .rx = DT_INST_##idx##_ESPRESSIF_ESP32_UART_RX_PIN, \ + .tx = DT_INST_PROP(idx, tx_pin), \ + .rx = DT_INST_PROP(idx, rx_pin), \ IF_ENABLED( \ - DT_INST_##idx##_ESPRESSIF_ESP32_UART_HW_FLOW_CONTROL, \ - (.rts = DT_INST_##idx##_ESPRESSIF_ESP32_UART_RTS_PIN, \ - .cts = DT_INST_##idx##_ESPRESSIF_ESP32_UART_CTS_PIN, \ + DT_INST_PROP(idx, hw_flow_control), \ + (.rts = DT_INST_PROP(idx, rts_pin), \ + .cts = DT_INST_PROP(idx, cts_pin), \ )) \ }, \ \ @@ -516,18 +518,18 @@ static const struct uart_esp32_config uart_esp32_cfg_port_##idx = { \ \ static struct uart_esp32_data uart_esp32_data_##idx = { \ .uart_config = { \ - .baudrate = DT_INST_##idx##_ESPRESSIF_ESP32_UART_CURRENT_SPEED,\ + .baudrate = DT_INST_PROP(idx, current_speed),\ .parity = UART_CFG_PARITY_NONE, \ .stop_bits = UART_CFG_STOP_BITS_1, \ .data_bits = UART_CFG_DATA_BITS_8, \ .flow_ctrl = IS_ENABLED( \ - DT_INST_##idx##_ESPRESSIF_ESP32_UART_HW_FLOW_CONTROL) ?\ + DT_INST_PROP(idx, hw_flow_control)) ?\ UART_CFG_FLOW_CTRL_RTS_CTS : UART_CFG_FLOW_CTRL_NONE \ } \ }; \ \ DEVICE_AND_API_INIT(uart_esp32_##idx, \ - DT_INST_##idx##_ESPRESSIF_ESP32_UART_LABEL, \ + DT_INST_LABEL(idx), \ uart_esp32_init, \ &uart_esp32_data_##idx, \ &uart_esp32_cfg_port_##idx, \ @@ -537,14 +539,14 @@ DEVICE_AND_API_INIT(uart_esp32_##idx, \ \ ESP32_UART_IRQ_HANDLER(idx) -#ifdef DT_INST_0_ESPRESSIF_ESP32_UART +#if DT_HAS_DRV_INST(0) ESP32_UART_INIT(0); #endif -#ifdef DT_INST_1_ESPRESSIF_ESP32_UART +#if DT_HAS_DRV_INST(1) ESP32_UART_INIT(1); #endif -#ifdef DT_INST_2_ESPRESSIF_ESP32_UART +#if DT_HAS_DRV_INST(2) ESP32_UART_INIT(2); #endif diff --git a/drivers/watchdog/wdt_esp32.c b/drivers/watchdog/wdt_esp32.c index b60cbcea869..64524eff7b0 100644 --- a/drivers/watchdog/wdt_esp32.c +++ b/drivers/watchdog/wdt_esp32.c @@ -4,6 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +#define DT_DRV_COMPAT espressif_esp32_watchdog + /* Include esp-idf headers first to avoid redefining BIT() macro */ #include #include @@ -237,7 +239,7 @@ static const struct wdt_driver_api wdt_api = { \ static struct wdt_esp32_data wdt##idx##_data; \ static struct wdt_esp32_config wdt_esp32_config##idx = { \ - .base = (struct wdt_esp32_regs_t *) DT_INST_##idx##_ESPRESSIF_ESP32_WATCHDOG_BASE_ADDRESS, \ + .base = (struct wdt_esp32_regs_t *) DT_INST_REG_ADDR(idx), \ .irq_regs = { \ .timer_int_ena = (u32_t *)TIMG_INT_ENA_TIMERS_REG(idx), \ .timer_int_clr = (u32_t *)TIMG_INT_CLR_TIMERS_REG(idx), \ @@ -249,7 +251,7 @@ static const struct wdt_driver_api wdt_api = { .connect_irq = wdt_esp32_connect_irq_func##idx \ }; \ \ - DEVICE_AND_API_INIT(wdt_esp32_##idx, DT_INST_##idx##_ESPRESSIF_ESP32_WATCHDOG_LABEL, \ + DEVICE_AND_API_INIT(wdt_esp32_##idx, DT_INST_LABEL(idx), \ wdt_esp32_init, \ &wdt##idx##_data, \ &wdt_esp32_config##idx, \ @@ -268,10 +270,10 @@ static void wdt_esp32_isr(struct device *dev) } -#ifdef DT_INST_0_ESPRESSIF_ESP32_WATCHDOG +#if DT_HAS_DRV_INST(0) ESP32_WDT_INIT(0); #endif -#ifdef DT_INST_1_ESPRESSIF_ESP32_WATCHDOG +#if DT_HAS_DRV_INST(1) ESP32_WDT_INIT(1); #endif diff --git a/include/drivers/gpio/gpio_esp32.h b/include/drivers/gpio/gpio_esp32.h index 297c2cf8520..bd01b28988a 100644 --- a/include/drivers/gpio/gpio_esp32.h +++ b/include/drivers/gpio/gpio_esp32.h @@ -9,14 +9,14 @@ static const char *gpio_esp32_get_gpio_for_pin(int pin) { if (pin < 32) { #if defined(CONFIG_GPIO_ESP32_0) - return DT_INST_0_ESPRESSIF_ESP32_GPIO_LABEL; + return DT_LABEL(DT_INST(0, espressif_esp32_gpio)); #else return NULL; #endif /* CONFIG_GPIO_ESP32_0 */ } #if defined(CONFIG_GPIO_ESP32_1) - return DT_INST_1_ESPRESSIF_ESP32_GPIO_LABEL; + return DT_LABEL(DT_INST(1, espressif_esp32_gpio)); #else return NULL; #endif /* CONFIG_GPIO_ESP32_1 */