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

Go to the source code of this file.

Data Structures

struct  samd_family
 
struct  samd_info
 
struct  samd_part
 

Macros

#define NVMUSERROW_LOCKBIT_MASK   ((uint64_t)0x0000FFFFFFFFFFFF)
 
#define SAMD_CMDEX_KEY   0xA5UL
 
#define SAMD_DSU   0x41002000 /* Device Service Unit */
 
#define SAMD_DSU_CTRL_EXT   0x100 /* CTRL register, external access */
 
#define SAMD_DSU_DID   0x18 /* Device ID register */
 
#define SAMD_DSU_STATUSA   1 /* DSU status register */
 
#define SAMD_FAMILY_C   0x02
 
#define SAMD_FAMILY_D   0x00
 
#define SAMD_FAMILY_L   0x01
 
#define SAMD_FLASH   ((uint32_t)0x00000000) /* physical Flash memory */
 
#define SAMD_GET_DEVSEL(id)   (id & 0xFF)
 
#define SAMD_GET_FAMILY(id)   (((id >> 23) & 0x1F))
 
#define SAMD_GET_PROCESSOR(id)   (id >> 28)
 
#define SAMD_GET_SERIES(id)   (((id >> 16) & 0x3F))
 
#define SAMD_NUM_PROT_BLOCKS   16
 
#define SAMD_NVM_CMD(n)   ((SAMD_CMDEX_KEY << 8) | (n & 0x7F))
 
#define SAMD_NVM_CMD_CPRM   0x43 /* Clear Power Reduction Mode */
 
#define SAMD_NVM_CMD_EAR   0x05 /* Erase Auxiliary Row */
 
#define SAMD_NVM_CMD_ER   0x02 /* Erase Row */
 
#define SAMD_NVM_CMD_INVALL   0x46 /* Invalidate all caches */
 
#define SAMD_NVM_CMD_LR   0x40 /* Lock Region */
 
#define SAMD_NVM_CMD_PBC   0x44 /* Page Buffer Clear */
 
#define SAMD_NVM_CMD_SPRM   0x42 /* Set Power Reduction Mode */
 
#define SAMD_NVM_CMD_SSB   0x45 /* Set Security Bit */
 
#define SAMD_NVM_CMD_UR   0x41 /* Unlock Region */
 
#define SAMD_NVM_CMD_WAP   0x06 /* Write Auxiliary Page */
 
#define SAMD_NVM_CMD_WP   0x04 /* Write Page */
 
#define SAMD_NVM_CTRLB_MANW   0x80
 
#define SAMD_NVM_INTFLAG_READY   0x01
 
#define SAMD_NVMCTRL   0x41004000 /* Non-volatile memory controller */
 
#define SAMD_NVMCTRL_ADDR   0x1C /* NVM address register */
 
#define SAMD_NVMCTRL_CTRLA   0x00 /* NVM control A register */
 
#define SAMD_NVMCTRL_CTRLB   0x04 /* NVM control B register */
 
#define SAMD_NVMCTRL_INTFLAG   0x14 /* NVM Interrupt Flag Status & Clear */
 
#define SAMD_NVMCTRL_LOCK   0x20 /* NVM Lock section register */
 
#define SAMD_NVMCTRL_PARAM   0x08 /* NVM parameters register */
 
#define SAMD_NVMCTRL_STATUS   0x18 /* NVM status register */
 
#define SAMD_PAC1   0x41000000 /* Peripheral Access Control 1 */
 
#define SAMD_PAGE_SIZE_MAX   1024
 
#define SAMD_PROCESSOR_M0   0x01
 
#define SAMD_SERIES_09   0x04
 
#define SAMD_SERIES_10   0x02
 
#define SAMD_SERIES_11   0x03
 
#define SAMD_SERIES_20   0x00
 
#define SAMD_SERIES_21   0x01
 
#define SAMD_SERIES_22   0x02
 
#define SAMD_USER_ROW   ((uint32_t)0x00804000) /* User Row of Flash */
 

