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

📄 hal4d13.c

📁 ISP1181MCU_FW_Ver1.01.zip是基于飞利浦ISP1181的USB HOST开发板固件源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();
	return i;
}
*/
void Hal4D13_SetIntEnable(ULONG dIntEn)
{

//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DEV_WR_INTEN);
	outportb(D13_DATA_PORT,(UCHAR)dIntEn);
	outportb(D13_DATA_PORT,(UCHAR)(dIntEn >> 8));
	outportb(D13_DATA_PORT,(UCHAR)(dIntEn >> 16));
	outportb(D13_DATA_PORT,(UCHAR)0x0);

//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();

}


ULONG Hal4D13_ReadInterruptRegister(void)
{
	ULONG i;

//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();

	outportb(D13_COMMAND_PORT, D13CMD_DEV_INT_SRC);

	i = ((ULONG)inportb(D13_DATA_PORT));
	i += (((ULONG)inportb(D13_DATA_PORT)) << 8);
	i += (((ULONG)inportb(D13_DATA_PORT)) << 16);
	i += (((ULONG)inportb(D13_DATA_PORT)) << 24); 


//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();

	return i;
}

UCHAR Hal4D13_GetEndpointStatusWInteruptClear(UCHAR bEPIndex)
{
	UCHAR c;

//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();


	outportb(D13_COMMAND_PORT, D13CMD_EP_RDSTS_CLRINT + bEPIndex);
	c = inportb(D13_DATA_PORT);

//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();

	return c;
}

UCHAR Hal4D13_GetEndpointStatusWOInteruptClear(UCHAR bEPIndex)
{
	UCHAR c;

//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();

	outportb(D13_COMMAND_PORT, D13CMD_EP_RDSTS + bEPIndex);
	c = inportb(D13_DATA_PORT);
//	if(bD13flags.bits.At_IRQL1 == 0)
//	LowerIRQL();

	return c;
}

void Hal4D13_SetEndpointStatus(UCHAR bEPIndex, UCHAR bStalled)
{
//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();
	
	if(bStalled & 0x80)
	{
		outportb(D13_COMMAND_PORT, D13CMD_EP_WR_STS + bEPIndex);
// code changed, write EP status 0x40, no data phase. 
	//	outportb(D13_DATA_PORT, bStalled);
	}
	else
	{
// clear endpoint stall 0x80.
		outportb(D13_COMMAND_PORT, D13CMD_EP_CLR_STALL + bEPIndex);
	}


//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();
}
//Jan10, WARNING 16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

void Hal4D13_SetDMAConfig(USHORT wDMACnfg)
{
//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DMA_WR_CNFG);
	outportb(D13_DATA_PORT,(UCHAR)wDMACnfg);
	outportb(D13_DATA_PORT,(UCHAR)(wDMACnfg>>8));

//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();
}

/*
USHORT Hal4D13_GetDMAConfig(void)
{
	USHORT i;
	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DMA_RD_CNFG);
	i = inportb(D13_DATA_PORT);
	i += ((USHORT)inportb(D13_DATA_PORT) << 8);

	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();
	return i;
}
*/
//Jan10, WARNING 16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

void Hal4D13_SetDMACounter(USHORT wDMACounter)
{
//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DMA_WR_COUNT);
	outportb(D13_DATA_PORT,(UCHAR)wDMACounter);
	outportb(D13_DATA_PORT,(UCHAR)(wDMACounter >> 8));

//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();
}

/*
USHORT Hal4D13_GetDMACounter(void)
{
	USHORT i;
	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DMA_RD_COUNT);
	i = inportb(D13_DATA_PORT);
//	i = i + ((USHORT)inportb(D13_DATA_PORT) << 8); //jiangqian i+= -> i = i +;
	i += ((USHORT)inportb(D13_DATA_PORT) << 8);

	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();
	return i;
}
*/
/*
USHORT Hal4D13_GetDataFromChipRam(void)
{
	USHORT i;
	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DEV_RD_RAM);
	i = inportb(D13_DATA_PORT);
	i = i+((USHORT)inportb(D13_DATA_PORT) << 8);// jiangqian i+= -> i=i+;
	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();
	return i;
}

void Hal4D13_SetDataToChipRam(USHORT wData)
{
	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DEV_WR_RAM);
	outportb(D13_DATA_PORT,(UCHAR)wData);
	outportb(D13_DATA_PORT,(UCHAR)(wData>>8) );

	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();
}

USHORT Hal4D13_ReadCurrentFrameNumber(void)
{
	USHORT i,j;

	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT, D13CMD_RD_FRMNUM);
	i= inportb(D13_DATA_PORT);
	j = inportb(D13_DATA_PORT);

	i += (j<<8);

	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();

	return i;
}
*/
/*
void Hal4D13_LockDevice(UCHAR bTrue)
{
	UCHAR c;
	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	if(bTrue)
		c = 0;
	else
		c = 0;

	outportb(D13_COMMAND_PORT,D13CMD_DEV_LOCK );
	outportb(D13_DATA_PORT,c);
	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();
}
*/

//ww JULY26

