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 + -
显示快捷键?