-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gr712: add dummy 'storage in ram' driver
JIRA: RTOS-616
- Loading branch information
Showing
4 changed files
with
122 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# | ||
# Makefile for flash-dummy | ||
# | ||
# Copyright 2023 Phoenix Systems | ||
# | ||
# %LICENSE% | ||
# | ||
|
||
OBJS += $(addprefix $(PREFIX_O)devices/flash-dummy/, flashdrv.o) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
/* | ||
* Phoenix-RTOS | ||
* | ||
* plo - operating system loader | ||
* | ||
* Dummy flash driver | ||
* | ||
* Copyright 2023 Phoenix Systems | ||
* Author: Lukasz Leczkowski | ||
* | ||
* This file is part of Phoenix-RTOS. | ||
* | ||
* %LICENSE% | ||
*/ | ||
|
||
#include <hal/hal.h> | ||
#include <lib/errno.h> | ||
#include <devices/devs.h> | ||
|
||
|
||
static int flashdrv_isValidMinor(unsigned int minor) | ||
{ | ||
return (minor < FLASH_NO) ? 1 : 0; | ||
} | ||
|
||
|
||
/* Device interface */ | ||
static ssize_t flashdrv_read(unsigned int minor, addr_t offs, void *buff, size_t len, time_t timeout) | ||
{ | ||
char *memptr; | ||
ssize_t ret = -EINVAL; | ||
|
||
(void)timeout; | ||
|
||
if (flashdrv_isValidMinor(minor) != 0) { | ||
memptr = FLASH_START; | ||
|
||
hal_memcpy(buff, memptr + offs, len); | ||
ret = (ssize_t)len; | ||
} | ||
|
||
return ret; | ||
} | ||
|
||
|
||
static ssize_t flashdrv_write(unsigned int minor, addr_t offs, const void *buff, size_t len) | ||
{ | ||
return -ENOSYS; | ||
} | ||
|
||
|
||
static int flashdrv_done(unsigned int minor) | ||
{ | ||
if (flashdrv_isValidMinor(minor) == 0) { | ||
return -EINVAL; | ||
} | ||
|
||
/* Nothing to do */ | ||
|
||
return EOK; | ||
} | ||
|
||
|
||
static int flashdrv_sync(unsigned int minor) | ||
{ | ||
if (flashdrv_isValidMinor(minor) == 0) { | ||
return -EINVAL; | ||
} | ||
|
||
/* Nothing to do */ | ||
|
||
return EOK; | ||
} | ||
|
||
|
||
static int flashdrv_map(unsigned int minor, addr_t addr, size_t sz, int mode, addr_t memaddr, size_t memsz, int memmode, addr_t *a) | ||
{ | ||
if (flashdrv_isValidMinor(minor) == 0) { | ||
return -EINVAL; | ||
} | ||
|
||
/* Data can be copied from device to map */ | ||
return dev_isNotMappable; | ||
} | ||
|
||
|
||
static int flashdrv_init(unsigned int minor) | ||
{ | ||
if (flashdrv_isValidMinor(minor) == 0) { | ||
return -EINVAL; | ||
} | ||
|
||
return EOK; | ||
} | ||
|
||
|
||
__attribute__((constructor)) static void flashdrv_reg(void) | ||
{ | ||
static const dev_handler_t h = { | ||
.init = flashdrv_init, | ||
.done = flashdrv_done, | ||
.read = flashdrv_read, | ||
.write = flashdrv_write, | ||
.erase = NULL, | ||
.sync = flashdrv_sync, | ||
.map = flashdrv_map | ||
}; | ||
|
||
devs_register(DEV_STORAGE, FLASH_NO, &h); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters