blob: abd68fb12b4c78c2866f0c19275311acd476b48f [file] [log] [blame]
/*
* Copyright (c) 2020, Mediatek Inc. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef UFS_CMNDS_H_
#define UFS_CMNDS_H_
#include "options.h"
#include <asm/types.h>
enum field_width {
BYTE = (1 << 0),
WORD = (1 << 1),
DWORD = (1 << 2),
DDWORD = (1 << 3)
};
struct desc_field_offset {
char *name;
int offset;
enum field_width width_in_bytes;
};
enum acc_mode {
READ_NRML = (1 << 0),
READ_ONLY = (1 << 1),
WRITE_ONLY = (1 << 2),
WRITE_ONCE = (1 << 3),
WRITE_PRSIST = (1 << 4),
WRITE_VLT = (1 << 5),
SET_ONLY = (1 << 6),
WRITE_PWR = (1 << 7),
MODE_INVALID = (1 << 8)
};
enum attr_level {
DEV = (1 << 0),
ARRAY = (1 << 1),
LEVEL_INVALID = (1 << 2)
};
enum access_type {
URD = (1 << 0),
UWRT = (1 << 1),
ACC_INVALID = (1 << 2)
};
struct attr_fields {
char *name;
enum field_width width_in_bytes;
enum access_type acc_type;
enum acc_mode acc_mode;
enum attr_level device_level;
};
struct flag_fields {
char *name;
enum access_type acc_type;
enum acc_mode acc_mode;
enum attr_level device_level;
};
int do_desc(struct tool_options *opt);
int do_attributes(struct tool_options *opt);
int do_flags(struct tool_options *opt);
void print_command_help (char *prgname, int config_type);
int do_device_desc(int fd, __u8 *desc_buff);
void desc_help(char *tool_name);
void attribute_help(char *tool_name);
void flag_help(char *tool_name);
#endif /* UFS_CMNDS_H_ */