void Hal4D13_LockDevice(USHORT wUnLockDev)
{
//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();

	outportb(D13_COMMAND_PORT,D13CMD_DEV_LOCK );
	outportb(D13_DATA_PORT,(UCHAR)wUnLockDev);
	outportb(D13_DATA_PORT,(UCHAR)(wUnLockDev >> 8));

//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();
}
/*
USHORT Hal4D13_ReadChipID(void)
{
	USHORT i;

	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT, D13CMD_DEV_RD_CHIPID);
	i=inportb(D13_DATA_PORT);
	i += ((USHORT)inportb(D13_DATA_PORT) << 8);
//	j=inportb(D13_DATA_PORT);

	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();

//	i += (j<<8);

	return i;
}
*/
/*
UCHAR Hal4D13_GetErrorCode(UCHAR bEPIndex)
{
	UCHAR   c;
	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT, D13CMD_EP_RD_ERR+bEPIndex);
	c = inportb(D13_DATA_PORT);

	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();

	return c;
}

UCHAR Hal4D13_GetEndpointConfig(UCHAR bEPIndex)
{
	UCHAR   c;
	if(bD13flags.bits.At_IRQL1 == 0)
		RaiseIRQL();

	outportb(D13_COMMAND_PORT, D13CMD_EP_RD_CNFG+bEPIndex);
	c = inportb(D13_DATA_PORT);

	if(bD13flags.bits.At_IRQL1 == 0)
		LowerIRQL();

	return c;
}
*/
void Hal4D13_SetEndpointConfig(UCHAR bEPConfig, UCHAR bEPIndex)
{
//	if(bD13flags.bits.At_IRQL1 == 0)
//		RaiseIRQL();

	outportb(D13_COMMAND_PORT, D13CMD_EP_WR_CNFG+bEPIndex);
	outportb(D13_DATA_PORT,bEPConfig);

//	if(bD13flags.bits.At_IRQL1 == 0)
//		LowerIRQL();

}


//*************************************************************************
// Subroutines -- 3
//*************************************************************************

void Hal4D13_UnconfigDevice(void)
{
}

void Hal4D13_ConfigDevice(void)
{
}


void Hal4D13_SingleTransmitEP0(UCHAR data * buf, USHORT len)
{
	if( len <= EP0_PACKET_SIZE) {
		Hal4D13_WriteEndpoint(EPINDEX4EP0_CONTROL_IN, buf, len);
	}
}

/*
void Hal4D13_RegAccess(void)
{
	UCHAR   c;
	USHORT  i;
	ULONG   l;

	Hal4D13_ResetDevice();
//	printf("Reseting\n");

	i = Hal4D13_ReadChipID();
//	printf("1181 ChipId = %hx\n",i);

	i = Hal4D13_GetDataFromChipRam();
//	printf("1181 Chip RAM = %hx\n",i);

//	printf("Writing 0x55AA,");
	Hal4D13_SetDataToChipRam(0x55AA);
	i = Hal4D13_GetDataFromChipRam();
//	printf("1181 Chip RAM = %hx\n",i);

	l = Hal4D13_GetIntEnable();
//	printf("Hal4D13_GetIntEnable = %lx\n",l);

	l = Hal4D13_ReadInterruptRegister();
//	printf("Hal4D13_ReadInterruptRegister = %lx\n",l);

	i = Hal4D13_GetDevConfig();
//	printf("Hal4D13_GetDevConfig = %hx\n",i);

	i = Hal4D13_GetDMAConfig();
//	printf("Hal4D13_GetDMAConfig = %hx\n",i);

	i = Hal4D13_GetDMACounter();
//	printf("Hal4D13_GetDMACounter = %hx\n",i);

	i = Hal4D13_ReadCurrentFrameNumber();
//	printf("Hal4D13_ReadCurrentFrameNumber = %hx\n",i);

	c = Hal4D13_GetMode();
//	printf("Hal4D13_GetMode = %x\n",c);

	c = Hal4D13_GetEndpointStatusWOInteruptClear(EPINDEX4EP0_CONTROL_OUT);
//	printf("Hal4D13_GetEndpointStatus EP0 = %x\n",c);

	c = Hal4D13_GetAddress();
//	printf("Hal4D13_GetAddress = %x\n",c);

}
*/
void Hal4D13_StallEP0InControlWrite(void)
{
	Hal4D13_SetEndpointStatus(EPINDEX4EP0_CONTROL_IN, D13REG_EPSTS_STALL);
	Hal4D13_SetEndpointStatus(EPINDEX4EP0_CONTROL_OUT, D13REG_EPSTS_STALL);
}

void Hal4D13_StallEP0InControlRead(void)
{
	Hal4D13_SetEndpointStatus(EPINDEX4EP0_CONTROL_OUT, D13REG_EPSTS_STALL);
	Hal4D13_SetEndpointStatus(EPINDEX4EP0_CONTROL_IN, D13REG_EPSTS_STALL);
}
//Jan10, WARNING 16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
/*
BOOLEAN Hal4D13_IsAnyNewSetupPkt(void)
{
    UCHAR NewSetupPacket;
	NewSetupPacket = Hal4D13_GetEndpointStatusWOInteruptClear(EPINDEX4EP0_CONTROL_OUT)&D13REG_EPSTS_SETUP;
    return NewSetupPacket;
}

BOOLEAN Hal4D13_IsSetupPktInvalid(void)
{
	UCHAR SetupPacketInvalid;
	SetupPacketInvalid = Hal4D13_GetEndpointStatusWOInteruptClear(EPINDEX4EP0_CONTROL_OUT)&D13REG_EPSTS_OVWR;
	return SetupPacketInvalid;
}
*/

⌨️ 快捷键说明

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