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

Go to the source code of this file.

Macros

#define PXA270_GAFR0_L   0x40E00054
 
#define PXA270_GAFR3_U   0x40E00070
 
#define PXA270_GAFR3_U_RESERVED_BITS   0xfffc0000u
 
#define PXA270_GPCR0   0x40E00024
 
#define PXA270_GPDR0   0x40E0000C
 
#define PXA270_GPDR3   0x40E0010C
 
#define PXA270_GPDR3_RESERVED_BITS   0xfe000000u
 
#define PXA270_GPSR0   0x40E00018
 
#define S3C2440_GPACON   0x56000000
 
#define S3C2440_GPADAT   0x56000004
 
#define S3C2440_GPJCON   0x560000d0
 
#define S3C2440_GPJDAT   0x560000d4
 

Functions

 COMMAND_HANDLER (mg_probe_cmd)
 
 COMMAND_HANDLER (mg_write_cmd)
 
 COMMAND_HANDLER (mg_dump_cmd)
 
 COMMAND_HANDLER (mg_config_cmd)
 
 COMMAND_HANDLER (handle_mflash_init_command)
 
 COMMAND_HANDLER (mg_bank_cmd)
 
static int mflash_init_drivers (struct command_context *cmd_ctx)
 
int mflash_register_commands (struct command_context *cmd_ctx)
 
static int mg_boot_config (void)
 
static double mg_calc_pll (double XIN, mg_pll_t *p_pll_val)
 
static double mg_do_calc_pll (double XIN, mg_pll_t *p_pll_val, int is_approximate)
 
static int mg_dsk_drv_info (void)
 
static int mg_dsk_io_cmd (uint32_t sect_num, uint32_t cnt, uint8_t cmd)
 
static int mg_dsk_srst (uint8_t on)
 
static int mg_dsk_wait (mg_io_type_wait wait_local, uint32_t time_var)
 
static int mg_erase_nand (void)
 
static void mg_gen_ataid (mg_io_type_drv_info *pSegIdDrvInfo)
 
static int mg_hdrst (uint8_t level)
 
static int mg_init_gpio (void)
 
static int mg_is_valid_pll (double XIN, int N, double CLK_OUT, int NO)
 
static int mg_mflash_do_read_sects (void *buff, uint32_t sect_num, uint32_t sect_cnt)
 
static int mg_mflash_do_write_sects (void *buff, uint32_t sect_num, uint32_t sect_cnt, uint8_t cmd)
 
static int mg_mflash_probe (void)
 
static int mg_mflash_read (uint32_t addr, uint8_t *buff, uint32_t len)
 
static int mg_mflash_read_sects (void *buff, uint32_t sect_num, uint32_t sect_cnt)
 
static int mg_mflash_rst (void)
 
static int mg_mflash_write (uint32_t addr, uint8_t *buff, uint32_t len)
 
static int mg_mflash_write_sects (void *buff, uint32_t sect_num, uint32_t sect_cnt)
 
static int mg_pll_get_M (unsigned short feedback_div)
 
static int mg_pll_get_N (unsigned char input_div)
 
static int mg_pll_get_NO (unsigned char output_div)
 
static int mg_set_feature (mg_feature_id feature, mg_feature_val config)
 
static int mg_set_pll (mg_pll_t *pll)
 
static int mg_storage_config (void)
 
static int mg_verify_interface (void)
 
static int pxa270_set_gpio_output_val (struct mflash_gpio_num gpio, uint8_t val)
 
static int pxa270_set_gpio_to_output (struct mflash_gpio_num gpio)
 
static int s3c2440_set_gpio_output_val (struct mflash_gpio_num gpio, uint8_t val)
 
static int s3c2440_set_gpio_to_output (struct mflash_gpio_num gpio)
 

Variables

static const char g_strSEG_FWRev [8]
 
static const char g_strSEG_ModelNum [40]
 
static const char g_strSEG_SerialNum [20]
 
static struct mflash_bankmflash_bank
 
static const struct command_registration mflash_command_handler []
 
static const struct command_registration mflash_config_command_handlers []
 
static const struct command_registration mflash_exec_command_handlers []
 
static struct mflash_gpio_drvmflash_gpio []
 
static struct mflash_gpio_drv pxa270_gpio
 
static struct mflash_gpio_drv s3c2440_gpio
 

Macro Definition Documentation

#define PXA270_GAFR0_L   0x40E00054

Definition at line 53 of file mflash.c.

Referenced by pxa270_set_gpio_to_output().

#define PXA270_GAFR3_U   0x40E00070

Definition at line 54 of file mflash.c.

Referenced by pxa270_set_gpio_to_output().

#define PXA270_GAFR3_U_RESERVED_BITS   0xfffc0000u

Definition at line 55 of file mflash.c.

Referenced by pxa270_set_gpio_to_output().

#define PXA270_GPCR0   0x40E00024

Definition at line 60 of file mflash.c.

Referenced by pxa270_set_gpio_output_val().

#define PXA270_GPDR0   0x40E0000C

Definition at line 56 of file mflash.c.

Referenced by pxa270_set_gpio_to_output().

#define PXA270_GPDR3   0x40E0010C

Definition at line 57 of file mflash.c.

Referenced by pxa270_set_gpio_to_output().

#define PXA270_GPDR3_RESERVED_BITS   0xfe000000u

Definition at line 58 of file mflash.c.

Referenced by pxa270_set_gpio_to_output().

#define PXA270_GPSR0   0x40E00018

Definition at line 59 of file mflash.c.

Referenced by pxa270_set_gpio_output_val().

#define S3C2440_GPACON   0x56000000

Definition at line 126 of file mflash.c.

Referenced by s3c2440_set_gpio_to_output().

#define S3C2440_GPADAT   0x56000004

Definition at line 127 of file mflash.c.

Referenced by s3c2440_set_gpio_output_val().

#define S3C2440_GPJCON   0x560000d0

Definition at line 128 of file mflash.c.

Referenced by s3c2440_set_gpio_to_output().

#define S3C2440_GPJDAT   0x560000d4

Definition at line 129 of file mflash.c.

Referenced by s3c2440_set_gpio_output_val().

Function Documentation

COMMAND_HANDLER ( mg_probe_cmd  )
COMMAND_HANDLER ( handle_mflash_init_command  )
static int mflash_init_drivers ( struct command_context cmd_ctx)
static

Definition at line 1358 of file mflash.c.

References ERROR_OK, NULL, and register_commands().

Referenced by COMMAND_HANDLER().

int mflash_register_commands ( struct command_context cmd_ctx)

Definition at line 1446 of file mflash.c.

References NULL, and register_commands().

Referenced by setup_command_handler().

static double mg_calc_pll ( double  XIN,
mg_pll_t p_pll_val 
)
static

Definition at line 992 of file mflash.c.

References mg_do_calc_pll().

Referenced by COMMAND_HANDLER().

static int mg_dsk_srst ( uint8_t  on)
static
static void mg_gen_ataid ( mg_io_type_drv_info pSegIdDrvInfo)
static

Definition at line 1056 of file mflash.c.

References _mg_io_type_drv_info::adv_pio_mode, _mg_io_type_drv_info::adv_pwr_mgm_lvl_val, _mg_io_type_drv_info::buffer_sector_size, _mg_io_type_drv_info::buffer_type, _mg_io_type_drv_info::capabilities, _mg_io_type_drv_info::cfa_pwr_mode, _mg_io_type_drv_info::current_sector_capacity_hi, _mg_io_type_drv_info::current_sector_capacity_lo, _mg_io_type_drv_info::current_sectors_per_track, _mg_io_type_drv_info::dma_cycle_timing_mode, _mg_io_type_drv_info::dword_io, _mg_io_type_drv_info::feature_cmd_set_en0, _mg_io_type_drv_info::feature_cmd_set_en1, _mg_io_type_drv_info::feature_cmd_set_en2, _mg_io_type_drv_info::feature_cmd_set_suprt0, _mg_io_type_drv_info::feature_cmd_set_suprt1, _mg_io_type_drv_info::feature_cmd_set_suprt2, _mg_io_type_drv_info::firmware_revision, g_strSEG_FWRev, g_strSEG_ModelNum, g_strSEG_SerialNum, _mg_io_type_drv_info::general_configuration, _mg_io_type_drv_info::major_ver_num, _mg_io_type_drv_info::maximum_block_transfer, _mg_io_type_drv_info::min_dma_cyc, _mg_io_type_drv_info::min_pio_cyc_no_iordy, _mg_io_type_drv_info::min_pio_cyc_with_iordy, _mg_io_type_drv_info::minor_ver_num, _mg_io_type_drv_info::model_number, _mg_io_type_drv_info::multi_dma_modes_supported, _mg_io_type_drv_info::multi_dma_transfer_active, _mg_io_type_drv_info::multi_sector_count, _mg_io_type_drv_info::multi_sector_setting_valid, _mg_io_type_drv_info::number_of_current_cylinders, _mg_io_type_drv_info::number_of_current_heads, _mg_io_type_drv_info::number_of_cylinders, _mg_io_type_drv_info::number_of_ecc_bytes, _mg_io_type_drv_info::number_of_heads, _mg_io_type_drv_info::pio_cycle_timing_mode, _mg_io_type_drv_info::recommend_dma_cyc, _mg_io_type_drv_info::req_time_for_enhan_security_er_done, _mg_io_type_drv_info::req_time_for_security_er_done, _mg_io_type_drv_info::reserved1, _mg_io_type_drv_info::reserved2, _mg_io_type_drv_info::reserved3, _mg_io_type_drv_info::reserved4, _mg_io_type_drv_info::reserved5, _mg_io_type_drv_info::reserved6, _mg_io_type_drv_info::reserved7, _mg_io_type_drv_info::sectors_per_track, _mg_io_type_drv_info::security_stas, _mg_io_type_drv_info::serial_number, _mg_io_type_drv_info::single_dma_modes_supported, _mg_io_type_drv_info::single_dma_transfer_active, _mg_io_type_drv_info::total_user_addressable_sectors_hi, _mg_io_type_drv_info::total_user_addressable_sectors_lo, _mg_io_type_drv_info::translation_fields_valid, _mg_io_type_drv_info::unformatted_bytes_per_sector, _mg_io_type_drv_info::unformatted_bytes_per_track, _mg_io_type_drv_info::vendor_uniq_bytes, _mg_io_type_drv_info::vendor_unique1, _mg_io_type_drv_info::vendor_unique2, _mg_io_type_drv_info::vendor_unique3, and _mg_io_type_drv_info::vendor_unique4.

Referenced by mg_storage_config().

static int mg_hdrst ( uint8_t  level)
static
static int mg_init_gpio ( void  )
static
static int mg_is_valid_pll ( double  XIN,
int  N,
double  CLK_OUT,
int  NO 
)
static

Definition at line 905 of file mflash.c.

References ERROR_MG_INVALID_PLL, and ERROR_OK.

Referenced by mg_do_calc_pll().

static int mg_mflash_probe ( void  )
static

Definition at line 410 of file mflash.c.

References ERROR_OK, mg_dsk_drv_info(), and mg_mflash_rst().

Referenced by COMMAND_HANDLER().

static int mg_mflash_read ( uint32_t  addr,
uint8_t *  buff,
uint32_t  len 
)
static
static int mg_mflash_read_sects ( void *  buff,
uint32_t  sect_num,
uint32_t  sect_cnt 
)
static

Definition at line 481 of file mflash.c.

References ERROR_OK, LOG_DEBUG, mg_mflash_do_read_sects(), and MG_MFLASH_SECTOR_SIZE.

Referenced by mg_mflash_read(), and mg_mflash_write().

static int mg_mflash_rst ( void  )
static
static int mg_mflash_write ( uint32_t  addr,
uint8_t *  buff,
uint32_t  len 
)
static
static int mg_mflash_write_sects ( void *  buff,
uint32_t  sect_num,
uint32_t  sect_cnt 
)
static

Definition at line 562 of file mflash.c.

References ERROR_OK, LOG_DEBUG, mg_io_cmd_write, mg_mflash_do_write_sects(), and MG_MFLASH_SECTOR_SIZE.

Referenced by mg_mflash_write().

static int mg_pll_get_M ( unsigned short  feedback_div)
static

Definition at line 916 of file mflash.c.

Referenced by mg_do_calc_pll().

static int mg_pll_get_N ( unsigned char  input_div)
static

Definition at line 926 of file mflash.c.

Referenced by mg_do_calc_pll().

static int mg_pll_get_NO ( unsigned char  output_div)
static

Definition at line 936 of file mflash.c.

Referenced by mg_do_calc_pll().

static int mg_verify_interface ( void  )
static
static int pxa270_set_gpio_output_val ( struct mflash_gpio_num  gpio,
uint8_t  val 
)
static
static int s3c2440_set_gpio_output_val ( struct mflash_gpio_num  gpio,
uint8_t  val 
)
static
static int s3c2440_set_gpio_to_output ( struct mflash_gpio_num  gpio)
static

Variable Documentation

const char g_strSEG_FWRev[8]
static
Initial value:
= {
'F', 'X', 'L', 'T', '2', 'v', '0', '.'
}

Definition at line 1045 of file mflash.c.

Referenced by mg_gen_ataid().

const char g_strSEG_ModelNum[40]
static
Initial value:
= {
'F', 'X', 'A', 'L', 'H', 'S', '2', 0x20, '0', '0', 's', '7',
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
}

Definition at line 1049 of file mflash.c.

Referenced by mg_gen_ataid().

const char g_strSEG_SerialNum[20]
static
Initial value:
= {
'G', 'm', 'n', 'i', '-', 'e', 'e', 'S', 'g', 'a', 'e', 'l',
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20
}

Definition at line 1040 of file mflash.c.

Referenced by mg_gen_ataid().

struct mflash_bank* mflash_bank
static

Definition at line 33 of file mflash.c.

const struct command_registration mflash_command_handler[]
static
Initial value:
= {
{
.name = "mflash",
.mode = COMMAND_ANY,
.help = "mflash command group",
.usage = "",
},
}
static const struct command_registration mflash_config_command_handlers[]
Definition: mflash.c:1419
#define COMMAND_REGISTRATION_DONE
Use this as the last entry in an array of command_registration records.
Definition: command.h:222

Definition at line 1436 of file mflash.c.

const struct command_registration mflash_config_command_handlers[]
static
Initial value:
= {
{
.name = "bank",
.handler = mg_bank_cmd,
.mode = COMMAND_CONFIG,
.help = "configure a mflash device bank",
.usage = "soc_type base_addr pin_id target",
},
{
.name = "init",
.mode = COMMAND_CONFIG,
.handler = handle_mflash_init_command,
.help = "initialize mflash devices",
.usage = ""
},
}
#define COMMAND_REGISTRATION_DONE
Use this as the last entry in an array of command_registration records.
Definition: command.h:222

Definition at line 1419 of file mflash.c.

const struct command_registration mflash_exec_command_handlers[]
static

Definition at line 1324 of file mflash.c.

struct mflash_gpio_drv* mflash_gpio[]
static
Initial value:
= {
}
static struct mflash_gpio_drv s3c2440_gpio
Definition: mflash.c:41
static struct mflash_gpio_drv pxa270_gpio
Definition: mflash.c:35
#define NULL
Definition: usb.h:27

Definition at line 47 of file mflash.c.

struct mflash_gpio_drv pxa270_gpio
static
Initial value:
= {
.name = "pxa270",
.set_gpio_to_output = pxa270_set_gpio_to_output,
.set_gpio_output_val = pxa270_set_gpio_output_val
}
static int pxa270_set_gpio_to_output(struct mflash_gpio_num gpio)
Definition: mflash.c:62
static int pxa270_set_gpio_output_val(struct mflash_gpio_num gpio, uint8_t val)
Definition: mflash.c:102

Definition at line 35 of file mflash.c.

struct mflash_gpio_drv s3c2440_gpio
static
Initial value:
= {
.name = "s3c2440",
.set_gpio_to_output = s3c2440_set_gpio_to_output,
.set_gpio_output_val = s3c2440_set_gpio_output_val
}
static int s3c2440_set_gpio_to_output(struct mflash_gpio_num gpio)
Definition: mflash.c:131
static int s3c2440_set_gpio_output_val(struct mflash_gpio_num gpio, uint8_t val)
Definition: mflash.c:163

Definition at line 41 of file mflash.c.