summaryrefslogtreecommitdiff
path: root/lib/io_storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/io_storage.c')
-rw-r--r--lib/io_storage.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/lib/io_storage.c b/lib/io_storage.c
index 204310a4..a3a8186d 100644
--- a/lib/io_storage.c
+++ b/lib/io_storage.c
@@ -31,13 +31,10 @@
#include <assert.h>
#include <io_driver.h>
#include <io_storage.h>
+#include <platform_def.h>
#include <stddef.h>
-#define MAX_DEVICES(plat_data) \
- (sizeof((plat_data)->devices)/sizeof((plat_data)->devices[0]))
-
-
/* Storage for a fixed maximum number of IO entities, definable by platform */
static io_entity_t entity_pool[MAX_IO_HANDLES];
@@ -48,9 +45,11 @@ static io_entity_t *entity_map[MAX_IO_HANDLES];
/* Track number of allocated entities */
static unsigned int entity_count;
+/* Array of fixed maximum of registered devices, definable by platform */
+static const io_dev_info_t *devices[MAX_IO_DEVICES];
-/* Used to keep a reference to platform-specific data */
-static io_plat_data_t *platform_data;
+/* Number of currently registered devices */
+static unsigned int dev_count;
#if DEBUG /* Extra validation functions only used in debug builds */
@@ -167,27 +166,15 @@ static int free_entity(const io_entity_t *entity)
/* Exported API */
-
-/* Initialise the IO layer */
-void io_init(io_plat_data_t *data)
-{
- assert(data != NULL);
- platform_data = data;
-}
-
-
/* Register a device driver */
int io_register_device(const io_dev_info_t *dev_info)
{
int result = IO_FAIL;
assert(dev_info != NULL);
- assert(platform_data != NULL);
-
- unsigned int dev_count = platform_data->dev_count;
- if (dev_count < MAX_DEVICES(platform_data)) {
- platform_data->devices[dev_count] = dev_info;
- platform_data->dev_count++;
+ if (dev_count < MAX_IO_DEVICES) {
+ devices[dev_count] = dev_info;
+ dev_count++;
result = IO_SUCCESS;
} else {
result = IO_RESOURCES_EXHAUSTED;