Functions

 COMMAND_HANDLER (samd_handle_bootloader_command)
 
 COMMAND_HANDLER (samd_handle_chip_erase_command)
 
 COMMAND_HANDLER (samd_handle_eeprom_command)
 
 COMMAND_HANDLER (samd_handle_nvmuserrow_command)
 
 COMMAND_HANDLER (samd_handle_reset_deassert)
 
 COMMAND_HANDLER (samd_handle_set_security_command)
 
 FLASH_BANK_COMMAND_HANDLER (samd_flash_bank_command)
 
static int read_userrow (struct target *target, uint64_t *userrow)
 
static int samd_check_error (struct target *target)
 
static int samd_erase (struct flash_bank *bank, unsigned int first, unsigned int last)
 
static int samd_erase_row (struct target *target, uint32_t address)
 Erases a flash-row at the given address. More...
 
static const struct samd_familysamd_find_family (uint32_t id)
 Gives the family structure to specific device id. More...
 
static const struct samd_partsamd_find_part (uint32_t id)
 Gives the part structure to specific device id. More...
 
static int samd_get_flash_page_info (struct target *target, uint32_t *sizep, int *nump)
 
static int samd_get_reservedmask (struct target *target, uint64_t *mask)
 Returns the bitmask of reserved bits in register. More...
 
static int samd_issue_nvmctrl_command (struct target *target, uint16_t cmd)
 
static int samd_modify_user_row (struct target *target, uint64_t value, uint8_t startb, uint8_t endb)
 Modifies the user row register to the given value. More...
 
static int samd_modify_user_row_masked (struct target *target, uint64_t value_input, uint64_t value_mask)
 Modify the contents of the User Row in Flash. More...
 
static int samd_probe (struct flash_bank *bank)
 
static int samd_protect (struct flash_bank *bank, int set, unsigned int first, unsigned int last)
 
static int samd_protect_check (struct flash_bank *bank)
 
