card_io.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 242 行
H
242 行
#ifndef __CARD_IO_H
#define __CARD_IO_H
//Card module
typedef enum _Card_Module
{
CARD_MODULE_CF,
CARD_MODULE_SD_MMC,
CARD_MODULE_MS_MSPRO,
CARD_MODULE_XD,
CARD_MODULE_SM
} Card_Module_t;
//Card config
typedef struct _Card_Config
{
int cf_enabled;
int sd_mmc_enabled;
int ms_mspro_enabled;
int xd_enabled;
int sm_enabled;
} Card_Config_t;
//Muxing contorl
#define PREG_PIN_MUX_0 0x012000B0L
#define PREG_PIN_MUX_1 0x012000B4L
#define PREG_PIN_MUX_2 0x012000B8L
//SDIO HW pad
typedef enum _SDIO_Pad_Type
{
SDIO_PAD_M2_D5_0,
SDIO_PAD_FEC_D7_2,
SDIO_PAD_EGPIO_5_0,
SDIO_PAD_EGPIO_11_6,
SDIO_PAD_EGPIO_17_12,
SDIO_PAD_AT_D5_0,
SDIO_PAD_AT_D15_10
} SDIO_Pad_Type_t;
//EGPIO group
#define PREG_EGPIO_ENABLE 0x012000A0L
#define PREG_EGPIO_OUTPUT 0x012000A4L
#define PREG_EGPIO_INPUT 0x012000A8L
//ATAPI group
#define ATAPI_GPIO_ENABLE 0x01200090L
#define ATAPI_GPIO_OUTPUT 0x01200094L
#define ATAPI_GPIO_INPUT 0x01200098L
#define ATAPI_CSEL_MASK 0x08000000L
#define ATAPI_M2_GPIO_0_ENABLE 0x01200030L
#define ATAPI_M2_GPIO_0_OUTPUT 0x01200038L
#define ATAPI_M2_GPIO_0_INPUT 0x01200040L
#define ATAPI_M2_GPIO_0_MASK 0x20000000L
#define ATAPI_M2_GPIO_1_5_ENABLE 0x01200034L
#define ATAPI_M2_GPIO_1_5_OUTPUT 0x0120003cL
#define ATAPI_M2_GPIO_1_5_INPUT 0x01200044L
#define ATAPI_M2_GPIO_1_MASK 0x00000010L
#define ATAPI_M2_GPIO_2_MASK 0x00000020L
#define ATAPI_M2_GPIO_3_MASK 0x00000008L
#define ATAPI_M2_GPIO_4_MASK 0x00000002L
#define ATAPI_M2_GPIO_5_MASK 0x00000004L
//M2 group
#define M2_GPIO_ENABLE 0x01200030L
#define M2_GPIO_OUTPUT 0x01200038L
#define M2_GPIO_INPUT 0x01200040L
#define M2_CTRL_GPIO_ENABLE 0x01200034L
#define M2_CTRL_GPIO_OUTPUT 0x0120003CL
#define M2_CTRL_GPIO_INPUT 0x01200044L
#define M2_CTRL_GPIO_0_MASK 0x00000001L
#define M2_CTRL_GPIO_1_MASK 0x00000002L
#define M2_CTRL_GPIO_2_MASK 0x00000004L
#define M2_CTRL_GPIO_3_MASK 0x00000008L
#define M2_CTRL_GPIO_4_MASK 0x00000010L
#define M2_CTRL_GPIO_5_MASK 0x00000020L
//LCD group COPIA
#define LCD_GPIO_ENABLE 0x01200030L
#define LCD_GPIO_OUTPUT 0x01200034L
#define LCD_GPIO_INPUT 0x01200038L
//MIO group
#define MIO_GPIO_ENABLE 0x01200048L
#define MIO_GPIO_OUTPUT 0x01200048L
#define MIO_GPIO_INPUT 0x01200048L
#define MIO_0_MASK_ENABLE 0x00000001L
#define MIO_1_MASK_ENABLE 0x00000002L
#define MIO_2_MASK_ENABLE 0x00000004L
#define MIO_3_MASK_ENABLE 0x00000008L
#define MIO_4_MASK_ENABLE 0x00000010L
#define MIO_5_MASK_ENABLE 0x00000020L
#define MIO_0_MASK_OUTPUT 0x00000100L
#define MIO_1_MASK_OUTPUT 0x00000200L
#define MIO_2_MASK_OUTPUT 0x00000400L
#define MIO_3_MASK_OUTPUT 0x00000800L
#define MIO_4_MASK_OUTPUT 0x00001000L
#define MIO_5_MASK_OUTPUT 0x00002000L
#define MIO_0_MASK_INPUT 0x00010000L
#define MIO_1_MASK_INPUT 0x00020000L
#define MIO_2_MASK_INPUT 0x00040000L
#define MIO_3_MASK_INPUT 0x00080000L
#define MIO_4_MASK_INPUT 0x00100000L
#define MIO_5_MASK_INPUT 0x00200000L
#define MIO_HERC_GPIO_ENABLE 0x01200048L
#define MIO_HERC_GPIO_OUTPUT 0x01200048L
#define MIO_HERC_GPIO_INPUT 0x0120004CL
#define MIO_0_HERC_MASK_ENABLE 0x00000001L
#define MIO_1_HERC_MASK_ENABLE 0x00000002L
#define MIO_2_HERC_MASK_ENABLE 0x00000004L
#define MIO_3_HERC_MASK_ENABLE 0x00000008L
#define MIO_4_HERC_MASK_ENABLE 0x00000010L
#define MIO_5_HERC_MASK_ENABLE 0x00000020L
#define MIO_6_HERC_MASK_ENABLE 0x00000040L
#define MIO_7_HERC_MASK_ENABLE 0x00000080L
#define MIO_8_HERC_MASK_ENABLE 0x00000100L
#define MIO_9_HERC_MASK_ENABLE 0x00000200L
#define MIO_10_HERC_MASK_ENABLE 0x00000400L
#define MIO_0_HERC_MASK_OUTPUT 0x00010000L
#define MIO_1_HERC_MASK_OUTPUT 0x00020000L
#define MIO_2_HERC_MASK_OUTPUT 0x00040000L
#define MIO_3_HERC_MASK_OUTPUT 0x00080000L
#define MIO_4_HERC_MASK_OUTPUT 0x00100000L
#define MIO_5_HERC_MASK_OUTPUT 0x00200000L
#define MIO_6_HERC_MASK_OUTPUT 0x00400000L
#define MIO_7_HERC_MASK_OUTPUT 0x00800000L
#define MIO_8_HERC_MASK_OUTPUT 0x01000000L
#define MIO_9_HERC_MASK_OUTPUT 0x02000000L
#define MIO_10_HERC_MASK_OUTPUT 0x04000000L
#define MIO_0_HERC_MASK_INPUT 0x00000001L
#define MIO_1_HERC_MASK_INPUT 0x00000002L
#define MIO_2_HERC_MASK_INPUT 0x00000004L
#define MIO_3_HERC_MASK_INPUT 0x00080008L
#define MIO_4_HERC_MASK_INPUT 0x00000010L
#define MIO_5_HERC_MASK_INPUT 0x00000020L
#define MIO_6_HERC_MASK_INPUT 0x00000040L
#define MIO_7_HERC_MASK_INPUT 0x00000080L
#define MIO_8_HERC_MASK_INPUT 0x00000100L
#define MIO_9_HERC_MASK_INPUT 0x00000200L
#define MIO_10_HERC_MASK_INPUT 0x00000400L
#define FEIO_GPIO_CONTROL 0x0120005cL
#define FEIO_GPIO_ENABLE 0x01200050L
#define FEIO_GPIO_OUTPUT 0x01200054L
#define FEIO_GPIO_INPUT 0x01200058L
#define PREG_IO_0_MASK 0x00000001L
#define PREG_IO_1_MASK 0x00000002L
#define PREG_IO_2_MASK 0x00000004L
#define PREG_IO_3_MASK 0x00000008L
#define PREG_IO_4_MASK 0x00000010L
#define PREG_IO_5_MASK 0x00000020L
#define PREG_IO_6_MASK 0x00000040L
#define PREG_IO_7_MASK 0x00000080L
#define PREG_IO_8_MASK 0x00000100L
#define PREG_IO_9_MASK 0x00000200L
#define PREG_IO_10_MASK 0x00000400L
#define PREG_IO_11_MASK 0x00000800L
#define PREG_IO_12_MASK 0x00001000L
#define PREG_IO_13_MASK 0x00002000L
#define PREG_IO_14_MASK 0x00004000L
#define PREG_IO_15_MASK 0x00008000L
#define PREG_IO_16_MASK 0x00010000L
#define PREG_IO_17_MASK 0x00020000L
#define PREG_IO_18_MASK 0x00040000L
#define PREG_IO_19_MASK 0x00080000L
#define PREG_IO_20_MASK 0x00100000L
#define PREG_IO_21_MASK 0x00200000L
#define PREG_IO_22_MASK 0x00400000L
#define PREG_IO_23_MASK 0x00800000L
#define PREG_IO_24_MASK 0x01000000L
#define PREG_IO_25_MASK 0x02000000L
#define PREG_IO_26_MASK 0x04000000L
#define PREG_IO_27_MASK 0x08000000L
#define PREG_IO_28_MASK 0x10000000L
#define PREG_IO_29_MASK 0x20000000L
#define PREG_IO_30_MASK 0x40000000L
#define PREG_IO_31_MASK 0x80000000L
#define PREG_IO_0_3_MASK 0x0000000FL
#define PREG_IO_2_5_MASK 0x0000003CL
#define PREG_IO_0_7_MASK 0x000000FFL
#define PREG_IO_8_11_MASK 0x00000F00L
#define PREG_IO_8_15_MASK 0x0000FF00L
#define PREG_IO_10_13_MASK 0x00003c00L
#define PREG_IO_12_15_MASK 0x0000F000L
#define PREG_IO_14_17_MASK 0x0003C000L
#define PREG_IO_24_27_MASK 0x0F000000L
#define PREG_IO_22_29_MASK 0x3FC00000L
#define CARD_HW_MODE 0
#define CARD_SW_MODE 1
#define PERIPHS_PIN_MUX_0 0xb0
#define PERIPHS_PIN_MUX_1 0xb4
#define PERIPHS_PIN_MUX_2 0xb8
extern Card_Config_t card_config;
/**/extern void (*ide_io_crtl_register)(int ide_group_num);
extern void cf_io_init();
extern void sd_io_init();
extern void ms_io_init();
extern void xd_io_init();
extern void sm_io_init();
void card_creat_dev();
void card_delete_dev();
void card_get_dev();
void card_put_dev();
void set_atapi_enable(int enable_flag, int m2_flag);
void set_m2atapi_enable(int enable_flag);
void set_atapi_csel_enable(int enable_flag);
void set_atapi_master_enable(int enable_flag);
void set_atapi_slave_enable(int enable_flag);
void sd_io_mode_select(int sd_io_mode);
void ms_io_mode_select(int ms_io_mode);
void ide_group_num_select(int ide_group_num);
int set_sdio_enable(SDIO_Pad_Type_t sdio_pad_type);
int set_sdio_disable(SDIO_Pad_Type_t sdio_pad_type);
int card_module_enable(Card_Module_t card_module);
void cf_register_reset_ctrl(void (*cf_reset)(int reset_high));
void card_register_io_release(void (*card_io_release)(), Card_Module_t card_module);
void card_register_insert_crtl(int (*card_get_ins)(), Card_Module_t card_module);
void card_register_power_crtl(void (*card_power)(int power_on), Card_Module_t card_module);
void card_register_wp_crtl(int (*card_get_wp)(), Card_Module_t card_module);
void ide_register_io_crtl(void (*ide_io_crtl)(int ide_group_num));
#endif //__CARD_IO_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?