OpenCores
URL https://opencores.org/ocsvn/usb_fpga_1_15/usb_fpga_1_15/trunk

Subversion Repositories usb_fpga_1_15

[/] [usb_fpga_1_15/] [trunk/] [include/] [ztex.h] - Diff between revs 3 and 4

Only display areas with differences | Details | Blame | View Log

Rev 3 Rev 4
/*!
/*!
   ZTEX Firmware Kit for EZ-USB FX2 Microcontrollers
   ZTEX Firmware Kit for EZ-USB FX2 Microcontrollers
   Copyright (C) 2009-2011 ZTEX GmbH.
   Copyright (C) 2009-2014 ZTEX GmbH.
   http://www.ztex.de
   http://www.ztex.de
 
 
   This program is free software; you can redistribute it and/or modify
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License version 3 as
   it under the terms of the GNU General Public License version 3 as
   published by the Free Software Foundation.
   published by the Free Software Foundation.
 
 
   This program is distributed in the hope that it will be useful, but
   This program is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   General Public License for more details.
   General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with this program; if not, see http://www.gnu.org/licenses/.
   along with this program; if not, see http://www.gnu.org/licenses/.
!*/
!*/
 
 
/*
/*
   Puts everything together.
   Puts everything together.
*/
*/
 
 
#ifndef[ZTEX_H]
#ifndef[ZTEX_H]
#define[ZTEX_H]
#define[ZTEX_H]
 
 
#define[INIT_CMDS;][]
#define[INIT_CMDS;][]
 
 
#ifneq[PRODUCT_IS][UFM-1_15]
#ifneq[PRODUCT_IS][UFM-1_15]
#define[UFM_1_15X_DETECTION_ENABLED][0]
#define[UFM_1_15X_DETECTION_ENABLED][0]
#endif
#endif
 
 
#ifeq[UFM_1_15X_DETECTION_ENABLED][1]
#ifeq[UFM_1_15X_DETECTION_ENABLED][1]
__xdata BYTE is_ufm_1_15x;
__xdata BYTE is_ufm_1_15x;
#endif
#endif
 
 
/* *********************************************************************
/* *********************************************************************
   ***** include the basic functions ***********************************
   ***** include the basic functions ***********************************
   ********************************************************************* */
   ********************************************************************* */
#include[ztex-utils.h]
#include[ztex-utils.h]
 
 
/* *********************************************************************
/* *********************************************************************
   ***** I2C helper functions, EEPROM and MAC EEPROM support ***********
   ***** I2C helper functions, EEPROM and MAC EEPROM support ***********
   ********************************************************************* */
   ********************************************************************* */
#ifneq[EEPROM_DISABLED][1]
#ifneq[EEPROM_DISABLED][1]
 
 
#ifneq[EEPROM_MAC_DISABLED][1]
#ifneq[EEPROM_MAC_DISABLED][1]
#ifeq[PRODUCT_IS][UFM-1_15]
#ifeq[PRODUCT_IS][UFM-1_15]
#define[MAC_EEPROM_ENABLED]
#define[MAC_EEPROM_ENABLED]
#endif // PRODUCT_IS=UFM-1_15
#endif // PRODUCT_IS=UFM-1_15
#ifeq[PRODUCT_IS][UFM-1_15Y]
#ifeq[PRODUCT_IS][UFM-1_15Y]
#define[MAC_EEPROM_ENABLED]
#define[MAC_EEPROM_ENABLED]
#endif // PRODUCT_IS=UFM-1_15Y
#endif // PRODUCT_IS=UFM-1_15Y
#ifeq[PRODUCT_IS][UFM-2_16]
#ifeq[PRODUCT_IS][UFM-2_16]
#define[MAC_EEPROM_ENABLED]
#define[MAC_EEPROM_ENABLED]
#endif // PRODUCT_IS=UFM-2_16
#endif // PRODUCT_IS=UFM-2_16
#ifeq[PRODUCT_IS][UFM-2_13]
#ifeq[PRODUCT_IS][UFM-2_13]
#define[MAC_EEPROM_ENABLED]
#define[MAC_EEPROM_ENABLED]
#endif // PRODUCT_IS=UFM-2_13
#endif // PRODUCT_IS=UFM-2_13
 
#ifeq[PRODUCT_IS][UFM-2_01]
 
#define[MAC_EEPROM_ENABLED]
 
#endif // PRODUCT_IS=UFM-2_01
 
#ifeq[PRODUCT_IS][UFM-2_04]
 
#define[MAC_EEPROM_ENABLED]
 
#endif // PRODUCT_IS=UFM-2_04
#endif // EEPROM_MAC_DISABLED
#endif // EEPROM_MAC_DISABLED
 
 
#include[ztex-eeprom.h]
#include[ztex-eeprom.h]
 
 
#endif // EEPROM_DISABLED
#endif // EEPROM_DISABLED
 
 
 
 
/* *********************************************************************
/* *********************************************************************
   ***** Flash memory support ******************************************
   ***** Flash memory support ******************************************
   ********************************************************************* */
   ********************************************************************* */
#ifeq[FLASH_ENABLED][1]
#ifeq[FLASH_ENABLED][1]
 
 
#ifeq[PRODUCT_IS][UFM-1_1]
 
 
#ifeq[FLASH_OVERRIDE][1]
 
#include[ztex-flash1.h]
 
 
 
#elifeq[FLASH_OVERRIDE][2]
 
#include[ztex-flash2.h]
 
 
 
#elifeq[PRODUCT_IS][UFM-1_1]
#define[MMC_PORT][E]
#define[MMC_PORT][E]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_CLK][5]
#define[MMC_BIT_CLK][5]
#include[ztex-flash1.h]
#include[ztex-flash1.h]
 
 
#elifeq[PRODUCT_IS][UFM-1_2]
#elifeq[PRODUCT_IS][UFM-1_2]
#define[MMC_PORT][E]
#define[MMC_PORT][E]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_CLK][5]
#define[MMC_BIT_CLK][5]
#include[ztex-flash1.h]
#include[ztex-flash1.h]
 
 
#elifeq[PRODUCT_IS][UM-1_0]
#elifeq[PRODUCT_IS][UM-1_0]
#define[MMC_PORT][C]
#define[MMC_PORT][C]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_CLK][5]
#define[MMC_BIT_CLK][5]
#include[ztex-flash1.h]
#include[ztex-flash1.h]
 
 
#elifeq[PRODUCT_IS][UFM-1_10]
#elifeq[PRODUCT_IS][UFM-1_10]
#define[MMC_PORT][A]
#define[MMC_PORT][A]
#define[MMC__PORT_DO][D]
#define[MMC__PORT_DO][D]
#define[MMC_BIT_DO][0]
#define[MMC_BIT_DO][0]
#define[MMC_BIT_CS][5]
#define[MMC_BIT_CS][5]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_CLK][7]
#define[MMC_BIT_CLK][7]
#include[ztex-flash1.h]
#include[ztex-flash1.h]
 
 
#elifeq[PRODUCT_IS][UFM-1_11]
#elifeq[PRODUCT_IS][UFM-1_11]
#define[MMC_PORT][C]
#define[MMC_PORT][C]
#define[MMC__PORT_DO][D]
#define[MMC__PORT_DO][D]
#define[MMC_BIT_DO][0]
#define[MMC_BIT_DO][0]
#define[MMC_BIT_CS][5]
#define[MMC_BIT_CS][5]
#define[MMC_BIT_DI][7]
#define[MMC_BIT_DI][7]
#define[MMC_BIT_CLK][6]
#define[MMC_BIT_CLK][6]
#include[ztex-flash1.h]
#include[ztex-flash1.h]
 
 
#elifeq[PRODUCT_IS][UFM-1_15]
#elifeq[PRODUCT_IS][UFM-1_15]
#define[MMC_PORT][C]
#define[MMC_PORT][C]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_CS][5]
#define[MMC_BIT_CS][5]
#define[MMC_BIT_DI][7]
#define[MMC_BIT_DI][7]
#define[MMC_BIT_CLK][6]
#define[MMC_BIT_CLK][6]
#include[ztex-flash1.h]
#include[ztex-flash1.h]
 
 
#elifeq[PRODUCT_IS][UXM-1_0]
#elifeq[PRODUCT_IS][UXM-1_0]
#define[MMC_PORT][C]
#define[MMC_PORT][C]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_CS][7]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DI][6]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_DO][4]
#define[MMC_BIT_CLK][5]
#define[MMC_BIT_CLK][5]
#include[ztex-flash1.h]
#include[ztex-flash1.h]
 
 
#elifeq[PRODUCT_IS][UFM-2_16]
#elifeq[PRODUCT_IS][UFM-2_16]
#define[SPI_PORT][C]
#define[SPI_PORT][C]
#define[SPI_BIT_DO][4]
#define[SPI_BIT_DO][4]
#define[SPI_BIT_CS][5]
#define[SPI_BIT_CS][5]
#define[SPI_BIT_CLK][6]
#define[SPI_BIT_CLK][6]
#define[SPI_BIT_DI][7]
#define[SPI_BIT_DI][7]
#include[ztex-flash2.h]
#include[ztex-flash2.h]
 
 
#elifeq[PRODUCT_IS][UFM-2_13]
#elifeq[PRODUCT_IS][UFM-2_13]
#define[SPI_PORT][C]
#define[SPI_PORT][C]
#define[SPI_BIT_DO][4]
#define[SPI_BIT_DO][4]
#define[SPI_BIT_CS][5]
#define[SPI_BIT_CS][5]
#define[SPI_BIT_CLK][6]
#define[SPI_BIT_CLK][6]
#define[SPI_BIT_DI][7]
#define[SPI_BIT_DI][7]
#include[ztex-flash2.h]
#include[ztex-flash2.h]
 
 
 
#elifeq[PRODUCT_IS][UFM-2_01]
 
#define[SPI_PORT][A]
 
#define[SPI_OPORT][C]
 
#define[SPI_BIT_DO][0]
 
#define[SPI_BIT_CS][3]
 
#define[SPI_BIT_CLK][0]
 
#define[SPI_BIT_DI][1]
 
#include[ztex-flash2.h]
 
 
 
#elifeq[PRODUCT_IS][UFM-2_04]
 
#define[SPI_PORT][A]
 
#define[SPI_OPORT][C]
 
#define[SPI_BIT_DO][0]
 
#define[SPI_BIT_CS][3]
 
#define[SPI_BIT_CLK][0]
 
#define[SPI_BIT_DI][1]
 
#include[ztex-flash2.h]
 
 
#else
#else
#warning[Flash memory access is not supported by this product]
#warning[Flash memory access is not supported by this product]
#define[FLASH_ENABLED][0]
#define[FLASH_ENABLED][0]
#endif
#endif
#endif
#endif
 
 
/* *********************************************************************
/* *********************************************************************
   ***** FPGA configuration support ************************************
   ***** FPGA configuration support ************************************
   ********************************************************************* */
   ********************************************************************* */
#ifeq[PRODUCT_IS][UFM-1_0]
#ifeq[PRODUCT_IS][UFM-1_0]
#include[ztex-fpga1.h]
#include[ztex-fpga1.h]
#elifeq[PRODUCT_IS][UFM-1_1]
#elifeq[PRODUCT_IS][UFM-1_1]
#include[ztex-fpga1.h]
#include[ztex-fpga1.h]
#elifeq[PRODUCT_IS][UFM-1_2]
#elifeq[PRODUCT_IS][UFM-1_2]
#include[ztex-fpga1.h]
#include[ztex-fpga1.h]
#elifeq[PRODUCT_IS][UFM-1_10]
#elifeq[PRODUCT_IS][UFM-1_10]
#include[ztex-fpga2.h]
#include[ztex-fpga2.h]
#elifeq[PRODUCT_IS][UFM-1_11]
#elifeq[PRODUCT_IS][UFM-1_11]
#include[ztex-fpga3.h]
#include[ztex-fpga3.h]
#elifeq[PRODUCT_IS][UFM-1_15]
#elifeq[PRODUCT_IS][UFM-1_15]
#include[ztex-fpga4.h]
#include[ztex-fpga4.h]
#elifeq[PRODUCT_IS][UFM-1_15Y]
#elifeq[PRODUCT_IS][UFM-1_15Y]
#include[ztex-fpga5.h]
#include[ztex-fpga5.h]
#elifeq[PRODUCT_IS][UFM-2_16]
#elifeq[PRODUCT_IS][UFM-2_16]
#include[ztex-fpga6.h]
#include[ztex-fpga6.h]
#elifeq[PRODUCT_IS][UFM-2_13]
#elifeq[PRODUCT_IS][UFM-2_13]
#include[ztex-fpga6.h]
#include[ztex-fpga6.h]
 
#elifeq[PRODUCT_IS][UFM-2_01]
 
#include[ztex-fpga7.h]
 
#elifeq[PRODUCT_IS][UFM-2_04]
 
#include[ztex-fpga7.h]
#endif
#endif
 
 
 
 
/* *********************************************************************
/* *********************************************************************
   ***** DEBUG helper functions ****************************************
   ***** DEBUG helper functions ****************************************
   ********************************************************************* */
   ********************************************************************* */
#ifeq[DEBUG_ENABLED][1]
#ifeq[DEBUG_ENABLED][1]
#include[ztex-debug.h]
#include[ztex-debug.h]
#endif
#endif
 
 
 
 
/* *********************************************************************
/* *********************************************************************
   ***** XMEGA support *************************************************
   ***** XMEGA support *************************************************
   ********************************************************************* */
   ********************************************************************* */
#ifneq[XMEGA_DISABLED][1]
#ifneq[XMEGA_DISABLED][1]
 
 
#ifeq[PRODUCT_IS][UXM-1_0]
#ifeq[PRODUCT_IS][UXM-1_0]
#define[PDI_PORT][A]
#define[PDI_PORT][A]
#define[PDI_BIT_CLK][0]
#define[PDI_BIT_CLK][0]
#define[PDI_BIT_DATA][1]
#define[PDI_BIT_DATA][1]
#include[ztex-xmega.h]
#include[ztex-xmega.h]
#endif
#endif
 
 
#ifeq[EXP_1_10_ENABLED][1]
#ifeq[EXP_1_10_ENABLED][1]
#ifneq[PRODUCT_IS][UFM-1_0]
#ifneq[PRODUCT_IS][UFM-1_0]
#elifneq[PRODUCT_IS][UFM-1_1]
#elifneq[PRODUCT_IS][UFM-1_1]
#elifneq[PRODUCT_IS][UFM-1_2]
#elifneq[PRODUCT_IS][UFM-1_2]
#elifneq[PRODUCT_IS][UFM-1_10]
#elifneq[PRODUCT_IS][UFM-1_10]
#elifneq[PRODUCT_IS][UFM-1_11]
#elifneq[PRODUCT_IS][UFM-1_11]
#elifneq[PRODUCT_IS][UFM-1_15]
#elifneq[PRODUCT_IS][UFM-1_15]
#warning[ZTEX Experimental Board 1.10 is not supported by this product.]
#warning[ZTEX Experimental Board 1.10 is not supported by this product.]
#endif
#endif
#define[PDI_PORT][E]
#define[PDI_PORT][E]
#define[PDI_BIT_CLK][5]
#define[PDI_BIT_CLK][5]
#define[PDI_BIT_DATA][4]
#define[PDI_BIT_DATA][4]
#include[ztex-xmega.h]
#include[ztex-xmega.h]
#endif
#endif
 
 
#endif
#endif
 
 
/* *********************************************************************
/* *********************************************************************
   ***** define the descriptors ****************************************
   ***** define the descriptors ****************************************
   ********************************************************************* */
   ********************************************************************* */
#include[ztex-descriptors.h]
#include[ztex-descriptors.h]
 
 
 
 
/* *********************************************************************
/* *********************************************************************
   ***** Temperature sensor support ************************************
   ***** Temperature sensor support ************************************
   ********************************************************************* */
   ********************************************************************* */
#ifneq[EEPROM_DISABLED][1]
#ifneq[EEPROM_DISABLED][1]
#ifneq[TEMP_SENSOR_DISABLED][1]
#ifneq[TEMP_SENSOR_DISABLED][1]
#ifeq[PRODUCT_IS][UFM-1_15Y]
#ifeq[PRODUCT_IS][UFM-1_15Y]
#include[ztex-temp1.h]
#include[ztex-temp1.h]
#endif
#endif
 
 
#endif // TEMP_SENSOR_DISABLED
#endif // TEMP_SENSOR_DISABLED
#endif // EEPROM_DISABLED
#endif // EEPROM_DISABLED
 
 
 
 
/* *********************************************************************
/* *********************************************************************
   ***** interrupt routines ********************************************
   ***** interrupt routines ********************************************
   ********************************************************************* */
   ********************************************************************* */
