Skip to content

Commit 4531229

Browse files
authored
Merge pull request #11366 from 0xc0170/dev_rollup
Rollup part 2 for 5.14
2 parents 27571bc + de627da commit 4531229

File tree

34 files changed

+839
-199
lines changed

34 files changed

+839
-199
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/* mbed Microcontroller Library
2+
* Copyright (c) 2018-2018 ARM Limited
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
#ifndef MBED_QSPI_FLASH_MX25LM51245G_H
17+
#define MBED_QSPI_FLASH_MX25LM51245G_H
18+
19+
20+
#define QSPI_FLASH_CHIP_STRING "macronix MX25LM51245G"
21+
22+
// Command for reading status register
23+
#define QSPI_CMD_RDSR 0x05
24+
// Command for reading configuration register
25+
#define QSPI_CMD_RDCR0 0x15
26+
#define QSPI_CMD_RDCR1 0x71
27+
// Command for writing status/configuration register
28+
#define QSPI_CMD_WRSR 0x01
29+
// Command for reading security register
30+
#define QSPI_CMD_RDSCUR 0x2B
31+
32+
// Command for setting Reset Enable
33+
#define QSPI_CMD_RSTEN 0x66
34+
// Command for setting Reset
35+
#define QSPI_CMD_RST 0x99
36+
37+
// Command for setting write enable
38+
#define QSPI_CMD_WREN 0x06
39+
// Command for setting write disable
40+
#define QSPI_CMD_WRDI 0x04
41+
42+
// WRSR operations max time [us] (datasheet max time + 15%)
43+
#define QSPI_WRSR_MAX_TIME 34500 // 30ms
44+
// general wait max time [us]
45+
#define QSPI_WAIT_MAX_TIME 100000 // 100ms
46+
47+
48+
// Commands for writing (page programming)
49+
// Only single/octal mode supported with this memory
50+
// So only single 1-1-1 mode in this QSPI config
51+
#define QSPI_CMD_WRITE_1IO 0x02 // 1-1-1 mode
52+
// write operations max time [us] (datasheet max time + 15%)
53+
#define QSPI_PAGE_PROG_MAX_TIME 11500 // 10ms
54+
55+
#define QSPI_PAGE_SIZE 256 // 256B
56+
#define QSPI_SECTOR_SIZE 4096 // 4kB
57+
#define QSPI_SECTOR_COUNT 2048
58+
59+
// Commands for reading
60+
// Only single/octal mode supported with this memory
61+
// So only single 1-1-1 mode in this QSPI config
62+
#define QSPI_CMD_READ_1IO_FAST 0x0B // 1-1-1 mode
63+
#define QSPI_CMD_READ_1IO 0x03 // 1-1-1 mode
64+
65+
#define QSPI_READ_1IO_DUMMY_CYCLE 0
66+
#define QSPI_READ_FAST_DUMMY_CYCLE 8
67+
68+
// Commands for erasing
69+
#define QSPI_CMD_ERASE_SECTOR 0x20 // 4kB
70+
//#define QSPI_CMD_ERASE_BLOCK_32 // not supported, only ersae block 64
71+
#define QSPI_CMD_ERASE_BLOCK_64 0xD8 // 64kB
72+
#define QSPI_CMD_ERASE_CHIP 0x60 // or 0xC7
73+
74+
// erase operations max time [us] (datasheet max time + 15%)
75+
#define QSPI_ERASE_SECTOR_MAX_TIME 480000 // 400 ms
76+
#define QSPI_ERASE_BLOCK_64_MAX_TIME 2400000 // 2s
77+
78+
// max frequency for basic rw operation (for fast mode)
79+
#define QSPI_COMMON_MAX_FREQUENCY 1000000
80+
81+
#define QSPI_STATUS_REG_SIZE 1 //2 ??
82+
#define QSPI_CONFIG_REG_0_SIZE 1
83+
#define QSPI_CONFIG_REG_1_SIZE 1
84+
#define QSPI_SECURITY_REG_SIZE 1
85+
#define QSPI_MAX_REG_SIZE 2
86+
87+
// status register
88+
#define STATUS_BIT_WIP (1 << 0) // write in progress bit
89+
#define STATUS_BIT_WEL (1 << 1) // write enable latch
90+
#define STATUS_BIT_BP0 (1 << 2) //
91+
#define STATUS_BIT_BP1 (1 << 3) //
92+
#define STATUS_BIT_BP2 (1 << 4) //
93+
#define STATUS_BIT_BP3 (1 << 5) //
94+
//#define STATUS_BIT_QE (1 << 6) // Not supported
95+
//#define STATUS_BIT_SRWD (1 << 7) // Not supported
96+
97+
// configuration register 0
98+
// bit 0, 1, 2, 4, 5, 7 reserved
99+
#define CONFIG0_BIT_TB (1 << 3) // Top/Bottom area protect
100+
101+
#endif // MBED_QSPI_FLASH_MX25LM51245G_H

TESTS/mbed_hal/qspi/flash_configs/flash_configs.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@
3232
#elif defined(TARGET_DISCO_F769NI)
3333
#include "MX25L51245G_config.h" // MX25L51245G
3434

35+
#elif defined(TARGET_DISCO_L4R9I)
36+
#include "MX25LM51245G_config.h" // MX25LM51245G
37+
3538
#elif defined(TARGET_DISCO_L476VG)
3639
#include "N25Q128A_config.h" // N25Q128A13EF840E
3740
/* See STM32L476 Errata Sheet, it is not possible to use Dual-/Quad-mode for the command phase */

TESTS/mbed_hal/qspi/main.cpp

Lines changed: 18 additions & 0 deletions
Large diffs are not rendered by default.

TESTS/mbed_hal/qspi/qspi_test_utils.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,19 @@ struct Qspi {
7777

7878

7979
#define READ_1_1_1 MODE_1_1_1, QSPI_CMD_READ_1IO, QSPI_READ_1IO_DUMMY_CYCLE
80+
#ifdef QSPI_CMD_READ_1I2O
8081
#define READ_1_1_2 MODE_1_1_2, QSPI_CMD_READ_1I2O, QSPI_READ_1I2O_DUMMY_CYCLE
82+
#endif
83+
#ifdef QSPI_CMD_READ_2IO
8184
#define READ_1_2_2 MODE_1_2_2, QSPI_CMD_READ_2IO, QSPI_READ_2IO_DUMMY_CYCLE
85+
#endif
86+
#ifdef QSPI_CMD_READ_1I4O
8287
#define READ_1_1_4 MODE_1_1_4, QSPI_CMD_READ_1I4O, QSPI_READ_1I4O_DUMMY_CYCLE
88+
#endif
89+
#ifdef QSPI_CMD_READ_4IO
8390
#define READ_1_4_4 MODE_1_4_4, QSPI_CMD_READ_4IO, QSPI_READ_4IO_DUMMY_CYCLE
91+
#endif
92+
8493
#ifdef QSPI_CMD_READ_DPI
8594
#define READ_2_2_2 MODE_2_2_2, QSPI_CMD_READ_DPI, QSPI_READ_2IO_DUMMY_CYCLE
8695
#endif

features/cellular/framework/AT/ATHandler.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,19 @@ int32_t ATHandler::read_int()
722722
return -1;
723723
}
724724

725-
return std::strtol(buff, NULL, 10);
725+
errno = 0;
726+
char *endptr;
727+
long result = std::strtol(buff, &endptr, 10);
728+
if ((result == LONG_MIN || result == LONG_MAX) && errno == ERANGE) {
729+
return -1; // overflow/underflow
730+
}
731+
if (result < 0) {
732+
return -1; // negative values are unsupported
733+
}
734+
if (*buff == '\0') {
735+
return -1; // empty string
736+
}
737+
return (int32_t) result;
726738
}
727739

728740
void ATHandler::set_delimiter(char delimiter)

features/cellular/framework/AT/ATHandler.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -416,9 +416,9 @@ class ATHandler {
416416
*/
417417
ssize_t read_hex_string(char *str, size_t size);
418418

419-
/** Reads as string and converts result to integer. Supports only positive integers.
419+
/** Reads as string and converts result to integer. Supports only non-negative integers.
420420
*
421-
* @return the positive integer or -1 in case of error.
421+
* @return the non-negative integer or -1 in case of error.
422422
*/
423423
int32_t read_int();
424424

features/storage/kvstore/tdbstore/TDBStore.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1414,7 +1414,7 @@ int TDBStore::do_reserved_data_get(void *reserved_data, size_t reserved_data_buf
14141414

14151415
while (actual_size) {
14161416
uint32_t chunk = std::min(work_buf_size, (uint32_t) actual_size);
1417-
ret = read_area(_active_area, offset, chunk, buf);
1417+
ret = read_area(_active_area, offset, chunk, buf + offset);
14181418
if (ret) {
14191419
return ret;
14201420
}

rtos/source/Mutex.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ bool Mutex::trylock_for(uint32_t millisec)
9797
{
9898
osStatus status = osMutexAcquire(_id, millisec);
9999
if (status == osOK) {
100+
_count++;
100101
return true;
101102
}
102103

targets/TARGET_STM/TARGET_STM32F0/device/stm32f0xx_hal_i2c.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2592,7 +2592,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c,
25922592
/* Prepare transfer parameters */
25932593
hi2c->pBuffPtr = pData;
25942594
hi2c->XferCount = Size;
2595-
hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE));
2595+
hi2c->XferOptions = XferOptions;
25962596
hi2c->XferISR = I2C_Master_ISR_IT;
25972597

25982598
/* If size > MAX_NBYTE_SIZE, use reload mode */
@@ -2658,7 +2658,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Receive_IT(I2C_HandleTypeDef *hi2c,
26582658
/* Prepare transfer parameters */
26592659
hi2c->pBuffPtr = pData;
26602660
hi2c->XferCount = Size;
2661-
hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE));
2661+
hi2c->XferOptions = XferOptions;
26622662
hi2c->XferISR = I2C_Master_ISR_IT;
26632663

26642664
/* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */

targets/TARGET_STM/TARGET_STM32F3/device/stm32f3xx_hal_i2c.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2592,7 +2592,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Transmit_IT(I2C_HandleTypeDef *hi2c,
25922592
/* Prepare transfer parameters */
25932593
hi2c->pBuffPtr = pData;
25942594
hi2c->XferCount = Size;
2595-
hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE)); // MBED patch
2595+
hi2c->XferOptions = XferOptions;
25962596
hi2c->XferISR = I2C_Master_ISR_IT;
25972597

25982598
/* If size > MAX_NBYTE_SIZE, use reload mode */
@@ -2666,7 +2666,7 @@ HAL_StatusTypeDef HAL_I2C_Master_Sequential_Receive_IT(I2C_HandleTypeDef *hi2c,
26662666
/* Prepare transfer parameters */
26672667
hi2c->pBuffPtr = pData;
26682668
hi2c->XferCount = Size;
2669-
hi2c->XferOptions = (XferOptions & (~I2C_RELOAD_MODE)); // MBED patch
2669+
hi2c->XferOptions = XferOptions;
26702670
hi2c->XferISR = I2C_Master_ISR_IT;
26712671

26722672
/* If hi2c->XferCount > MAX_NBYTE_SIZE, use reload mode */

0 commit comments

Comments
 (0)