OpenOCD
lattice.c File Reference
Include dependency graph for lattice.c:

Go to the source code of this file.

Data Structures

struct  lattice_devices_elem
 

Macros

#define PRELOAD   0x1C
 
#define USER1   0x32
 
#define USER2   0x38
 

Functions

 COMMAND_HANDLER (lattice_read_status_command_handler)
 
 COMMAND_HANDLER (lattice_read_usercode_register_command_handler)
 
 COMMAND_HANDLER (lattice_refresh_command_handler)
 
 COMMAND_HANDLER (lattice_set_preload_command_handler)
 
 COMMAND_HANDLER (lattice_write_usercode_register_command_handler)
 
static int lattice_check_device_family (struct lattice_pld_device *lattice_device)
 
static int lattice_connect_spi_to_jtag (struct pld_device *pld_device)
 
static int lattice_disconnect_spi_from_jtag (struct pld_device *pld_device)
 
static int lattice_get_ipdbg_hub (int user_num, struct pld_device *pld_device, struct pld_ipdbg_hub *hub)
 
static int lattice_get_stuff_bits (struct pld_device *pld_device, unsigned int *facing_read_bits, unsigned int *trailing_write_bits)
 
static int lattice_has_jtagspi_instruction (struct pld_device *device, bool *has_instruction)
 
static int lattice_load_command (struct pld_device *pld_device, const char *filename)
 
int lattice_preload (struct lattice_pld_device *lattice_device)
 
static int lattice_read_status_u32 (struct lattice_pld_device *lattice_device, uint32_t *status, uint32_t out, bool do_idle)
 
static int lattice_read_status_u64 (struct lattice_pld_device *lattice_device, uint64_t *status, uint64_t out)
 
int lattice_read_u32_register (struct jtag_tap *tap, uint8_t cmd, uint32_t *in_val, uint32_t out_val, bool do_idle)
 
int lattice_read_u64_register (struct jtag_tap *tap, uint8_t cmd, uint64_t *in_val, uint64_t out_val)
 
static int lattice_read_usercode (struct lattice_pld_device *lattice_device, uint32_t *usercode, uint32_t out)
 
int lattice_set_instr (struct jtag_tap *tap, uint8_t new_instr, tap_state_t endstate)
 
int lattice_verify_status_register_u32 (struct lattice_pld_device *lattice_device, uint32_t out, uint32_t expected, uint32_t mask, bool do_idle)
 
int lattice_verify_status_register_u64 (struct lattice_pld_device *lattice_device, uint64_t out, uint64_t expected, uint64_t mask)
 
int lattice_verify_usercode (struct lattice_pld_device *lattice_device, uint32_t out, uint32_t expected, uint32_t mask)
 
static int lattice_write_usercode (struct lattice_pld_device *lattice_device, uint32_t usercode)
 
 PLD_CREATE_COMMAND_HANDLER (lattice_pld_create_command)
 

Variables

static const struct command_registration lattice_command_handler []
 
static const struct lattice_devices_elem lattice_devices []
 
static const struct command_registration lattice_exec_command_handlers []
 
struct pld_driver lattice_pld
 

Macro Definition Documentation

◆ PRELOAD

#define PRELOAD   0x1C

Definition at line 20 of file lattice.c.

◆ USER1

#define USER1   0x32

Definition at line 21 of file lattice.c.

◆ USER2

#define USER2   0x38

Definition at line 22 of file lattice.c.

Function Documentation

◆ COMMAND_HANDLER() [1/5]

◆ COMMAND_HANDLER() [2/5]

COMMAND_HANDLER ( lattice_read_usercode_register_command_handler  )

◆ COMMAND_HANDLER() [3/5]

◆ COMMAND_HANDLER() [4/5]

COMMAND_HANDLER ( lattice_set_preload_command_handler  )

◆ COMMAND_HANDLER() [5/5]

COMMAND_HANDLER ( lattice_write_usercode_register_command_handler  )

◆ lattice_check_device_family()

◆ lattice_connect_spi_to_jtag()

◆ lattice_disconnect_spi_from_jtag()

◆ lattice_get_ipdbg_hub()

static int lattice_get_ipdbg_hub ( int  user_num,
struct pld_device pld_device,
struct pld_ipdbg_hub hub 
)
static

◆ lattice_get_stuff_bits()

static int lattice_get_stuff_bits ( struct pld_device pld_device,
unsigned int *  facing_read_bits,
unsigned int *  trailing_write_bits 
)
static

◆ lattice_has_jtagspi_instruction()

static int lattice_has_jtagspi_instruction ( struct pld_device device,
bool *  has_instruction 
)
static

Definition at line 409 of file lattice.c.

References ERROR_OK.

◆ lattice_load_command()

◆ lattice_preload()

◆ lattice_read_status_u32()

static int lattice_read_status_u32 ( struct lattice_pld_device lattice_device,
uint32_t *  status,
uint32_t  out,
bool  do_idle 
)
static

◆ lattice_read_status_u64()

static int lattice_read_status_u64 ( struct lattice_pld_device lattice_device,
uint64_t *  status,
uint64_t  out 
)
static

◆ lattice_read_u32_register()

◆ lattice_read_u64_register()

int lattice_read_u64_register ( struct jtag_tap tap,
uint8_t  cmd,
uint64_t *  in_val,
uint64_t  out_val 
)

