OpenOCD
pld.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 /***************************************************************************
4  * Copyright (C) 2006 by Dominic Rath *
5  * Dominic.Rath@gmx.de *
6  ***************************************************************************/
7 
8 #ifndef OPENOCD_PLD_PLD_H
9 #define OPENOCD_PLD_PLD_H
10 
11 #include <helper/command.h>
12 
13 struct pld_device;
14 
15 #define __PLD_CREATE_COMMAND(name) \
16  COMMAND_HELPER(name, struct pld_device *pld)
17 
18 struct pld_ipdbg_hub {
19  struct jtag_tap *tap;
20  unsigned int user_ir_code;
21 };
22 
23 int pld_has_jtagspi_instruction(struct pld_device *device, bool *has_instruction);
24 int pld_get_jtagspi_userircode(struct pld_device *pld_device, unsigned int *ir);
25 
26 int pld_get_jtagspi_stuff_bits(struct pld_device *pld_device, unsigned int *facing_read_bits,
27  unsigned int *trailing_write_bits);
30 
31 struct pld_driver {
32  const char *name;
33  __PLD_CREATE_COMMAND((*pld_create_command));
35  int (*load)(struct pld_device *pld_device, const char *filename);
36  int (*get_ipdbg_hub)(int user_num, struct pld_device *pld_device, struct pld_ipdbg_hub *hub);
37  int (*has_jtagspi_instruction)(struct pld_device *device, bool *has_instruction);
38  int (*get_jtagspi_userircode)(struct pld_device *pld_device, unsigned int *ir);
41  int (*get_stuff_bits)(struct pld_device *pld_device, unsigned int *facing_read_bits,
42  unsigned int *trailing_write_bits);
43 };
44 
45 #define PLD_CREATE_COMMAND_HANDLER(name) \
46  static __PLD_CREATE_COMMAND(name)
47 
48 struct pld_device {
49  struct pld_driver *driver;
50  void *driver_priv;
51  struct pld_device *next;
52  char *name;
53 };
54 
55 int pld_register_commands(struct command_context *cmd_ctx);
56 
57 struct pld_device *get_pld_device_by_num(int num);
58 struct pld_device *get_pld_device_by_name(const char *name);
59 struct pld_device *get_pld_device_by_name_or_numstr(const char *str);
60 
61 #define ERROR_PLD_DEVICE_INVALID (-1000)
62 #define ERROR_PLD_FILE_LOAD_FAILED (-1001)
63 
64 extern struct pld_driver efinix_pld;
65 extern struct pld_driver gatemate_pld;
66 extern struct pld_driver gowin_pld;
67 extern struct pld_driver intel_pld;
68 extern struct pld_driver lattice_pld;
69 extern struct pld_driver virtex2_pld;
70 
71 #endif /* OPENOCD_PLD_PLD_H */
const char * name
Definition: armv4_5.c:76
static const struct device_t * device
Definition: at91rm9200.c:94
struct pld_device * get_pld_device_by_name(const char *name)
Definition: pld.c:46
struct pld_driver intel_pld
Definition: intel.c:500
struct pld_device * get_pld_device_by_num(int num)
Definition: pld.c:31
struct pld_device * get_pld_device_by_name_or_numstr(const char *str)
Definition: pld.c:56
int pld_get_jtagspi_stuff_bits(struct pld_device *pld_device, unsigned int *facing_read_bits, unsigned int *trailing_write_bits)
Definition: pld.c:109
struct pld_driver efinix_pld
Definition: efinix.c:300
int pld_get_jtagspi_userircode(struct pld_device *pld_device, unsigned int *ir)
Definition: pld.c:92
struct pld_driver lattice_pld
Definition: lattice.c:653
struct pld_driver gatemate_pld
Definition: gatemate.c:300
int pld_connect_spi_to_jtag(struct pld_device *pld_device)
Definition: pld.c:127
struct pld_driver virtex2_pld
Definition: virtex2.c:472
int pld_register_commands(struct command_context *cmd_ctx)
Definition: pld.c:368
int pld_disconnect_spi_from_jtag(struct pld_device *pld_device)
Definition: pld.c:144
int pld_has_jtagspi_instruction(struct pld_device *device, bool *has_instruction)
Definition: pld.c:73
struct pld_driver gowin_pld
Definition: gowin.c:592
Definition: jtag.h:101
Definition: pld.h:48
void * driver_priv
Definition: pld.h:50
struct pld_device * next
Definition: pld.h:51
struct pld_driver * driver
Definition: pld.h:49
char * name
Definition: pld.h:52
Definition: pld.h:31
int(* connect_spi_to_jtag)(struct pld_device *pld_device)
Definition: pld.h:39
__PLD_CREATE_COMMAND((*pld_create_command))
int(* load)(struct pld_device *pld_device, const char *filename)
Definition: pld.h:35
const char * name
Definition: pld.h:32
int(* get_ipdbg_hub)(int user_num, struct pld_device *pld_device, struct pld_ipdbg_hub *hub)
Definition: pld.h:36
int(* get_stuff_bits)(struct pld_device *pld_device, unsigned int *facing_read_bits, unsigned int *trailing_write_bits)
Definition: pld.h:41
int(* disconnect_spi_from_jtag)(struct pld_device *pld_device)
Definition: pld.h:40
int(* has_jtagspi_instruction)(struct pld_device *device, bool *has_instruction)
Definition: pld.h:37
int(* get_jtagspi_userircode)(struct pld_device *pld_device, unsigned int *ir)
Definition: pld.h:38
const struct command_registration * commands
Definition: pld.h:34
unsigned int user_ir_code
Definition: pld.h:20
struct jtag_tap * tap
Definition: pld.h:19