#include[ztex-isr.h]
#include[ztex-isr.h]
 
 
 
 
/* *********************************************************************
/* *********************************************************************
   ***** mac_eeprom_init ***********************************************
   ***** mac_eeprom_init ***********************************************
   ********************************************************************* */
   ********************************************************************* */
#ifdef[@CAPABILITY_MAC_EEPROM;]
#ifdef[@CAPABILITY_MAC_EEPROM;]
void mac_eeprom_init ( ) {
void mac_eeprom_init ( ) {
    BYTE b,c,d;
    BYTE b,c,d;
    __xdata BYTE buf[5];
    __xdata BYTE buf[5];
    __code char hexdigits[] = "0123456789ABCDEF";
    __code char hexdigits[] = "0123456789ABCDEF";
 
 
    mac_eeprom_read ( buf, 0, 3 );       // read signature
    mac_eeprom_read ( buf, 0, 3 );       // read signature
    if ( buf[0]==67 && buf[1]==68 && buf[2]==48 ) {
    if ( buf[0]==67 && buf[1]==68 && buf[2]==48 ) {
        config_data_valid = 1;
        config_data_valid = 1;
        mac_eeprom_read ( SN_STRING, 16, 10 );  // copy serial number
        mac_eeprom_read ( SN_STRING, 16, 10 );  // copy serial number
    }
    }
    else {
    else {
        config_data_valid = 0;
        config_data_valid = 0;
    }
    }
 
 
    for (b=0; b<10; b++) {       // abort if SN != "0000000000"
    for (b=0; b<10; b++) {       // abort if SN != "0000000000"
        if ( SN_STRING[b] != 48 )
        if ( SN_STRING[b] != 48 )
            return;
            return;
    }
    }
 
 
    mac_eeprom_read ( buf, 0xfb, 5 );   // read the last 5 MAC digits
    mac_eeprom_read ( buf, 0xfb, 5 );   // read the last 5 MAC digits
 
 
    c=0;
    c=0;
    for (b=0; b<5; b++) {        // convert to MAC to SN string
    for (b=0; b<5; b++) {        // convert to MAC to SN string
        d = buf[b];
        d = buf[b];
        SN_STRING[c] = hexdigits[d>>4];
        SN_STRING[c] = hexdigits[d>>4];
        c++;
        c++;
        SN_STRING[c] = hexdigits[d & 15];
        SN_STRING[c] = hexdigits[d & 15];
        c++;
        c++;
    }
    }
}
}
#endif
#endif
 
 
 
 
/* *********************************************************************
/* *********************************************************************
   ***** init_USB ******************************************************
   ***** init_USB ******************************************************
   ********************************************************************* */
   ********************************************************************* */
#define[EPXCFG(][);][    EP$0CFG = 
#define[EPXCFG(][);][    EP$0CFG = 
#ifeq[EP$0_DIR][IN]
#ifeq[EP$0_DIR][IN]
        bmBIT7 | bmBIT6
        bmBIT7 | bmBIT6
#elifeq[EP$0_DIR][OUT]
#elifeq[EP$0_DIR][OUT]
        bmBIT7
        bmBIT7
#else
#else
        0
        0
#endif
#endif
#ifeq[EP$0_TYPE][BULK]
#ifeq[EP$0_TYPE][BULK]
        | bmBIT5
        | bmBIT5
#elifeq[EP$0_TYPE][ISO]
#elifeq[EP$0_TYPE][ISO]
        | bmBIT4
        | bmBIT4
#elifeq[EP$0_TYPE][INT]
#elifeq[EP$0_TYPE][INT]
        | bmBIT5 | bmBIT4
        | bmBIT5 | bmBIT4
#endif
#endif
#ifeq[EP$0_SIZE][1024]
#ifeq[EP$0_SIZE][1024]
        | bmBIT3
        | bmBIT3
#endif
#endif
#ifeq[EP$0_BUFFERS][2]
#ifeq[EP$0_BUFFERS][2]
        | bmBIT1
        | bmBIT1
