Lines Matching +full:addr +full:- +full:range
2 * SPDX-License-Identifier: Apache-2.0
40 uint32_t aprom_size = RMC_APROM_END - RMC_APROM_BASE; in flash_numaker_is_range_valid()
48 if (offset >= aprom_size || len > aprom_size || (aprom_size - offset) < len) { in flash_numaker_is_range_valid()
62 * return -EINVAL erroneous code
67 struct flash_numaker_data *dev_data = dev->data; in flash_numaker_erase()
71 uint32_t addr = dev_data->flash_block_base + offset; in flash_numaker_erase() local
78 /* Validate range */ in flash_numaker_erase()
80 return -EINVAL; in flash_numaker_erase()
84 if (((addr % RMC_FLASH_PAGE_SIZE) != 0) || ((len % RMC_FLASH_PAGE_SIZE) != 0)) { in flash_numaker_erase()
85 return -EINVAL; in flash_numaker_erase()
89 if (k_sem_take(&dev_data->write_lock, K_NO_WAIT)) { in flash_numaker_erase()
90 return -EACCES; in flash_numaker_erase()
97 if (RMC_Erase(addr)) { in flash_numaker_erase()
98 LOG_ERR("Erase flash page failed or erase time-out"); in flash_numaker_erase()
99 rc = -EIO; in flash_numaker_erase()
102 page_nums--; in flash_numaker_erase()
103 addr += RMC_FLASH_PAGE_SIZE; in flash_numaker_erase()
110 k_sem_give(&dev_data->write_lock); in flash_numaker_erase()
123 * return -EIO erroneous code
127 struct flash_numaker_data *dev_data = dev->data; in flash_numaker_read()
128 uint32_t addr = dev_data->flash_block_base + offset; in flash_numaker_read() local
135 /* Validate range */ in flash_numaker_read()
137 return -EINVAL; in flash_numaker_read()
141 memcpy(data, (void *)addr, len); in flash_numaker_read()
158 retval = -1; in flash_numaker_block_write()
167 struct flash_numaker_data *dev_data = dev->data; in flash_numaker_write()
170 uint32_t addr = dev_data->flash_block_base + offset; in flash_numaker_write() local
180 /* Validate range */ in flash_numaker_write()
182 return -EINVAL; in flash_numaker_write()
186 if ((addr % flash_numaker_parameters.write_block_size) != 0) { in flash_numaker_write()
187 return -EINVAL; in flash_numaker_write()
192 return -EINVAL; in flash_numaker_write()
197 return -EINVAL; in flash_numaker_write()
200 if (k_sem_take(&dev_data->write_lock, K_FOREVER)) { in flash_numaker_write()
201 return -EACCES; in flash_numaker_write()
207 if (flash_numaker_block_write(addr, pu8_data, block_size)) { in flash_numaker_write()
208 rc = -EIO; in flash_numaker_write()
212 addr += block_size; in flash_numaker_write()
213 blocks--; in flash_numaker_write()
219 k_sem_give(&dev_data->write_lock); in flash_numaker_write()
261 struct flash_numaker_data *dev_data = dev->data; in flash_numaker_init()
263 k_sem_init(&dev_data->write_lock, 1, 1); in flash_numaker_init()
271 dev_data->flash_block_base = (uint32_t)RMC_APROM_BASE; in flash_numaker_init()
272 dev_data->rmc = (RMC_T *)DT_REG_ADDR(DT_NODELABEL(rmc)); in flash_numaker_init()