1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /***************************************************************************
4 * Copyright (C) 2006 by Dominic Rath *
5 * Dominic.Rath@gmx.de *
6 ***************************************************************************/
8 #ifndef OPENOCD_PLD_PLD_H
9 #define OPENOCD_PLD_PLD_H
11 #include <helper/command.h>
15 #define __PLD_CREATE_COMMAND(name) \
16 COMMAND_HELPER(name, struct pld_device *pld)
18 struct pld_ipdbg_hub
{
20 unsigned int user_ir_code
;
25 __PLD_CREATE_COMMAND((*pld_create_command
));
26 const struct command_registration
*commands
;
27 int (*load
)(struct pld_device
*pld_device
, const char *filename
);
28 int (*get_ipdbg_hub
)(int user_num
, struct pld_device
*pld_device
, struct pld_ipdbg_hub
*hub
);
31 #define PLD_CREATE_COMMAND_HANDLER(name) \
32 static __PLD_CREATE_COMMAND(name)
35 struct pld_driver
*driver
;
37 struct pld_device
*next
;
41 int pld_register_commands(struct command_context
*cmd_ctx
);
43 struct pld_device
*get_pld_device_by_num(int num
);
44 struct pld_device
*get_pld_device_by_name(const char *name
);
45 struct pld_device
*get_pld_device_by_name_or_numstr(const char *str
);
47 #define ERROR_PLD_DEVICE_INVALID (-1000)
48 #define ERROR_PLD_FILE_LOAD_FAILED (-1001)
50 extern struct pld_driver efinix_pld
;
51 extern struct pld_driver gatemate_pld
;
52 extern struct pld_driver gowin_pld
;
53 extern struct pld_driver intel_pld
;
54 extern struct pld_driver lattice_pld
;
55 extern struct pld_driver virtex2_pld
;
57 #endif /* OPENOCD_PLD_PLD_H */