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

📄 drv_conf.c

📁 用于TM1300/PNX1300系列DSP(主要用于视频处理)的外部设备的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
    #endif
    InstallDriver(SC_DEV_SPI, SPI_init, SPI_open, SPI_close,
                              NULLF,    NULLF,    SPI_io,    0, 0);
#endif

/*---------------------------------------------------------------------*/
/* Install pSE DLPI driver                                             */
/*---------------------------------------------------------------------*/
#if (SC_DEV_DLPI)
  {
    #if(SC_DEV_DLPI > SC_DEVMAX)
        #error "SC_DEV_DLPI cannot be > SC_DEVMAX"
    #endif
    extern long DlpiNullNI();
    extern UCHAR *DlpiInit(UCHAR *, long, long);
    extern int DlpiAddNI(long, long(*)(), long, long, char *, long);
    extern void enetinit();
    extern struct streamtab enetinfo;
    char *DlpiErrMsg = "DlpiAddNI failed: NI Error";
    static const psedrvparam_t eth0param = {"eth0", DT_CLONE, &enetinfo, 0, 0};

    InstallDriver(SC_DEV_DLPI, enetinit, NULLF, NULLF, NULLF,
                  NULLF, NULLF, (long)&eth0param, 0);

    /*-------------------------------------------------------------*/
    /* Call DlpiInit to initialize the Streams DLPI driver         */
    /*   Arguments passed to DlpiInit are:                         */
    /*     1. Free memory address                                  */
    /*     2. Maximum NI interface number                          */
    /*     3. Maximum number of streams per interface              */
    /*-------------------------------------------------------------*/
    FreeMemPtr = DlpiInit(FreeMemPtr, 1, 6);

    /*-------------------------------------------------------------*/
    /* Call DlpiAddNI to add an NI interface to the Streams DLPI   */
    /* driver.  DlpiAddNI must be called for each NI driver        */
    /* interface used with the Streams DLPI driver.                */
    /*   Arguments passed to DlpiAddNI are:                        */
    /*     1. NI interface number (should correspond to the pNA+   */
    /*          interface number if driver is shared with pNA+)    */
    /*     2. NI entry point                                       */
    /*     3. NI flags                                             */
    /*          IFF_SELFLOOP 0x0001  loopback for self-address     */
    /*          IFF_POLL_NI  0x0002  driver must be polled         */
    /*          IFF_RAWMEM   0x2000  driver accepts mblk link list */
    /*     4. NI major device number                               */
    /*     5. NI multicast address                                 */
    /*     6. NI poll frequency (every # of elapsed ticks)         */
    /*-------------------------------------------------------------*/
    #if (SC_SHARE_NI)
        if (DlpiAddNI(1, (long(*)())NiLan, 0x2000, SC_DEV_DLPI, 0, 0))
            SysInitFail(DlpiErrMsg);
    #else
        if (DlpiAddNI(0, (long(*)())DlpiNullNI, 0, SC_DEV_DLPI, 0, 0))
            SysInitFail(DlpiErrMsg);
    #endif
  }
#endif

/*---------------------------------------------------------------------*/
/* Additional drivers may be installed here.                           */
/*---------------------------------------------------------------------*/

return FreeMemPtr;
}
#endif /* SC_PSOS || SC_PSOSM */