static int samd_write (struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
 

Variables

static const struct command_registration at91samd_command_handlers []
 
static const struct command_registration at91samd_exec_command_handlers []
 
const struct flash_driver at91samd_flash
 
static const struct samd_part samc20_parts []
 
static const struct samd_part samc21_parts []
 
static const struct samd_part samd09_parts []
 
static const struct samd_part samd10_parts []
 
static const struct samd_part samd11_parts []
 
static const struct samd_part samd20_parts []
 
static const struct samd_part samd21_parts []
 
static const struct samd_family samd_families []
 
static const struct samd_part saml21_parts []
 
static const struct samd_part saml22_parts []
 

Macro Definition Documentation

◆ NVMUSERROW_LOCKBIT_MASK

#define NVMUSERROW_LOCKBIT_MASK   ((uint64_t)0x0000FFFFFFFFFFFF)

Definition at line 81 of file at91samd.c.

◆ SAMD_CMDEX_KEY

#define SAMD_CMDEX_KEY   0xA5UL

Definition at line 40 of file at91samd.c.

◆ SAMD_DSU

#define SAMD_DSU   0x41002000 /* Device Service Unit */

Definition at line 25 of file at91samd.c.

◆ SAMD_DSU_CTRL_EXT

#define SAMD_DSU_CTRL_EXT   0x100 /* CTRL register, external access */

Definition at line 30 of file at91samd.c.

◆ SAMD_DSU_DID

#define SAMD_DSU_DID   0x18 /* Device ID register */

Definition at line 29 of file at91samd.c.

◆ SAMD_DSU_STATUSA

#define SAMD_DSU_STATUSA   1 /* DSU status register */

Definition at line 28 of file at91samd.c.

◆ SAMD_FAMILY_C

#define SAMD_FAMILY_C   0x02

Definition at line 66 of file at91samd.c.

◆ SAMD_FAMILY_D

#define SAMD_FAMILY_D   0x00

Definition at line 64 of file at91samd.c.

◆ SAMD_FAMILY_L

#define SAMD_FAMILY_L   0x01

Definition at line 65 of file at91samd.c.

◆ SAMD_FLASH

#define SAMD_FLASH   ((uint32_t)0x00000000) /* physical Flash memory */

Definition at line 22 of file at91samd.c.

◆ SAMD_GET_DEVSEL

#define SAMD_GET_DEVSEL (   id)    (id & 0xFF)

Definition at line 78 of file at91samd.c.

◆ SAMD_GET_FAMILY

#define SAMD_GET_FAMILY (   id)    (((id >> 23) & 0x1F))

Definition at line 76 of file at91samd.c.

◆ SAMD_GET_PROCESSOR

#define SAMD_GET_PROCESSOR (   id)    (id >> 28)

Definition at line 75 of file at91samd.c.

◆ SAMD_GET_SERIES

#define SAMD_GET_SERIES (   id)    (((id >> 16) & 0x3F))

Definition at line 77 of file at91samd.c.

◆ SAMD_NUM_PROT_BLOCKS

#define SAMD_NUM_PROT_BLOCKS   16

Definition at line 19 of file at91samd.c.

◆ SAMD_NVM_CMD

#define SAMD_NVM_CMD (   n)    ((SAMD_CMDEX_KEY << 8) | (n & 0x7F))

Definition at line 41 of file at91samd.c.

◆ SAMD_NVM_CMD_CPRM

#define SAMD_NVM_CMD_CPRM   0x43 /* Clear Power Reduction Mode */

Definition at line 51 of file at91samd.c.

◆ SAMD_NVM_CMD_EAR

#define SAMD_NVM_CMD_EAR   0x05 /* Erase Auxiliary Row */

Definition at line 46 of file at91samd.c.

◆ SAMD_NVM_CMD_ER

#define SAMD_NVM_CMD_ER   0x02 /* Erase Row */

Definition at line 44 of file at91samd.c.

◆ SAMD_NVM_CMD_INVALL

#define SAMD_NVM_CMD_INVALL   0x46 /* Invalidate all caches */

Definition at line 54 of file at91samd.c.

◆ SAMD_NVM_CMD_LR

#define SAMD_NVM_CMD_LR   0x40 /* Lock Region */

Definition at line 48 of file at91samd.c.

◆ SAMD_NVM_CMD_PBC

#define SAMD_NVM_CMD_PBC   0x44 /* Page Buffer Clear */

Definition at line 52 of file at91samd.c.

◆ SAMD_NVM_CMD_SPRM

#define SAMD_NVM_CMD_SPRM   0x42 /* Set Power Reduction Mode */

Definition at line 50 of file at91samd.c.

◆ SAMD_NVM_CMD_SSB

#define SAMD_NVM_CMD_SSB   0x45 /* Set Security Bit */

Definition at line 53 of file at91samd.c.

◆ SAMD_NVM_CMD_UR

#define SAMD_NVM_CMD_UR   0x41 /* Unlock Region */

Definition at line 49 of file at91samd.c.

◆ SAMD_NVM_CMD_WAP

#define SAMD_NVM_CMD_WAP   0x06 /* Write Auxiliary Page */

Definition at line 47 of file at91samd.c.

◆ SAMD_NVM_CMD_WP

#define SAMD_NVM_CMD_WP   0x04 /* Write Page */

Definition at line 45 of file at91samd.c.

◆ SAMD_NVM_CTRLB_MANW

#define SAMD_NVM_CTRLB_MANW   0x80

Definition at line 57 of file at91samd.c.

◆ SAMD_NVM_INTFLAG_READY

#define SAMD_NVM_INTFLAG_READY   0x01

Definition at line 60 of file at91samd.c.

◆ SAMD_NVMCTRL

#define SAMD_NVMCTRL   0x41004000 /* Non-volatile memory controller */

Definition at line 26 of file at91samd.c.

◆ SAMD_NVMCTRL_ADDR

#define SAMD_NVMCTRL_ADDR   0x1C /* NVM address register */

Definition at line 37 of file at91samd.c.

◆ SAMD_NVMCTRL_CTRLA

#define SAMD_NVMCTRL_CTRLA   0x00 /* NVM control A register */

Definition at line 32 of file at91samd.c.

◆ SAMD_NVMCTRL_CTRLB

#define SAMD_NVMCTRL_CTRLB   0x04 /* NVM control B register */

Definition at line 33 of file at91samd.c.

◆ SAMD_NVMCTRL_INTFLAG

#define SAMD_NVMCTRL_INTFLAG   0x14 /* NVM Interrupt Flag Status & Clear */

Definition at line 35 of file at91samd.c.

◆ SAMD_NVMCTRL_LOCK

#define SAMD_NVMCTRL_LOCK   0x20 /* NVM Lock section register */

Definition at line 38 of file at91samd.c.

◆ SAMD_NVMCTRL_PARAM

#define SAMD_NVMCTRL_PARAM   0x08 /* NVM parameters register */

Definition at line 34 of file at91samd.c.

◆ SAMD_NVMCTRL_STATUS

#define SAMD_NVMCTRL_STATUS   0x18 /* NVM status register */

Definition at line 36 of file at91samd.c.

◆ SAMD_PAC1

#define SAMD_PAC1   0x41000000 /* Peripheral Access Control 1 */

Definition at line 24 of file at91samd.c.

◆ SAMD_PAGE_SIZE_MAX

#define SAMD_PAGE_SIZE_MAX   1024

Definition at line 20 of file at91samd.c.

◆ SAMD_PROCESSOR_M0

#define SAMD_PROCESSOR_M0   0x01

Definition at line 63 of file at91samd.c.

◆ SAMD_SERIES_09

#define SAMD_SERIES_09   0x04

Definition at line 72 of file at91samd.c.

◆ SAMD_SERIES_10

#define SAMD_SERIES_10   0x02

Definition at line 70 of file at91samd.c.

◆ SAMD_SERIES_11

#define SAMD_SERIES_11   0x03

Definition at line 71 of file at91samd.c.

◆ SAMD_SERIES_20

#define SAMD_SERIES_20   0x00

Definition at line 67 of file at91samd.c.

◆ SAMD_SERIES_21

#define SAMD_SERIES_21   0x01

Definition at line 68 of file at91samd.c.

◆ SAMD_SERIES_22

#define SAMD_SERIES_22   0x02

Definition at line 69 of file at91samd.c.

◆ SAMD_USER_ROW

#define SAMD_USER_ROW   ((uint32_t)0x00804000) /* User Row of Flash */

Definition at line 23 of file at91samd.c.

Function Documentation

◆ COMMAND_HANDLER() [1/6]

◆ COMMAND_HANDLER() [2/6]

COMMAND_HANDLER ( samd_handle_chip_erase_command  )

◆ COMMAND_HANDLER() [3/6]

◆ COMMAND_HANDLER() [4/6]

◆ COMMAND_HANDLER() [5/6]

COMMAND_HANDLER ( samd_handle_reset_deassert  )

Definition at line 1180 of file at91samd.c.

◆ COMMAND_HANDLER() [6/6]

◆ FLASH_BANK_COMMAND_HANDLER()

FLASH_BANK_COMMAND_HANDLER ( samd_flash_bank_command  )

◆ read_userrow()

static int read_userrow ( struct target target,
uint64_t *  userrow 
)
static

◆ samd_check_error()

◆ samd_erase()

static int samd_erase ( struct flash_bank bank,
unsigned int  first,
unsigned int  last 
)
static

◆ samd_erase_row()

static int samd_erase_row ( struct target target,
uint32_t  address 
)
static

Erases a flash-row at the given address.

Parameters
targetPointer to the target structure.
addressThe address of the row.
Returns
On success ERROR_OK, on failure an errorcode.

Definition at line 586 of file at91samd.c.

References ERROR_FAIL, ERROR_OK, LOG_ERROR, samd_issue_nvmctrl_command(), SAMD_NVM_CMD_EAR, SAMD_NVM_CMD_ER, SAMD_NVMCTRL, SAMD_NVMCTRL_ADDR, SAMD_USER_ROW, and target_write_u32().

Referenced by samd_erase(), and samd_modify_user_row_masked().

◆ samd_find_family()

static const struct samd_family* samd_find_family ( uint32_t  id)
static

Gives the family structure to specific device id.

Parameters
idThe id of the device.
Returns
On failure NULL, otherwise a pointer to the structure.

Definition at line 358 of file at91samd.c.

References ARRAY_SIZE, samd_family::family, NULL, samd_family::processor, samd_families, SAMD_GET_FAMILY, SAMD_GET_PROCESSOR, SAMD_GET_SERIES, and samd_family::series.

Referenced by samd_find_part(), and samd_get_reservedmask().

◆ samd_find_part()

static const struct samd_part* samd_find_part ( uint32_t  id)
static

Gives the part structure to specific device id.

Parameters
idThe id of the device.
Returns
On failure NULL, otherwise a pointer to the structure.

Definition at line 379 of file at91samd.c.

References samd_family::family, NULL, samd_find_family(), and SAMD_GET_DEVSEL.

Referenced by samd_probe().

◆ samd_get_flash_page_info()

static int samd_get_flash_page_info ( struct target target,
uint32_t *  sizep,
int *  nump 
)
static

◆ samd_get_reservedmask()

static int samd_get_reservedmask ( struct target target,
uint64_t *  mask 
)
static

Returns the bitmask of reserved bits in register.

Parameters
targetPointer to the target structure.
maskBitmask, 0 -> value stays untouched.
Returns
On success ERROR_OK, on failure an errorcode.

Definition at line 613 of file at91samd.c.

References ERROR_FAIL, ERROR_OK, samd_family::family, id, LOG_ERROR, mask, SAMD_DSU, SAMD_DSU_DID, samd_find_family(), and target_read_u32().

Referenced by COMMAND_HANDLER().

◆ samd_issue_nvmctrl_command()

static int samd_issue_nvmctrl_command ( struct target target,
uint16_t  cmd 
)
static

◆ samd_modify_user_row()

static int samd_modify_user_row ( struct target target,
uint64_t  value,
uint8_t  startb,
uint8_t  endb 
)
static

Modifies the user row register to the given value.

Parameters
targetPointer to the target structure.
valueThe value to write.
startbThe bit-offset by which the given value is shifted.
endbThe bit-offset of the last bit in value to write.
Returns
On success ERROR_OK, on failure an errorcode.

Definition at line 733 of file at91samd.c.

References mask, and samd_modify_user_row_masked().

Referenced by COMMAND_HANDLER(), and samd_protect().

◆ samd_modify_user_row_masked()

static int samd_modify_user_row_masked ( struct target target,
uint64_t  value_input,
uint64_t  value_mask 
)
static

Modify the contents of the User Row in Flash.

The User Row itself has a size of one page and contains a combination of "fuses" and calibration data. Bits which have a value of zero in the mask will not be changed. Up to now devices only use the first 64 bits.

Parameters
targetPointer to the target structure.
value_inputThe value to write.
value_maskBitmask, 0 -> value stays untouched.
Returns
On success ERROR_OK, on failure an errorcode.

Definition at line 656 of file at91samd.c.

References ERROR_FAIL, ERROR_OK, LOG_ERROR, NULL, read_userrow(), samd_check_error(), samd_erase_row(), samd_get_flash_page_info(), samd_issue_nvmctrl_command(), SAMD_NVM_CMD_WAP, SAMD_NVM_CTRLB_MANW, SAMD_NVMCTRL, SAMD_NVMCTRL_CTRLB, SAMD_PAGE_SIZE_MAX, SAMD_USER_ROW, target_buffer_set_u64(), target_read_memory(), target_read_u32(), and target_write_memory().

Referenced by COMMAND_HANDLER(), and samd_modify_user_row().

◆ samd_probe()

◆ samd_protect()

static int samd_protect ( struct flash_bank bank,
int  set,
unsigned int  first,
unsigned int  last 
)
static

◆ samd_protect_check()

static int samd_protect_check ( struct flash_bank bank)
static

Definition at line 394 of file at91samd.c.

References bank, ERROR_OK, SAMD_NVMCTRL, SAMD_NVMCTRL_LOCK, and target_read_u16().

Referenced by samd_probe(), and samd_protect().

◆ samd_write()

Variable Documentation

◆ at91samd_command_handlers

const struct command_registration at91samd_command_handlers[]
static
Initial value:
= {
{
.name = "at91samd",
.mode = COMMAND_ANY,
.help = "at91samd flash command group",
.usage = "",
},
}
static const struct command_registration at91samd_exec_command_handlers[]
Definition: at91samd.c:1215
#define COMMAND_REGISTRATION_DONE
Use this as the last entry in an array of command_registration records.
Definition: command.h:247
@ COMMAND_ANY
Definition: command.h:42

Definition at line 1180 of file at91samd.c.

◆ at91samd_exec_command_handlers

const struct command_registration at91samd_exec_command_handlers[]
static

Definition at line 1180 of file at91samd.c.

◆ at91samd_flash

const struct flash_driver at91samd_flash
Initial value:
= {
.name = "at91samd",
.flash_bank_command = samd_flash_bank_command,
.erase = samd_erase,
.protect = samd_protect,
.write = samd_write,
.probe = samd_probe,
.auto_probe = samd_probe,
.erase_check = default_flash_blank_check,
.protect_check = samd_protect_check,
.free_driver_priv = default_flash_free_driver_priv,
}
static int samd_probe(struct flash_bank *bank)
Definition: at91samd.c:433
static int samd_protect_check(struct flash_bank *bank)
Definition: at91samd.c:394
static const struct command_registration at91samd_command_handlers[]
Definition: at91samd.c:1275
static int samd_protect(struct flash_bank *bank, int set, unsigned int first, unsigned int last)
Definition: at91samd.c:744
static int samd_erase(struct flash_bank *bank, unsigned int first, unsigned int last)
Definition: at91samd.c:794
static int samd_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
Definition: at91samd.c:824
int default_flash_blank_check(struct flash_bank *bank)
Provides default erased-bank check handling.
int default_flash_read(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
Provides default read implementation for flash memory.
void default_flash_free_driver_priv(struct flash_bank *bank)
Deallocates bank->driver_priv.

Definition at line 1180 of file at91samd.c.

◆ samc20_parts

const struct samd_part samc20_parts[]
static
Initial value:
= {
{ 0x00, "SAMC20J18A", 256, 32 },
{ 0x01, "SAMC20J17A", 128, 16 },
{ 0x02, "SAMC20J16A", 64, 8 },
{ 0x03, "SAMC20J15A", 32, 4 },
{ 0x05, "SAMC20G18A", 256, 32 },
{ 0x06, "SAMC20G17A", 128, 16 },
{ 0x07, "SAMC20G16A", 64, 8 },
{ 0x08, "SAMC20G15A", 32, 4 },
{ 0x0A, "SAMC20E18A", 256, 32 },
{ 0x0B, "SAMC20E17A", 128, 16 },
{ 0x0C, "SAMC20E16A", 64, 8 },
{ 0x0D, "SAMC20E15A", 32, 4 },
{ 0x20, "SAMC20N18A", 256, 32 },
{ 0x21, "SAMC20N17A", 128, 16 },
}

Definition at line 1 of file at91samd.c.

◆ samc21_parts

const struct samd_part samc21_parts[]
static
Initial value:
= {
{ 0x00, "SAMC21J18A", 256, 32 },
{ 0x01, "SAMC21J17A", 128, 16 },
{ 0x02, "SAMC21J16A", 64, 8 },
{ 0x03, "SAMC21J15A", 32, 4 },
{ 0x05, "SAMC21G18A", 256, 32 },
{ 0x06, "SAMC21G17A", 128, 16 },
{ 0x07, "SAMC21G16A", 64, 8 },
{ 0x08, "SAMC21G15A", 32, 4 },
{ 0x0A, "SAMC21E18A", 256, 32 },
{ 0x0B, "SAMC21E17A", 128, 16 },
{ 0x0C, "SAMC21E16A", 64, 8 },
{ 0x0D, "SAMC21E15A", 32, 4 },
{ 0x20, "SAMC21N18A", 256, 32 },
{ 0x21, "SAMC21N17A", 128, 16 },
}

Definition at line 1 of file at91samd.c.

◆ samd09_parts

const struct samd_part samd09_parts[]
static
Initial value:
= {
{ 0x0, "SAMD09D14A", 16, 4 },
{ 0x7, "SAMD09C13A", 8, 4 },
}

Definition at line 1 of file at91samd.c.

◆ samd10_parts

const struct samd_part samd10_parts[]
static
Initial value:
= {
{ 0x0, "SAMD10D14AMU", 16, 4 },
{ 0x1, "SAMD10D13AMU", 8, 4 },
{ 0x2, "SAMD10D12AMU", 4, 4 },
{ 0x3, "SAMD10D14ASU", 16, 4 },
{ 0x4, "SAMD10D13ASU", 8, 4 },
{ 0x5, "SAMD10D12ASU", 4, 4 },
{ 0x6, "SAMD10C14A", 16, 4 },
{ 0x7, "SAMD10C13A", 8, 4 },
{ 0x8, "SAMD10C12A", 4, 4 },
}

Definition at line 1 of file at91samd.c.

◆ samd11_parts

const struct samd_part samd11_parts[]
static
Initial value:
= {
{ 0x0, "SAMD11D14AM", 16, 4 },
{ 0x1, "SAMD11D13AMU", 8, 4 },
{ 0x2, "SAMD11D12AMU", 4, 4 },
{ 0x3, "SAMD11D14ASS", 16, 4 },
{ 0x4, "SAMD11D13ASU", 8, 4 },
{ 0x5, "SAMD11D12ASU", 4, 4 },
{ 0x6, "SAMD11C14A", 16, 4 },
{ 0x7, "SAMD11C13A", 8, 4 },
{ 0x8, "SAMD11C12A", 4, 4 },
{ 0x9, "SAMD11D14AU", 16, 4 },
}

Definition at line 1 of file at91samd.c.

◆ samd20_parts

const struct samd_part samd20_parts[]
static
Initial value:
= {
{ 0x0, "SAMD20J18A", 256, 32 },
{ 0x1, "SAMD20J17A", 128, 16 },
{ 0x2, "SAMD20J16A", 64, 8 },
{ 0x3, "SAMD20J15A", 32, 4 },
{ 0x4, "SAMD20J14A", 16, 2 },
{ 0x5, "SAMD20G18A", 256, 32 },
{ 0x6, "SAMD20G17A", 128, 16 },
{ 0x7, "SAMD20G16A", 64, 8 },
{ 0x8, "SAMD20G15A", 32, 4 },
{ 0x9, "SAMD20G14A", 16, 2 },
{ 0xA, "SAMD20E18A", 256, 32 },
{ 0xB, "SAMD20E17A", 128, 16 },
{ 0xC, "SAMD20E16A", 64, 8 },
{ 0xD, "SAMD20E15A", 32, 4 },
{ 0xE, "SAMD20E14A", 16, 2 },
}

Definition at line 1 of file at91samd.c.

◆ samd21_parts

const struct samd_part samd21_parts[]
static

Definition at line 1 of file at91samd.c.

◆ samd_families

const struct samd_family samd_families[]
static
Initial value:
= {
(uint64_t)0xFFFF01FFFE01FF77 },
(uint64_t)0xFFFF01FFFE01FF77 },
(uint64_t)0xFFFF01FFFE01FF77 },
(uint64_t)0xFFFF01FFFE01FF77 },
(uint64_t)0xFFFF01FFFE01FF77 },
(uint64_t)0xFFFF03FFFC01FF77 },
(uint64_t)0xFFFF03FFFC01FF77 },
(uint64_t)0xFFFF03FFFC01FF77 },
(uint64_t)0xFFFF03FFFC01FF77 },
}
static const struct samd_part samd21_parts[]
Definition: at91samd.c:144
static const struct samd_part samd20_parts[]
Definition: at91samd.c:125
#define SAMD_FAMILY_D
Definition: at91samd.c:64
#define SAMD_SERIES_09
Definition: at91samd.c:72
#define SAMD_PROCESSOR_M0
Definition: at91samd.c:63
static const struct samd_part samd11_parts[]
Definition: at91samd.c:111
static const struct samd_part samd09_parts[]
Definition: at91samd.c:92
static const struct samd_part saml22_parts[]
Definition: at91samd.c:251
#define SAMD_SERIES_11
Definition: at91samd.c:71
#define SAMD_SERIES_22
Definition: at91samd.c:69
static const struct samd_part samd10_parts[]
Definition: at91samd.c:98
#define SAMD_SERIES_20
Definition: at91samd.c:67
#define SAMD_SERIES_10
Definition: at91samd.c:70
#define SAMD_FAMILY_C
Definition: at91samd.c:66
static const struct samd_part saml21_parts[]
Definition: at91samd.c:219
static const struct samd_part samc20_parts[]
Definition: at91samd.c:264
static const struct samd_part samc21_parts[]
Definition: at91samd.c:282
#define SAMD_SERIES_21
Definition: at91samd.c:68
#define SAMD_FAMILY_L
Definition: at91samd.c:65
#define ARRAY_SIZE(x)
Compute the number of elements of a variable length array.
Definition: types.h:57

