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

📄 mvos.h

📁 此为marvell6081芯片的驱动源码
💻 H
字号:
/*******************************************************************************
*
*                   Copyright 2003,MARVELL SEMICONDUCTOR ISRAEL, LTD.
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL.
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL.
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED,
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE.
*
* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES,
* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL
* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K.
* (MJKK), MARVELL SEMICONDUCTOR ISRAEL. (MSIL),  MARVELL TAIWAN, LTD. AND
* SYSKONNECT GMBH.
*
********************************************************************************
* mvOsBios.h - O.S. interface header file for BIOS IAL
*
* DESCRIPTION:
*       This header file contains OS dependent definition for BIOS
*
* DEPENDENCIES:
*
* FILE REVISION NUMBER:
*       $Revision: 1.7 $
*******************************************************************************/

#ifndef __INCmvOsLinuxh
#define __INCmvOsLinuxh

/* Includes */
#include <string.h>
/* Definitions */
#if defined (MV_LOG_DEBUG) || defined (MV_LOG_ERROR)
    #define PRNTHEXTSINGLE
    #define DEBUG_IAL
    #define DEBUG_IAL_SERIAL
#endif

/*
 * Override CORE Driver SW queue size to 1. The CORE Driver SW queue is not
 * used for issuing UDMA commands; so minimizing this to 1 makes it possible
 * to minimize footprint of BIOS Extension driver when statically allocating
 * the channel's data structures.
 */
#define MV_SATA_OVERRIDE_SW_QUEUE_SIZE
#define MV_SATA_REQUESTED_SW_QUEUE_SIZE 1


#define MV_REGS_ACCESSED_BY_IO_BAR
/* System dependent macro for flushing CPU write cache */
#define MV_CPU_WRITE_BUFFER_FLUSH()     

/* System dependent little endian from / to CPU conversions */
#define MV_CPU_TO_LE16(x) x
#define MV_CPU_TO_LE32(x) x

#define MV_LE16_TO_CPU(x) x
#define MV_LE32_TO_CPU(x) x

/* System dependent register read / write in byte/word/dword variants */
unsigned long readRegister (unsigned long base, unsigned long offset);
void writeRegister (unsigned long base, unsigned long offset, unsigned long value);
/*void pioWrite16bit (unsigned short offset, unsigned short data);
unsigned short pioRead16bit (unsigned short offset);*/
void waitForKeystroke (void);
unsigned short readSegmentOffset16bit (unsigned short segment_, unsigned short offset_);
unsigned char readSegmentOffset8bit (unsigned short segment_, unsigned short offset_);
void writeSegmentOffset16bit (unsigned short segment_, unsigned short offset_, unsigned short value_);
void writeSegmentOffset8bit (unsigned short segment_, unsigned short offset_, unsigned char value_);
void memcpySegmentOffset32bitForward (unsigned short segment_,
                                      unsigned short destinationOffset_,
                                      unsigned short sourceOffset_,
                                      unsigned short byteCount_);


#ifdef PRNTHEXTSINGLE
void printHexSingle(char *fmt, unsigned short value_);
#else
    #define printHexSingle(x,y)
#endif

#define MV_REG_WRITE_BYTE(base, offset, val) writeRegister ((unsigned long)base,(unsigned long)offset, val)
#define MV_REG_WRITE_WORD(base, offset, val) writeRegister ((unsigned long)base,(unsigned long)offset, val)
#define MV_REG_WRITE_DWORD(base, offset, val) writeRegister ((unsigned long)base,(unsigned long)offset, val)
#define MV_REG_READ_BYTE(base,offset) (readRegister((unsigned long)base, (unsigned long)offset))
#define MV_REG_READ_WORD(base,offset) (readRegister((unsigned long)base, (unsigned long)offset))
#define MV_REG_READ_DWORD(base,offset) (readRegister((unsigned long)base, (unsigned long)offset))


/* Typedefs    */
typedef enum mvBoolean
{
    MV_FALSE, MV_TRUE
} MV_BOOLEAN;

/* System dependant typedefs */
typedef void            MV_VOID;
typedef unsigned long               MV_U32;
typedef unsigned short              MV_U16;
typedef unsigned char               MV_U8;
typedef void            *MV_VOID_PTR;
typedef unsigned long               *MV_U32_PTR;
typedef unsigned short              *MV_U16_PTR;
typedef unsigned char               *MV_U8_PTR;
typedef char            *MV_CHAR_PTR;
typedef unsigned long   MV_BUS_ADDR_T;
typedef unsigned long   MV_CPU_FLAGS;

/* Structures  */
/* System dependent structure */
typedef struct mvOsSemaphore
{
    unsigned long lock;
    unsigned long flags;
} MV_OS_SEMAPHORE;


/* Functions (User implemented)*/

/* Semaphore init, take and release */
#define mvOsSemInit(x) MV_TRUE
#define mvOsSemTake(x) ;
#define mvOsSemRelease(x) ;

#define NULL 0

/* Delay function in micro seconds resolution */
void mvMicroSecondsDelay(MV_VOID_PTR, MV_U32);

/* System logging function */
#ifdef MV_DEBUG_LOG
int mvLogMsg(MV_U8, MV_CHAR_PTR, ...);
#else
    #define mvLogMsg() 
#endif



#endif /* __INCmvOsLinuxh */

⌨️ 快捷键说明

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