#if SC_PNA
/***********************************************************************/
/*     SetUpNI: Set up Network Interfaces for pNA+                     */
/*                                                                     */
/*       INPUT: FreeMemPtr = A pointer to unused memory that can be    */
/*                           used to allocate space for a driver.      */
/*                           NOTE: Be sure to advance FreeMemPtr if    */
/*                           memory is allocates!                      */
/*                                                                     */
/*     RETURNS: The new address of free memory after the drivers have  */
/*              allocated space.                                       */
/*                                                                     */
/*       NOTES: This function does many precompile checks so errors    */
/*              can be found during compile-time rather then at run-   */
/*              time.                                                  */
/*                                                                     */
/*              Also, the Network Interface Table must be allocated    */
/*              before this function can be called.  There cannot be   */
/*              more then NC_NNI entries in this table.  NC_NNI is set */
/*              in sys_conf.h.  Before adding another interface, be    */
/*              sure to check sys_conf.h to see if NC_NNI is set to    */
/*              accommodate another one!                               */
/*                                                                     */
/*              See the pSOSystem Programmers Reference Manual         */
/*              for more information.                                  */
/*                                                                     */
/* To add a Network driver to pSOSystem, call InstallNi().  This adds  */
/* the Network Interface to the pNA+ Network Interface Table.          */
/* InstallNi() takes the following arguments:                          */
/*                                                                     */
/*     int (*entry)();        address of NI entry point                */
/*     int ipadd;             IP address                               */
/*     int mtu;               maximum transmission length              */
/*     int hwalen;            length of hardware address               */
/*     int flags;             intErface flags                          */
/*     int subnetaddr;        subnet mask                              */
/*     int dstipaddr;         destination ip address                   */
/*                                                                     */
/* See pSOSystem Programmer`s Reference Manual, Configuration Tables   */
/* Section, for more information about the Network Interface Table.    */
/* InstallNi() does not return a value.                                */
/*                                                                     */
/* If you are adding a driver that needs to be initialized before      */
/* either pSOS+ is initialized or the driver's init function is        */
/* called, then you can call a setup function (that you create) for    */
/* the driver (for example, see the CnslSetup call for the serial      */
/* device driver).  If your initialization function needs to allocate  */
/* memory, you may pass it the FreeMemPtr.  The function should return */
/* a new FreeMemPtr which points to the end of the memory it has       */
/* allocated.                                                          */
/*                                                                     */
/* When adding code to install a new driver, it is a good idea to add  */
/* precompile checks so errors can be found during compile-time rather */
/* then at run-time.  Precompile checks are used, for example, in the  */
/* code that installs the pSOSystem serial device driver below.        */
/*                                                                     */
/***********************************************************************/
UCHAR *SetUpNI(UCHAR *FreeMemPtr)
{
int IPaddr;

/*---------------------------------------------------------------------*/
/* Install the pSOSystem NI.                                           */
/*---------------------------------------------------------------------*/
#if BSP_LAN1
    if (SysVars.Lan1)
        {
        /*-------------------------------------------------------------*/
        /* If RARP is specified for the IP address, use it now to      */
        /* obtain the IP address for this interface.                   */
        /*-------------------------------------------------------------*/
        if (SysVars.Lan1IP == USE_RARP)
            {
#if (SC_DEV_DLPI && SC_SHARE_NI)
            IPaddr = RarpEth((long (*)())DlpiEnet);
#else
            IPaddr = RarpEth((long (*)())NiLan);
#endif
            if (IPaddr == 0)
                SysInitFail(RarpErrTimeout);
            if (IPaddr == -1)
               SysInitFail(RarpErrNet);
            }
        else
            IPaddr = SysVars.Lan1IP;

#if (SC_DEV_DLPI && SC_SHARE_NI)
            InstallNi((int (*)())DlpiEnet, IPaddr,
#else
            InstallNi((int (*)())NiLan, IPaddr,
#endif
                  BSP_LAN1_MTU, BSP_LAN1_HWALEN, BSP_LAN1_FLAGS,
                  SysVars.Lan1SubnetMask, 0);
        }
#endif


/*---------------------------------------------------------------------*/
/* Install the shared memory NI.                                       */
/*---------------------------------------------------------------------*/
#if BSP_SMEM
    #if ((SC_NISM_LEVEL != 1) && (SC_NISM_LEVEL != 2))
        #error "Illegal value for SC_NISM_LEVEL"
    #endif

    if (SysVars.Nism)
        {
        InstallNi((int (*)())NiSmem, SysVars.NismIP, NISM_MTU, 4, 0x8002,
                  SysVars.NismSubnetMask, 0);

        /*-------------------------------------------------------------*/
        /* Set up the NI Shared Memory driver by calling its function  */
        /*  "NiSmemSetup".                                             */
        /*-------------------------------------------------------------*/
        FreeMemPtr = NiSmemSetup(SC_NISM_BUFFS, FreeMemPtr,
                                 SC_NISM_LEVEL);
        }
#endif
/*---------------------------------------------------------------------*/
/* Additional Network drivers may be installed here.                   */
/*---------------------------------------------------------------------*/

return FreeMemPtr;
}

#endif

⌨️ 快捷键说明

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