Skip to content

Commit 26bd4fb

Browse files
mniestrojcfriedt
authored andcommitted
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>
1 parent 9e58a1e commit 26bd4fb

File tree

11 files changed

+27
-27
lines changed

11 files changed

+27
-27
lines changed

drivers/modem/gsm_ppp.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -715,7 +715,7 @@ static void gsm_finalize_connection(struct gsm_modem *gsm)
715715
if (IS_ENABLED(CONFIG_GSM_MUX) && gsm->mux_enabled) {
716716
/* Re-use the original iface for AT channel */
717717
ret = modem_iface_uart_init_dev(&gsm->context.iface,
718-
gsm->at_dev->name);
718+
gsm->at_dev);
719719
if (ret < 0) {
720720
LOG_DBG("iface %suart error %d", "AT ", ret);
721721
} else {
@@ -899,7 +899,7 @@ static void mux_setup(struct k_work *work)
899899
* to the modem.
900900
*/
901901
ret = modem_iface_uart_init_dev(&gsm->context.iface,
902-
gsm->ppp_dev->name);
902+
gsm->ppp_dev);
903903
if (ret < 0) {
904904
LOG_DBG("iface %suart error %d", "PPP ", ret);
905905
gsm->mux_enabled = false;
@@ -980,7 +980,7 @@ void gsm_ppp_start(const struct device *dev)
980980

981981
/* Re-init underlying UART comms */
982982
int r = modem_iface_uart_init_dev(&gsm->context.iface,
983-
CONFIG_MODEM_GSM_UART_NAME);
983+
device_get_binding(CONFIG_MODEM_GSM_UART_NAME));
984984
if (r) {
985985
LOG_ERR("modem_iface_uart_init returned %d", r);
986986
return;
@@ -1057,7 +1057,7 @@ static int gsm_init(const struct device *dev)
10571057
gsm->gsm_data.rx_rb_buf_len = sizeof(gsm->gsm_rx_rb_buf);
10581058

10591059
r = modem_iface_uart_init(&gsm->context.iface, &gsm->gsm_data,
1060-
CONFIG_MODEM_GSM_UART_NAME);
1060+
device_get_binding(CONFIG_MODEM_GSM_UART_NAME));
10611061
if (r < 0) {
10621062
LOG_DBG("iface uart error %d", r);
10631063
return r;

drivers/modem/hl7800.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ static const struct mdm_control_pinconfig pinconfig[] = {
232232
(GPIO_INPUT | GPIO_INT_EDGE_BOTH)),
233233
};
234234

235-
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0)
235+
#define MDM_UART_DEV DEVICE_DT_GET(DT_INST_BUS(0))
236236

237237
#define MDM_WAKE_ASSERTED 1 /* Asserted keeps the module awake */
238238
#define MDM_WAKE_NOT_ASSERTED 0
@@ -4940,7 +4940,7 @@ static int hl7800_init(const struct device *dev)
49404940
ictx.mdm_ctx.data_imei = ictx.mdm_imei;
49414941
#endif
49424942

4943-
ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV_NAME,
4943+
ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV,
49444944
mdm_recv_buf, sizeof(mdm_recv_buf));
49454945
if (ret < 0) {
49464946
LOG_ERR("Error registering modem receiver (%d)!", ret);

drivers/modem/modem_iface_uart.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,12 @@ static int modem_iface_uart_write(struct modem_iface *iface,
165165
}
166166

167167
int modem_iface_uart_init_dev(struct modem_iface *iface,
168-
const char *dev_name)
168+
const struct device *dev)
169169
{
170170
/* get UART device */
171-
const struct device *dev = device_get_binding(dev_name);
172171
const struct device *prev = iface->dev;
173172

174-
if (!dev) {
173+
if (!device_is_ready(dev)) {
175174
return -ENODEV;
176175
}
177176

@@ -201,7 +200,7 @@ int modem_iface_uart_init_dev(struct modem_iface *iface,
201200

202201
int modem_iface_uart_init(struct modem_iface *iface,
203202
struct modem_iface_uart_data *data,
204-
const char *dev_name)
203+
const struct device *dev)
205204
{
206205
int ret;
207206

@@ -217,7 +216,7 @@ int modem_iface_uart_init(struct modem_iface *iface,
217216
k_sem_init(&data->rx_sem, 0, 1);
218217

219218
/* get UART device */
220-
ret = modem_iface_uart_init_dev(iface, dev_name);
219+
ret = modem_iface_uart_init_dev(iface, dev);
221220
if (ret < 0) {
222221
iface->iface_data = NULL;
223222
iface->read = NULL;

drivers/modem/modem_iface_uart.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ struct modem_iface_uart_data {
4545
* @retval 0 if ok, < 0 if error.
4646
*/
4747
int modem_iface_uart_init_dev(struct modem_iface *iface,
48-
const char *dev_name);
48+
const struct device *dev);
4949

5050
/**
5151
* @brief Init modem interface for UART
@@ -58,7 +58,7 @@ int modem_iface_uart_init_dev(struct modem_iface *iface,
5858
*/
5959
int modem_iface_uart_init(struct modem_iface *iface,
6060
struct modem_iface_uart_data *data,
61-
const char *dev_name);
61+
const struct device *dev);
6262

6363
#ifdef __cplusplus
6464
}

drivers/modem/modem_receiver.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ int mdm_receiver_wake(struct mdm_receiver_context *ctx)
215215
}
216216

217217
int mdm_receiver_register(struct mdm_receiver_context *ctx,
218-
const char *uart_dev_name,
218+
const struct device *uart_dev,
219219
uint8_t *buf, size_t size)
220220
{
221221
int ret;
@@ -224,12 +224,13 @@ int mdm_receiver_register(struct mdm_receiver_context *ctx,
224224
return -EINVAL;
225225
}
226226

227-
ctx->uart_dev = device_get_binding(uart_dev_name);
228-
if (!ctx->uart_dev) {
229-
LOG_ERR("Binding failure for uart: %s", uart_dev_name);
227+
if (!device_is_ready(uart_dev)) {
228+
LOG_ERR("Device is not ready: %s",
229+
uart_dev ? uart_dev->name : "<null>");
230230
return -ENODEV;
231231
}
232232

233+
ctx->uart_dev = uart_dev;
233234
ring_buf_init(&ctx->rx_rb, size, buf);
234235
k_sem_init(&ctx->rx_sem, 0, 1);
235236

drivers/modem/modem_receiver.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,14 @@ int mdm_receiver_send(struct mdm_receiver_context *ctx,
8080
* @note Acquires receivers device, and prepares the context to be used.
8181
*
8282
* @param *ctx: receiver context to register.
83-
* @param *uart_dev_name: communication device for the receiver context.
83+
* @param *uart_dev: communication device for the receiver context.
8484
* @param *buf: rx buffer to use for received data.
8585
* @param size: rx buffer size.
8686
*
8787
* @retval 0 if ok, < 0 if error.
8888
*/
8989
int mdm_receiver_register(struct mdm_receiver_context *ctx,
90-
const char *uart_dev_name,
90+
const struct device *uart_dev,
9191
uint8_t *buf, size_t size);
9292

9393
int mdm_receiver_sleep(struct mdm_receiver_context *ctx);

drivers/modem/quectel-bg9x.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1156,7 +1156,7 @@ static int modem_init(const struct device *dev)
11561156
mdata.iface_data.rx_rb_buf = &mdata.iface_rb_buf[0];
11571157
mdata.iface_data.rx_rb_buf_len = sizeof(mdata.iface_rb_buf);
11581158
ret = modem_iface_uart_init(&mctx.iface, &mdata.iface_data,
1159-
MDM_UART_DEV_NAME);
1159+
MDM_UART_DEV);
11601160
if (ret < 0) {
11611161
goto error;
11621162
}

drivers/modem/quectel-bg9x.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
#include "modem_cmd_handler.h"
2525
#include "modem_iface_uart.h"
2626

27-
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0)
27+
#define MDM_UART_DEV DEVICE_DT_GET(DT_INST_BUS(0))
2828
#define MDM_CMD_TIMEOUT K_SECONDS(10)
2929
#define MDM_CMD_CONN_TIMEOUT K_SECONDS(120)
3030
#define MDM_REGISTRATION_TIMEOUT K_SECONDS(180)

drivers/modem/ublox-sara-r4.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ static struct modem_pin modem_pins[] = {
7373
#endif
7474
};
7575

76-
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0)
77-
#define MDM_UART_NODE DT_BUS(DT_DRV_INST(0))
76+
#define MDM_UART_NODE DT_INST_BUS(0)
77+
#define MDM_UART_DEV DEVICE_DT_GET(MDM_UART_NODE)
7878

7979
#define MDM_POWER_ENABLE 1
8080
#define MDM_POWER_DISABLE 0
@@ -2169,7 +2169,7 @@ static int modem_init(const struct device *dev)
21692169
mdata.iface_data.rx_rb_buf = &mdata.iface_rb_buf[0];
21702170
mdata.iface_data.rx_rb_buf_len = sizeof(mdata.iface_rb_buf);
21712171
ret = modem_iface_uart_init(&mctx.iface, &mdata.iface_data,
2172-
MDM_UART_DEV_NAME);
2172+
MDM_UART_DEV);
21732173
if (ret < 0) {
21742174
goto error;
21752175
}

drivers/modem/wncm14a2a.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ static const struct mdm_control_pinconfig pinconfig[] = {
102102
#endif
103103
};
104104

105-
#define MDM_UART_DEV_NAME DT_INST_BUS_LABEL(0)
105+
#define MDM_UART_DEV DEVICE_DT_GET(DT_INST_BUS(0))
106106

107107
#define MDM_BOOT_MODE_SPECIAL 0
108108
#define MDM_BOOT_MODE_NORMAL 1
@@ -1487,7 +1487,7 @@ static int wncm14a2a_init(const struct device *dev)
14871487
ictx.mdm_ctx.data_imei = ictx.mdm_imei;
14881488
#endif
14891489

1490-
ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV_NAME,
1490+
ret = mdm_receiver_register(&ictx.mdm_ctx, MDM_UART_DEV,
14911491
mdm_recv_buf, sizeof(mdm_recv_buf));
14921492
if (ret < 0) {
14931493
LOG_ERR("Error registering modem receiver (%d)!", ret);

0 commit comments

Comments
 (0)