Skip to content

[WIP] stm32 mspi drivers for the MSPI flash and controller #154923

[WIP] stm32 mspi drivers for the MSPI flash and controller

[WIP] stm32 mspi drivers for the MSPI flash and controller #154923

Triggered via pull request October 15, 2024 12:29
Status Failure
Total duration 2m 31s
Artifacts 1

compliance.yml

on: pull_request
Run compliance checks on patch series (PR)
2m 23s
Run compliance checks on patch series (PR)
Fit to window
Zoom out
Zoom in

Annotations

3 errors, 11 warnings, and 10 notices
Run compliance checks on patch series (PR)
Process completed with exit code 2.
Run compliance checks on patch series (PR): Checkpatch.txt#L1
See https://docs.zephyrproject.org/latest/contribute/guidelines.html#coding-style for more details. IF_0: Consider removing the code enclosed by this #if 0 and its #endif File:drivers/flash/flash_mspi_nor_mx.c Line:865 LONG_LINE: line length of 109 exceeds 100 columns File:drivers/flash/flash_mspi_nor_mx.c Line:870 BLOCK_COMMENT_STYLE: Block comments use * on subsequent lines File:drivers/flash/flash_mspi_nor_mx.c Line:896 BLOCK_COMMENT_STYLE: Block comments use a trailing */ on a separate line File:drivers/flash/flash_mspi_nor_mx.c Line:898 UNNECESSARY_BREAK: break is not useful after a goto or return File:drivers/mspi/mspi_stm32.c Line:254 UNNECESSARY_BREAK: break is not useful after a goto or return File:drivers/mspi/mspi_stm32.c Line:276 SUSPECT_CODE_INDENT: suspect code indent for conditional statements (8, 24) File:drivers/mspi/mspi_stm32.c Line:1163 LONG_LINE: line length of 106 exceeds 100 columns File:drivers/mspi/mspi_stm32.c Line:1205 LONG_LINE: line length of 106 exceeds 100 columns File:drivers/mspi/mspi_stm32.c Line:1252 SUSPECT_CODE_INDENT: suspect code indent for conditional statements (8, 17) File:drivers/mspi/mspi_stm32.c Line:1777
Run compliance checks on patch series (PR)
Process completed with exit code 1.
IF_0: drivers/flash/flash_mspi_nor_mx.c#L865
drivers/flash/flash_mspi_nor_mx.c:865 Consider removing the code enclosed by this #if 0 and its #endif
LONG_LINE: drivers/flash/flash_mspi_nor_mx.c#L870
drivers/flash/flash_mspi_nor_mx.c:870 line length of 109 exceeds 100 columns
BLOCK_COMMENT_STYLE: drivers/flash/flash_mspi_nor_mx.c#L896
drivers/flash/flash_mspi_nor_mx.c:896 Block comments use * on subsequent lines
BLOCK_COMMENT_STYLE: drivers/flash/flash_mspi_nor_mx.c#L898
drivers/flash/flash_mspi_nor_mx.c:898 Block comments use a trailing */ on a separate line
UNNECESSARY_BREAK: drivers/mspi/mspi_stm32.c#L254
drivers/mspi/mspi_stm32.c:254 break is not useful after a goto or return
UNNECESSARY_BREAK: drivers/mspi/mspi_stm32.c#L276
drivers/mspi/mspi_stm32.c:276 break is not useful after a goto or return
SUSPECT_CODE_INDENT: drivers/mspi/mspi_stm32.c#L1163
drivers/mspi/mspi_stm32.c:1163 suspect code indent for conditional statements (8, 24)
LONG_LINE: drivers/mspi/mspi_stm32.c#L1205
drivers/mspi/mspi_stm32.c:1205 line length of 106 exceeds 100 columns
LONG_LINE: drivers/mspi/mspi_stm32.c#L1252
drivers/mspi/mspi_stm32.c:1252 line length of 106 exceeds 100 columns
SUSPECT_CODE_INDENT: drivers/mspi/mspi_stm32.c#L1777
drivers/mspi/mspi_stm32.c:1777 suspect code indent for conditional statements (8, 17)
Run compliance checks on patch series (PR): ClangFormat.txt#L1
See https://docs.zephyrproject.org/latest/contribute/guidelines.html#clang-format for more details. You may want to run clang-format on this change: -#define NOR_MX_WRITE_SIZE 1 -#define NOR_MX_ERASE_VALUE 0xff - -#define NOR_MX_STATUS_MEM_RDY 1 -#define NOR_MX_STATUS_MEM_WREN 2 -#define NOR_MX_STATUS_MEM_ERASED 3 - -#define NOR_MX_RESET_MAX_TIME 100U -#define NOR_MX_BULK_ERASE_MAX_TIME 460000U -#define NOR_MX_SECTOR_ERASE_MAX_TIME 1000U -#define NOR_MX_SUBSECTOR_4K_ERASE_MAX_TIME 400U -#define NOR_MX_WRITE_REG_MAX_TIME 40U +#define NOR_MX_WRITE_SIZE 1 +#define NOR_MX_ERASE_VALUE 0xff + +#define NOR_MX_STATUS_MEM_RDY 1 +#define NOR_MX_STATUS_MEM_WREN 2 +#define NOR_MX_STATUS_MEM_ERASED 3 + +#define NOR_MX_RESET_MAX_TIME 100U +#define NOR_MX_BULK_ERASE_MAX_TIME 460000U +#define NOR_MX_SECTOR_ERASE_MAX_TIME 1000U +#define NOR_MX_SUBSECTOR_4K_ERASE_MAX_TIME 400U +#define NOR_MX_WRITE_REG_MAX_TIME 40U File:drivers/flash/flash_mspi_nor_mx.c Line:44 You may want to run clang-format on this change: - uint32_t port; - uint32_t mem_size; /* in Bytes */ - struct flash_parameters flash_param; - struct flash_pages_layout page_layout; - - const struct device *bus; - struct mspi_dev_id dev_id; - struct mspi_dev_cfg serial_cfg; - struct mspi_dev_cfg tar_dev_cfg; - struct mspi_xip_cfg tar_xip_cfg; - struct mspi_scramble_cfg tar_scramble_cfg; - - mspi_timing_cfg tar_timing_cfg; - mspi_timing_param timing_cfg_mask; - - bool sw_multi_periph; + uint32_t port; + uint32_t mem_size; /* in Bytes */ + struct flash_parameters flash_param; + struct flash_pages_layout page_layout; + + const struct device *bus; + struct mspi_dev_id dev_id; + struct mspi_dev_cfg serial_cfg; + struct mspi_dev_cfg tar_dev_cfg; + struct mspi_xip_cfg tar_xip_cfg; + struct mspi_scramble_cfg tar_scramble_cfg; + + mspi_timing_cfg tar_timing_cfg; + mspi_timing_param timing_cfg_mask; + + bool sw_multi_periph; }; struct flash_mspi_nor_mx_data { - struct mspi_dev_cfg dev_cfg; - struct mspi_xip_cfg xip_cfg; - struct mspi_scramble_cfg scramble_cfg; - mspi_timing_cfg timing_cfg; - struct mspi_xfer trans; - struct mspi_xfer_packet packet; - - struct k_sem lock; + struct mspi_dev_cfg dev_cfg; + struct mspi_xip_cfg xip_cfg; + struct mspi_scramble_cfg scramble_cfg; + mspi_timing_cfg timing_cfg; + struct mspi_xfer trans; + struct mspi_xfer_packet packet; + + struct k_sem lock; uint8_t jedec_id[JESD216_READ_ID_LEN]; }; -static bool flash_mspi_nor_mx_address_is_valid(const struct device *dev, off_t addr, - size_t size) +static bool flash_mspi_nor_mx_address_is_valid(const struct device *dev, off_t addr, size_t size) File:drivers/flash/flash_mspi_nor_mx.c Line:89 You may want to run clang-format on this change: - uint16_t addr_len, uint32_t tx_dummy, uint8_t *wdata, - uint32_t length) -{ - const struct flash_mspi_nor_mx_config *cfg = flash->config; - struct flash_mspi_nor_mx_data *data = flash->data; - int ret; - - data->packet.dir = MSPI_TX; - data->packet.cmd = cmd; - data->packet.address = addr; - data->packet.data_buf = wdata; - data->packet.num_bytes = length; - - data->trans.async = false; /* meaning : timeout mode */ - data->trans.xfer_mode = MSPI_PIO; /* command_write is always in PIO mode */ - data->trans.tx_dummy = tx_dummy; - data->trans.cmd_length = 1; - data->trans.addr_length = addr_len; - data->trans.hold_ce = false; - data->trans.packets = &data->packet; - data->trans.num_packet = 1; - data->trans.timeout = 10; + uint16_t addr_len, uint32_t tx_dummy, uint8_t *wdata, + uint32_t length) +{ + co
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L44
drivers/flash/flash_mspi_nor_mx.c:44 -#define NOR_MX_WRITE_SIZE 1 -#define NOR_MX_ERASE_VALUE 0xff - -#define NOR_MX_STATUS_MEM_RDY 1 -#define NOR_MX_STATUS_MEM_WREN 2 -#define NOR_MX_STATUS_MEM_ERASED 3 - -#define NOR_MX_RESET_MAX_TIME 100U -#define NOR_MX_BULK_ERASE_MAX_TIME 460000U -#define NOR_MX_SECTOR_ERASE_MAX_TIME 1000U -#define NOR_MX_SUBSECTOR_4K_ERASE_MAX_TIME 400U -#define NOR_MX_WRITE_REG_MAX_TIME 40U +#define NOR_MX_WRITE_SIZE 1 +#define NOR_MX_ERASE_VALUE 0xff + +#define NOR_MX_STATUS_MEM_RDY 1 +#define NOR_MX_STATUS_MEM_WREN 2 +#define NOR_MX_STATUS_MEM_ERASED 3 + +#define NOR_MX_RESET_MAX_TIME 100U +#define NOR_MX_BULK_ERASE_MAX_TIME 460000U +#define NOR_MX_SECTOR_ERASE_MAX_TIME 1000U +#define NOR_MX_SUBSECTOR_4K_ERASE_MAX_TIME 400U +#define NOR_MX_WRITE_REG_MAX_TIME 40U
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L89
drivers/flash/flash_mspi_nor_mx.c:89 - uint32_t port; - uint32_t mem_size; /* in Bytes */ - struct flash_parameters flash_param; - struct flash_pages_layout page_layout; - - const struct device *bus; - struct mspi_dev_id dev_id; - struct mspi_dev_cfg serial_cfg; - struct mspi_dev_cfg tar_dev_cfg; - struct mspi_xip_cfg tar_xip_cfg; - struct mspi_scramble_cfg tar_scramble_cfg; - - mspi_timing_cfg tar_timing_cfg; - mspi_timing_param timing_cfg_mask; - - bool sw_multi_periph; + uint32_t port; + uint32_t mem_size; /* in Bytes */ + struct flash_parameters flash_param; + struct flash_pages_layout page_layout; + + const struct device *bus; + struct mspi_dev_id dev_id; + struct mspi_dev_cfg serial_cfg; + struct mspi_dev_cfg tar_dev_cfg; + struct mspi_xip_cfg tar_xip_cfg; + struct mspi_scramble_cfg tar_scramble_cfg; + + mspi_timing_cfg tar_timing_cfg; + mspi_timing_param timing_cfg_mask; + + bool sw_multi_periph; }; struct flash_mspi_nor_mx_data { - struct mspi_dev_cfg dev_cfg; - struct mspi_xip_cfg xip_cfg; - struct mspi_scramble_cfg scramble_cfg; - mspi_timing_cfg timing_cfg; - struct mspi_xfer trans; - struct mspi_xfer_packet packet; - - struct k_sem lock; + struct mspi_dev_cfg dev_cfg; + struct mspi_xip_cfg xip_cfg; + struct mspi_scramble_cfg scramble_cfg; + mspi_timing_cfg timing_cfg; + struct mspi_xfer trans; + struct mspi_xfer_packet packet; + + struct k_sem lock; uint8_t jedec_id[JESD216_READ_ID_LEN]; }; -static bool flash_mspi_nor_mx_address_is_valid(const struct device *dev, off_t addr, - size_t size) +static bool flash_mspi_nor_mx_address_is_valid(const struct device *dev, off_t addr, size_t size)
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L153
drivers/flash/flash_mspi_nor_mx.c:153 - uint16_t addr_len, uint32_t tx_dummy, uint8_t *wdata, - uint32_t length) -{ - const struct flash_mspi_nor_mx_config *cfg = flash->config; - struct flash_mspi_nor_mx_data *data = flash->data; - int ret; - - data->packet.dir = MSPI_TX; - data->packet.cmd = cmd; - data->packet.address = addr; - data->packet.data_buf = wdata; - data->packet.num_bytes = length; - - data->trans.async = false; /* meaning : timeout mode */ - data->trans.xfer_mode = MSPI_PIO; /* command_write is always in PIO mode */ - data->trans.tx_dummy = tx_dummy; - data->trans.cmd_length = 1; - data->trans.addr_length = addr_len; - data->trans.hold_ce = false; - data->trans.packets = &data->packet; - data->trans.num_packet = 1; - data->trans.timeout = 10; + uint16_t addr_len, uint32_t tx_dummy, uint8_t *wdata, + uint32_t length) +{ + const struct flash_mspi_nor_mx_config *cfg = flash->config; + struct flash_mspi_nor_mx_data *data = flash->data; + int ret; + + data->packet.dir = MSPI_TX; + data->packet.cmd = cmd; + data->packet.address = addr; + data->packet.data_buf = wdata; + data->packet.num_bytes = length; + + data->trans.async = false; /* meaning : timeout mode */ + data->trans.xfer_mode = MSPI_PIO; /* command_write is always in PIO mode */ + data->trans.tx_dummy = tx_dummy; + data->trans.cmd_length = 1; + data->trans.addr_length = addr_len; + data->trans.hold_ce = false; + data->trans.packets = &data->packet; + data->trans.num_packet = 1; + data->trans.timeout = 10;
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L189
drivers/flash/flash_mspi_nor_mx.c:189 - uint16_t addr_len, uint32_t rx_dummy, uint8_t *rdata, - uint32_t length) -{ - const struct flash_mspi_nor_mx_config *cfg = flash->config; - struct flash_mspi_nor_mx_data *data = flash->data; - int ret; - - data->packet.dir = MSPI_RX; - data->packet.cmd = cmd; - data->packet.address = addr; - data->packet.data_buf = rdata; - data->packet.num_bytes = length; - - data->trans.async = false; /* meaning : timeout mode */ - data->trans.xfer_mode = MSPI_PIO; /* command_read is always in PIO mode */ - data->trans.rx_dummy = rx_dummy; - data->trans.cmd_length = 1; - data->trans.addr_length = addr_len; - data->trans.hold_ce = false; - data->trans.packets = &data->packet; - data->trans.num_packet = 1; - data->trans.timeout = 10; + uint16_t addr_len, uint32_t rx_dummy, uint8_t *rdata, + uint32_t length) +{ + const struct flash_mspi_nor_mx_config *cfg = flash->config; + struct flash_mspi_nor_mx_data *data = flash->data; + int ret; + + data->packet.dir = MSPI_RX; + data->packet.cmd = cmd; + data->packet.address = addr; + data->packet.data_buf = rdata; + data->packet.num_bytes = length; + + data->trans.async = false; /* meaning : timeout mode */ + data->trans.xfer_mode = MSPI_PIO; /* command_read is always in PIO mode */ + data->trans.rx_dummy = rx_dummy; + data->trans.cmd_length = 1; + data->trans.addr_length = addr_len; + data->trans.hold_ce = false; + data->trans.packets = &data->packet; + data->trans.num_packet = 1; + data->trans.timeout = 10;
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L220
drivers/flash/flash_mspi_nor_mx.c:220 - uint8_t status_config[2];/* index 0 for Match, index 1 for MASK */ - - data->packet.dir = MSPI_TX; /* a command to be sent */ - data->packet.cmd = SPI_NOR_CMD_RDSR; /* SPI/STR */ - data->packet.address = 0; - - data->trans.num_packet = 1; /* 1 in STR; 2 in DTR */ - data->trans.async = true; /* IT mode */ - data->trans.xfer_mode = MSPI_REG; /* command is always in PIO mode */ - data->trans.tx_dummy = 0; - data->trans.cmd_length = 1; - data->trans.addr_length = 0; - data->trans.hold_ce = false; + uint8_t status_config[2]; /* index 0 for Match, index 1 for MASK */ + + data->packet.dir = MSPI_TX; /* a command to be sent */ + data->packet.cmd = SPI_NOR_CMD_RDSR; /* SPI/STR */ + data->packet.address = 0; + + data->trans.num_packet = 1; /* 1 in STR; 2 in DTR */ + data->trans.async = true; /* IT mode */ + data->trans.xfer_mode = MSPI_REG; /* command is always in PIO mode */ + data->trans.tx_dummy = 0; + data->trans.cmd_length = 1; + data->trans.addr_length = 0; + data->trans.hold_ce = false;
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L244
drivers/flash/flash_mspi_nor_mx.c:244 - data->packet.data_buf = status_config; - data->packet.num_bytes = sizeof(status_config); + data->packet.data_buf = status_config; + data->packet.num_bytes = sizeof(status_config);
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L272
drivers/flash/flash_mspi_nor_mx.c:272 - while (mspi_dev_config(cfg->bus, &cfg->dev_id, - MSPI_DEVICE_CONFIG_ALL, &data->dev_cfg)) + while (mspi_dev_config(cfg->bus, &cfg->dev_id, MSPI_DEVICE_CONFIG_ALL, + &data->dev_cfg)) ; } else { - while (mspi_dev_config(cfg->bus, &cfg->dev_id, - MSPI_DEVICE_CONFIG_NONE, NULL)) + while (mspi_dev_config(cfg->bus, &cfg->dev_id, MSPI_DEVICE_CONFIG_NONE, NULL)) ; -
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L350
drivers/flash/flash_mspi_nor_mx.c:350 - ret = flash_mspi_nor_mx_command_read(flash, SPI_NOR_CMD_RDID, 0, 4, - data->dev_cfg.rx_dummy, - buffer, - JESD216_READ_ID_LEN); + ret = flash_mspi_nor_mx_command_read(flash, SPI_NOR_CMD_RDID, 0, 4, data->dev_cfg.rx_dummy, + buffer, JESD216_READ_ID_LEN);
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L359
drivers/flash/flash_mspi_nor_mx.c:359 - LOG_DBG("Jedec ID = [%02x %02x %02x]", - data->jedec_id[0], data->jedec_id[1], data->jedec_id[2]); + LOG_DBG("Jedec ID = [%02x %02x %02x]", data->jedec_id[0], data->jedec_id[1], + data->jedec_id[2]);
You may want to run clang-format on this change: drivers/flash/flash_mspi_nor_mx.c#L445
drivers/flash/flash_mspi_nor_mx.c:445 - size_t len) -{ - const struct flash_mspi_nor_mx_config *cfg = flash->config; - struct flash_mspi_nor_mx_data *data = flash->data; - int ret; - - data->packet.dir = MSPI_TX; - data->packet.cmd = data->dev_cfg.write_cmd; - data->packet.address = offset; - data->packet.data_buf = wdata; - data->packet.num_bytes = len; - - data->trans.async = true; /* use callback on Irq if PIO, meaningless with DMA */ - data->trans.xfer_mode = MSPI_PIO; /* TODO : transfer with DMA */ - data->trans.tx_dummy = data->dev_cfg.tx_dummy; - data->trans.cmd_length = data->dev_cfg.cmd_length; - data->trans.addr_length = data->dev_cfg.addr_length; - data->trans.hold_ce = false; - data->trans.priority = 1; - data->trans.packets = &data->packet; - data->trans.num_packet = 1; - data->trans.timeout = CONFIG_MSPI_COMPLETION_TIMEOUT_TOLERANCE; + size_t len) +{ + const struct flash_mspi_nor_mx_config *cfg = flash->config; + struct flash_mspi_nor_mx_data *data = flash->data; + int ret; + + data->packet.dir = MSPI_TX; + data->packet.cmd = data->dev_cfg.write_cmd; + data->packet.address = offset; + data->packet.data_buf = wdata; + data->packet.num_bytes = len; + + data->trans.async = true; /* use callback on Irq if PIO, meaningless with DMA */ + data->trans.xfer_mode = MSPI_PIO; /* TODO : transfer with DMA */ + data->trans.tx_dummy = data->dev_cfg.tx_dummy; + data->trans.cmd_length = data->dev_cfg.cmd_length; + data->trans.addr_length = data->dev_cfg.addr_length; + data->trans.hold_ce = false; + data->trans.priority = 1; + data->trans.packets = &data->packet; + data->trans.num_packet = 1; + data->trans.timeout = CONFIG_MSPI_COMPLETION_TIMEOUT_TOLERANCE;

Artifacts

Produced during runtime
Name Size
compliance.xml
16.5 KB