openocd: fix SPDX tag format for files .c
[fw/openocd] / src / flash / nand / orion.c
index b124deee6f086848a787a06a0dd5ae96750c0b77..7b19cbd24162ea4fef9fe8fa019b40523c02b561 100644 (file)
@@ -1,21 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2009 by Marvell Semiconductors, Inc.                    *
- *   Written by Nicolas Pitre <nico at marvell.com>                           *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   Written by Nicolas Pitre <nico at marvell.com>                        *
  ***************************************************************************/
 
 /*
 #include "config.h"
 #endif
 
-#include <flash/arm_nandio.h>
-#include <target/armv4_5.h>
-
-
-struct orion_nand_controller
-{
-       struct target   *target;
+#include "imp.h"
+#include "arm_io.h"
+#include <target/arm.h>
 
+struct orion_nand_controller {
        struct arm_nand_data    io;
 
        uint32_t                cmd;
@@ -52,7 +36,7 @@ struct orion_nand_controller
 static int orion_nand_command(struct nand_device *nand, uint8_t command)
 {
        struct orion_nand_controller *hw = nand->controller_priv;
-       struct target *target = hw->target;
+       struct target *target = nand->target;
 
        CHECK_HALTED;
        target_write_u8(target, hw->cmd, command);
@@ -62,7 +46,7 @@ static int orion_nand_command(struct nand_device *nand, uint8_t command)
 static int orion_nand_address(struct nand_device *nand, uint8_t address)
 {
        struct orion_nand_controller *hw = nand->controller_priv;
-       struct target *target = hw->target;
+       struct target *target = nand->target;
 
        CHECK_HALTED;
        target_write_u8(target, hw->addr, address);
@@ -72,7 +56,7 @@ static int orion_nand_address(struct nand_device *nand, uint8_t address)
 static int orion_nand_read(struct nand_device *nand, void *data)
 {
        struct orion_nand_controller *hw = nand->controller_priv;
-       struct target *target = hw->target;
+       struct target *target = nand->target;
 
        CHECK_HALTED;
        target_read_u8(target, hw->data, data);
@@ -82,7 +66,7 @@ static int orion_nand_read(struct nand_device *nand, void *data)
 static int orion_nand_write(struct nand_device *nand, uint16_t data)
 {
        struct orion_nand_controller *hw = nand->controller_priv;
-       struct target *target = hw->target;
+       struct target *target = nand->target;
 
        CHECK_HALTED;
        target_write_u8(target, hw->data, data);
@@ -115,35 +99,22 @@ static int orion_nand_reset(struct nand_device *nand)
        return orion_nand_command(nand, NAND_CMD_RESET);
 }
 
-static int orion_nand_controller_ready(struct nand_device *nand, int timeout)
-{
-       return 1;
-}
-
 NAND_DEVICE_COMMAND_HANDLER(orion_nand_device_command)
 {
        struct orion_nand_controller *hw;
        uint32_t base;
        uint8_t ale, cle;
 
-       if (CMD_ARGC != 3) {
-               LOG_ERROR("arguments must be: <target_id> <NAND_address>\n");
-               return ERROR_NAND_DEVICE_INVALID;
-       }
+       if (CMD_ARGC != 3)
+               return ERROR_COMMAND_SYNTAX_ERROR;
 
        hw = calloc(1, sizeof(*hw));
        if (!hw) {
-               LOG_ERROR("no memory for nand controller\n");
+               LOG_ERROR("no memory for nand controller");
                return ERROR_NAND_DEVICE_INVALID;
        }
 
        nand->controller_priv = hw;
-       hw->target = get_target(CMD_ARGV[1]);
-       if (!hw->target) {
-               LOG_ERROR("target '%s' not defined", CMD_ARGV[1]);
-               free(hw);
-               return ERROR_NAND_DEVICE_INVALID;
-       }
 
        COMMAND_PARSE_NUMBER(u32, CMD_ARGV[2], base);
        cle = 0;
@@ -153,7 +124,7 @@ NAND_DEVICE_COMMAND_HANDLER(orion_nand_device_command)
        hw->cmd = base + (1 << cle);
        hw->addr = base + (1 << ale);
 
-       hw->io.target = hw->target;
+       hw->io.target = nand->target;
        hw->io.data = hw->data;
        hw->io.op = ARM_NAND_NONE;
 
@@ -165,17 +136,15 @@ static int orion_nand_init(struct nand_device *nand)
        return ERROR_OK;
 }
 
-struct nand_flash_controller orion_nand_controller =
-{
-       .name                   = "orion",
-       .command                = orion_nand_command,
-       .address                = orion_nand_address,
-       .read_data              = orion_nand_read,
-       .write_data             = orion_nand_write,
-       .write_block_data       = orion_nand_fast_block_write,
-       .reset                  = orion_nand_reset,
-       .controller_ready       = orion_nand_controller_ready,
-       .nand_device_command    = orion_nand_device_command,
-       .init                   = orion_nand_init,
+struct nand_flash_controller orion_nand_controller = {
+       .name = "orion",
+       .usage = "<target_id> <NAND_address>",
+       .command = orion_nand_command,
+       .address = orion_nand_address,
+       .read_data = orion_nand_read,
+       .write_data = orion_nand_write,
+       .write_block_data = orion_nand_fast_block_write,
+       .reset = orion_nand_reset,
+       .nand_device_command = orion_nand_device_command,
+       .init = orion_nand_init,
 };
-