drivers: modem: operate on device pointers instead of names

So far modem API used UART device names / labels. Change API to operate
on device pointers instead, so that we stop using device_get_binding()
in modem core and in some DT compatible modem drivers.

Signed-off-by: Marcin Niestroj <m.niestroj@emb.dev>
This commit is contained in:
Marcin Niestroj 2021-06-29 15:11:22 +02:00 committed by Christopher Friedt
commit 26bd4fb45e
11 changed files with 27 additions and 27 deletions

View file

@ -715,7 +715,7 @@ attaching:
if (IS_ENABLED(CONFIG_GSM_MUX) && gsm->mux_enabled) { if (IS_ENABLED(CONFIG_GSM_MUX) && gsm->mux_enabled) {
/* Re-use the original iface for AT channel */ /* Re-use the original iface for AT channel */
ret = modem_iface_uart_init_dev(&gsm->context.iface, ret = modem_iface_uart_init_dev(&gsm->context.iface,
gsm->at_dev->name); gsm->at_dev);
if (ret < 0) { if (ret < 0) {
LOG_DBG("iface %suart error %d", "AT ", ret); LOG_DBG("iface %suart error %d", "AT ", ret);
} else { } else {
@ -899,7 +899,7 @@ static void mux_setup(struct k_work *work)
* to the modem. * to the modem.
*/ */
ret = modem_iface_uart_init_dev(&gsm->context.iface, ret = modem_iface_uart_init_dev(&gsm->context.iface,
gsm->ppp_dev->name); gsm->ppp_dev);
if (ret < 0) { if (ret < 0) {
LOG_DBG("iface %suart error %d", "PPP ", ret); LOG_DBG("iface %suart error %d", "PPP ", ret);
gsm->mux_enabled = false; gsm->mux_enabled = false;
@ -980,7 +980,7 @@ void gsm_ppp_start(const struct device *dev)
/* Re-init underlying UART comms */ /* Re-init underlying UART comms */
int r = modem_iface_uart_init_dev(&gsm->context.iface, int r = modem_iface_uart_init_dev(&gsm->context.iface,
CONFIG_MODEM_GSM_UART_NAME); device_get_binding(CONFIG_MODEM_GSM_UART_NAME));
if (r) { if (r) {
LOG_ERR("modem_iface_uart_init returned %d", r); LOG_ERR("modem_iface_uart_init returned %d", r);
return; return;
@ -1057,7 +1057,7 @@ static int gsm_init(const struct device *dev)
gsm->gsm_data.rx_rb_buf_len = sizeof(gsm->gsm_rx_rb_buf); gsm->gsm_data.rx_rb_buf_len = sizeof(gsm->gsm_rx_rb_buf);
r = modem_iface_uart_init(&gsm->context.iface, &gsm->gsm_data, r = modem_iface_uart_init(&gsm->context.iface, &gsm->gsm_data,
CONFIG_MODEM_GSM_UART_NAME); device_get_binding(CONFIG_MODEM_GSM_UART_NAME));
if (r < 0) { if (r < 0) {
LOG_DBG("iface uart error %d", r); LOG_DBG("iface uart error %d", r);
return r; return r;

View file

@ -232,7 +232,7 @@ static const struct mdm_control_pinconfig pinconfig[] = {
(GPIO_INPUT | GPIO_INT_EDGE_BOTH)), (GPIO_INPUT | GPIO_INT_EDGE_BOTH)),
}; };
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0) #define MDM_UART_DEV DEVICE_DT_GET(DT_INST_BUS(0))
#define MDM_WAKE_ASSERTED 1 /* Asserted keeps the module awake */ #define MDM_WAKE_ASSERTED 1 /* Asserted keeps the module awake */
#define MDM_WAKE_NOT_ASSERTED 0 #define MDM_WAKE_NOT_ASSERTED 0
@ -4940,7 +4940,7 @@ static int hl7800_init(const struct device *dev)
ictx.mdm_ctx.data_imei = ictx.mdm_imei; ictx.mdm_ctx.data_imei = ictx.mdm_imei;
#endif #endif
ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV_NAME, ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV,
mdm_recv_buf, sizeof(mdm_recv_buf)); mdm_recv_buf, sizeof(mdm_recv_buf));
if (ret < 0) { if (ret < 0) {
LOG_ERR("Error registering modem receiver (%d)!", ret); LOG_ERR("Error registering modem receiver (%d)!", ret);

View file

@ -165,13 +165,12 @@ static int modem_iface_uart_write(struct modem_iface *iface,
} }
int modem_iface_uart_init_dev(struct modem_iface *iface, int modem_iface_uart_init_dev(struct modem_iface *iface,
const char *dev_name) const struct device *dev)
{ {
/* get UART device */ /* get UART device */
const struct device *dev = device_get_binding(dev_name);
const struct device *prev = iface->dev; const struct device *prev = iface->dev;
if (!dev) { if (!device_is_ready(dev)) {
return -ENODEV; return -ENODEV;
} }
@ -201,7 +200,7 @@ int modem_iface_uart_init_dev(struct modem_iface *iface,
int modem_iface_uart_init(struct modem_iface *iface, int modem_iface_uart_init(struct modem_iface *iface,
struct modem_iface_uart_data *data, struct modem_iface_uart_data *data,
const char *dev_name) const struct device *dev)
{ {
int ret; int ret;
@ -217,7 +216,7 @@ int modem_iface_uart_init(struct modem_iface *iface,
k_sem_init(&data->rx_sem, 0, 1); k_sem_init(&data->rx_sem, 0, 1);
/* get UART device */ /* get UART device */
ret = modem_iface_uart_init_dev(iface, dev_name); ret = modem_iface_uart_init_dev(iface, dev);
if (ret < 0) { if (ret < 0) {
iface->iface_data = NULL; iface->iface_data = NULL;
iface->read = NULL; iface->read = NULL;

View file

@ -45,7 +45,7 @@ struct modem_iface_uart_data {
* @retval 0 if ok, < 0 if error. * @retval 0 if ok, < 0 if error.
*/ */
int modem_iface_uart_init_dev(struct modem_iface *iface, int modem_iface_uart_init_dev(struct modem_iface *iface,
const char *dev_name); const struct device *dev);
/** /**
* @brief Init modem interface for UART * @brief Init modem interface for UART
@ -58,7 +58,7 @@ int modem_iface_uart_init_dev(struct modem_iface *iface,
*/ */
int modem_iface_uart_init(struct modem_iface *iface, int modem_iface_uart_init(struct modem_iface *iface,
struct modem_iface_uart_data *data, struct modem_iface_uart_data *data,
const char *dev_name); const struct device *dev);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -215,7 +215,7 @@ int mdm_receiver_wake(struct mdm_receiver_context *ctx)
} }
int mdm_receiver_register(struct mdm_receiver_context *ctx, int mdm_receiver_register(struct mdm_receiver_context *ctx,
const char *uart_dev_name, const struct device *uart_dev,
uint8_t *buf, size_t size) uint8_t *buf, size_t size)
{ {
int ret; int ret;
@ -224,12 +224,13 @@ int mdm_receiver_register(struct mdm_receiver_context *ctx,
return -EINVAL; return -EINVAL;
} }
ctx->uart_dev = device_get_binding(uart_dev_name); if (!device_is_ready(uart_dev)) {
if (!ctx->uart_dev) { LOG_ERR("Device is not ready: %s",
LOG_ERR("Binding failure for uart: %s", uart_dev_name); uart_dev ? uart_dev->name : "<null>");
return -ENODEV; return -ENODEV;
} }
ctx->uart_dev = uart_dev;
ring_buf_init(&ctx->rx_rb, size, buf); ring_buf_init(&ctx->rx_rb, size, buf);
k_sem_init(&ctx->rx_sem, 0, 1); k_sem_init(&ctx->rx_sem, 0, 1);

View file

@ -80,14 +80,14 @@ int mdm_receiver_send(struct mdm_receiver_context *ctx,
* @note Acquires receivers device, and prepares the context to be used. * @note Acquires receivers device, and prepares the context to be used.
* *
* @param *ctx: receiver context to register. * @param *ctx: receiver context to register.
* @param *uart_dev_name: communication device for the receiver context. * @param *uart_dev: communication device for the receiver context.
* @param *buf: rx buffer to use for received data. * @param *buf: rx buffer to use for received data.
* @param size: rx buffer size. * @param size: rx buffer size.
* *
* @retval 0 if ok, < 0 if error. * @retval 0 if ok, < 0 if error.
*/ */
int mdm_receiver_register(struct mdm_receiver_context *ctx, int mdm_receiver_register(struct mdm_receiver_context *ctx,
const char *uart_dev_name, const struct device *uart_dev,
uint8_t *buf, size_t size); uint8_t *buf, size_t size);
int mdm_receiver_sleep(struct mdm_receiver_context *ctx); int mdm_receiver_sleep(struct mdm_receiver_context *ctx);

View file

@ -1156,7 +1156,7 @@ static int modem_init(const struct device *dev)
mdata.iface_data.rx_rb_buf = &mdata.iface_rb_buf[0]; mdata.iface_data.rx_rb_buf = &mdata.iface_rb_buf[0];
mdata.iface_data.rx_rb_buf_len = sizeof(mdata.iface_rb_buf); mdata.iface_data.rx_rb_buf_len = sizeof(mdata.iface_rb_buf);
ret = modem_iface_uart_init(&mctx.iface, &mdata.iface_data, ret = modem_iface_uart_init(&mctx.iface, &mdata.iface_data,
MDM_UART_DEV_NAME); MDM_UART_DEV);
if (ret < 0) { if (ret < 0) {
goto error; goto error;
} }

View file

@ -24,7 +24,7 @@
#include "modem_cmd_handler.h" #include "modem_cmd_handler.h"
#include "modem_iface_uart.h" #include "modem_iface_uart.h"
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0) #define MDM_UART_DEV DEVICE_DT_GET(DT_INST_BUS(0))
#define MDM_CMD_TIMEOUT K_SECONDS(10) #define MDM_CMD_TIMEOUT K_SECONDS(10)
#define MDM_CMD_CONN_TIMEOUT K_SECONDS(120) #define MDM_CMD_CONN_TIMEOUT K_SECONDS(120)
#define MDM_REGISTRATION_TIMEOUT K_SECONDS(180) #define MDM_REGISTRATION_TIMEOUT K_SECONDS(180)

View file

@ -73,8 +73,8 @@ static struct modem_pin modem_pins[] = {
#endif #endif
}; };
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0) #define MDM_UART_NODE DT_INST_BUS(0)
#define MDM_UART_NODE DT_BUS(DT_DRV_INST(0)) #define MDM_UART_DEV DEVICE_DT_GET(MDM_UART_NODE)
#define MDM_POWER_ENABLE 1 #define MDM_POWER_ENABLE 1
#define MDM_POWER_DISABLE 0 #define MDM_POWER_DISABLE 0
@ -2169,7 +2169,7 @@ static int modem_init(const struct device *dev)
mdata.iface_data.rx_rb_buf = &mdata.iface_rb_buf[0]; mdata.iface_data.rx_rb_buf = &mdata.iface_rb_buf[0];
mdata.iface_data.rx_rb_buf_len = sizeof(mdata.iface_rb_buf); mdata.iface_data.rx_rb_buf_len = sizeof(mdata.iface_rb_buf);
ret = modem_iface_uart_init(&mctx.iface, &mdata.iface_data, ret = modem_iface_uart_init(&mctx.iface, &mdata.iface_data,
MDM_UART_DEV_NAME); MDM_UART_DEV);
if (ret < 0) { if (ret < 0) {
goto error; goto error;
} }

View file

@ -102,7 +102,7 @@ static const struct mdm_control_pinconfig pinconfig[] = {
#endif #endif
}; };
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0) #define MDM_UART_DEV DEVICE_DT_GET(DT_INST_BUS(0))
#define MDM_BOOT_MODE_SPECIAL 0 #define MDM_BOOT_MODE_SPECIAL 0
#define MDM_BOOT_MODE_NORMAL 1 #define MDM_BOOT_MODE_NORMAL 1
@ -1487,7 +1487,7 @@ static int wncm14a2a_init(const struct device *dev)
ictx.mdm_ctx.data_imei = ictx.mdm_imei; ictx.mdm_ctx.data_imei = ictx.mdm_imei;
#endif #endif
ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV_NAME, ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV,
mdm_recv_buf, sizeof(mdm_recv_buf)); mdm_recv_buf, sizeof(mdm_recv_buf));
if (ret < 0) { if (ret < 0) {
LOG_ERR("Error registering modem receiver (%d)!", ret); LOG_ERR("Error registering modem receiver (%d)!", ret);

View file

@ -1104,7 +1104,7 @@ static int esp_init(const struct device *dev)
data->iface_data.rx_rb_buf = &data->iface_rb_buf[0]; data->iface_data.rx_rb_buf = &data->iface_rb_buf[0];
data->iface_data.rx_rb_buf_len = sizeof(data->iface_rb_buf); data->iface_data.rx_rb_buf_len = sizeof(data->iface_rb_buf);
ret = modem_iface_uart_init(&data->mctx.iface, &data->iface_data, ret = modem_iface_uart_init(&data->mctx.iface, &data->iface_data,
DT_INST_BUS_LABEL(0)); DEVICE_DT_GET(DT_INST_BUS(0)));
if (ret < 0) { if (ret < 0) {
goto error; goto error;
} }