◆ lattice_read_usercode()

static int lattice_read_usercode ( struct lattice_pld_device lattice_device,
uint32_t *  usercode,
uint32_t  out 
)
static

◆ lattice_set_instr()

◆ lattice_verify_status_register_u32()

int lattice_verify_status_register_u32 ( struct lattice_pld_device lattice_device,
uint32_t  out,
uint32_t  expected,
uint32_t  mask,
bool  do_idle 
)

◆ lattice_verify_status_register_u64()

int lattice_verify_status_register_u64 ( struct lattice_pld_device lattice_device,
uint64_t  out,
uint64_t  expected,
uint64_t  mask 
)

◆ lattice_verify_usercode()

int lattice_verify_usercode ( struct lattice_pld_device lattice_device,
uint32_t  out,
uint32_t  expected,
uint32_t  mask 
)

◆ lattice_write_usercode()

static int lattice_write_usercode ( struct lattice_pld_device lattice_device,
uint32_t  usercode 
)
static

◆ PLD_CREATE_COMMAND_HANDLER()

Variable Documentation

◆ lattice_command_handler

const struct command_registration lattice_command_handler[]
static
Initial value:
= {
{
.name = "lattice",
.mode = COMMAND_ANY,
.help = "lattice specific commands",
.usage = "",
},
}
#define COMMAND_REGISTRATION_DONE
Use this as the last entry in an array of command_registration records.
Definition: command.h:253
@ COMMAND_ANY
Definition: command.h:42
static const struct command_registration lattice_exec_command_handlers[]
Definition: lattice.c:607

Definition at line 578 of file lattice.c.

◆ lattice_devices

const struct lattice_devices_elem lattice_devices[]
static
Initial value:
= {
{0x01270043, 654, LATTICE_ECP2 },
{0x01271043, 643, LATTICE_ECP2 },
{0x01272043, 827, LATTICE_ECP2 },
{0x01274043, 1011, LATTICE_ECP2 },
{0x01273043, 1219, LATTICE_ECP2 },
{0x01275043, 654, LATTICE_ECP2 },
{0x01279043, 680, LATTICE_ECP2 },
{0x0127A043, 936, LATTICE_ECP2 },
{0x0127B043, 1056, LATTICE_ECP2 },
{0x0127C043, 1039, LATTICE_ECP2 },
{0x0127D043, 1311, LATTICE_ECP2 },
{0x01010043, 467, LATTICE_ECP3 },
{0x01012043, 675, LATTICE_ECP3 },
{0x01014043, 1077, LATTICE_ECP3 },
{0x01015043, 1326, LATTICE_ECP3 },
{0x21111043, 409, LATTICE_ECP5 },
{0x41111043, 409, LATTICE_ECP5 },
{0x41112043, 510, LATTICE_ECP5 },
{0x41113043, 750, LATTICE_ECP5 },
{0x81111043, 409, LATTICE_ECP5 },
{0x81112043, 510, LATTICE_ECP5 },
{0x81113043, 750, LATTICE_ECP5 },
{0x01111043, 409, LATTICE_ECP5 },
{0x01112043, 510, LATTICE_ECP5 },
{0x01113043, 750, LATTICE_ECP5 },
{0x310f0043, 362, LATTICE_CERTUS },
{0x310f1043, 362, LATTICE_CERTUS },
{0x010f4043, 362, LATTICE_CERTUS },
}
@ LATTICE_ECP5
Definition: lattice_bit.h:26
@ LATTICE_ECP3
Definition: lattice_bit.h:25
@ LATTICE_CERTUS
Definition: lattice_bit.h:27
@ LATTICE_ECP2
Definition: lattice_bit.h:24

Definition at line 1 of file lattice.c.

Referenced by lattice_check_device_family().

◆ lattice_exec_command_handlers

const struct command_registration lattice_exec_command_handlers[]
static

Definition at line 578 of file lattice.c.

◆ lattice_pld

struct pld_driver lattice_pld
Initial value:
= {
.name = "lattice",
.pld_create_command = &lattice_pld_create_command,
.get_ipdbg_hub = lattice_get_ipdbg_hub,
.has_jtagspi_instruction = lattice_has_jtagspi_instruction,
.connect_spi_to_jtag = lattice_connect_spi_to_jtag,
.disconnect_spi_from_jtag = lattice_disconnect_spi_from_jtag,
.get_stuff_bits = lattice_get_stuff_bits,
}
static const struct command_registration lattice_command_handler[]
Definition: lattice.c:642
static int lattice_has_jtagspi_instruction(struct pld_device *device, bool *has_instruction)
Definition: lattice.c:409
static int lattice_get_stuff_bits(struct pld_device *pld_device, unsigned int *facing_read_bits, unsigned int *trailing_write_bits)
Definition: lattice.c:387
static int lattice_disconnect_spi_from_jtag(struct pld_device *pld_device)
Definition: lattice.c:366
static int lattice_connect_spi_to_jtag(struct pld_device *pld_device)
Definition: lattice.c:345
static int lattice_get_ipdbg_hub(int user_num, struct pld_device *pld_device, struct pld_ipdbg_hub *hub)
Definition: lattice.c:322
static int lattice_load_command(struct pld_device *pld_device, const char *filename)
Definition: lattice.c:273

Definition at line 578 of file lattice.c.