NAND/TCL: prepare for common "target" reference
Every NAND driver keeps private copy of "target" structure. Prepare infostructure to move private "target" copy in common/shared struct nand_device. Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
This commit is contained in:
parent
21a1c6ec33
commit
5f3603b8ef
|
@ -60,6 +60,7 @@ struct nand_ecclayout {
|
|||
struct nand_device
|
||||
{
|
||||
const char *name;
|
||||
struct target *target;
|
||||
struct nand_flash_controller *controller;
|
||||
void *controller_priv;
|
||||
struct nand_manufacturer *manufacturer;
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "core.h"
|
||||
#include "imp.h"
|
||||
#include "fileio.h"
|
||||
#include <target/target.h>
|
||||
|
||||
// to be removed
|
||||
extern struct nand_device *nand_devices;
|
||||
|
@ -537,16 +538,37 @@ COMMAND_HANDLER(handle_nand_list_drivers)
|
|||
static COMMAND_HELPER(create_nand_device, const char *bank_name,
|
||||
struct nand_flash_controller *controller)
|
||||
{
|
||||
struct nand_device *c;
|
||||
struct target *target;
|
||||
int retval;
|
||||
|
||||
if (CMD_ARGC < 2)
|
||||
{
|
||||
LOG_ERROR("missing target");
|
||||
return ERROR_COMMAND_ARGUMENT_INVALID;
|
||||
}
|
||||
target = get_target(CMD_ARGV[1]);
|
||||
if (!target) {
|
||||
LOG_ERROR("invalid target %s", CMD_ARGV[1]);
|
||||
return ERROR_COMMAND_ARGUMENT_INVALID;
|
||||
}
|
||||
|
||||
if (NULL != controller->commands)
|
||||
{
|
||||
int retval = register_commands(CMD_CTX, NULL,
|
||||
retval = register_commands(CMD_CTX, NULL,
|
||||
controller->commands);
|
||||
if (ERROR_OK != retval)
|
||||
return retval;
|
||||
}
|
||||
struct nand_device *c = malloc(sizeof(struct nand_device));
|
||||
c = malloc(sizeof(struct nand_device));
|
||||
if (c == NULL)
|
||||
{
|
||||
LOG_ERROR("End of memory");
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
c->name = strdup(bank_name);
|
||||
c->target = target;
|
||||
c->controller = controller;
|
||||
c->controller_priv = NULL;
|
||||
c->manufacturer = NULL;
|
||||
|
@ -557,7 +579,7 @@ static COMMAND_HELPER(create_nand_device, const char *bank_name,
|
|||
c->use_raw = 0;
|
||||
c->next = NULL;
|
||||
|
||||
int retval = CALL_COMMAND_HANDLER(controller->nand_device_command, c);
|
||||
retval = CALL_COMMAND_HANDLER(controller->nand_device_command, c);
|
||||
if (ERROR_OK != retval)
|
||||
{
|
||||
LOG_ERROR("'%s' driver rejected nand flash", controller->name);
|
||||
|
|
Loading…
Reference in New Issue