示例#1
0
文件: ISR.c 项目: bif/SPARC-ISP1362
void usb_isr(void)
{
    ULONG   i_st;
    //IOWR(PIO_SEG7_B_BASE,0, 0xAAAAAAAA);
    disable();
    Hal4D13_LockDevice(0);
    bD13flags.bits.At_IRQL1 = 1;
    i_st = Hal4D13_ReadInterruptRegister();
 
    if(i_st != 0) 
    {
        //IOWR_ALTERA_AVALON_PIO_DATA(PIO_SEG7_A_BASE, i_st);
        //USB_ISR_DEBUG(("[ISR]i_st=%lX\r\n", i_st));
        if(i_st & D13REG_INTSRC_BUSRESET){  // 0x01
            USB_ISR_DEBUG(("[USB ISR] Bus Reset\r\n"));
            Isr_BusReset();
        }else if(i_st & D13REG_INTSRC_SUSPEND){  // 0x04
            USB_ISR_DEBUG(("[USB ISR] Suspend\r\n"));
            Isr_SuspendChange();
        }else if(i_st & D13REG_INTSRC_EOT){
            USB_ISR_DEBUG(("[USB ISR] EOT (End of Tx)\r\n"));
            Isr_DmaEot();
        }else if(i_st & (D13REG_INTSRC_SOF|D13REG_INTSRC_PSEUDO_SOF)){
            USB_ISR_DEBUG(("[USB ISR] SOF (start of frame)\r\n"));
            Isr_SOF();
        }else if(i_st & D13REG_INTSRC_SHORT_PACKET){
            USB_ISR_DEBUG(("[USB ISR] short packet\r\n"));
            Isr_SHORT_PACKET();
        }else if(i_st & D13REG_INTSRC_RESUME){
            USB_ISR_DEBUG(("[USB ISR] resume\n"));
            Hal4D13_LockDevice(0);
        }
        else 
        {
            USB_ISR_DEBUG(("[USB ISR] other, i_st = %lXh....resume\n", i_st));
            if(i_st & D13REG_INTSRC_EP0OUT)  
                Isr_Ep00RxDone();
            if(i_st & D13REG_INTSRC_EP0IN)
                Isr_Ep00TxDone();
            if(i_st & D13REG_INTSRC_EP01)
                Isr_Ep01Done();
            if(i_st & D13REG_INTSRC_EP02)
                Isr_Ep02Done();        
            if(i_st & D13REG_INTSRC_EP03)
                Isr_Ep03Done();
            if(i_st & D13REG_INTSRC_EP04)
                Isr_Ep04Done();
            if(i_st & D13REG_INTSRC_EP05)
                Isr_Ep05Done();
            if(i_st & D13REG_INTSRC_EP06)
                Isr_Ep06Done();
        }
    }

    enable();
    bD13flags.bits.At_IRQL1 = 0;
}
void Hal4D13_RegAccess(void)
{
    USHORT   c;
    USHORT  i;
    ULONG   l;

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

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

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

    printf("Writing 0x55AA,");
    Hal4D13_SetDataToChipRam(0x55AA);
    i = Hal4D13_GetDataFromChipRam();
    printf(" 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);
}
示例#3
0
文件: ISR.c 项目: bif/SPARC-ISP1362
void Isr_Ep00TxDone(void)
{
    short i = ControlData.wLength - ControlData.wCount;
    UCHAR ep_last;
    Hal4D13_ReadInterruptRegister();
    ep_last = Hal4D13_GetEndpointStatusWInteruptClear(EPINDEX4EP0_CONTROL_IN); /* Clear interrupt flag */

    switch (bD13flags.bits.DCP_state)
    {
    case USBFSM4DCP_HANDSHAKE:
        break;
    case USBFSM4DCP_DATAIN:
        if( i >= EP0_PACKET_SIZE)
        {
            Hal4D13_WriteEndpoint(EPINDEX4EP0_CONTROL_IN,ControlData.Addr.pData + ControlData.wCount, EP0_PACKET_SIZE);
            ControlData.wCount += EP0_PACKET_SIZE;
            // State remains at USBFSM4DCP_DATAIN
        }
        else if( i != 0)
        {
            Hal4D13_WriteEndpoint(1, ControlData.Addr.pData + ControlData.wCount, i);
            ControlData.wCount += i;
            bD13flags.bits.DCP_state = USBFSM4DCP_HANDSHAKE;
        }
        else if (i == 0)
        {
            bD13flags.bits.DCP_state = USBFSM4DCP_HANDSHAKE;
      Hal4D13_SingleTransmitEP0(0, 0);
        }
        break;
    case USBFSM4DCP_REQUESTPROC: break;
    case USBFSM4DCP_IDLE:       break;
    case USBFSM4DCP_SETUPPROC:  break;
    case USBFSM4DCP_STALL:      break;
    case USBFSM4DCP_DATAOUT:    break;
    default:
        USB_ISR_DEBUG(("Fatal Error: Isr_Ep0TxDone Unexpected FSMState=%x\r\n",bD13flags.bits.DCP_state));
        bD13flags.bits.DCP_state = USBFSM4DCP_STALL;
        Hal4D13_StallEP0InControlRead();
        break;
    }
}