#elifeq[EP$0_BUFFERS][3]
#elifeq[EP$0_BUFFERS][3]
        | bmBIT1 | bmBIT0
        | bmBIT1 | bmBIT0
#endif  
#endif  
        ;
        ;
        SYNCDELAY;
        SYNCDELAY;
]
]
 
 
#define[EP1XCFG(][);][#ifeq[EP$0_TYPE][BULK]
#define[EP1XCFG(][);][#ifeq[EP$0_TYPE][BULK]
        EP$0CFG = bmBIT7 | bmBIT5;
        EP$0CFG = bmBIT7 | bmBIT5;
#elifeq[EP$0_TYPE][ISO]
#elifeq[EP$0_TYPE][ISO]
        EP$0CFG = bmBIT7 | bmBIT4;
        EP$0CFG = bmBIT7 | bmBIT4;
#elifeq[EP$0_TYPE][INT]
#elifeq[EP$0_TYPE][INT]
        EP$0CFG = bmBIT7 | bmBIT5 | bmBIT4;
        EP$0CFG = bmBIT7 | bmBIT5 | bmBIT4;
#else   
#else   
        EP$0CFG = 0;
        EP$0CFG = 0;
#endif
#endif
        SYNCDELAY;
        SYNCDELAY;
]
]
 
 
 
 
void init_USB ()
void init_USB ()
{
{
    USBCS |= bmBIT3;
    USBCS |= bmBIT3;
 
 
    CPUCS = bmBIT4 | bmBIT1;
    CPUCS = bmBIT4 | bmBIT1;
    wait(2);
    wait(2);
    CKCON &= ~7;
    CKCON &= ~7;
 
 
#ifeq[PRODUCT_IS][UFM-1_0]
#ifeq[PRODUCT_IS][UFM-1_0]
    IOA1 = 1;
    IOA1 = 1;
    OEA |= bmBIT1;
    OEA |= bmBIT1;
#elifeq[PRODUCT_IS][UFM-1_1]
#elifeq[PRODUCT_IS][UFM-1_1]
    IOA1 = 1;
    IOA1 = 1;
    OEA |= bmBIT1;
    OEA |= bmBIT1;
#elifeq[PRODUCT_IS][UFM-1_2]
#elifeq[PRODUCT_IS][UFM-1_2]
    IOA1 = 1;
    IOA1 = 1;
    OEA |= bmBIT1;
    OEA |= bmBIT1;
#elifeq[PRODUCT_IS][UFM-1_10]
#elifeq[PRODUCT_IS][UFM-1_10]
    IOA1 = 1;
    IOA1 = 1;
    OEA |= bmBIT1;
    OEA |= bmBIT1;
#elifeq[PRODUCT_IS][UFM-1_11]
#elifeq[PRODUCT_IS][UFM-1_11]
    IOA1 = 1;
    IOA1 = 1;
    OEA |= bmBIT1;
    OEA |= bmBIT1;
#elifeq[PRODUCT_IS][UFM-1_15]
#elifeq[PRODUCT_IS][UFM-1_15]
    IOA1 = 1;
    IOA1 = 1;
    OEA |= bmBIT1;
    OEA |= bmBIT1;
#elifeq[PRODUCT_IS][UFM-1_15Y]
#elifeq[PRODUCT_IS][UFM-1_15Y]
    init_fpga();
    init_fpga();
#elifeq[PRODUCT_IS][UFM-2_16]
#elifeq[PRODUCT_IS][UFM-2_16]
    init_fpga();
    init_fpga();
#elifeq[PRODUCT_IS][UFM-2_13]
#elifeq[PRODUCT_IS][UFM-2_13]
    init_fpga();
    init_fpga();
 
#elifeq[PRODUCT_IS][UFM-2_01]
 
    init_fpga();
 
#elifeq[PRODUCT_IS][UFM-2_04]
 
    init_fpga();
#endif
#endif
 
 
    INIT_CMDS;
    INIT_CMDS;
 
 
    EA = 0;
    EA = 0;
    EUSB = 0;
    EUSB = 0;
 
 
    ENABLE_AVUSB;
    ENABLE_AVUSB;
 
 
    INIT_INTERRUPT_VECTOR(INTVEC_SUDAV, SUDAV_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_SUDAV, SUDAV_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_SOF, SOF_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_SOF, SOF_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_SUTOK, SUTOK_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_SUTOK, SUTOK_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_SUSPEND, SUSP_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_SUSPEND, SUSP_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_USBRESET, URES_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_USBRESET, URES_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_HISPEED, HSGRANT_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_HISPEED, HSGRANT_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP0ACK, EP0ACK_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP0ACK, EP0ACK_ISR);
 
 
    INIT_INTERRUPT_VECTOR(INTVEC_EP0IN, EP0IN_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP0IN, EP0IN_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP0OUT, EP0OUT_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP0OUT, EP0OUT_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP1IN, EP1IN_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP1IN, EP1IN_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP1OUT, EP1OUT_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP1OUT, EP1OUT_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP2, EP2_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP2, EP2_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP4, EP4_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP4, EP4_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP6, EP6_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP6, EP6_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP8, EP8_ISR);
    INIT_INTERRUPT_VECTOR(INTVEC_EP8, EP8_ISR);
 
 
    EXIF &= ~bmBIT4;
    EXIF &= ~bmBIT4;
    USBIRQ = 0x7f;
    USBIRQ = 0x7f;
    USBIE |= 0x7f;
    USBIE |= 0x7f;
    EPIRQ = 0xff;
    EPIRQ = 0xff;
    EPIE = 0xff;
    EPIE = 0xff;
 
 
    EUSB = 1;
    EUSB = 1;
    EA = 1;
    EA = 1;
 
 
    EP1XCFG(1IN);
    EP1XCFG(1IN);
    EP1XCFG(1OUT);
    EP1XCFG(1OUT);
    EPXCFG(2);
    EPXCFG(2);
    EPXCFG(4);
    EPXCFG(4);
    EPXCFG(6);
    EPXCFG(6);
    EPXCFG(8);
    EPXCFG(8);
 
 
#ifeq[UFM_1_15X_DETECTION_ENABLED][1]
#ifeq[UFM_1_15X_DETECTION_ENABLED][1]
    OEA &= ~bmBIT3;
    OEA &= ~bmBIT3;
    if ( IOA3 ) {
    if ( IOA3 ) {
        is_ufm_1_15x = 0;
        is_ufm_1_15x = 0;
    } else {
    } else {
        is_ufm_1_15x = 1;
        is_ufm_1_15x = 1;
//      INTERFACE_CAPABILITIES[0] &= ~32;
//      INTERFACE_CAPABILITIES[0] &= ~32;
    }
    }
#endif    
#endif    
 
 
#ifeq[FLASH_ENABLED][1]
#ifeq[FLASH_ENABLED][1]
    flash_init();
    flash_init();
 
    if ( !flash_enabled ) {
 
        wait(250);
 
        flash_init();
 
    }
#endif
#endif
#ifeq[DEBUG_ENABLED][1]
#ifeq[DEBUG_ENABLED][1]
    debug_init();
    debug_init();
#endif
#endif
#ifeq[XMEGA_ENABLED][1]
#ifeq[XMEGA_ENABLED][1]
    xmega_init();
    xmega_init();
#endif
#endif
#ifdef[@CAPABILITY_MAC_EEPROM;]
#ifdef[@CAPABILITY_MAC_EEPROM;]
    mac_eeprom_init();
    mac_eeprom_init();
#endif
#endif
#ifeq[TEMP1_ENABLED][1]
#ifeq[TEMP1_ENABLED][1]
    temp1_init();
    temp1_init();
#endif
#endif
#ifeq[FLASH_BITSTREAM_ENABLED][1]
#ifeq[FLASH_BITSTREAM_ENABLED][1]
    fpga_configure_from_flash_init();
    fpga_configure_from_flash_init();
#endif
#endif
 
 
    USBCS |= bmBIT7 | bmBIT1;
    USBCS |= bmBIT7 | bmBIT1;
    wait(10);
    wait(10);
//    wait(250);
//    wait(250);
    USBCS &= ~bmBIT3;
    USBCS &= ~bmBIT3;
}
}
 
 
 
 
#endif   /* ZTEX_H */
#endif   /* ZTEX_H */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.