gnss: rename u-blox M10 driver to M8

The driver in tree is for u-blox M8 devices, not M10. The M10 series
devices (from Protocol Version 23.01) use a different, non backwards
compatible interface for configuring the modem behaviour.

Of the two boards tested in the original PR, the "VMU RT1170" is
explicitly listed as having a u-blox NEO-M8N modem, while I have
been unable to find any information online about the "FMURT6" board.

Leaving the naming as-is will cause problems when M10 drivers are
contributed.

Signed-off-by: Jordan Yates <jordan@embeint.com>
This commit is contained in:
Jordan Yates 2024-07-29 17:08:39 +10:00 committed by Anas Nashif
commit d97cc46bdd
11 changed files with 184 additions and 180 deletions

View file

@ -71,6 +71,10 @@ Enhanced Serial Peripheral Interface (eSPI)
GNSS GNSS
==== ====
* The u-blox M10 driver has been renamed to M8 as it only supports M8 based devices.
Existing devicetree compatibles should be updated to :dtcompatible:`u-blox,m8`, and Kconfig
symbols swapped to :kconfig:option:`CONFIG_GNSS_U_BLOX_M8`.
Input Input
===== =====

View file

@ -861,7 +861,7 @@ Drivers and Sensors
* Added GNSS device driver API test suite. * Added GNSS device driver API test suite.
* Added support for the u-blox UBX protocol. * Added support for the u-blox UBX protocol.
* Added device driver for the u-blox M10 GNSS modem (:dtcompatible:`u-blox,m10`). * Added device driver for the u-blox M8 GNSS modem (:dtcompatible:`u-blox,m8`).
* Added device driver for the Luatos Air530z GNSS modem (:dtcompatible:`luatos,air530z`). * Added device driver for the Luatos Air530z GNSS modem (:dtcompatible:`luatos,air530z`).
* GPIO * GPIO

View file

@ -10,6 +10,6 @@ zephyr_library_sources_ifdef(CONFIG_GNSS_NMEA0183 gnss_nmea0183.c)
zephyr_library_sources_ifdef(CONFIG_GNSS_NMEA0183_MATCH gnss_nmea0183_match.c) zephyr_library_sources_ifdef(CONFIG_GNSS_NMEA0183_MATCH gnss_nmea0183_match.c)
zephyr_library_sources_ifdef(CONFIG_GNSS_NMEA_GENERIC gnss_nmea_generic.c) zephyr_library_sources_ifdef(CONFIG_GNSS_NMEA_GENERIC gnss_nmea_generic.c)
zephyr_library_sources_ifdef(CONFIG_GNSS_QUECTEL_LCX6G gnss_quectel_lcx6g.c) zephyr_library_sources_ifdef(CONFIG_GNSS_QUECTEL_LCX6G gnss_quectel_lcx6g.c)
zephyr_library_sources_ifdef(CONFIG_GNSS_U_BLOX_M10 gnss_u_blox_m10.c) zephyr_library_sources_ifdef(CONFIG_GNSS_U_BLOX_M8 gnss_u_blox_m8.c)
zephyr_library_sources_ifdef(CONFIG_GNSS_U_BLOX_PROTOCOL gnss_u_blox_protocol/gnss_u_blox_protocol.c) zephyr_library_sources_ifdef(CONFIG_GNSS_U_BLOX_PROTOCOL gnss_u_blox_protocol/gnss_u_blox_protocol.c)
zephyr_library_sources_ifdef(CONFIG_GNSS_LUATOS_AIR530Z gnss_luatos_air530z.c) zephyr_library_sources_ifdef(CONFIG_GNSS_LUATOS_AIR530Z gnss_luatos_air530z.c)

View file

@ -82,7 +82,7 @@ source "subsys/logging/Kconfig.template.log_config"
rsource "Kconfig.emul" rsource "Kconfig.emul"
rsource "Kconfig.generic" rsource "Kconfig.generic"
rsource "Kconfig.quectel_lcx6g" rsource "Kconfig.quectel_lcx6g"
rsource "Kconfig.u_blox_m10" rsource "Kconfig.u_blox_m8"
rsource "Kconfig.luatos_air530z" rsource "Kconfig.luatos_air530z"
endif endif

View file

@ -1,11 +1,11 @@
# Copyright 2024 NXP # Copyright 2024 NXP
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
config GNSS_U_BLOX_M10 config GNSS_U_BLOX_M8
bool "U-BLOX M10 GNSS Module" bool "U-BLOX M8 GNSS Module"
default y default y
depends on GNSS depends on GNSS
depends on DT_HAS_U_BLOX_M10_ENABLED depends on DT_HAS_U_BLOX_M8_ENABLED
depends on GNSS_REFERENCE_FRAME_WGS84 depends on GNSS_REFERENCE_FRAME_WGS84
select MODEM_MODULES select MODEM_MODULES
select MODEM_BACKEND_UART select MODEM_BACKEND_UART
@ -17,9 +17,9 @@ config GNSS_U_BLOX_M10
select GNSS_U_BLOX_PROTOCOL select GNSS_U_BLOX_PROTOCOL
select UART_USE_RUNTIME_CONFIGURE select UART_USE_RUNTIME_CONFIGURE
help help
Enable U-BLOX M10 GNSS modem driver. Enable U-BLOX M8 GNSS modem driver.
config GNSS_U_BLOX_M10_SATELLITES_COUNT config GNSS_U_BLOX_M8_SATELLITES_COUNT
int "Maximum satellite count" int "Maximum satellite count"
depends on GNSS_SATELLITES depends on GNSS_SATELLITES
default 24 default 24

View file

