forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.6 KiB
64 lines
1.6 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
/* |
|
* Copyright (C) Marvell International Ltd. and its affiliates |
|
*/ |
|
|
|
#ifndef _SEQ_EXEC_H |
|
#define _SEQ_EXEC_H |
|
|
|
#define NA 0xff |
|
#define DEFAULT_PARAM 0 |
|
#define MV_BOARD_TCLK_ERROR 0xffffffff |
|
|
|
#define NO_DATA 0xffffffff |
|
#define MAX_DATA_ARRAY 5 |
|
#define FIRST_CELL 0 |
|
|
|
/* Operation types */ |
|
enum mv_op { |
|
WRITE_OP, |
|
DELAY_OP, |
|
POLL_OP, |
|
}; |
|
|
|
/* Operation parameters */ |
|
struct op_params { |
|
u32 unit_base_reg; |
|
u32 unit_offset; |
|
u32 mask; |
|
u32 data[MAX_DATA_ARRAY]; /* data array */ |
|
u8 wait_time; /* msec */ |
|
u16 num_of_loops; /* for polling only */ |
|
}; |
|
|
|
/* |
|
* Sequence parameters. Each sequence contains: |
|
* 1. Sequence id. |
|
* 2. Sequence size (total amount of operations during the sequence) |
|
* 3. a series of operations. operations can be write, poll or delay |
|
* 4. index in the data array (the entry where the relevant data sits) |
|
*/ |
|
struct cfg_seq { |
|
struct op_params *op_params_ptr; |
|
u8 cfg_seq_size; |
|
u8 data_arr_idx; |
|
}; |
|
|
|
extern struct cfg_seq serdes_seq_db[]; |
|
|
|
/* |
|
* A generic function type for executing an operation (write, poll or delay) |
|
*/ |
|
typedef int (*op_execute_func_ptr)(u32 serdes_num, struct op_params *params, |
|
u32 data_arr_idx); |
|
|
|
/* Specific functions for executing each operation */ |
|
int write_op_execute(u32 serdes_num, struct op_params *params, |
|
u32 data_arr_idx); |
|
int delay_op_execute(u32 serdes_num, struct op_params *params, |
|
u32 data_arr_idx); |
|
int poll_op_execute(u32 serdes_num, struct op_params *params, u32 data_arr_idx); |
|
enum mv_op get_cfg_seq_op(struct op_params *params); |
|
int mv_seq_exec(u32 serdes_num, u32 seq_id); |
|
|
|
#endif /*_SEQ_EXEC_H*/
|
|
|