Definition at line 1 of file at91samd.c.

Referenced by samd_find_family().

◆ saml21_parts

const struct samd_part saml21_parts[]
static
Initial value:
= {
{ 0x00, "SAML21J18A", 256, 32 },
{ 0x01, "SAML21J17A", 128, 16 },
{ 0x02, "SAML21J16A", 64, 8 },
{ 0x05, "SAML21G18A", 256, 32 },
{ 0x06, "SAML21G17A", 128, 16 },
{ 0x07, "SAML21G16A", 64, 8 },
{ 0x0A, "SAML21E18A", 256, 32 },
{ 0x0B, "SAML21E17A", 128, 16 },
{ 0x0C, "SAML21E16A", 64, 8 },
{ 0x0D, "SAML21E15A", 32, 4 },
{ 0x0F, "SAML21J18B", 256, 32 },
{ 0x10, "SAML21J17B", 128, 16 },
{ 0x11, "SAML21J16B", 64, 8 },
{ 0x14, "SAML21G18B", 256, 32 },
{ 0x15, "SAML21G17B", 128, 16 },
{ 0x16, "SAML21G16B", 64, 8 },
{ 0x19, "SAML21E18B", 256, 32 },
{ 0x1A, "SAML21E17B", 128, 16 },
{ 0x1B, "SAML21E16B", 64, 8 },
{ 0x1C, "SAML21E15B", 32, 4 },
{ 0x1E, "SAMR30G18A", 256, 32 },
{ 0x1F, "SAMR30E18A", 256, 32 },
{ 0x28, "SAMR34J18", 256, 32 },
{ 0x2B, "SAMR35J18", 256, 32 },
}

Definition at line 1 of file at91samd.c.

◆ saml22_parts

const struct samd_part saml22_parts[]
static
Initial value:
= {
{ 0x00, "SAML22N18A", 256, 32 },
{ 0x01, "SAML22N17A", 128, 16 },
{ 0x02, "SAML22N16A", 64, 8 },
{ 0x05, "SAML22J18A", 256, 32 },
{ 0x06, "SAML22J17A", 128, 16 },
{ 0x07, "SAML22J16A", 64, 8 },
{ 0x0A, "SAML22G18A", 256, 32 },
{ 0x0B, "SAML22G17A", 128, 16 },
{ 0x0C, "SAML22G16A", 64, 8 },
}

Definition at line 1 of file at91samd.c.