diff options
Diffstat (limited to 'util/uut/cmd.c')
-rw-r--r-- | util/uut/cmd.c | 482 |
1 files changed, 0 insertions, 482 deletions
diff --git a/util/uut/cmd.c b/util/uut/cmd.c deleted file mode 100644 index 57cf75a29e..0000000000 --- a/util/uut/cmd.c +++ /dev/null @@ -1,482 +0,0 @@ -/* - * Copyright 2018 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/* This file creates the UART Program Protocol API commands. */ - -#include <stdint.h> -#include <stdio.h> -#include <string.h> - -#include "cmd.h" -#include "lib_crc.h" -#include "main.h" - - /* Extracting Byte - 8 bit: MSB, LSB */ -#define MSB(u16) ((uint8_t)((uint16_t)(u16) >> 8)) -#define LSB(u16) ((uint8_t)(u16)) - -/*---------------------------------------------------------------------------- - * SPI Flash commands - *--------------------------------------------------------------------------- - */ - -#define SPI_READ_JEDEC_ID_CMD 0x9F -#define SPI_WRITE_ENABLE_CMD 0x06 -#define SPI_WRITE_DISABLE_CMD 0x04 -#define SPI_READ_STATUS_REG_CMD 0x05 -#define SPI_WRITE_STATUS_REG_CMD 0x01 -#define SPI_READ_DATA_CMD 0x03 -#define SPI_PAGE_PRGM_CMD 0x02 -#define SPI_SECTOR_ERASE_CMD 0xD8 -#define SPI_BULK_ERASE_CMD 0xC7 -#define SPI_READ_PID_CMD 0x90 - -union cmd_addr { - uint8_t c_adr[4]; - uint32_t h_adr; -}; - -/*---------------------------------------------------------------------------- - * Function implementation - *--------------------------------------------------------------------------- - */ - -/*---------------------------------------------------------------------------- - * Function: cmd_create_sync - * - * Parameters: cmd_info - Pointer to a command buffer. - * cmd_len - Pointer to command length. - * Returns: none. - * Side effects: - * Description: - * Create a Host to Device SYNC protocol command. - * The total command length is written to 'cmd_len'. - *--------------------------------------------------------------------------- - */ -void cmd_create_sync(uint8_t *cmd_info, uint32_t *cmd_len) -{ - uint32_t len = 0; - - /* Build the command buffer */ - cmd_info[len++] = UFPP_H2D_SYNC_CMD; - - /* Return total command length */ - *cmd_len = len; -} - -/*--------------------------------------------------------------------------- - * Function: cmd_create_write - * - * Parameters: addr - Memory address to write to. - * size - Size of daya (in bytes) to write to memory. - * data_buf - Pointer to data buffer containing raw data to write. - * cmd_info - Pointer to a command buffer. - * cmd_len - Pointer to command length. - * Returns: none. - * Side effects: - * Description: - * Create a WRITE protocol command. - * The command buffer is enclosed by CRC, calculated on command - * information and raw data. - * The total command length is written to 'cmd_len'. - *--------------------------------------------------------------------------- - */ -void cmd_create_write(uint32_t addr, uint32_t size, uint8_t *data_buf, - uint8_t *cmd_info, uint32_t *cmd_len) -{ - uint32_t i; - union cmd_addr adr_tr; - uint16_t crc = 0; - uint32_t len = 0; - - /* Build the command buffer */ - cmd_info[len++] = UFPP_WRITE_CMD; - cmd_info[len++] = (uint8_t)(size - 1); - - /* Insert Address */ - adr_tr.h_adr = addr; - cmd_info[len++] = adr_tr.c_adr[3]; - cmd_info[len++] = adr_tr.c_adr[2]; - cmd_info[len++] = adr_tr.c_adr[1]; - cmd_info[len++] = adr_tr.c_adr[0]; - - /* Insert data */ - memcpy(&cmd_info[len], data_buf, size); - len += size; - - /* Calculate CRC */ - for (i = 0; i < len; i++) - crc = update_crc(crc, (char)cmd_info[i]); - - /* Insert CRC */ - cmd_info[len++] = MSB(crc); - cmd_info[len++] = LSB(crc); - - /* Return total command length */ - *cmd_len = len; -} - -/*---------------------------------------------------------------------------- - * Function: cmd_create_read - * - * Parameters: addr - Memory address to read from. - * size - Size of daya (in bytes) to read from memory. - * cmd_info - Pointer to a command buffer. - * cmd_len - Pointer to command length. - * Returns: none. - * Side effects: - * Description: - * Create a READ protocol command. - * The command buffer is enclosed by CRC, calculated on command - * information and raw data. - * The total command length is written to 'cmd_len'. - *--------------------------------------------------------------------------- - */ -void cmd_create_read(uint32_t addr, uint8_t size, uint8_t *cmd_info, - uint32_t *cmd_len) -{ - uint32_t i; - union cmd_addr adr_tr; - uint16_t crc = 0; - uint32_t len = 0; - - /* Build the command buffer */ - cmd_info[len++] = UFPP_READ_CMD; - cmd_info[len++] = (uint8_t)size; - - /* Insert Address */ - adr_tr.h_adr = addr; - cmd_info[len++] = adr_tr.c_adr[3]; - cmd_info[len++] = adr_tr.c_adr[2]; - cmd_info[len++] = adr_tr.c_adr[1]; - cmd_info[len++] = adr_tr.c_adr[0]; - - /* Calculate CRC */ - for (i = 0; i < len; i++) - crc = update_crc(crc, (char)cmd_info[i]); - - /* Insert CRC */ - cmd_info[len++] = MSB(crc); - cmd_info[len++] = LSB(crc); - - /* Return total command length */ - *cmd_len = len; -} - -/*---------------------------------------------------------------------------- - * Function: cmd_create_exec - * - * Parameters: addr - Memory address to execute from. - * cmd_info - Pointer to a command buffer. - * cmd_len - Pointer to command length. - * Returns: none. - * Side effects: - * Description: - * Create an FCALL protocol command. - * The command buffer is enclosed by CRC, calculated on command - * information and raw data. - * The total command length is written to 'cmd_len'. - *--------------------------------------------------------------------------- - */ -void cmd_create_exec(uint32_t addr, uint8_t *cmd_info, uint32_t *cmd_len) -{ - uint32_t i; - union cmd_addr adr_tr; - uint16_t crc = 0; - uint32_t len = 0; - - /* Build the command buffer */ - cmd_info[len++] = UFPP_FCALL_CMD; - cmd_info[len++] = 0; - - /* Insert Address */ - adr_tr.h_adr = addr; - cmd_info[len++] = adr_tr.c_adr[3]; - cmd_info[len++] = adr_tr.c_adr[2]; - cmd_info[len++] = adr_tr.c_adr[1]; - cmd_info[len++] = adr_tr.c_adr[0]; - - /* Calculate CRC */ - for (i = 0; i < len; i++) - crc = update_crc(crc, (char)cmd_info[i]); - - /* Insert CRC */ - cmd_info[len++] = MSB(crc); - cmd_info[len++] = LSB(crc); - - /* Return total command length */ - *cmd_len = len; -} - -/*--------------------------------------------------------------------------- - * Function: cmd_build_sync - * - * Parameters: cmd_buf - Pointer to a command buffer. - * cmd_num - Pointer to command number. - * Returns: none. - * Description: - * Build a synchronization command buffer. - * The total command number is written to 'cmd_num'. - *--------------------------------------------------------------------------- - */ -void cmd_build_sync(struct command_node *cmd_buf, uint32_t *cmd_num) -{ - uint32_t cmd = 0; - - cmd_create_sync(cmd_buf[cmd].cmd, &cmd_buf[cmd].cmd_size); - cmd_buf[cmd].resp_size = 1; - cmd++; - - *cmd_num = cmd; -} - -/*---------------------------------------------------------------------------- - * Function: cmd_build_exec_exit - * - * Parameters: addr - Memory address to execute from. - * cmd_buf - Pointer to a command buffer. - * cmd_num - Pointer to command number. - * Returns: none. - * Side effects: - * Description: - * Build an Excute command buffer. - * Command does not expect the executed code to return, that is, - * only FCALL protocol - * command code is expected. - * Determine the expected response size per each command. - * The total command number is written to 'cmd_num'. - *--------------------------------------------------------------------------- - */ -void cmd_build_exec_exit(uint32_t addr, struct command_node *cmd_buf, - uint32_t *cmd_num) -{ - uint32_t cmd = 0; - - cmd_create_exec(addr, cmd_buf[cmd].cmd, &cmd_buf[cmd].cmd_size); - cmd_buf[cmd].resp_size = 1; - cmd++; - - *cmd_num = cmd; -} - -/*---------------------------------------------------------------------------- - * Function: cmd_build_exec_ret - * - * Parameters: addr - Memory address to execute from. - * cmd_buf - Pointer to a command buffer. - * cmd_num - Pointer to command number. - * Returns: none. - * Side effects: - * Description: - * Build an Excute command buffer. - * Command expects the executed code to return, that is, - * FCALL_RSLT protocol command - * code is expected, together with the execution result. - * Determine the expected response size per each command. - * The total command number is written to 'cmd_num'. - *--------------------------------------------------------------------------- - */ -void cmd_build_exec_ret(uint32_t addr, struct command_node *cmd_buf, - uint32_t *cmd_num) -{ - uint32_t cmd = 0; - - cmd_create_exec(addr, cmd_buf[cmd].cmd, &cmd_buf[cmd].cmd_size); - cmd_buf[cmd].resp_size = 3; - cmd++; - - *cmd_num = cmd; -} - -/*---------------------------------------------------------------------------- - * Function: cmd_disp_sync - * - * Parameters: resp_buf - Pointer to a response buffer. - * Returns: TRUE if successful, FALSE in the case of an error. - * Side effects: - * Description: - * Display SYNC command response information. - *--------------------------------------------------------------------------- - */ -bool cmd_disp_sync(uint8_t *resp_buf) -{ - if (resp_buf[0] == (uint8_t)(UFPP_D2H_SYNC_CMD)) { - display_color_msg(SUCCESS, "Host/Device are synchronized\n"); - return true; - } - - display_color_msg(FAIL, "Host/Device synchronization failed!!!\n"); - return false; -} - -/*---------------------------------------------------------------------------- - * Function: cmd_disp_write - * - * Parameters: resp_buf - Pointer to a response buffer. - * resp_size - Response size. - * resp_num - Response packet number. - * Returns: TRUE if successful, FALSE in the case of an error. - * Side effects: - * Description: - * Display WRITE command response information. - *--------------------------------------------------------------------------- - */ -bool cmd_disp_write(uint8_t *resp_buf, uint32_t resp_size, uint32_t resp_num, - uint32_t total_size) -{ - if (resp_buf[0] == (uint8_t)(UFPP_WRITE_CMD)) { - display_color_msg(SUCCESS, - "\rTransmitted packet of size %u bytes, packet " - "[%u]out of [%u]", - resp_size, resp_num, total_size); - return true; - } - - display_color_msg(FAIL, "\nWrite packet [%lu] Failed\n", resp_num); - return false; -} - -/*----------------------------------------------------------------------------- - * Function: cmd_disp_read - * - * Parameters: resp_buf - Pointer to a response buffer. - * resp_size - Response size. - * resp_num - Response packet number. - * Returns: TRUE if successful, FALSE in the case of an error. - * Side effects: - * Description: - * Display READ command response information. - *--------------------------------------------------------------------------- - */ -bool cmd_disp_read(uint8_t *resp_buf, uint32_t resp_size, uint32_t resp_num, - uint32_t total_size) -{ - if (resp_buf[0] == (uint8_t)(UFPP_READ_CMD)) { - display_color_msg(SUCCESS, - "\rReceived packet of size %u bytes, packet [%u] out " - "of [%u]", - resp_size, resp_num, total_size); - return true; - } - - display_color_msg(FAIL, "\nRead packet [%u] Failed\n", resp_num); - return false; -} - -/*---------------------------------------------------------------------------- - * Function: cmd_disp_data - * - * Parameters: resp_buf - Pointer to a response buffer. - * resp_size - Response size. - * Returns: none. - * Side effects: - * Description: - * Display raw data, read from memory. - *--------------------------------------------------------------------------- - */ -void cmd_disp_data(uint8_t *resp_buf, uint32_t resp_size) -{ - uint32_t idx; - uint32_t i; - - for (idx = 0; idx < resp_size; idx += 4) { - if ((idx % 16) == 0) - printf("\n"); - - printf("0x"); - for (i = 4; i > 0; i--) - printf("%02x", resp_buf[idx + i - 1]); - - if ((idx % 4) == 0) - printf(" "); - } - - printf("\n"); -} - -/*---------------------------------------------------------------------------- - * Function: cmd_disp_flash_erase_dev - * - * Parameters: resp_buf - Pointer to a response buffer. - * dev_num - Flash Device Number. - * Returns: none. - * Side effects: - * Description: - * Display BULK_ERASE command response information. - *--------------------------------------------------------------------------- - */ -void cmd_disp_flash_erase_dev(uint8_t *resp_buf, uint32_t dev_num) -{ - if (resp_buf[0] == (uint8_t)(UFPP_WRITE_CMD)) { - display_color_msg(SUCCESS, - "Flash Erase of device [%u] Passed\n", dev_num); - } else { - display_color_msg( - FAIL, "Flash Erase of device [%u] Failed\n", dev_num); - } -} - -/*--------------------------------------------------------------------------- - * Function: cmd_disp_flash_erase_sect - * - * Parameters: resp_buf - Pointer to a response buffer. - * Returns: none. - * Side effects: - * Description: - * Display BULK_ERASE command response information. - *--------------------------------------------------------------------------- - */ -void cmd_disp_flash_erase_sect(uint8_t *resp_buf, uint32_t dev_num) -{ - if (resp_buf[0] == (uint8_t)(UFPP_WRITE_CMD)) { - display_color_msg(SUCCESS, - "Sector Erase of device [%lu] Passed\n", dev_num); - } else { - display_color_msg( - FAIL, "Sector Erase of device [%lu] Failed\n", dev_num); - } -} - -/*--------------------------------------------------------------------------- - * Function: cmd_disp_exec_exit - * - * Parameters: resp_buf - Pointer to a response buffer. - * Returns: none. - * Side effects: - * Description: - * Display Execute command response information. - *--------------------------------------------------------------------------- - */ -void cmd_disp_exec_exit(uint8_t *resp_buf) -{ - if (resp_buf[0] == (uint8_t)(UFPP_FCALL_CMD)) - display_color_msg(SUCCESS, "Execute Command Passed\n"); - else - display_color_msg(FAIL, "Execute Command Failed\n"); -} - -/*--------------------------------------------------------------------------- - * Function: cmd_disp_exec_ret - * - * Parameters: resp_buf - Pointer to a response buffer. - * Returns: none. - * Side effects: - * Description: - * Display Execute Result command response information. - *--------------------------------------------------------------------------- - */ -void cmd_disp_exec_ret(uint8_t *resp_buf) -{ - if (resp_buf[1] == (uint8_t)(UFPP_FCALL_RSLT_CMD)) { - display_color_msg(SUCCESS, - "Execute Command Passed, execution result is [0x%X]\n", - resp_buf[2]); - } else { - display_color_msg(FAIL, - "Execute Command Failed [0x%X] [0x%X], rslt=[0x%X]\n", - resp_buf[0], resp_buf[1], resp_buf[2]); - } -} |