From d97cc46bdd0fd547fd798220ffd9dbf44663c2e7 Mon Sep 17 00:00:00 2001 From: Jordan Yates Date: Mon, 29 Jul 2024 17:08:39 +1000 Subject: [PATCH] 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 --- doc/releases/migration-guide-4.0.rst | 4 + doc/releases/release-notes-3.7.rst | 2 +- drivers/gnss/CMakeLists.txt | 2 +- drivers/gnss/Kconfig | 2 +- .../{Kconfig.u_blox_m10 => Kconfig.u_blox_m8} | 10 +- .../{gnss_u_blox_m10.c => gnss_u_blox_m8.c} | 288 +++++++++--------- .../gnss/{u-blox,m10.yaml => u-blox,m8.yaml} | 4 +- include/zephyr/dt-bindings/gnss/u_blox_m10.h | 23 -- include/zephyr/dt-bindings/gnss/u_blox_m8.h | 23 ++ .../gnss/boards/mimxrt1062_fmurt6.overlay | 2 +- .../drivers/gnss/boards/vmu_rt1170.overlay | 4 +- 11 files changed, 184 insertions(+), 180 deletions(-) rename drivers/gnss/{Kconfig.u_blox_m10 => Kconfig.u_blox_m8} (79%) rename drivers/gnss/{gnss_u_blox_m10.c => gnss_u_blox_m8.c} (68%) rename dts/bindings/gnss/{u-blox,m10.yaml => u-blox,m8.yaml} (83%) delete mode 100644 include/zephyr/dt-bindings/gnss/u_blox_m10.h create mode 100644 include/zephyr/dt-bindings/gnss/u_blox_m8.h diff --git a/doc/releases/migration-guide-4.0.rst b/doc/releases/migration-guide-4.0.rst index b8c490b05f4..4dad028399d 100644 --- a/doc/releases/migration-guide-4.0.rst +++ b/doc/releases/migration-guide-4.0.rst @@ -71,6 +71,10 @@ Enhanced Serial Peripheral Interface (eSPI) 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 ===== diff --git a/doc/releases/release-notes-3.7.rst b/doc/releases/release-notes-3.7.rst index 14ae83b3fb6..a8da5a56813 100644 --- a/doc/releases/release-notes-3.7.rst +++ b/doc/releases/release-notes-3.7.rst @@ -861,7 +861,7 @@ Drivers and Sensors * Added GNSS device driver API test suite. * 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`). * GPIO diff --git a/drivers/gnss/CMakeLists.txt b/drivers/gnss/CMakeLists.txt index 05192ca5400..fea4e0bfe35 100644 --- a/drivers/gnss/CMakeLists.txt +++ b/drivers/gnss/CMakeLists.txt @@ -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_NMEA_GENERIC gnss_nmea_generic.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_LUATOS_AIR530Z gnss_luatos_air530z.c) diff --git a/drivers/gnss/Kconfig b/drivers/gnss/Kconfig index d2a4d8bb515..d7f51c6de3a 100644 --- a/drivers/gnss/Kconfig +++ b/drivers/gnss/Kconfig @@ -82,7 +82,7 @@ source "subsys/logging/Kconfig.template.log_config" rsource "Kconfig.emul" rsource "Kconfig.generic" rsource "Kconfig.quectel_lcx6g" -rsource "Kconfig.u_blox_m10" +rsource "Kconfig.u_blox_m8" rsource "Kconfig.luatos_air530z" endif diff --git a/drivers/gnss/Kconfig.u_blox_m10 b/drivers/gnss/Kconfig.u_blox_m8 similarity index 79% rename from drivers/gnss/Kconfig.u_blox_m10 rename to drivers/gnss/Kconfig.u_blox_m8 index 539f7dda03f..599963f4831 100644 --- a/drivers/gnss/Kconfig.u_blox_m10 +++ b/drivers/gnss/Kconfig.u_blox_m8 @@ -1,11 +1,11 @@ # Copyright 2024 NXP # SPDX-License-Identifier: Apache-2.0 -config GNSS_U_BLOX_M10 - bool "U-BLOX M10 GNSS Module" +config GNSS_U_BLOX_M8 + bool "U-BLOX M8 GNSS Module" default y 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 select MODEM_MODULES select MODEM_BACKEND_UART @@ -17,9 +17,9 @@ config GNSS_U_BLOX_M10 select GNSS_U_BLOX_PROTOCOL select UART_USE_RUNTIME_CONFIGURE 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" depends on GNSS_SATELLITES default 24 diff --git a/drivers/gnss/gnss_u_blox_m10.c b/drivers/gnss/gnss_u_blox_m8.c similarity index 68% rename from drivers/gnss/gnss_u_blox_m10.c rename to drivers/gnss/gnss_u_blox_m8.c index bc62006b04d..88f180cbc62 100644 --- a/drivers/gnss/gnss_u_blox_m10.c +++ b/drivers/gnss/gnss_u_blox_m8.c @@ -21,9 +21,9 @@ #include "gnss_u_blox_protocol/gnss_u_blox_protocol.h" #include -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_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 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_M10_GNSS_SUPP_SYS_CNT 6 +#define UBX_M8_GNSS_SYS_CNT 8 +#define UBX_M8_GNSS_SUPP_SYS_CNT 6 -struct ubx_m10_config { +struct ubx_m8_config { const struct device *uart; const uint32_t uart_baudrate; }; -struct ubx_m10_data { +struct ubx_m8_data { struct gnss_nmea0183_match_data match_data; #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 /* UART backend */ @@ -87,9 +87,9 @@ MODEM_CHAT_MATCHES_DEFINE(unsol_matches, #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; 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; } -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)); } -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 = { .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); } -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; - struct ubx_m10_data *data = dev->data; + const struct ubx_m8_config *cfg = dev->config; + struct ubx_m8_data *data = dev->data; const struct modem_backend_uart_config uart_backend_config = { .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); } -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 = { .user_data = data, .receive_buf = data->chat_receive_buf, .receive_buf_size = sizeof(data->chat_receive_buf), - .delimiter = ubx_m10_char_delimiter, - .delimiter_size = ARRAY_SIZE(ubx_m10_char_delimiter), + .delimiter = ubx_m8_char_delimiter, + .delimiter_size = ARRAY_SIZE(ubx_m8_char_delimiter), .filter = NULL, .filter_size = 0, .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); } -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 = { .user_data = data, @@ -189,9 +189,9 @@ static int ubx_m10_init_ubx(const struct device *dev) * @returns 0 if successful * @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; 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; } -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 ubx_m10_data *data = dev->data; + struct ubx_m8_data *data = dev->data; int ret; - ret = ubx_m10_modem_module_change(dev, 0); + ret = ubx_m8_modem_module_change(dev, 0); if (ret < 0) { 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); reset_modem_module: - ret |= ubx_m10_modem_module_change(dev, 1); + ret |= ubx_m8_modem_module_change(dev, 1); 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.response = (struct ubx_frame *)data->response_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); } -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) { int ret; - struct ubx_m10_data *data = dev->data; + struct ubx_m8_data *data = dev->data; struct ubx_cfg_ack_payload match_payload = { .message_class = msg_cls, .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, 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; } -static int ubx_m10_ubx_cfg_rate(const struct device *dev) +static int ubx_m8_ubx_cfg_rate(const struct device *dev) { int ret; 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; key = k_spin_lock(&data->lock); 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); if (ret < 0) { goto unlock; } - ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); + ret = ubx_m8_modem_ubx_run_script(dev, &(data->script)); unlock: k_spin_unlock(&data->lock, key); @@ -288,12 +288,12 @@ unlock: 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) { int ret; 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; 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); 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); if (ret < 0) { 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 * (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: k_spin_unlock(&data->lock, key); @@ -321,11 +321,11 @@ unlock: 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; 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; 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.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); if (ret < 0) { goto unlock; } 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) { goto unlock; } @@ -357,17 +357,17 @@ unlock: 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; k_spinlock_key_t key; - struct ubx_m10_data *data = dev->data; - const struct ubx_m10_config *config = dev->config; + struct ubx_m8_data *data = dev->data; + const struct ubx_m8_config *config = dev->config; struct uart_config uart_cfg; key = k_spin_lock(&data->lock); - ret = ubx_m10_turn_off(dev); + ret = ubx_m8_turn_off(dev); if (ret < 0) { 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); reset_and_unlock: - ret |= ubx_m10_resume(dev); + ret |= ubx_m8_resume(dev); k_spin_unlock(&data->lock, key); 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) { 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. - * 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. */ 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; - ret = ubx_m10_validate_baudrate(dev, target_baudrate); + ret = ubx_m8_validate_baudrate(dev, target_baudrate); if (ret < 0) { 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) { /* 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) { return ret; } /* 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) { break; } } /* 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) { return ret; } @@ -441,18 +441,18 @@ static int ubx_m10_configure_gnss_device_baudrate_prerequisite(const struct devi 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; - const struct ubx_m10_config *config = dev->config; + const struct ubx_m8_config *config = dev->config; 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) { 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) { return ret; } @@ -460,11 +460,11 @@ static int ubx_m10_configure_gnss_device_baudrate(const struct device *dev) 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; 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; 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) { 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); if (ret < 0) { 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) { 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) { 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); if (ret < 0) { 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) { goto unlock; } @@ -515,7 +515,7 @@ unlock: 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) { 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) { 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; 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; key = k_spin_lock(&data->lock); 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) { goto unlock; } 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); if (ret < 0) { 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) { goto unlock; } @@ -598,22 +598,22 @@ unlock: 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; 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; 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); if (ret < 0) { 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) { 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; 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) { goto unlock; } @@ -634,7 +634,7 @@ unlock: 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 | 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; } -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) { 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, uint32_t enable) { @@ -702,24 +702,24 @@ static int ubx_m10_config_block_fill(const struct device *dev, gnss_systems_t gn 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; 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); struct ubx_cfg_gnss_payload *payload; /* 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); if (ret < 0) { 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) { 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; 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) { 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. */ 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) { ret = -ENOMEM; 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); uint8_t filled_blocks = 0; 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) { 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; if (gnss_system & supported_systems) { uint32_t enable = (systems & gnss_system) ? 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); if (ret < 0) { 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, - UBX_CFG_GNSS_PAYLOAD_SZ(UBX_M10_GNSS_SUPP_SYS_CNT), + ret = ubx_m8_modem_ubx_script_init(dev, payload, + UBX_CFG_GNSS_PAYLOAD_SZ(UBX_M8_GNSS_SUPP_SYS_CNT), UBX_CLASS_CFG, UBX_CFG_GNSS); if (ret < 0) { 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) { goto free_and_unlock; } @@ -809,21 +809,21 @@ unlock: 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; 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); - 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); if (ret < 0) { 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) { 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) { 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) { goto unlock; } @@ -852,11 +852,11 @@ unlock: 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; 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; 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); 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); if (ret < 0) { goto unlock; } - ret = ubx_m10_modem_ubx_run_script(dev, &(data->script)); + ret = ubx_m8_modem_ubx_run_script(dev, &(data->script)); unlock: k_spin_unlock(&data->lock, key); @@ -882,22 +882,22 @@ unlock: 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; 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; 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); if (ret < 0) { 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) { goto unlock; } @@ -914,78 +914,78 @@ unlock: } static const struct gnss_driver_api gnss_api = { - .set_fix_rate = ubx_m10_set_fix_rate, - .get_fix_rate = ubx_m10_get_fix_rate, - .set_navigation_mode = ubx_m10_set_navigation_mode, - .get_navigation_mode = ubx_m10_get_navigation_mode, - .set_enabled_systems = ubx_m10_set_enabled_systems, - .get_enabled_systems = ubx_m10_get_enabled_systems, - .get_supported_systems = ubx_m10_get_supported_systems, + .set_fix_rate = ubx_m8_set_fix_rate, + .get_fix_rate = ubx_m8_get_fix_rate, + .set_navigation_mode = ubx_m8_set_navigation_mode, + .get_navigation_mode = ubx_m8_get_navigation_mode, + .set_enabled_systems = ubx_m8_set_enabled_systems, + .get_enabled_systems = ubx_m8_get_enabled_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; /* 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. */ - 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) { goto reset; } - ret = ubx_m10_ubx_cfg_rate(dev); + ret = ubx_m8_ubx_cfg_rate(dev); if (ret < 0) { LOG_ERR("Configuring rate failed. Returned %d.", ret); goto reset; } - ret = ubx_m10_configure_gnss_device_baudrate(dev); + ret = ubx_m8_configure_gnss_device_baudrate(dev); if (ret < 0) { LOG_ERR("Configuring baudrate failed. Returned %d.", ret); goto reset; } - ret = ubx_m10_configure_messages(dev); + ret = ubx_m8_configure_messages(dev); if (ret < 0) { LOG_ERR("Configuring messages failed. Returned %d.", ret); } 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; } -static int ubx_m10_init(const struct device *dev) +static int ubx_m8_init(const struct device *dev) { int ret; - ret = ubx_m10_init_nmea0183_match(dev); + ret = ubx_m8_init_nmea0183_match(dev); if (ret < 0) { 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) { return ret; } - ret = ubx_m10_init_ubx(dev); + ret = ubx_m8_init_ubx(dev); if (ret < 0) { return ret; } - ret = ubx_m10_resume(dev); + ret = ubx_m8_resume(dev); if (ret < 0) { return ret; } - ret = ubx_m10_configure(dev); + ret = ubx_m8_configure(dev); if (ret < 0) { return ret; } @@ -993,27 +993,27 @@ static int ubx_m10_init(const struct device *dev) return 0; } -#define UBX_M10(inst) \ - static const struct ubx_m10_config ubx_m10_cfg_##inst = { \ +#define UBX_M8(inst) \ + static const struct ubx_m8_config ubx_m8_cfg_##inst = { \ .uart = DEVICE_DT_GET(DT_INST_BUS(inst)), \ .uart_baudrate = DT_PROP(DT_DRV_INST(inst), uart_baudrate), \ }; \ \ - static struct ubx_m10_data ubx_m10_data_##inst = { \ - .script.request = (struct ubx_frame *)ubx_m10_data_##inst.request_buf, \ - .script.response = (struct ubx_frame *)ubx_m10_data_##inst.response_buf, \ - .script.match = (struct ubx_frame *)ubx_m10_data_##inst.match_buf, \ - .script.retry_count = UBX_M10_SCRIPT_RETRY_DEFAULT, \ + static struct ubx_m8_data ubx_m8_data_##inst = { \ + .script.request = (struct ubx_frame *)ubx_m8_data_##inst.request_buf, \ + .script.response = (struct ubx_frame *)ubx_m8_data_##inst.response_buf, \ + .script.match = (struct ubx_frame *)ubx_m8_data_##inst.match_buf, \ + .script.retry_count = UBX_M8_SCRIPT_RETRY_DEFAULT, \ .script.timeout = K_MSEC(MODEM_UBX_SCRIPT_TIMEOUT_MS), \ }; \ \ DEVICE_DT_INST_DEFINE(inst, \ - ubx_m10_init, \ + ubx_m8_init, \ NULL, \ - &ubx_m10_data_##inst, \ - &ubx_m10_cfg_##inst, \ + &ubx_m8_data_##inst, \ + &ubx_m8_cfg_##inst, \ POST_KERNEL, \ CONFIG_GNSS_INIT_PRIORITY, \ &gnss_api); -DT_INST_FOREACH_STATUS_OKAY(UBX_M10) +DT_INST_FOREACH_STATUS_OKAY(UBX_M8) diff --git a/dts/bindings/gnss/u-blox,m10.yaml b/dts/bindings/gnss/u-blox,m8.yaml similarity index 83% rename from dts/bindings/gnss/u-blox,m10.yaml rename to dts/bindings/gnss/u-blox,m8.yaml index 556213d8c42..13d7f466c11 100644 --- a/dts/bindings/gnss/u-blox,m10.yaml +++ b/dts/bindings/gnss/u-blox,m8.yaml @@ -1,9 +1,9 @@ # Copyright 2024 NXP # 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: - uart-device.yaml diff --git a/include/zephyr/dt-bindings/gnss/u_blox_m10.h b/include/zephyr/dt-bindings/gnss/u_blox_m10.h deleted file mode 100644 index b017f42dcaf..00000000000 --- a/include/zephyr/dt-bindings/gnss/u_blox_m10.h +++ /dev/null @@ -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 - -/* 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_ */ diff --git a/include/zephyr/dt-bindings/gnss/u_blox_m8.h b/include/zephyr/dt-bindings/gnss/u_blox_m8.h new file mode 100644 index 00000000000..26117e63259 --- /dev/null +++ b/include/zephyr/dt-bindings/gnss/u_blox_m8.h @@ -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 + +/* 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_ */ diff --git a/samples/drivers/gnss/boards/mimxrt1062_fmurt6.overlay b/samples/drivers/gnss/boards/mimxrt1062_fmurt6.overlay index d4420c42393..cfcae77c1bf 100644 --- a/samples/drivers/gnss/boards/mimxrt1062_fmurt6.overlay +++ b/samples/drivers/gnss/boards/mimxrt1062_fmurt6.overlay @@ -19,7 +19,7 @@ gnss: u_blox_m10 { status = "okay"; - compatible = "u-blox,m10"; + compatible = "u-blox,m8"; uart-baudrate = <115200>; }; }; diff --git a/samples/drivers/gnss/boards/vmu_rt1170.overlay b/samples/drivers/gnss/boards/vmu_rt1170.overlay index baf0b47923e..e12dc90ce11 100644 --- a/samples/drivers/gnss/boards/vmu_rt1170.overlay +++ b/samples/drivers/gnss/boards/vmu_rt1170.overlay @@ -14,9 +14,9 @@ status = "okay"; current-speed = <115200>; - u_blox_m10: u-blox,m10 { + u_blox_m8: u-blox,m8 { status = "okay"; - compatible = "u-blox,m10"; + compatible = "u-blox,m8"; uart-baudrate = <115200>; }; };