@ -21,9 +21,9 @@
#include "gnss_u_blox_protocol/gnss_u_blox_protocol.h" #include "gnss_u_blox_protocol/gnss_u_blox_protocol.h"
#include <zephyr/logging/log.h> #include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(ubx_m10, CONFIG_GNSS_LOG_LEVEL); LOG_MODULE_REGISTER(ubx_m8, CONFIG_GNSS_LOG_LEVEL);
#define DT_DRV_COMPAT u_blox_m10 #define DT_DRV_COMPAT u_blox_m8
#define UART_RECV_BUF_SZ 128 #define UART_RECV_BUF_SZ 128
#define UART_TRNF_BUF_SZ 128 #define UART_TRNF_BUF_SZ 128
@ -38,20 +38,20 @@ LOG_MODULE_REGISTER(ubx_m10, CONFIG_GNSS_LOG_LEVEL);
#define UBX_FRM_BUF_SZ UBX_FRM_SZ_MAX #define UBX_FRM_BUF_SZ UBX_FRM_SZ_MAX
#define MODEM_UBX_SCRIPT_TIMEOUT_MS 1000 #define MODEM_UBX_SCRIPT_TIMEOUT_MS 1000
#define UBX_M10_SCRIPT_RETRY_DEFAULT 10 #define UBX_M8_SCRIPT_RETRY_DEFAULT 10
#define UBX_M10_GNSS_SYS_CNT 8 #define UBX_M8_GNSS_SYS_CNT 8
#define UBX_M10_GNSS_SUPP_SYS_CNT 6 #define UBX_M8_GNSS_SUPP_SYS_CNT 6
struct ubx_m10_config { struct ubx_m8_config {
const struct device *uart; const struct device *uart;
const uint32_t uart_baudrate; const uint32_t uart_baudrate;
}; };
struct ubx_m10_data { struct ubx_m8_data {
struct gnss_nmea0183_match_data match_data; struct gnss_nmea0183_match_data match_data;
#if CONFIG_GNSS_SATELLITES #if CONFIG_GNSS_SATELLITES
struct gnss_satellite satellites[CONFIG_GNSS_U_BLOX_M10_SATELLITES_COUNT]; struct gnss_satellite satellites[CONFIG_GNSS_U_BLOX_M8_SATELLITES_COUNT];
#endif #endif
/* UART backend */ /* UART backend */
@ -87,9 +87,9 @@ MODEM_CHAT_MATCHES_DEFINE(unsol_matches,
#endif #endif
); );
static int ubx_m10_resume(const struct device *dev) static int ubx_m8_resume(const struct device *dev)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
int ret; int ret;
ret = modem_pipe_open(data->uart_pipe, K_SECONDS(10)); ret = modem_pipe_open(data->uart_pipe, K_SECONDS(10));
@ -106,16 +106,16 @@ static int ubx_m10_resume(const struct device *dev)
return ret; return ret;
} }
static int ubx_m10_turn_off(const struct device *dev) static int ubx_m8_turn_off(const struct device *dev)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
return modem_pipe_close(data->uart_pipe, K_SECONDS(10)); return modem_pipe_close(data->uart_pipe, K_SECONDS(10));
} }
static int ubx_m10_init_nmea0183_match(const struct device *dev) static int ubx_m8_init_nmea0183_match(const struct device *dev)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
const struct gnss_nmea0183_match_config match_config = { const struct gnss_nmea0183_match_config match_config = {
.gnss = dev, .gnss = dev,
@ -128,10 +128,10 @@ static int ubx_m10_init_nmea0183_match(const struct device *dev)
return gnss_nmea0183_match_init(&data->match_data, &match_config); return gnss_nmea0183_match_init(&data->match_data, &match_config);
} }
static void ubx_m10_init_pipe(const struct device *dev) static void ubx_m8_init_pipe(const struct device *dev)
{ {
const struct ubx_m10_config *cfg = dev->config; const struct ubx_m8_config *cfg = dev->config;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
const struct modem_backend_uart_config uart_backend_config = { const struct modem_backend_uart_config uart_backend_config = {
.uart = cfg->uart, .uart = cfg->uart,
@ -144,18 +144,18 @@ static void ubx_m10_init_pipe(const struct device *dev)
data->uart_pipe = modem_backend_uart_init(&data->uart_backend, &uart_backend_config); data->uart_pipe = modem_backend_uart_init(&data->uart_backend, &uart_backend_config);
} }
static uint8_t ubx_m10_char_delimiter[] = {'\r', '\n'}; static uint8_t ubx_m8_char_delimiter[] = {'\r', '\n'};
static int ubx_m10_init_chat(const struct device *dev) static int ubx_m8_init_chat(const struct device *dev)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
const struct modem_chat_config chat_config = { const struct modem_chat_config chat_config = {
.user_data = data, .user_data = data,
.receive_buf = data->chat_receive_buf, .receive_buf = data->chat_receive_buf,
.receive_buf_size = sizeof(data->chat_receive_buf), .receive_buf_size = sizeof(data->chat_receive_buf),
.delimiter = ubx_m10_char_delimiter, .delimiter = ubx_m8_char_delimiter,
.delimiter_size = ARRAY_SIZE(ubx_m10_char_delimiter), .delimiter_size = ARRAY_SIZE(ubx_m8_char_delimiter),
.filter = NULL, .filter = NULL,
.filter_size = 0, .filter_size = 0,
.argv = data->chat_argv, .argv = data->chat_argv,
@ -167,9 +167,9 @@ static int ubx_m10_init_chat(const struct device *dev)
return modem_chat_init(&data->chat, &chat_config); return modem_chat_init(&data->chat, &chat_config);
} }
static int ubx_m10_init_ubx(const struct device *dev) static int ubx_m8_init_ubx(const struct device *dev)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
const struct modem_ubx_config ubx_config = { const struct modem_ubx_config ubx_config = {
.user_data = data, .user_data = data,
@ -189,9 +189,9 @@ static int ubx_m10_init_ubx(const struct device *dev)
* @returns 0 if successful * @returns 0 if successful
* @returns negative errno code if failure * @returns negative errno code if failure
*/ */
static int ubx_m10_modem_module_change(const struct device *dev, bool change_from_to) static int ubx_m8_modem_module_change(const struct device *dev, bool change_from_to)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
int ret; int ret;
if (change_from_to == 0) { if (change_from_to == 0) {
@ -209,13 +209,13 @@ static int ubx_m10_modem_module_change(const struct device *dev, bool change_fro
return ret; return ret;
} }
static int ubx_m10_modem_ubx_run_script(const struct device *dev, static int ubx_m8_modem_ubx_run_script(const struct device *dev,
struct modem_ubx_script *modem_ubx_script_tx) struct modem_ubx_script *modem_ubx_script_tx)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
int ret; int ret;
ret = ubx_m10_modem_module_change(dev, 0); ret = ubx_m8_modem_module_change(dev, 0);
if (ret < 0) { if (ret < 0) {
goto reset_modem_module; goto reset_modem_module;
} }
@ -223,33 +223,33 @@ static int ubx_m10_modem_ubx_run_script(const struct device *dev,
ret = modem_ubx_run_script(&data->ubx, modem_ubx_script_tx); ret = modem_ubx_run_script(&data->ubx, modem_ubx_script_tx);
reset_modem_module: reset_modem_module:
ret |= ubx_m10_modem_module_change(dev, 1); ret |= ubx_m8_modem_module_change(dev, 1);
return ret; return ret;
} }
static void ubx_m10_modem_ubx_script_fill(const struct device *dev) static void ubx_m8_modem_ubx_script_fill(const struct device *dev)
{ {
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
data->script.request = (struct ubx_frame *)data->request_buf; data->script.request = (struct ubx_frame *)data->request_buf;
data->script.response = (struct ubx_frame *)data->response_buf; data->script.response = (struct ubx_frame *)data->response_buf;
data->script.match = (struct ubx_frame *)data->match_buf; data->script.match = (struct ubx_frame *)data->match_buf;
data->script.retry_count = UBX_M10_SCRIPT_RETRY_DEFAULT; data->script.retry_count = UBX_M8_SCRIPT_RETRY_DEFAULT;
data->script.timeout = K_MSEC(MODEM_UBX_SCRIPT_TIMEOUT_MS); data->script.timeout = K_MSEC(MODEM_UBX_SCRIPT_TIMEOUT_MS);
} }
static int ubx_m10_modem_ubx_script_init(const struct device *dev, void *payload, uint16_t payld_sz, static int ubx_m8_modem_ubx_script_init(const struct device *dev, void *payload, uint16_t payld_sz,
enum ubx_msg_class msg_cls, enum ubx_config_message msg_id) enum ubx_msg_class msg_cls, enum ubx_config_message msg_id)
{ {
int ret; int ret;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_ack_payload match_payload = { struct ubx_cfg_ack_payload match_payload = {
.message_class = msg_cls, .message_class = msg_cls,
.message_id = msg_id, .message_id = msg_id,
}; };
ubx_m10_modem_ubx_script_fill(dev); ubx_m8_modem_ubx_script_fill(dev);
ret = ubx_create_and_validate_frame(data->match_buf, sizeof(data->match_buf), UBX_CLASS_ACK, ret = ubx_create_and_validate_frame(data->match_buf, sizeof(data->match_buf), UBX_CLASS_ACK,
UBX_ACK_ACK, &match_payload, UBX_CFG_ACK_PAYLOAD_SZ); UBX_ACK_ACK, &match_payload, UBX_CFG_ACK_PAYLOAD_SZ);
@ -263,24 +263,24 @@ static int ubx_m10_modem_ubx_script_init(const struct device *dev, void *payload
return ret; return ret;
} }
static int ubx_m10_ubx_cfg_rate(const struct device *dev) static int ubx_m8_ubx_cfg_rate(const struct device *dev)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_rate_payload payload; struct ubx_cfg_rate_payload payload;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
ubx_cfg_rate_payload_default(&payload); ubx_cfg_rate_payload_default(&payload);
ret = ubx_m10_modem_ubx_script_init(dev, &payload, UBX_CFG_RATE_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, &payload, UBX_CFG_RATE_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_RATE); UBX_CFG_RATE);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
unlock: unlock:
k_spin_unlock(&data->lock, key); k_spin_unlock(&data->lock, key);
@ -288,12 +288,12 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_ubx_cfg_prt_set(const struct device *dev, uint32_t target_baudrate, static int ubx_m8_ubx_cfg_prt_set(const struct device *dev, uint32_t target_baudrate,
uint8_t retry) uint8_t retry)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_prt_set_payload payload; struct ubx_cfg_prt_set_payload payload;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
@ -301,7 +301,7 @@ static int ubx_m10_ubx_cfg_prt_set(const struct device *dev, uint32_t target_bau
ubx_cfg_prt_set_payload_default(&payload); ubx_cfg_prt_set_payload_default(&payload);
payload.baudrate = target_baudrate; payload.baudrate = target_baudrate;
ret = ubx_m10_modem_ubx_script_init(dev, &payload, UBX_CFG_PRT_SET_PAYLOAD_SZ, ret = ubx_m8_modem_ubx_script_init(dev, &payload, UBX_CFG_PRT_SET_PAYLOAD_SZ,
UBX_CLASS_CFG, UBX_CFG_PRT); UBX_CLASS_CFG, UBX_CFG_PRT);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
@ -313,7 +313,7 @@ static int ubx_m10_ubx_cfg_prt_set(const struct device *dev, uint32_t target_bau
* which we will miss. Hence, we need to change uart's baudrate after sending the frame * which we will miss. Hence, we need to change uart's baudrate after sending the frame
* (in order to receive response as well), which we are not doing right now. * (in order to receive response as well), which we are not doing right now.
*/ */
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
unlock: unlock:
k_spin_unlock(&data->lock, key); k_spin_unlock(&data->lock, key);
@ -321,11 +321,11 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_ubx_cfg_rst(const struct device *dev, uint8_t reset_mode) static int ubx_m8_ubx_cfg_rst(const struct device *dev, uint8_t reset_mode)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_rst_payload payload; struct ubx_cfg_rst_payload payload;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
@ -335,14 +335,14 @@ static int ubx_m10_ubx_cfg_rst(const struct device *dev, uint8_t reset_mode)
payload.nav_bbr_mask = UBX_CFG_RST_NAV_BBR_MASK_HOT_START; payload.nav_bbr_mask = UBX_CFG_RST_NAV_BBR_MASK_HOT_START;
payload.reset_mode = reset_mode; payload.reset_mode = reset_mode;
ret = ubx_m10_modem_ubx_script_init(dev, &payload, UBX_CFG_RST_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, &payload, UBX_CFG_RST_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_RST); UBX_CFG_RST);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
data->script.match = NULL; data->script.match = NULL;
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -357,17 +357,17 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_set_uart_baudrate(const struct device *dev, uint32_t baudrate) static int ubx_m8_set_uart_baudrate(const struct device *dev, uint32_t baudrate)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
const struct ubx_m10_config *config = dev->config; const struct ubx_m8_config *config = dev->config;
struct uart_config uart_cfg; struct uart_config uart_cfg;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
ret = ubx_m10_turn_off(dev); ret = ubx_m8_turn_off(dev);
if (ret < 0) { if (ret < 0) {
goto reset_and_unlock; goto reset_and_unlock;
} }
@ -381,14 +381,14 @@ static int ubx_m10_set_uart_baudrate(const struct device *dev, uint32_t baudrate
ret = uart_configure(config->uart, &uart_cfg); ret = uart_configure(config->uart, &uart_cfg);
reset_and_unlock: reset_and_unlock:
ret |= ubx_m10_resume(dev); ret |= ubx_m8_resume(dev);
k_spin_unlock(&data->lock, key); k_spin_unlock(&data->lock, key);
return ret; return ret;
} }
static bool ubx_m10_validate_baudrate(const struct device *dev, uint32_t baudrate) static bool ubx_m8_validate_baudrate(const struct device *dev, uint32_t baudrate)
{ {
for (int i = 0; i < UBX_BAUDRATE_COUNT; ++i) { for (int i = 0; i < UBX_BAUDRATE_COUNT; ++i) {
if (baudrate == ubx_baudrate[i]) { if (baudrate == ubx_baudrate[i]) {
@ -400,16 +400,16 @@ static bool ubx_m10_validate_baudrate(const struct device *dev, uint32_t baudrat
} }
/* This function will return failure if "target_baudrate" != device's current baudrate. /* This function will return failure if "target_baudrate" != device's current baudrate.
* Refer the function description of ubx_m10_ubx_cfg_prt_set for a detailed explanation. * Refer the function description of ubx_m8_ubx_cfg_prt_set for a detailed explanation.
*/ */
static int ubx_m10_configure_gnss_device_baudrate_prerequisite(const struct device *dev) static int ubx_m8_configure_gnss_device_baudrate_prerequisite(const struct device *dev)
{ {
/* Retry = 1 should be enough, but setting 2 just to be safe. */ /* Retry = 1 should be enough, but setting 2 just to be safe. */
int ret, retry = 2; int ret, retry = 2;
const struct ubx_m10_config *config = dev->config; const struct ubx_m8_config *config = dev->config;
uint32_t target_baudrate = config->uart_baudrate; uint32_t target_baudrate = config->uart_baudrate;
ret = ubx_m10_validate_baudrate(dev, target_baudrate); ret = ubx_m8_validate_baudrate(dev, target_baudrate);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
@ -420,20 +420,20 @@ static int ubx_m10_configure_gnss_device_baudrate_prerequisite(const struct devi
*/ */
for (int i = 0; i < UBX_BAUDRATE_COUNT; ++i) { for (int i = 0; i < UBX_BAUDRATE_COUNT; ++i) {
/* Set baudrate of UART pipe as ubx_baudrate[i]. */ /* Set baudrate of UART pipe as ubx_baudrate[i]. */
ret = ubx_m10_set_uart_baudrate(dev, ubx_baudrate[i]); ret = ubx_m8_set_uart_baudrate(dev, ubx_baudrate[i]);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
/* Try setting baudrate of device as target_baudrate. */ /* Try setting baudrate of device as target_baudrate. */
ret = ubx_m10_ubx_cfg_prt_set(dev, target_baudrate, retry); ret = ubx_m8_ubx_cfg_prt_set(dev, target_baudrate, retry);
if (ret == 0) { if (ret == 0) {
break; break;
} }
} }
/* Reset baudrate of UART pipe as target_baudrate. */ /* Reset baudrate of UART pipe as target_baudrate. */
ret = ubx_m10_set_uart_baudrate(dev, target_baudrate); ret = ubx_m8_set_uart_baudrate(dev, target_baudrate);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
@ -441,18 +441,18 @@ static int ubx_m10_configure_gnss_device_baudrate_prerequisite(const struct devi
return 0; return 0;
} }
static int ubx_m10_configure_gnss_device_baudrate(const struct device *dev) static int ubx_m8_configure_gnss_device_baudrate(const struct device *dev)
{ {
int ret; int ret;
const struct ubx_m10_config *config = dev->config; const struct ubx_m8_config *config = dev->config;
uint32_t target_baudrate = config->uart_baudrate; uint32_t target_baudrate = config->uart_baudrate;
ret = ubx_m10_validate_baudrate(dev, target_baudrate); ret = ubx_m8_validate_baudrate(dev, target_baudrate);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
ret = ubx_m10_ubx_cfg_prt_set(dev, target_baudrate, UBX_M10_SCRIPT_RETRY_DEFAULT); ret = ubx_m8_ubx_cfg_prt_set(dev, target_baudrate, UBX_M8_SCRIPT_RETRY_DEFAULT);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
@ -460,11 +460,11 @@ static int ubx_m10_configure_gnss_device_baudrate(const struct device *dev)
return 0; return 0;
} }
static int ubx_m10_configure_messages(const struct device *dev) static int ubx_m8_configure_messages(const struct device *dev)
{ {
int ret = 0; int ret = 0;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_msg_payload payload; struct ubx_cfg_msg_payload payload;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
@ -477,13 +477,13 @@ static int ubx_m10_configure_messages(const struct device *dev)
for (int i = 0; i < sizeof(message_enable); ++i) { for (int i = 0; i < sizeof(message_enable); ++i) {
payload.message_id = message_enable[i]; payload.message_id = message_enable[i];
ret = ubx_m10_modem_ubx_script_init(dev, &payload, UBX_CFG_MSG_PAYLOAD_SZ, ret = ubx_m8_modem_ubx_script_init(dev, &payload, UBX_CFG_MSG_PAYLOAD_SZ,
UBX_CLASS_CFG, UBX_CFG_MSG); UBX_CLASS_CFG, UBX_CFG_MSG);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -497,13 +497,13 @@ static int ubx_m10_configure_messages(const struct device *dev)
for (int i = 0; i < sizeof(message_disable); ++i) { for (int i = 0; i < sizeof(message_disable); ++i) {
payload.message_id = message_disable[i]; payload.message_id = message_disable[i];
ret = ubx_m10_modem_ubx_script_init(dev, &payload, UBX_CFG_MSG_PAYLOAD_SZ, ret = ubx_m8_modem_ubx_script_init(dev, &payload, UBX_CFG_MSG_PAYLOAD_SZ,
UBX_CLASS_CFG, UBX_CFG_MSG); UBX_CLASS_CFG, UBX_CFG_MSG);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -515,7 +515,7 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_navigation_mode_to_ubx_dynamic_model(const struct device *dev, static int ubx_m8_navigation_mode_to_ubx_dynamic_model(const struct device *dev,
enum gnss_navigation_mode mode) enum gnss_navigation_mode mode)
{ {
switch (mode) { switch (mode) {
@ -532,7 +532,7 @@ static int ubx_m10_navigation_mode_to_ubx_dynamic_model(const struct device *dev
} }
} }
static int ubx_m10_ubx_dynamic_model_to_navigation_mode(const struct device *dev, static int ubx_m8_ubx_dynamic_model_to_navigation_mode(const struct device *dev,
enum ubx_dynamic_model dynamic_model) enum ubx_dynamic_model dynamic_model)
{ {
switch (dynamic_model) { switch (dynamic_model) {
@ -561,31 +561,31 @@ static int ubx_m10_ubx_dynamic_model_to_navigation_mode(const struct device *dev
} }
} }
static int ubx_m10_set_navigation_mode(const struct device *dev, enum gnss_navigation_mode mode) static int ubx_m8_set_navigation_mode(const struct device *dev, enum gnss_navigation_mode mode)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_nav5_payload payload; struct ubx_cfg_nav5_payload payload;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
ubx_cfg_nav5_payload_default(&payload); ubx_cfg_nav5_payload_default(&payload);
ret = ubx_m10_navigation_mode_to_ubx_dynamic_model(dev, mode); ret = ubx_m8_navigation_mode_to_ubx_dynamic_model(dev, mode);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
payload.dyn_model = ret; payload.dyn_model = ret;
ret = ubx_m10_modem_ubx_script_init(dev, &payload, UBX_CFG_NAV5_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, &payload, UBX_CFG_NAV5_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_NAV5); UBX_CFG_NAV5);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -598,22 +598,22 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_get_navigation_mode(const struct device *dev, enum gnss_navigation_mode *mode) static int ubx_m8_get_navigation_mode(const struct device *dev, enum gnss_navigation_mode *mode)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
enum ubx_dynamic_model dynamic_model; enum ubx_dynamic_model dynamic_model;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
ret = ubx_m10_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_NAV5); UBX_CFG_NAV5);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -621,7 +621,7 @@ static int ubx_m10_get_navigation_mode(const struct device *dev, enum gnss_navig
struct ubx_frame *response = data->script.response; struct ubx_frame *response = data->script.response;
dynamic_model = ((struct ubx_cfg_nav5_payload *)response->payload_and_checksum)->dyn_model; dynamic_model = ((struct ubx_cfg_nav5_payload *)response->payload_and_checksum)->dyn_model;
ret = ubx_m10_ubx_dynamic_model_to_navigation_mode(dev, dynamic_model); ret = ubx_m8_ubx_dynamic_model_to_navigation_mode(dev, dynamic_model);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -634,7 +634,7 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_get_supported_systems(const struct device *dev, gnss_systems_t *systems) static int ubx_m8_get_supported_systems(const struct device *dev, gnss_systems_t *systems)
{ {
*systems = (GNSS_SYSTEM_GPS | GNSS_SYSTEM_GLONASS | GNSS_SYSTEM_GALILEO | *systems = (GNSS_SYSTEM_GPS | GNSS_SYSTEM_GLONASS | GNSS_SYSTEM_GALILEO |
GNSS_SYSTEM_BEIDOU | GNSS_SYSTEM_SBAS | GNSS_SYSTEM_QZSS); GNSS_SYSTEM_BEIDOU | GNSS_SYSTEM_SBAS | GNSS_SYSTEM_QZSS);
@ -642,7 +642,7 @@ static int ubx_m10_get_supported_systems(const struct device *dev, gnss_systems_
return 0; return 0;
} }
static int ubx_m10_ubx_gnss_id_to_gnss_system(const struct device *dev, enum ubx_gnss_id gnss_id) static int ubx_m8_ubx_gnss_id_to_gnss_system(const struct device *dev, enum ubx_gnss_id gnss_id)
{ {
switch (gnss_id) { switch (gnss_id) {
case UBX_GNSS_ID_GPS: case UBX_GNSS_ID_GPS:
@ -662,7 +662,7 @@ static int ubx_m10_ubx_gnss_id_to_gnss_system(const struct device *dev, enum ubx
}; };
} }
static int ubx_m10_config_block_fill(const struct device *dev, gnss_systems_t gnss_system, static int ubx_m8_config_block_fill(const struct device *dev, gnss_systems_t gnss_system,
struct ubx_cfg_gnss_payload *payload, uint8_t index, struct ubx_cfg_gnss_payload *payload, uint8_t index,
uint32_t enable) uint32_t enable)
{ {
@ -702,24 +702,24 @@ static int ubx_m10_config_block_fill(const struct device *dev, gnss_systems_t gn
return 0; return 0;
} }
static int ubx_m10_set_enabled_systems(const struct device *dev, gnss_systems_t systems) static int ubx_m8_set_enabled_systems(const struct device *dev, gnss_systems_t systems)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
struct ubx_cfg_gnss_payload *payload; struct ubx_cfg_gnss_payload *payload;
/* Get number of tracking channels for each supported gnss system by sending CFG-GNSS. */ /* Get number of tracking channels for each supported gnss system by sending CFG-GNSS. */
ret = ubx_m10_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_GNSS); UBX_CFG_GNSS);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -732,7 +732,7 @@ static int ubx_m10_set_enabled_systems(const struct device *dev, gnss_systems_t
*/ */
payload = (struct ubx_cfg_gnss_payload *) response->payload_and_checksum; payload = (struct ubx_cfg_gnss_payload *) response->payload_and_checksum;
for (int i = 0; i < payload->num_config_blocks; ++i) { for (int i = 0; i < payload->num_config_blocks; ++i) {
ret = ubx_m10_ubx_gnss_id_to_gnss_system(dev, payload->config_blocks[i].gnss_id); ret = ubx_m8_ubx_gnss_id_to_gnss_system(dev, payload->config_blocks[i].gnss_id);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -751,32 +751,32 @@ static int ubx_m10_set_enabled_systems(const struct device *dev, gnss_systems_t
/* Prepare payload (payload) for sending CFG-GNSS for enabling the gnss systems. */ /* Prepare payload (payload) for sending CFG-GNSS for enabling the gnss systems. */
payload = malloc(sizeof(*payload) + payload = malloc(sizeof(*payload) +
sizeof(struct ubx_cfg_gnss_payload_config_block) * UBX_M10_GNSS_SUPP_SYS_CNT); sizeof(struct ubx_cfg_gnss_payload_config_block) * UBX_M8_GNSS_SUPP_SYS_CNT);
if (!payload) { if (!payload) {
ret = -ENOMEM; ret = -ENOMEM;
goto unlock; goto unlock;
} }
payload->num_config_blocks = UBX_M10_GNSS_SUPP_SYS_CNT; payload->num_config_blocks = UBX_M8_GNSS_SUPP_SYS_CNT;
ubx_cfg_gnss_payload_default(payload); ubx_cfg_gnss_payload_default(payload);
uint8_t filled_blocks = 0; uint8_t filled_blocks = 0;
gnss_systems_t supported_systems; gnss_systems_t supported_systems;
ret = ubx_m10_get_supported_systems(dev, &supported_systems); ret = ubx_m8_get_supported_systems(dev, &supported_systems);
if (ret < 0) { if (ret < 0) {
goto free_and_unlock; goto free_and_unlock;
} }
for (int i = 0; i < UBX_M10_GNSS_SYS_CNT; ++i) { for (int i = 0; i < UBX_M8_GNSS_SYS_CNT; ++i) {
gnss_systems_t gnss_system = 1 << i; gnss_systems_t gnss_system = 1 << i;
if (gnss_system & supported_systems) { if (gnss_system & supported_systems) {
uint32_t enable = (systems & gnss_system) ? uint32_t enable = (systems & gnss_system) ?
UBX_CFG_GNSS_FLAG_ENABLE : UBX_CFG_GNSS_FLAG_DISABLE; UBX_CFG_GNSS_FLAG_ENABLE : UBX_CFG_GNSS_FLAG_DISABLE;
ret = ubx_m10_config_block_fill(dev, gnss_system, payload, filled_blocks, ret = ubx_m8_config_block_fill(dev, gnss_system, payload, filled_blocks,
enable); enable);
if (ret < 0) { if (ret < 0) {
goto free_and_unlock; goto free_and_unlock;
@ -786,14 +786,14 @@ static int ubx_m10_set_enabled_systems(const struct device *dev, gnss_systems_t
} }
} }
ret = ubx_m10_modem_ubx_script_init(dev, payload, ret = ubx_m8_modem_ubx_script_init(dev, payload,
UBX_CFG_GNSS_PAYLOAD_SZ(UBX_M10_GNSS_SUPP_SYS_CNT), UBX_CFG_GNSS_PAYLOAD_SZ(UBX_M8_GNSS_SUPP_SYS_CNT),
UBX_CLASS_CFG, UBX_CFG_GNSS); UBX_CLASS_CFG, UBX_CFG_GNSS);
if (ret < 0) { if (ret < 0) {
goto free_and_unlock; goto free_and_unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto free_and_unlock; goto free_and_unlock;
} }
@ -809,21 +809,21 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_get_enabled_systems(const struct device *dev, gnss_systems_t *systems) static int ubx_m8_get_enabled_systems(const struct device *dev, gnss_systems_t *systems)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
ret = ubx_m10_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_GNSS); UBX_CFG_GNSS);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -837,7 +837,7 @@ static int ubx_m10_get_enabled_systems(const struct device *dev, gnss_systems_t
if (payload->config_blocks[i].flags & UBX_CFG_GNSS_FLAG_ENABLE) { if (payload->config_blocks[i].flags & UBX_CFG_GNSS_FLAG_ENABLE) {
enum ubx_gnss_id gnss_id = payload->config_blocks[i].gnss_id; enum ubx_gnss_id gnss_id = payload->config_blocks[i].gnss_id;
ret = ubx_m10_ubx_gnss_id_to_gnss_system(dev, gnss_id); ret = ubx_m8_ubx_gnss_id_to_gnss_system(dev, gnss_id);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -852,11 +852,11 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_set_fix_rate(const struct device *dev, uint32_t fix_interval_ms) static int ubx_m8_set_fix_rate(const struct device *dev, uint32_t fix_interval_ms)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_rate_payload payload; struct ubx_cfg_rate_payload payload;
if (fix_interval_ms < 50) { if (fix_interval_ms < 50) {
@ -868,13 +868,13 @@ static int ubx_m10_set_fix_rate(const struct device *dev, uint32_t fix_interval_
ubx_cfg_rate_payload_default(&payload); ubx_cfg_rate_payload_default(&payload);
payload.meas_rate_ms = fix_interval_ms; payload.meas_rate_ms = fix_interval_ms;
ret = ubx_m10_modem_ubx_script_init(dev, &payload, UBX_CFG_RATE_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, &payload, UBX_CFG_RATE_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_RATE); UBX_CFG_RATE);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
unlock: unlock:
k_spin_unlock(&data->lock, key); k_spin_unlock(&data->lock, key);
@ -882,22 +882,22 @@ unlock:
return ret; return ret;
} }
static int ubx_m10_get_fix_rate(const struct device *dev, uint32_t *fix_interval_ms) static int ubx_m8_get_fix_rate(const struct device *dev, uint32_t *fix_interval_ms)
{ {
int ret; int ret;
k_spinlock_key_t key; k_spinlock_key_t key;
struct ubx_m10_data *data = dev->data; struct ubx_m8_data *data = dev->data;
struct ubx_cfg_rate_payload *payload; struct ubx_cfg_rate_payload *payload;
key = k_spin_lock(&data->lock); key = k_spin_lock(&data->lock);
ret = ubx_m10_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG, ret = ubx_m8_modem_ubx_script_init(dev, NULL, UBX_FRM_GET_PAYLOAD_SZ, UBX_CLASS_CFG,
UBX_CFG_RATE); UBX_CFG_RATE);
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); ret = ubx_m8_modem_ubx_run_script(dev, &(data->script));
if (ret < 0) { if (ret < 0) {
goto unlock; goto unlock;
} }
@ -914,78 +914,78 @@ unlock:
} }
static const struct gnss_driver_api gnss_api = { static const struct gnss_driver_api gnss_api = {
.set_fix_rate = ubx_m10_set_fix_rate, .set_fix_rate = ubx_m8_set_fix_rate,
.get_fix_rate = ubx_m10_get_fix_rate, .get_fix_rate = ubx_m8_get_fix_rate,
.set_navigation_mode = ubx_m10_set_navigation_mode, .set_navigation_mode = ubx_m8_set_navigation_mode,
.get_navigation_mode = ubx_m10_get_navigation_mode, .get_navigation_mode = ubx_m8_get_navigation_mode,
.set_enabled_systems = ubx_m10_set_enabled_systems, .set_enabled_systems = ubx_m8_set_enabled_systems,
.get_enabled_systems = ubx_m10_get_enabled_systems, .get_enabled_systems = ubx_m8_get_enabled_systems,
.get_supported_systems = ubx_m10_get_supported_systems, .get_supported_systems = ubx_m8_get_supported_systems,
}; };
static int ubx_m10_configure(const struct device *dev) static int ubx_m8_configure(const struct device *dev)
{ {
int ret; int ret;
/* The return value could be ignored. See function description for more details. */ /* The return value could be ignored. See function description for more details. */
(void)ubx_m10_configure_gnss_device_baudrate_prerequisite(dev); (void)ubx_m8_configure_gnss_device_baudrate_prerequisite(dev);
/* Stopping GNSS messages for clearer communication while configuring the device. */ /* Stopping GNSS messages for clearer communication while configuring the device. */
ret = ubx_m10_ubx_cfg_rst(dev, UBX_CFG_RST_RESET_MODE_CONTROLLED_GNSS_STOP); ret = ubx_m8_ubx_cfg_rst(dev, UBX_CFG_RST_RESET_MODE_CONTROLLED_GNSS_STOP);
if (ret < 0) { if (ret < 0) {
goto reset; goto reset;
} }
ret = ubx_m10_ubx_cfg_rate(dev); ret = ubx_m8_ubx_cfg_rate(dev);
if (ret < 0) { if (ret < 0) {
LOG_ERR("Configuring rate failed. Returned %d.", ret); LOG_ERR("Configuring rate failed. Returned %d.", ret);
goto reset; goto reset;
} }
ret = ubx_m10_configure_gnss_device_baudrate(dev); ret = ubx_m8_configure_gnss_device_baudrate(dev);
if (ret < 0) { if (ret < 0) {
LOG_ERR("Configuring baudrate failed. Returned %d.", ret); LOG_ERR("Configuring baudrate failed. Returned %d.", ret);
goto reset; goto reset;
} }
ret = ubx_m10_configure_messages(dev); ret = ubx_m8_configure_messages(dev);
if (ret < 0) { if (ret < 0) {
LOG_ERR("Configuring messages failed. Returned %d.", ret); LOG_ERR("Configuring messages failed. Returned %d.", ret);
} }
reset: reset:
ret = ubx_m10_ubx_cfg_rst(dev, UBX_CFG_RST_RESET_MODE_CONTROLLED_GNSS_START); ret = ubx_m8_ubx_cfg_rst(dev, UBX_CFG_RST_RESET_MODE_CONTROLLED_GNSS_START);
return ret; return ret;
} }
static int ubx_m10_init(const struct device *dev) static int ubx_m8_init(const struct device *dev)
{ {
int ret; int ret;
ret = ubx_m10_init_nmea0183_match(dev); ret = ubx_m8_init_nmea0183_match(dev);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
ubx_m10_init_pipe(dev); ubx_m8_init_pipe(dev);
ret = ubx_m10_init_chat(dev); ret = ubx_m8_init_chat(dev);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
ret = ubx_m10_init_ubx(dev); ret = ubx_m8_init_ubx(dev);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
ret = ubx_m10_resume(dev); ret = ubx_m8_resume(dev);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
ret = ubx_m10_configure(dev); ret = ubx_m8_configure(dev);
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
@ -993,27 +993,27 @@ static int ubx_m10_init(const struct device *dev)
return 0; return 0;
} }
#define UBX_M10(inst) \ #define UBX_M8(inst) \
static const struct ubx_m10_config ubx_m10_cfg_##inst = { \ static const struct ubx_m8_config ubx_m8_cfg_##inst = { \
.uart = DEVICE_DT_GET(DT_INST_BUS(inst)), \ .uart = DEVICE_DT_GET(DT_INST_BUS(inst)), \
.uart_baudrate = DT_PROP(DT_DRV_INST(inst), uart_baudrate), \ .uart_baudrate = DT_PROP(DT_DRV_INST(inst), uart_baudrate), \
}; \ }; \
\ \
static struct ubx_m10_data ubx_m10_data_##inst = { \ static struct ubx_m8_data ubx_m8_data_##inst = { \
.script.request = (struct ubx_frame *)ubx_m10_data_##inst.request_buf, \ .script.request = (struct ubx_frame *)ubx_m8_data_##inst.request_buf, \
.script.response = (struct ubx_frame *)ubx_m10_data_##inst.response_buf, \ .script.response = (struct ubx_frame *)ubx_m8_data_##inst.response_buf, \
.script.match = (struct ubx_frame *)ubx_m10_data_##inst.match_buf, \ .script.match = (struct ubx_frame *)ubx_m8_data_##inst.match_buf, \
.script.retry_count = UBX_M10_SCRIPT_RETRY_DEFAULT, \ .script.retry_count = UBX_M8_SCRIPT_RETRY_DEFAULT, \
.script.timeout = K_MSEC(MODEM_UBX_SCRIPT_TIMEOUT_MS), \ .script.timeout = K_MSEC(MODEM_UBX_SCRIPT_TIMEOUT_MS), \
}; \ }; \
\ \
DEVICE_DT_INST_DEFINE(inst, \ DEVICE_DT_INST_DEFINE(inst, \
ubx_m10_init, \ ubx_m8_init, \
NULL, \ NULL, \
&ubx_m10_data_##inst, \ &ubx_m8_data_##inst, \
&ubx_m10_cfg_##inst, \ &ubx_m8_cfg_##inst, \
POST_KERNEL, \ POST_KERNEL, \
CONFIG_GNSS_INIT_PRIORITY, \ CONFIG_GNSS_INIT_PRIORITY, \
&gnss_api); &gnss_api);
DT_INST_FOREACH_STATUS_OKAY(UBX_M10) DT_INST_FOREACH_STATUS_OKAY(UBX_M8)

View file

@ -1,9 +1,9 @@
# Copyright 2024 NXP # Copyright 2024 NXP
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
description: U-BLOX M10 GNSS Module description: U-BLOX M8 GNSS Module
compatible: "u-blox,m10" compatible: "u-blox,m8"
include: include:
- uart-device.yaml - uart-device.yaml

View file

@ -1,23 +0,0 @@
/*
* Copyright 2024 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M10_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M10_H_
#include <zephyr/dt-bindings/dt-util.h>
/* UART Baudrate. */
#define UBX_M10_UART_BAUDRATE_4800 0x00
#define UBX_M10_UART_BAUDRATE_9600 0x01
#define UBX_M10_UART_BAUDRATE_19200 0x02
#define UBX_M10_UART_BAUDRATE_38400 0x03
#define UBX_M10_UART_BAUDRATE_57600 0x04
#define UBX_M10_UART_BAUDRATE_115200 0x05
#define UBX_M10_UART_BAUDRATE_230400 0x06
#define UBX_M10_UART_BAUDRATE_460800 0x07
#define UBX_M10_UART_BAUDRATE_921600 0x08
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M10_H_ */

View file

@ -0,0 +1,23 @@
/*
* Copyright 2024 NXP
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M8_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M8_H_
#include <zephyr/dt-bindings/dt-util.h>
/* UART Baudrate. */
#define UBX_M8_UART_BAUDRATE_4800 0x00
#define UBX_M8_UART_BAUDRATE_9600 0x01
#define UBX_M8_UART_BAUDRATE_19200 0x02
#define UBX_M8_UART_BAUDRATE_38400 0x03
#define UBX_M8_UART_BAUDRATE_57600 0x04
#define UBX_M8_UART_BAUDRATE_115200 0x05
#define UBX_M8_UART_BAUDRATE_230400 0x06
#define UBX_M8_UART_BAUDRATE_460800 0x07
#define UBX_M8_UART_BAUDRATE_921600 0x08
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M8_H_ */

View file

@ -19,7 +19,7 @@
gnss: u_blox_m10 { gnss: u_blox_m10 {
status = "okay"; status = "okay";
compatible = "u-blox,m10"; compatible = "u-blox,m8";
uart-baudrate = <115200>; uart-baudrate = <115200>;
}; };
}; };

View file

@ -14,9 +14,9 @@
status = "okay"; status = "okay";
current-speed = <115200>; current-speed = <115200>;
u_blox_m10: u-blox,m10 { u_blox_m8: u-blox,m8 {
status = "okay"; status = "okay";
compatible = "u-blox,m10"; compatible = "u-blox,m8";
uart-baudrate = <115200>; uart-baudrate = <115200>;
}; };
}; };