📄 mfp.h
字号:
#define MFPR_ALT_OFFSET 0#define MFPR_ERE_OFFSET 4#define MFPR_EFE_OFFSET 5#define MFPR_EC_OFFSET 6#define MFPR_SON_OFFSET 7#define MFPR_SD_OFFSET 8#define MFPR_SS_OFFSET 9#define MFPR_DRV_OFFSET 10#define MFPR_PD_OFFSET 13#define MFPR_PU_OFFSET 14#define MFPR_PS_OFFSET 15#define MFPR(af, drv, rdh, lpm, edge) \ (((af) & 0x7) | (((drv) & 0x7) << 10) |\ (((rdh) & 0x1) << 9) |\ (((lpm) & 0x3) << 7) |\ (((lpm) & 0x4) << 12)|\ (((lpm) & 0x8) << 10)|\ ((!(edge)) << 6) |\ (((edge) & 0x1) << 5) |\ (((edge) & 0x2) << 3))/* * a possible MFP configuration is represented by a 32-bit integer * bit 0..15 - MFPR value (16-bit) * bit 16..31 - mfp pin index (used to obtain the MFPR offset) * * to facilitate the definition, the following macros are provided * * MFPR_DEFAULT - default MFPR value, with * alternate function = 0, * drive strength = fast 1mA (MFP_DS01X) * low power mode = default * release dalay hold = false (RDH bit) * edge detection = none * * MFP_CFG - default MFPR value with alternate function * MFP_CFG_DRV - default MFPR value with alternate function and * pin drive strength * MFP_CFG_LPM - default MFPR value with alternate function and * low power mode * MFP_CFG_X - default MFPR value with alternate function, * pin drive strength and low power mode * * use * * MFP_CFG_PIN - to get the MFP pin index * MFP_CFG_VAL - to get the corresponding MFPR value */typedef uint32_t mfp_cfg_t;#define MFP_CFG_PIN(mfp_cfg) (((mfp_cfg) >> 16) & 0xffff)#define MFP_CFG_VAL(mfp_cfg) ((mfp_cfg) & 0xffff)/* * MFP register defaults to * drive strength fast 3mA (010'b) * edge detection logic disabled * alternate function 0 */#define MFPR_DEFAULT (0x0840)#define MFP_CFG(pin, af) \ ((MFP_PIN_##pin << 16) | MFPR_DEFAULT | (MFP_##af))#define MFP_CFG_DRV(pin, af, drv) \ ((MFP_PIN_##pin << 16) | (MFPR_DEFAULT & ~MFPR_DRV_MASK) |\ ((MFP_##drv) << 10) | (MFP_##af))#define MFP_CFG_LPM(pin, af, lpm) \ ((MFP_PIN_##pin << 16) | (MFPR_DEFAULT & ~MFPR_LPM_MASK) |\ (((MFP_LPM_##lpm) & 0x3) << 7) |\ (((MFP_LPM_##lpm) & 0x4) << 12) |\ (((MFP_LPM_##lpm) & 0x8) << 10) |\ (MFP_##af))#define MFP_CFG_X(pin, af, drv, lpm) \ ((MFP_PIN_##pin << 16) |\ (MFPR_DEFAULT & ~(MFPR_DRV_MASK | MFPR_LPM_MASK)) |\ ((MFP_##drv) << 10) | (MFP_##af) |\ (((MFP_LPM_##lpm) & 0x3) << 7) |\ (((MFP_LPM_##lpm) & 0x4) << 12) |\ (((MFP_LPM_##lpm) & 0x8) << 10))/* common MFP configurations - processor specific ones defined * in mfp-pxa3xx.h */#define GPIO0_GPIO MFP_CFG(GPIO0, AF0)#define GPIO1_GPIO MFP_CFG(GPIO1, AF0)#define GPIO2_GPIO MFP_CFG(GPIO2, AF0)#define GPIO3_GPIO MFP_CFG(GPIO3, AF0)#define GPIO4_GPIO MFP_CFG(GPIO4, AF0)#define GPIO5_GPIO MFP_CFG(GPIO5, AF0)#define GPIO6_GPIO MFP_CFG(GPIO6, AF0)#define GPIO7_GPIO MFP_CFG(GPIO7, AF0)#define GPIO8_GPIO MFP_CFG(GPIO8, AF0)#define GPIO9_GPIO MFP_CFG(GPIO9, AF0)#define GPIO10_GPIO MFP_CFG(GPIO10, AF0)#define GPIO11_GPIO MFP_CFG(GPIO11, AF0)#define GPIO12_GPIO MFP_CFG(GPIO12, AF0)#define GPIO13_GPIO MFP_CFG(GPIO13, AF0)#define GPIO14_GPIO MFP_CFG(GPIO14, AF0)#define GPIO15_GPIO MFP_CFG(GPIO15, AF0)#define GPIO16_GPIO MFP_CFG(GPIO16, AF0)#define GPIO17_GPIO MFP_CFG(GPIO17, AF0)#define GPIO18_GPIO MFP_CFG(GPIO18, AF0)#define GPIO19_GPIO MFP_CFG(GPIO19, AF0)#define GPIO20_GPIO MFP_CFG(GPIO20, AF0)#define GPIO21_GPIO MFP_CFG(GPIO21, AF0)#define GPIO22_GPIO MFP_CFG(GPIO22, AF0)#define GPIO23_GPIO MFP_CFG(GPIO23, AF0)#define GPIO24_GPIO MFP_CFG(GPIO24, AF0)#define GPIO25_GPIO MFP_CFG(GPIO25, AF0)#define GPIO26_GPIO MFP_CFG(GPIO26, AF0)#define GPIO27_GPIO MFP_CFG(GPIO27, AF0)#define GPIO28_GPIO MFP_CFG(GPIO28, AF0)#define GPIO29_GPIO MFP_CFG(GPIO29, AF0)#define GPIO30_GPIO MFP_CFG(GPIO30, AF0)#define GPIO31_GPIO MFP_CFG(GPIO31, AF0)#define GPIO32_GPIO MFP_CFG(GPIO32, AF0)#define GPIO33_GPIO MFP_CFG(GPIO33, AF0)#define GPIO34_GPIO MFP_CFG(GPIO34, AF0)#define GPIO35_GPIO MFP_CFG(GPIO35, AF0)#define GPIO36_GPIO MFP_CFG(GPIO36, AF0)#define GPIO37_GPIO MFP_CFG(GPIO37, AF0)#define GPIO38_GPIO MFP_CFG(GPIO38, AF0)#define GPIO39_GPIO MFP_CFG(GPIO39, AF0)#define GPIO40_GPIO MFP_CFG(GPIO40, AF0)#define GPIO41_GPIO MFP_CFG(GPIO41, AF0)#define GPIO42_GPIO MFP_CFG(GPIO42, AF0)#define GPIO43_GPIO MFP_CFG(GPIO43, AF0)#define GPIO44_GPIO MFP_CFG(GPIO44, AF0)#define GPIO45_GPIO MFP_CFG(GPIO45, AF0)#define GPIO47_GPIO MFP_CFG(GPIO47, AF0)#define GPIO48_GPIO MFP_CFG(GPIO48, AF0)#define GPIO53_GPIO MFP_CFG(GPIO53, AF0)#define GPIO54_GPIO MFP_CFG(GPIO54, AF0)#define GPIO55_GPIO MFP_CFG(GPIO55, AF0)#define GPIO57_GPIO MFP_CFG(GPIO57, AF0)#define GPIO63_GPIO MFP_CFG(GPIO63, AF0)#define GPIO64_GPIO MFP_CFG(GPIO64, AF0)#define GPIO65_GPIO MFP_CFG(GPIO65, AF0)#define GPIO66_GPIO MFP_CFG(GPIO66, AF0)#define GPIO67_GPIO MFP_CFG(GPIO67, AF0)#define GPIO68_GPIO MFP_CFG(GPIO68, AF0)#define GPIO69_GPIO MFP_CFG(GPIO69, AF0)#define GPIO70_GPIO MFP_CFG(GPIO70, AF0)#define GPIO71_GPIO MFP_CFG(GPIO71, AF0)#define GPIO72_GPIO MFP_CFG(GPIO72, AF0)#define GPIO73_GPIO MFP_CFG(GPIO73, AF0)#define GPIO74_GPIO MFP_CFG(GPIO74, AF0)#define GPIO75_GPIO MFP_CFG(GPIO75, AF0)#define GPIO76_GPIO MFP_CFG(GPIO76, AF0)#define GPIO77_GPIO MFP_CFG(GPIO77, AF0)#define GPIO78_GPIO MFP_CFG(GPIO78, AF0)#define GPIO79_GPIO MFP_CFG(GPIO79, AF0)#define GPIO80_GPIO MFP_CFG(GPIO80, AF0)#define GPIO81_GPIO MFP_CFG(GPIO81, AF0)#define GPIO82_GPIO MFP_CFG(GPIO82, AF0)#define GPIO83_GPIO MFP_CFG(GPIO83, AF0)#define GPIO84_GPIO MFP_CFG(GPIO84, AF0)#define GPIO85_GPIO MFP_CFG(GPIO85, AF0)#define GPIO86_GPIO MFP_CFG(GPIO86, AF0)#define GPIO87_GPIO MFP_CFG(GPIO87, AF0)#define GPIO88_GPIO MFP_CFG(GPIO88, AF0)#define GPIO89_GPIO MFP_CFG(GPIO89, AF0)#define GPIO90_GPIO MFP_CFG(GPIO90, AF0)#define GPIO91_GPIO MFP_CFG(GPIO91, AF0)#define GPIO92_GPIO MFP_CFG(GPIO92, AF0)#define GPIO93_GPIO MFP_CFG(GPIO93, AF0)#define GPIO94_GPIO MFP_CFG(GPIO94, AF0)#define GPIO95_GPIO MFP_CFG(GPIO95, AF0)#define GPIO96_GPIO MFP_CFG(GPIO96, AF0)#define GPIO97_GPIO MFP_CFG(GPIO97, AF0)#define GPIO98_GPIO MFP_CFG(GPIO98, AF0)#define GPIO99_GPIO MFP_CFG(GPIO99, AF0)#define GPIO100_GPIO MFP_CFG(GPIO100, AF0)#define GPIO101_GPIO MFP_CFG(GPIO101, AF0)#define GPIO102_GPIO MFP_CFG(GPIO102, AF0)#define GPIO103_GPIO MFP_CFG(GPIO103, AF0)#define GPIO104_GPIO MFP_CFG(GPIO104, AF0)#define GPIO105_GPIO MFP_CFG(GPIO105, AF0)#define GPIO106_GPIO MFP_CFG(GPIO106, AF0)#define GPIO107_GPIO MFP_CFG(GPIO107, AF0)#define GPIO108_GPIO MFP_CFG(GPIO108, AF0)#define GPIO109_GPIO MFP_CFG(GPIO109, AF0)#define GPIO110_GPIO MFP_CFG(GPIO110, AF0)#define GPIO111_GPIO MFP_CFG(GPIO111, AF0)#define GPIO112_GPIO MFP_CFG(GPIO112, AF0)#define GPIO113_GPIO MFP_CFG(GPIO113, AF0)#define GPIO114_GPIO MFP_CFG(GPIO114, AF0)#define GPIO115_GPIO MFP_CFG(GPIO115, AF0)#define GPIO116_GPIO MFP_CFG(GPIO116, AF0)#define GPIO117_GPIO MFP_CFG(GPIO117, AF0)#define GPIO118_GPIO MFP_CFG(GPIO118, AF0)#define GPIO119_GPIO MFP_CFG(GPIO119, AF0)#define GPIO120_GPIO MFP_CFG(GPIO120, AF0)#define GPIO121_GPIO MFP_CFG(GPIO121, AF0)#define GPIO122_GPIO MFP_CFG(GPIO122, AF0)#define GPIO123_GPIO MFP_CFG(GPIO123, AF0)#define GPIO124_GPIO MFP_CFG(GPIO124, AF0)#define GPIO125_GPIO MFP_CFG(GPIO125, AF0)#define GPIO126_GPIO MFP_CFG(GPIO126, AF0)#define GPIO127_GPIO MFP_CFG(GPIO127, AF0)#define GPIO0_2_GPIO MFP_CFG(GPIO0_2, AF0)#define GPIO1_2_GPIO MFP_CFG(GPIO1_2, AF0)#define GPIO2_2_GPIO MFP_CFG(GPIO2_2, AF0)#define GPIO3_2_GPIO MFP_CFG(GPIO3_2, AF0)#define GPIO4_2_GPIO MFP_CFG(GPIO4_2, AF0)#define GPIO5_2_GPIO MFP_CFG(GPIO5_2, AF0)#define GPIO6_2_GPIO MFP_CFG(GPIO6_2, AF0)/* * each MFP pin will have a MFPR register, since the offset of the * register varies between processors, the processor specific code * should initialize the pin offsets by pxa3xx_mfp_init_addr() * * pxa3xx_mfp_init_addr - accepts a table of "pxa3xx_mfp_addr_map" * structure, which represents a range of MFP pins from "start" to * "end", with the offset begining at "offset", to define a single * pin, let "end" = -1 * * use * * MFP_ADDR_X() to define a range of pins * MFP_ADDR() to define a single pin * MFP_ADDR_END to signal the end of pin offset definitions */struct pxa3xx_mfp_addr_map { unsigned int start; unsigned int end; unsigned long offset;};#define MFP_ADDR_X(start, end, offset) \ { MFP_PIN_##start, MFP_PIN_##end, offset }#define MFP_ADDR(pin, offset) \ { MFP_PIN_##pin, -1, offset }#define MFP_ADDR_END { MFP_PIN_INVALID, 0 }struct pxa3xx_mfp_pin { unsigned long mfpr_off; /* MFPRxx register offset */ unsigned long mfpr_val; /* MFPRxx register value */};/* * pxa3xx_mfp_read()/pxa3xx_mfp_write() - for direct read/write access * to the MFPR register */unsigned long pxa3xx_mfp_read(int mfp);void pxa3xx_mfp_write(int mfp, unsigned long mfpr_val);/* * pxa3xx_mfp_set_afds - set MFP alternate function and drive strength * pxa3xx_mfp_set_rdh - set MFP release delay hold on/off * pxa3xx_mfp_set_lpm - set MFP low power mode state * pxa3xx_mfp_set_edge - set MFP edge detection in low power mode * * use these functions to override/change the default configuration * done by pxa3xx_mfp_set_config(s) */void pxa3xx_mfp_set_afds(int mfp, int af, int ds);void pxa3xx_mfp_set_rdh(int mfp, int rdh);void pxa3xx_mfp_set_lpm(int mfp, int lpm);void pxa3xx_mfp_set_edge(int mfp, int edge);/* * pxa3xx_mfp_config - configure the MFPR registers * * used by board specific initialization code */void pxa3xx_mfp_config(mfp_cfg_t *mfp_cfgs, int num);/* * pxa3xx_mfp_init_addr() - initialize the mapping between mfp pin * index and MFPR register offset * * used by processor specific code */void __init pxa3xx_mfp_init_addr(struct pxa3xx_mfp_addr_map *);void __init pxa3xx_init_mfp(void);#endif /* __ASM_ARCH_MFP_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -