mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-24 03:53:31 +00:00
2b4ffbf6b4
This syncs drivers/ddr/marvell/a38x/ with the mv_ddr-armada-17.10 branch of https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell.git. The upstream code is incorporated omitting the ddr4 and apn806 and folding the nested a38x directory up one level. After that a semi-automated step is used to drop unused features with unifdef find drivers/ddr/marvell/a38x/ -name '*.[ch]' | \ xargs unifdef -m -UMV_DDR -UMV_DDR_ATF -UCONFIG_DDR4 \ -UCONFIG_APN806 -UCONFIG_MC_STATIC \ -UCONFIG_MC_STATIC_PRINT -UCONFIG_PHY_STATIC \ -UCONFIG_64BIT INTER_REGS_BASE is updated to be defined as SOC_REGS_PHY_BASE. Some now empty files are removed and the ternary license is replaced with a SPDX GPL-2.0+ identifier. Signed-off-by: Chris Packham <judge.packham@gmail.com> Signed-off-by: Stefan Roese <sr@denx.de>
64 lines
1.6 KiB
C
64 lines
1.6 KiB
C
/* 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*/
|