我现在在做arm2410和DM642的HPI口驱动程序,在驱动中各个寄存器定义如下:
/* HPIC 寄存器*/
#define HPIC_L *(volatile u16*)(HPI_BASE+0x0) //00 0 0
#define HPIC_H *(volatile u16*)(HPI_BASE+0x2) //00 1 0
/* HPIA 寄存器*/
#define HPIA_L *(volatile u16*)(HPI_BASE + 0x4) //01 0 0
#define HPIA_H *(volatile u16*)(HPI_BASE + 0x6) //01 1 0
/* HPID 自增模式 */
#define HPID_A_L *(volatile u16*)(HPI_BASE + 0x8) //10 0 0
#define HPID_A_H *(volatile u16*)(HPI_BASE + 0xa) //10 1 0
/* HPID 固定寻址*/
#define HPID_F_L *(volatile u16*)(HPI_BASE + 0xc) //11 0 0
#define HPID_F_H *(volatile u16*)(HPI_BASE + 0xe) //11 1 0
其中HR/W接的是主机的R/W信号,HCNT[1-0]对应主机的A[3-2],HHWL对应A1,HRDY取反后接主机的nWAIT。用的是HPI16模式。
现在linux的驱动中中断已经可以正常工作了,初始化HPIC也基本没问题了,可是HPIA的读写有问题 |