drivers: modem: add support for Quectel EG800Q
Added support for Quectel EG800Q LTE Cat 1bis modem. Signed-off-by: Vytautas Virvičius <vytautas@virvicius.dev>
This commit is contained in:
parent
8708964049
commit
087267a0ff
4 changed files with 86 additions and 3 deletions
|
@ -19,7 +19,8 @@ config MODEM_CELLULAR
|
|||
DT_HAS_U_BLOX_SARA_R5_ENABLED || DT_HAS_SWIR_HL7800_ENABLED || \
|
||||
DT_HAS_TELIT_ME910G1_ENABLED || DT_HAS_TELIT_ME310G1_ENABLED || \
|
||||
DT_HAS_QUECTEL_EG25_G_ENABLED || DT_HAS_NORDIC_NRF91_SLM_ENABLED || \
|
||||
DT_HAS_SQN_GM02S_ENABLED || DT_HAS_U_BLOX_LARA_R6_ENABLED)
|
||||
DT_HAS_SQN_GM02S_ENABLED || DT_HAS_U_BLOX_LARA_R6_ENABLED || \
|
||||
DT_HAS_QUECTEL_EG800Q_ENABLED)
|
||||
help
|
||||
This driver uses the generic 3gpp AT commands, along
|
||||
with the standard protocols CMUX and PPP, to configure
|
||||
|
|
|
@ -525,7 +525,8 @@ MODEM_CHAT_MATCHES_DEFINE(dial_abort_matches,
|
|||
MODEM_CHAT_MATCH("NO CARRIER", "", NULL),
|
||||
MODEM_CHAT_MATCH("NO DIALTONE", "", NULL));
|
||||
|
||||
#if DT_HAS_COMPAT_STATUS_OKAY(swir_hl7800) || DT_HAS_COMPAT_STATUS_OKAY(sqn_gm02s)
|
||||
#if DT_HAS_COMPAT_STATUS_OKAY(swir_hl7800) || DT_HAS_COMPAT_STATUS_OKAY(sqn_gm02s) || \
|
||||
DT_HAS_COMPAT_STATUS_OKAY(quectel_eg800q)
|
||||
MODEM_CHAT_MATCH_DEFINE(connect_match, "CONNECT", "", NULL);
|
||||
#endif
|
||||
|
||||
|
@ -2022,6 +2023,54 @@ MODEM_CHAT_SCRIPT_DEFINE(quectel_eg25_g_periodic_chat_script,
|
|||
modem_cellular_chat_callback_handler, 4);
|
||||
#endif
|
||||
|
||||
#if DT_HAS_COMPAT_STATUS_OKAY(quectel_eg800q)
|
||||
MODEM_CHAT_SCRIPT_CMDS_DEFINE(quectel_eg800q_init_chat_script_cmds,
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("ATE0", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CFUN?", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CFUN=4", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CMEE=1", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CEREG=1", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CEREG?", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CGSN", imei_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CGMM", cgmm_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CGMI", cgmi_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CGMR", cgmr_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CIMI", cimi_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CMUX=0,0,5,127", ok_match));
|
||||
|
||||
MODEM_CHAT_SCRIPT_DEFINE(quectel_eg800q_init_chat_script, quectel_eg800q_init_chat_script_cmds,
|
||||
abort_matches, modem_cellular_chat_callback_handler, 30);
|
||||
|
||||
MODEM_CHAT_SCRIPT_CMDS_DEFINE(quectel_eg800q_dial_chat_script_cmds,
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP_MULT("AT+CGACT=0,1", allow_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CGDCONT=1,\"IP\","
|
||||
"\""CONFIG_MODEM_CELLULAR_APN"\"",
|
||||
ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CFUN=1", ok_match),
|
||||
/* this at command is required as a small delay before performing
|
||||
* dialing, otherwise we get 'NO CARRIER' and abort
|
||||
*/
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP_NONE("AT", 500),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("ATD*99***1#", connect_match),);
|
||||
|
||||
MODEM_CHAT_SCRIPT_DEFINE(quectel_eg800q_dial_chat_script, quectel_eg800q_dial_chat_script_cmds,
|
||||
dial_abort_matches, modem_cellular_chat_callback_handler, 10);
|
||||
|
||||
MODEM_CHAT_SCRIPT_CMDS_DEFINE(quectel_eg800q_periodic_chat_script_cmds,
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CEREG?", ok_match),
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP("AT+CSQ", csq_match));
|
||||
|
||||
MODEM_CHAT_SCRIPT_DEFINE(quectel_eg800q_periodic_chat_script,
|
||||
quectel_eg800q_periodic_chat_script_cmds, abort_matches,
|
||||
modem_cellular_chat_callback_handler, 4);
|
||||
#endif
|
||||
|
||||
#if DT_HAS_COMPAT_STATUS_OKAY(simcom_sim7080)
|
||||
MODEM_CHAT_SCRIPT_CMDS_DEFINE(simcom_sim7080_init_chat_script_cmds,
|
||||
MODEM_CHAT_SCRIPT_CMD_RESP_NONE("AT", 100),
|
||||
|
@ -2551,6 +2600,25 @@ MODEM_CHAT_SCRIPT_DEFINE(sqn_gm02s_periodic_chat_script,
|
|||
&quectel_eg25_g_dial_chat_script, \
|
||||
&quectel_eg25_g_periodic_chat_script, NULL)
|
||||
|
||||
#define MODEM_CELLULAR_DEVICE_QUECTEL_EG800Q(inst) \
|
||||
MODEM_PPP_DEFINE(MODEM_CELLULAR_INST_NAME(ppp, inst), NULL, 98, 1500, 64); \
|
||||
\
|
||||
static struct modem_cellular_data MODEM_CELLULAR_INST_NAME(data, inst) = { \
|
||||
.chat_delimiter = "\r", \
|
||||
.chat_filter = "\n", \
|
||||
.ppp = &MODEM_CELLULAR_INST_NAME(ppp, inst), \
|
||||
}; \
|
||||
\
|
||||
MODEM_CELLULAR_DEFINE_AND_INIT_USER_PIPES(inst, \
|
||||
(user_pipe_0, 3), \
|
||||
(user_pipe_1, 4)) \
|
||||
\
|
||||
MODEM_CELLULAR_DEFINE_INSTANCE(inst, 1500, 500, 15000, 5000, false, \
|
||||
NULL, \
|
||||
&quectel_eg800q_init_chat_script, \
|
||||
&quectel_eg800q_dial_chat_script, \
|
||||
&quectel_eg800q_periodic_chat_script, NULL)
|
||||
|
||||
#define MODEM_CELLULAR_DEVICE_SIMCOM_SIM7080(inst) \
|
||||
MODEM_PPP_DEFINE(MODEM_CELLULAR_INST_NAME(ppp, inst), NULL, 98, 1500, 64); \
|
||||
\
|
||||
|
@ -2729,6 +2797,10 @@ DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_QUECTEL_BG95)
|
|||
DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_QUECTEL_EG25_G)
|
||||
#undef DT_DRV_COMPAT
|
||||
|
||||
#define DT_DRV_COMPAT quectel_eg800q
|
||||
DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_QUECTEL_EG800Q)
|
||||
#undef DT_DRV_COMPAT
|
||||
|
||||
#define DT_DRV_COMPAT simcom_sim7080
|
||||
DT_INST_FOREACH_STATUS_OKAY(MODEM_CELLULAR_DEVICE_SIMCOM_SIM7080)
|
||||
#undef DT_DRV_COMPAT
|
||||
|
|
10
dts/bindings/modem/quectel,eg800q.yaml
Normal file
10
dts/bindings/modem/quectel,eg800q.yaml
Normal file
|
@ -0,0 +1,10 @@
|
|||
description: Quectel EG800Q modem
|
||||
|
||||
compatible: "quectel,eg800q"
|
||||
|
||||
include: uart-device.yaml
|
||||
|
||||
properties:
|
||||
mdm-power-gpios:
|
||||
type: phandle-array
|
||||
required: true
|
|
@ -35,7 +35,7 @@ config MODEM_CMUX_DEFAULT_MTU_127
|
|||
DT_HAS_SIMCOM_SIM7080_ENABLED || DT_HAS_U_BLOX_SARA_R4_ENABLED || \
|
||||
DT_HAS_U_BLOX_SARA_R5_ENABLED || DT_HAS_SWIR_HL7800_ENABLED || \
|
||||
DT_HAS_TELIT_ME910G1_ENABLED || DT_HAS_TELIT_ME310G1_ENABLED || \
|
||||
DT_HAS_SQN_GM02S_ENABLED)
|
||||
DT_HAS_SQN_GM02S_ENABLED || DT_HAS_QUECTEL_EG800Q_ENABLED)
|
||||
help
|
||||
Use the default MTU size of 127 bytes for the CMUX module on certain modems.
|
||||
This must match the AT+CMUX commands in the modem_cellular driver.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue