⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ms.h

📁 U盘控制器USB97C223的固件代码,对2kPAGE NAND FLASH 有很好的支持.
💻 H
📖 第 1 页 / 共 2 页
字号:
#define k_mspro_bus_parallel_mode   0x00
#define k_mspro_bus_serial_mode     0x80
#define k_ms_default_parameter       0x80
#define k_ms_uncorrectable_read_error 0x10
//----------------------------------------------------------------------------------
//   Media Identification Registers 
#define k_ms_type_reg        0x04
#define k_ms_category_reg    0x06
#define k_ms_class_reg       0x07
//----------------------------------------------------------------------------------
//---------------------------------------------------------------------------------
// internal ms parameter registers
#define k_ms_parm_system             0x10  // wo
#define k_ms_parm_block_addr_msb     0x11  // wo
#define k_ms_parm_block_addr_mid     0x12  // wo
#define k_ms_parm_block_addr_lsb     0x13  // wo
#define k_ms_parm_cmd                0x14  // wo
#define k_ms_parm_page_addr          0x15  // rw
//-----------------------------------------------------------------------------
// internal mspro parameter registers
#define k_ms_data_count_lsb      0x12
#define k_ms_data_count_msb      0x11
#define k_ms_data_address_0      0x16
#define k_ms_data_address_1      0x15
#define k_ms_data_address_2      0x14
#define k_ms_data_address_3      0x13
//------------------------------------------------------------------------------
// internal ms extra data registers
#define k_ms_ext_ovwr_flg          0x16  // rw
#define kbm_ms_ext_ovwr_bkst       0x80
#define kbm_ms_ext_ovwr_pgst0      0x40
#define kbm_ms_ext_ovwr_pgst1      0x20
#define kbm_ms_ext_ovwr_udst       0x10
#define k_ms_ext_mgmt_flg          0x17  // rw
#define kbm_ms_ext_mgmt_sysflg     0x04
#define kbm_ms_ext_mgmt_atflg      0x08
#define kbm_ms_ext_mgmt_scms1      0x10
#define kbm_ms_ext_mgmt_scms0      0x20
#define k_ms_ext_log_addr_msb      0x18  // rw
#define k_ms_ext_log_addr_lsb      0x19  // rw
// extra data registers buffer
extern xdata uint8 g_ms_extra[4];
#define k_ovwr_flg_offset         0
#define k_mgmt_flg_offset         1
#define k_log_addr_msb_flg_offset 2
#define k_log_addr_lsb_flg_offset 3
//---------------------------------------------------------------------------------
//-- Sony Memory Stick Formatter specific defines.
#define k_SKSV_clr       0x00 
#define k_SKSV_set      0x80
#define k_sony_vendor_page_code  0x20
#define k_all_pages_code 0x3f
#define k_mode_data_length_lsb     0x00
#define k_mode_data_length_msb   0x6a
#define k_mode_data_medium_type_ms  0x10
#define k_mode_data_medium_type_mspro 0x20
#define k_mode_sf_internal_format_support   0x80
#define k_mode_sf_no_internal_format_support 0x00
#define k_media_write_protected       0x80
#define k_media_not_write_protected 0x00
#define k_rsvd_byte                              0x00      
#define k_access_code_none                0x00
#define k_page_length                           0x62
//----------------------------------------------------------------------------------
// shadow registers
extern xdata uint8 g_ms_blk_addr_msb;
extern xdata uint8 g_ms_blk_addr_mid;
extern xdata uint8 g_ms_blk_addr_lsb;
extern xdata uint8 g_ms_page;
// shared globals
extern xdata uint16 g_ms_user_area_start_blk;
//------------------------------------------------------------------------------
t_result ms_read_status(void) reentrant;
//------------------------------------------------------------------------------
t_result ms_erase_block(void) reentrant;
//------------------------------------------------------------------------------
t_result ms_copy_page(void) reentrant;
//------------------------------------------------------------------------------
t_result ms_read_extra_data(void) reentrant;
//------------------------------------------------------------------------------
t_result ms_pio_read_page(uint8 pnr) reentrant;
//------------------------------------------------------------------------------
t_result ms_write_extra_data(void) reentrant;
//------------------------------------------------------------------------------
t_result ms_pio_write_page(uint8 pnr) reentrant;
//------------------------------------------------------------------------------
void xbuf_rd(uint16 offset, uint16 len, t_memory_ref bufp) reentrant;
//------------------------------------------------------------------------------
t_bool ms_is_this_blk_in_bad_blk_tbl(uint16 blk) reentrant;
//------------------------------------------------------------------------------
t_bool ms_is_this_blk_the_information_block(uint16 blk) reentrant;
//------------------------------------------------------------------------------
t_result ms_read_media_type() reentrant;
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
t_result ms_read_attribute_info() reentrant;
/* MSPRO Specific Function Prototypes */
//------------------------------------------------------------------------------
t_result mspro_pio_read_page(uint8 pnr) reentrant;

//------------------------------------------------------------------------------
t_result mspro_write_parm_reg(uint8 sys_parm) reentrant;
//-----------------------------------------------------------------------------
t_result mspro_set_xfer_mode(uint8 mode);
/* Read Callbacks */
//-----------------------------------------------------------------------------
t_result mspro_read_begin_xfer(void) reentrant;
//t_result mspro_read_begin_first_split(void) reentrant;
t_result mspro_read_begin_split(void) reentrant;
t_result mspro_read_begin_burst(void) reentrant;
t_result mspro_rw_intra_burst(void) reentrant;
t_result mspro_read_end_burst(void) reentrant;
//t_result mspro_read_end_split(void) reentrant;
t_result mspro_read_end_xfer(void) reentrant;
//----------------------------------------------------------------------------
/*Write Callbacks */
t_result mspro_write_begin_xfer(void) reentrant;
//t_result mspro_write_begin_first_split(void) reentrant;
//t_result mspro_write_begin_split(void) reentrant;
t_result mspro_write_begin_burst(void) reentrant;
t_result mspro_write_end_burst(void) reentrant;
//t_result mspro_write_end_split(void) reentrant;
t_result mspro_write_end_xfer(void) reentrant;
// for 223:  can only touch registers after device is powered.  this is the hook
// called for ms.  there should be a better design for this
void ms_pwr_up_init() reentrant;
#if defined(k_mcu_97223)
t_result _ms_format_unit(void) reentrant;
void vendor_sony_get_format_status(void) reentrant;
#endif

#if defined(k_mcu_97210)
//------------------------------------------------------------------------------
#define _ms_rx_data_fifo_is_empty() (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_r_buf_e)
#define _ms_rx_data_fifo_is_full()  (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_r_buf_f)
//#define _ms_tx_data_fifo_is_empty() (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_t_buf_e)
#define _ms_tx_data_fifo_is_full()  (_ms_register_rd(ms_fifo_stat) & ms_fifo_stat_t_buf_f)
#elif defined(k_mcu_97223) 
#define _ms_rx_data_fifo_is_empty() (_ms_register_rd(msc_alt_stat_l ) & kbm_ms_alt_stat_fifo_e)
#define _ms_rx_data_fifo_is_full()  (_ms_register_rd(msc_alt_stat_l ) &  kbm_ms_alt_stat_fifo_f)
//define _ms_tx_data_fifo_is_empty() (_ms_register_rd(msc_alt_stat_l ) & kbm_ms_alt_stat_fifo_e)
#define _ms_tx_data_fifo_is_full()  (_ms_register_rd(msc_alt_stat_l ) &  kbm_ms_alt_stat_fifo_f)
#endif
//------------------------------------------------------------------------------
//uint8  _ms_tx_data_fifo_is_empty(void);
//uint8 _ms_rx_data_fifo_is_empty(void);
uint8  _ms_tx_data_fifo_is_empty(void);
//------------------------------------------------------------------------------
// function from fmc
#undef _v_lun_enable_mux
#define _v_lun_enable_mux fmc_select_msc
//------------------------------------------------------------------------------
#if defined(k_mcu_97210)
void ms_reset_controller(void) reentrant;
#undef _v_lun_reset_controller
#define _v_lun_reset_controller ms_reset_controller
//------------------------------------------------------------------------------
void ms_initialize_controller(void) reentrant;
#undef _v_lun_initialize_controller
#define _v_lun_initialize_controller ms_initialize_controller
//------------------------------------------------------------------------------
void dfa_ms_reset_media(void) reentrant;
#undef _v_dfa_lun_reset_media
#define _v_dfa_lun_reset_media dfa_ms_reset_media
//------------------------------------------------------------------------------
void dfa_ms_initialize_media(void) reentrant;
#undef _v_dfa_lun_initialize_media
#define _v_dfa_lun_initialize_media dfa_ms_initialize_media
//--------------------------------------------------------------------------------
void dfa_ms_identify_media(void) reentrant;
#undef _v_dfa_lun_identify_media
#define _v_dfa_lun_identify_media dfa_ms_identify_media
//--------------------------------------------------------------------------------
void dfa_ms_read(void) reentrant;
#undef _v_dfa_lun_read
#define _v_dfa_lun_read dfa_ms_read
//--------------------------------------------------------------------------------
void dfa_ms_write(void) reentrant;
#undef _v_dfa_lun_write
#define _v_dfa_lun_write dfa_ms_write
//--------------------------------------------------------------------------------
void dfa_ms_verify(void) reentrant;
#undef _v_dfa_lun_verify
#define _v_dfa_lun_verify dfa_ms_verify
//------------------------------------------------------------------------------
#undef _v_dfa_lun_erase_media
#define _v_dfa_lun_erase_media media_dfa_erase
//------------------------------------------------------------------------------
#undef _v_dfa_lun_report_media_geometry
#define _v_dfa_lun_report_media_geometry media_dfa_report_media_geometry
//--------------------------------------------------------------------------------
#elif defined(k_mcu_97223)
void _ms_reset_controller(void) reentrant;
#undef _v_lun_reset_controller
#define _v_lun_reset_controller _ms_reset_controller
//------------------------------------------------------------------------------
void _ms_initialize_controller(void) reentrant;
#undef _v_lun_initialize_controller
#define _v_lun_initialize_controller _ms_initialize_controller
//------------------------------------------------------------------------------
void dfa_ms_reset_media(void) reentrant;
#undef _v_dfa_lun_reset_media
#define _v_dfa_lun_reset_media dfa_ms_reset_media
//------------------------------------------------------------------------------
void dfa_ms_initialize_media(void) reentrant;
#undef _v_dfa_lun_initialize_media
#define _v_dfa_lun_initialize_media dfa_ms_initialize_media
//--------------------------------------------------------------------------------
void dfa_ms_identify_media(void) reentrant;
#undef _v_dfa_lun_identify_media
#define _v_dfa_lun_identify_media dfa_ms_identify_media
//--------------------------------------------------------------------------------
void dfa_ms_read(void) reentrant;
#undef _v_dfa_lun_read
#define _v_dfa_lun_read dfa_ms_read
//--------------------------------------------------------------------------------
void dfa_ms_write(void) reentrant;
#undef _v_dfa_lun_write
#define _v_dfa_lun_write dfa_ms_write
//--------------------------------------------------------------------------------
void dfa_ms_verify(void) reentrant;
#undef _v_dfa_lun_verify
#define _v_dfa_lun_verify dfa_ms_verify
//------------------------------------------------------------------------------
#undef _v_dfa_lun_erase_media
#define _v_dfa_lun_erase_media media_dfa_erase
//------------------------------------------------------------------------------
void dfa_ms_report_media_geometry(void) reentrant;
#undef _v_dfa_lun_report_media_geometry
#define _v_dfa_lun_report_media_geometry dfa_ms_report_media_geometry
//-----------------------------------------------------------------------------
void dfa_ms_format_unit(void)  reentrant;
#undef _v_dfa_lun_format_unit 
#define _v_dfa_lun_format_unit  dfa_ms_format_unit
//----------------------------------------------------------------------------
void dfa_ms_get_format_status(void) reentrant;
#undef _v_dfa_lun_get_format_status
#define _v_dfa_lun_get_format_status dfa_ms_get_format_status
//-------------------------------------------------------------------------
void dfa_ms_mode_sense(void) reentrant;
#undef  _v_dfa_lun_mode_sense
#define _v_dfa_lun_mode_sense dfa_ms_mode_sense
//-------------------------------------------------------------------------
void dfa_ms_inquiry(void) reentrant;
#undef  _v_dfa_lun_inquiry   
#define  _v_dfa_lun_inquiry dfa_ms_inquiry
//-------------------------------------------------------------------------
void dfa_ms_req_sense(void) reentrant;
#undef  _v_dfa_lun_req_sense
#define _v_dfa_lun_req_sense dfa_ms_req_sense
//-------------------------------------------------------------------------
#endif
// ms inherits from lun
#define _v_ms _v_lun
typedef uint8 t_ms_vtbl_ix;
typedef enum e_ms_vtbl_entry
{
  k_ms_vtbl_sz = k_lun_vtbl_sz
};
extern code  _vtbl_decl(ms);
#else
#error "warning: header included too many times!"
#endif // __ms_dot_h__

//---eof------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -