diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-06-26 20:42:58 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2010-06-26 20:42:58 +0000 | 
| commit | c5552ad03973839d83d32d7108f20c00f192633b (patch) | |
| tree | de32e4def600e56134cd085a7447cb6620542078 /target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss | |
| parent | 7ec88f88f4c65a22b3b7e32ef87cb42dcb32a6fb (diff) | |
rename target/linux/generic-2.6 to generic
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21952 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss')
3 files changed, 792 insertions, 0 deletions
diff --git a/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOs.c b/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOs.c new file mode 100644 index 000000000..75f7e88cf --- /dev/null +++ b/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOs.c @@ -0,0 +1,211 @@ +/******************************************************************************* +Copyright (C) Marvell International Ltd. and its affiliates + +This software file (the "File") is owned and distributed by Marvell  +International Ltd. and/or its affiliates ("Marvell") under the following +alternative licensing terms.  Once you have made an election to distribute the +File under one of the following license alternatives, please (i) delete this +introductory statement regarding license alternatives, (ii) delete the two +license alternatives that you have not elected to use and (iii) preserve the +Marvell copyright notice above. + + +******************************************************************************** +Marvell GPL License Option + +If you received this File from Marvell, you may opt to use, redistribute and/or  +modify this File in accordance with the terms and conditions of the General  +Public License Version 2, June 1991 (the "GPL License"), a copy of which is  +available along with the File in the license.txt file or by writing to the Free  +Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or  +on the worldwide web at http://www.gnu.org/licenses/gpl.txt.  + +THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED  +WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY  +DISCLAIMED.  The GPL License provides additional details about this warranty  +disclaimer. +*******************************************************************************/ +/******************************************************************************* +* mvOsCpuArchLib.c - Marvell CPU architecture library +* +* DESCRIPTION: +*       This library introduce Marvell API for OS dependent CPU architecture  +*       APIs. This library introduce single CPU architecture services APKI  +*       cross OS. +* +* DEPENDENCIES: +*       None. +* +*******************************************************************************/ + +/* includes */ +#include <asm/processor.h> +#include "mvOs.h" + +static MV_U32 read_p15_c0 (void); + +/* defines  */ +#define ARM_ID_REVISION_OFFS	0 +#define ARM_ID_REVISION_MASK	(0xf << ARM_ID_REVISION_OFFS) + +#define ARM_ID_PART_NUM_OFFS	4 +#define ARM_ID_PART_NUM_MASK	(0xfff << ARM_ID_PART_NUM_OFFS) + +#define ARM_ID_ARCH_OFFS	16 +#define ARM_ID_ARCH_MASK	(0xf << ARM_ID_ARCH_OFFS) + +#define ARM_ID_VAR_OFFS		20 +#define ARM_ID_VAR_MASK		(0xf << ARM_ID_VAR_OFFS) + +#define ARM_ID_ASCII_OFFS	24 +#define ARM_ID_ASCII_MASK	(0xff << ARM_ID_ASCII_OFFS) + + + +void* mvOsIoCachedMalloc( void* osHandle, MV_U32 size, MV_ULONG* pPhyAddr, +			  MV_U32 *memHandle) +{ +    void *p = kmalloc( size, GFP_KERNEL ); +    *pPhyAddr = pci_map_single( osHandle, p, 0, PCI_DMA_BIDIRECTIONAL ); +    return p; +} +void* mvOsIoUncachedMalloc( void* osHandle, MV_U32 size, MV_ULONG* pPhyAddr, +			    MV_U32 *memHandle) +{ +    return pci_alloc_consistent( osHandle, size, (dma_addr_t *)pPhyAddr ); +} +  +void mvOsIoUncachedFree( void* osHandle, MV_U32 size, MV_ULONG phyAddr, void* pVirtAddr, +			 MV_U32 memHandle) +{ +    return pci_free_consistent( osHandle, size, pVirtAddr, (dma_addr_t)phyAddr ); +}  +                                                                                                                                                +void mvOsIoCachedFree( void* osHandle, MV_U32 size, MV_ULONG phyAddr, void* pVirtAddr, +		       MV_U32 memHandle ) +{ +    return kfree( pVirtAddr ); +} +  +int mvOsRand(void) +{ +    int rand; +    get_random_bytes(&rand, sizeof(rand) ); +    return rand; +} + +/******************************************************************************* +* mvOsCpuVerGet() -  +* +* DESCRIPTION: +* +* INPUT: +*       None. +* +* OUTPUT: +*       None. +* +* RETURN: +*       32bit CPU Revision +* +*******************************************************************************/ +MV_U32 mvOsCpuRevGet( MV_VOID ) +{ +	return ((read_p15_c0() & ARM_ID_REVISION_MASK ) >> ARM_ID_REVISION_OFFS); +} +/******************************************************************************* +* mvOsCpuPartGet() -  +* +* DESCRIPTION: +* +* INPUT: +*       None. +* +* OUTPUT: +*       None. +* +* RETURN: +*       32bit CPU Part number +* +*******************************************************************************/ +MV_U32 mvOsCpuPartGet( MV_VOID ) +{ +	return ((read_p15_c0() & ARM_ID_PART_NUM_MASK ) >> ARM_ID_PART_NUM_OFFS); +} +/******************************************************************************* +* mvOsCpuArchGet() -  +* +* DESCRIPTION: +* +* INPUT: +*       None. +* +* OUTPUT: +*       None. +* +* RETURN: +*       32bit CPU Architicture number +* +*******************************************************************************/ +MV_U32 mvOsCpuArchGet( MV_VOID ) +{ +    return ((read_p15_c0() & ARM_ID_ARCH_MASK ) >> ARM_ID_ARCH_OFFS); +} +/******************************************************************************* +* mvOsCpuVarGet() -  +* +* DESCRIPTION: +* +* INPUT: +*       None. +* +* OUTPUT: +*       None. +* +* RETURN: +*       32bit CPU Variant number +* +*******************************************************************************/ +MV_U32 mvOsCpuVarGet( MV_VOID ) +{ +    return ((read_p15_c0() & ARM_ID_VAR_MASK ) >> ARM_ID_VAR_OFFS); +} +/******************************************************************************* +* mvOsCpuAsciiGet() -  +* +* DESCRIPTION: +* +* INPUT: +*       None. +* +* OUTPUT: +*       None. +* +* RETURN: +*       32bit CPU Variant number +* +*******************************************************************************/ +MV_U32 mvOsCpuAsciiGet( MV_VOID ) +{ +    return ((read_p15_c0() & ARM_ID_ASCII_MASK ) >> ARM_ID_ASCII_OFFS); +} + + + +/* +static unsigned long read_p15_c0 (void) +*/ +/* read co-processor 15, register #0 (ID register) */ +static MV_U32 read_p15_c0 (void) +{ +	MV_U32 value; + +	__asm__ __volatile__( +		"mrc	p15, 0, %0, c0, c0, 0   @ read control reg\n" +		: "=r" (value) +		: +		: "memory"); + +	return value; +} + diff --git a/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOs.h b/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOs.h new file mode 100644 index 000000000..8da562a40 --- /dev/null +++ b/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOs.h @@ -0,0 +1,423 @@ +/******************************************************************************* +Copyright (C) Marvell International Ltd. and its affiliates + +This software file (the "File") is owned and distributed by Marvell  +International Ltd. and/or its affiliates ("Marvell") under the following +alternative licensing terms.  Once you have made an election to distribute the +File under one of the following license alternatives, please (i) delete this +introductory statement regarding license alternatives, (ii) delete the two +license alternatives that you have not elected to use and (iii) preserve the +Marvell copyright notice above. + + +******************************************************************************** +Marvell GPL License Option + +If you received this File from Marvell, you may opt to use, redistribute and/or  +modify this File in accordance with the terms and conditions of the General  +Public License Version 2, June 1991 (the "GPL License"), a copy of which is  +available along with the File in the license.txt file or by writing to the Free  +Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or  +on the worldwide web at http://www.gnu.org/licenses/gpl.txt.  + +THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED  +WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY  +DISCLAIMED.  The GPL License provides additional details about this warranty  +disclaimer. +*******************************************************************************/ +#ifndef _MV_OS_LNX_H_ +#define _MV_OS_LNX_H_ +                                                                                                                                                +                                                                                                                                                +#ifdef __KERNEL__ +/* for kernel space */ +#include <linux/autoconf.h> +#include <linux/interrupt.h> +#include <linux/stddef.h> +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/errno.h> +#include <linux/reboot.h> +#include <linux/pci.h> +#include <linux/kdev_t.h> +#include <linux/major.h> +#include <linux/blkdev.h> +#include <linux/console.h> +#include <linux/delay.h> +#include <linux/seq_file.h> +#include <linux/string.h> +#include <linux/slab.h> +#include <linux/kernel.h> +#include <linux/string.h> +#include <linux/slab.h> +#include <linux/mm.h> +   +#include <asm/system.h> +#include <asm/pgtable.h> +#include <asm/page.h> +#include <asm/hardirq.h> +#include <asm/dma.h> +#include <asm/io.h> +  +#include <linux/random.h> + +#include "dbg-trace.h" + +extern void mv_early_printk(char *fmt,...); + +#define MV_ASM              __asm__ __volatile__   +#define INLINE              inline +#define MV_TRC_REC	        TRC_REC +#define mvOsPrintf          printk +#define mvOsEarlyPrintf	    mv_early_printk +#define mvOsOutput          printk +#define mvOsSPrintf         sprintf +#define mvOsMalloc(_size_)  kmalloc(_size_,GFP_ATOMIC) +#define mvOsFree            kfree +#define mvOsMemcpy          memcpy +#define mvOsSleep(_mils_)   mdelay(_mils_) +#define mvOsTaskLock() +#define mvOsTaskUnlock() +#define strtol              simple_strtoul +#define mvOsDelay(x)        mdelay(x) +#define mvOsUDelay(x)       udelay(x) +#define mvCopyFromOs        copy_from_user +#define mvCopyToOs          copy_to_user + +  +#include "mvTypes.h" +#include "mvCommon.h" +   +#ifdef MV_NDEBUG +#define mvOsAssert(cond) +#else +#define mvOsAssert(cond) { do { if(!(cond)) { BUG(); } }while(0); } +#endif /* MV_NDEBUG */ +  +#else /* __KERNEL__ */ +  +/* for user space applications */ +#include <stdlib.h> +#include <stdio.h> +#include <assert.h> +#include <string.h> +  +#define INLINE inline +#define mvOsPrintf printf +#define mvOsOutput printf +#define mvOsMalloc(_size_) malloc(_size_) +#define mvOsFree free +#define mvOsAssert(cond) assert(cond) +  +#endif /* __KERNEL__ */                                                                                                                                                +#define mvOsIoVirtToPhy(pDev, pVirtAddr)                            \ +    pci_map_single( (pDev), (pVirtAddr), 0, PCI_DMA_BIDIRECTIONAL ) + +#define mvOsCacheClear(pDev, p, size )                              \ +    pci_map_single( (pDev), (p), (size), PCI_DMA_BIDIRECTIONAL) +  +#define mvOsCacheFlush(pDev, p, size )                              \ +    pci_map_single( (pDev), (p), (size), PCI_DMA_TODEVICE) +  +#define mvOsCacheInvalidate(pDev, p, size)                          \ +    pci_map_single( (pDev), (p), (size), PCI_DMA_FROMDEVICE ) + +#define mvOsCacheUnmap(pDev, phys, size)                          \ +    pci_unmap_single( (pDev), (dma_addr_t)(phys), (size), PCI_DMA_FROMDEVICE ) + + +#define CPU_PHY_MEM(x)              (MV_U32)x +#define CPU_MEMIO_CACHED_ADDR(x)    (void*)x +#define CPU_MEMIO_UNCACHED_ADDR(x)  (void*)x + + +/* CPU architecture dependent 32, 16, 8 bit read/write IO addresses */ +#define MV_MEMIO32_WRITE(addr, data)    \ +    ((*((volatile unsigned int*)(addr))) = ((unsigned int)(data))) + +#define MV_MEMIO32_READ(addr)           \ +    ((*((volatile unsigned int*)(addr)))) + +#define MV_MEMIO16_WRITE(addr, data)    \ +    ((*((volatile unsigned short*)(addr))) = ((unsigned short)(data))) + +#define MV_MEMIO16_READ(addr)           \ +    ((*((volatile unsigned short*)(addr)))) + +#define MV_MEMIO8_WRITE(addr, data)     \ +    ((*((volatile unsigned char*)(addr))) = ((unsigned char)(data))) + +#define MV_MEMIO8_READ(addr)            \ +    ((*((volatile unsigned char*)(addr)))) + + +/* No Fast Swap implementation (in assembler) for ARM */ +#define MV_32BIT_LE_FAST(val)            MV_32BIT_LE(val) +#define MV_16BIT_LE_FAST(val)            MV_16BIT_LE(val) +#define MV_32BIT_BE_FAST(val)            MV_32BIT_BE(val) +#define MV_16BIT_BE_FAST(val)            MV_16BIT_BE(val) +     +/* 32 and 16 bit read/write in big/little endian mode */ + +/* 16bit write in little endian mode */ +#define MV_MEMIO_LE16_WRITE(addr, data) \ +        MV_MEMIO16_WRITE(addr, MV_16BIT_LE_FAST(data)) + +/* 16bit read in little endian mode */ +static __inline MV_U16 MV_MEMIO_LE16_READ(MV_U32 addr) +{ +    MV_U16 data; + +    data= (MV_U16)MV_MEMIO16_READ(addr); + +    return (MV_U16)MV_16BIT_LE_FAST(data); +} + +/* 32bit write in little endian mode */ +#define MV_MEMIO_LE32_WRITE(addr, data) \ +        MV_MEMIO32_WRITE(addr, MV_32BIT_LE_FAST(data)) + +/* 32bit read in little endian mode */ +static __inline MV_U32 MV_MEMIO_LE32_READ(MV_U32 addr) +{ +    MV_U32 data; + +    data= (MV_U32)MV_MEMIO32_READ(addr); + +    return (MV_U32)MV_32BIT_LE_FAST(data); +} + +static __inline void mvOsBCopy(char* srcAddr, char* dstAddr, int byteCount) +{ +    while(byteCount != 0) +    { +        *dstAddr = *srcAddr; +        dstAddr++; +        srcAddr++; +        byteCount--; +    } +} + +static INLINE MV_U64 mvOsDivMod64(MV_U64 divided, MV_U64 divisor, MV_U64* modulu) +{ +    MV_U64  division = 0; + +    if(divisor == 1) +	return divided; + +    while(divided >= divisor) +    { +	    division++; +	    divided -= divisor; +    } +    if (modulu != NULL) +        *modulu = divided; + +    return division; +} + +#if defined(MV_BRIDGE_SYNC_REORDER) +extern MV_U32 *mvUncachedParam; + +static __inline void mvOsBridgeReorderWA(void) +{ +	volatile MV_U32 val = 0; + +	val = mvUncachedParam[0]; +} +#endif + + +/* Flash APIs */ +#define MV_FL_8_READ            MV_MEMIO8_READ +#define MV_FL_16_READ           MV_MEMIO_LE16_READ +#define MV_FL_32_READ           MV_MEMIO_LE32_READ +#define MV_FL_8_DATA_READ       MV_MEMIO8_READ +#define MV_FL_16_DATA_READ      MV_MEMIO16_READ +#define MV_FL_32_DATA_READ      MV_MEMIO32_READ +#define MV_FL_8_WRITE           MV_MEMIO8_WRITE +#define MV_FL_16_WRITE          MV_MEMIO_LE16_WRITE +#define MV_FL_32_WRITE          MV_MEMIO_LE32_WRITE +#define MV_FL_8_DATA_WRITE      MV_MEMIO8_WRITE +#define MV_FL_16_DATA_WRITE     MV_MEMIO16_WRITE +#define MV_FL_32_DATA_WRITE     MV_MEMIO32_WRITE + + +/* CPU cache information */ +#define CPU_I_CACHE_LINE_SIZE   32    /* 2do: replace 32 with linux core macro */ +#define CPU_D_CACHE_LINE_SIZE   32    /* 2do: replace 32 with linux core macro */ + +#ifdef CONFIG_L2_CACHE_ENABLE +/* Data cache flush one line */ +#define mvOsCacheLineFlushInv(handle, addr)                     \ +{                                                               \ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c14, 1" : : "r" (addr));\ +  __asm__ __volatile__ ("mcr p15, 1, %0, c15, c10, 1" : : "r" (addr));\ +  __asm__ __volatile__ ("mcr p15, 0, r0, c7, c10, 4");		\ +} + +#else + +/* Data cache flush one line */ +#define mvOsCacheLineFlushInv(handle, addr)                     \ +{                                                               \ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c14, 1" : : "r" (addr));\ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" : : "r" (addr)); \ +} +#endif +  +#ifdef CONFIG_L2_CACHE_ENABLE +#define mvOsCacheLineInv(handle,addr)                           \ +{                                                               \ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c6, 1" : : "r" (addr)); \ + __asm__ __volatile__ ("mcr p15, 1, %0, c15, c11, 1" : : "r" (addr)); \ +} +#else +#define mvOsCacheLineInv(handle,addr)                           \ +{                                                               \ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c6, 1" : : "r" (addr)); \ +} +#endif + +#ifdef CONFIG_L2_CACHE_ENABLE +/* Data cache flush one line */ +#define mvOsCacheLineFlush(handle, addr)                     \ +{                                                               \ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 1" : : "r" (addr));\ +  __asm__ __volatile__ ("mcr p15, 1, %0, c15, c9, 1" : : "r" (addr));\ +  __asm__ __volatile__ ("mcr p15, 0, r0, c7, c10, 4");          \ +} + +#else +/* Data cache flush one line */ +#define mvOsCacheLineFlush(handle, addr)                     \ +{                                                               \ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 1" : : "r" (addr));\ +  __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" : : "r" (addr)); \ +} +#endif  + +static __inline void mvOsPrefetch(const void *ptr) +{ +#ifdef CONFIG_USE_DSP +        __asm__ __volatile__( +                "pld\t%0" +                : +                : "o" (*(char *)ptr) +                : "cc"); +#else +	return; +#endif +} + + +/* Flush CPU pipe */ +#define CPU_PIPE_FLUSH + + + + + +/* register manipulations  */ + +/****************************************************************************** +* This debug function enable the write of each register that u-boot access to  +* to an array in the DRAM, the function record only MV_REG_WRITE access. +* The function could not be operate when booting from flash. +* In order to print the array we use the printreg command. +******************************************************************************/ +/* #define REG_DEBUG */ +#if defined(REG_DEBUG) +extern int reg_arry[2048][2]; +extern int reg_arry_index; +#endif + +/* Marvell controller register read/write macros */ +#define MV_REG_VALUE(offset)          \ +                (MV_MEMIO32_READ((INTER_REGS_BASE | (offset)))) + +#define MV_REG_READ(offset)             \ +        (MV_MEMIO_LE32_READ(INTER_REGS_BASE | (offset))) + +#if defined(REG_DEBUG) +#define MV_REG_WRITE(offset, val)    \ +        MV_MEMIO_LE32_WRITE((INTER_REGS_BASE | (offset)), (val)); \ +        { \ +                reg_arry[reg_arry_index][0] = (INTER_REGS_BASE | (offset));\ +                reg_arry[reg_arry_index][1] = (val);\ +                reg_arry_index++;\ +        } +#else +#define MV_REG_WRITE(offset, val)    \ +        MV_MEMIO_LE32_WRITE((INTER_REGS_BASE | (offset)), (val)); +#endif +                                                 +#define MV_REG_BYTE_READ(offset)        \ +        (MV_MEMIO8_READ((INTER_REGS_BASE | (offset)))) + +#if defined(REG_DEBUG) +#define MV_REG_BYTE_WRITE(offset, val)  \ +        MV_MEMIO8_WRITE((INTER_REGS_BASE | (offset)), (val)); \ +        { \ +                reg_arry[reg_arry_index][0] = (INTER_REGS_BASE | (offset));\ +                reg_arry[reg_arry_index][1] = (val);\ +                reg_arry_index++;\ +        } +#else +#define MV_REG_BYTE_WRITE(offset, val)  \ +        MV_MEMIO8_WRITE((INTER_REGS_BASE | (offset)), (val)) +#endif + +#if defined(REG_DEBUG) +#define MV_REG_BIT_SET(offset, bitMask)                 \ +        (MV_MEMIO32_WRITE((INTER_REGS_BASE | (offset)), \ +         (MV_MEMIO32_READ(INTER_REGS_BASE | (offset)) | \ +          MV_32BIT_LE_FAST(bitMask)))); \ +        { \ +                reg_arry[reg_arry_index][0] = (INTER_REGS_BASE | (offset));\ +                reg_arry[reg_arry_index][1] = (MV_MEMIO32_READ(INTER_REGS_BASE | (offset)));\ +                reg_arry_index++;\ +        } +#else +#define MV_REG_BIT_SET(offset, bitMask)                 \ +        (MV_MEMIO32_WRITE((INTER_REGS_BASE | (offset)), \ +         (MV_MEMIO32_READ(INTER_REGS_BASE | (offset)) | \ +          MV_32BIT_LE_FAST(bitMask)))) +#endif +         +#if defined(REG_DEBUG) +#define MV_REG_BIT_RESET(offset,bitMask)                \ +        (MV_MEMIO32_WRITE((INTER_REGS_BASE | (offset)), \ +         (MV_MEMIO32_READ(INTER_REGS_BASE | (offset)) & \ +          MV_32BIT_LE_FAST(~bitMask)))); \ +        { \ +                reg_arry[reg_arry_index][0] = (INTER_REGS_BASE | (offset));\ +                reg_arry[reg_arry_index][1] = (MV_MEMIO32_READ(INTER_REGS_BASE | (offset)));\ +                reg_arry_index++;\ +        } +#else +#define MV_REG_BIT_RESET(offset,bitMask)                \ +        (MV_MEMIO32_WRITE((INTER_REGS_BASE | (offset)), \ +         (MV_MEMIO32_READ(INTER_REGS_BASE | (offset)) & \ +          MV_32BIT_LE_FAST(~bitMask)))) +#endif + + + +/* ARM architecture APIs */ +MV_U32  mvOsCpuRevGet (MV_VOID); +MV_U32  mvOsCpuPartGet (MV_VOID); +MV_U32  mvOsCpuArchGet (MV_VOID); +MV_U32  mvOsCpuVarGet (MV_VOID); +MV_U32  mvOsCpuAsciiGet (MV_VOID); + +/*  Other APIs  */ +void* mvOsIoCachedMalloc( void* osHandle, MV_U32 size, MV_ULONG* pPhyAddr, MV_U32 *memHandle); +void* mvOsIoUncachedMalloc( void* osHandle, MV_U32 size, MV_ULONG* pPhyAddr, MV_U32 *memHandle ); +void mvOsIoUncachedFree( void* osHandle, MV_U32 size, MV_ULONG phyAddr, void* pVirtAddr, MV_U32 memHandle ); +void mvOsIoCachedFree( void* osHandle, MV_U32 size, MV_ULONG phyAddr, void* pVirtAddr, MV_U32 memHandle ); +int mvOsRand(void); + +#endif /* _MV_OS_LNX_H_ */ + + diff --git a/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOsSata.h b/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOsSata.h new file mode 100644 index 000000000..c925a9e9a --- /dev/null +++ b/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/linux_oss/mvOsSata.h @@ -0,0 +1,158 @@ +/******************************************************************************* +Copyright (C) Marvell International Ltd. and its affiliates + +This software file (the "File") is owned and distributed by Marvell  +International Ltd. and/or its affiliates ("Marvell") under the following +alternative licensing terms.  Once you have made an election to distribute the +File under one of the following license alternatives, please (i) delete this +introductory statement regarding license alternatives, (ii) delete the two +license alternatives that you have not elected to use and (iii) preserve the +Marvell copyright notice above. + + +******************************************************************************** +Marvell GPL License Option + +If you received this File from Marvell, you may opt to use, redistribute and/or  +modify this File in accordance with the terms and conditions of the General  +Public License Version 2, June 1991 (the "GPL License"), a copy of which is  +available along with the File in the license.txt file or by writing to the Free  +Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or  +on the worldwide web at http://www.gnu.org/licenses/gpl.txt.  + +THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED  +WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY  +DISCLAIMED.  The GPL License provides additional details about this warranty  +disclaimer. +*******************************************************************************/ +/******************************************************************************* +* mvOsLinux.h - O.S. interface header file for Linux   +* +* DESCRIPTION: +*       This header file contains OS dependent definition under Linux +* +* DEPENDENCIES: +*       Linux kernel header files. +* +* FILE REVISION NUMBER: +*       $Revision: 1.1 $ +*******************************************************************************/ + +#ifndef __INCmvOsLinuxh +#define __INCmvOsLinuxh + +/* Includes */ +#include <linux/autoconf.h> +#include <linux/module.h> +#include <linux/types.h> +#include <linux/string.h> +#include <linux/kernel.h> +#include <linux/timer.h> +#include <linux/mm.h> +#include <linux/interrupt.h> +#include <linux/major.h> +#include <linux/errno.h> +#include <linux/genhd.h> +#include <linux/slab.h> +#include <linux/delay.h> +#include <linux/ide.h> +#include <linux/pci.h> + +#include <asm/byteorder.h> +#include <asm/irq.h> +#include <asm/uaccess.h> +#include <asm/io.h> +#include "mvOs.h" + + +/* Definitions */ +#define MV_DEFAULT_QUEUE_DEPTH 2 +#define MV_SATA_SUPPORT_EDMA_SINGLE_DATA_REGION +#define MV_SATA_SUPPORT_GEN2E_128_QUEUE_LEN + +#ifdef CONFIG_MV88F6082 + #define MV_SATA_OVERRIDE_SW_QUEUE_SIZE + #define MV_SATA_REQUESTED_SW_QUEUE_SIZE 2 + #undef MV_SATA_SUPPORT_GEN2E_128_QUEUE_LEN +#endif + +/* System dependent macro for flushing CPU write cache */ +#if defined (MV_BRIDGE_SYNC_REORDER) +#define MV_CPU_WRITE_BUFFER_FLUSH()	do {	\ +						wmb();	\ +						mvOsBridgeReorderWA();	\ +					} while (0) +#else +#define MV_CPU_WRITE_BUFFER_FLUSH()     wmb() +#endif /* CONFIG_MV78XX0 */ + +/* System dependent little endian from / to CPU conversions */ +#define MV_CPU_TO_LE16(x)   cpu_to_le16(x) +#define MV_CPU_TO_LE32(x)   cpu_to_le32(x) + +#define MV_LE16_TO_CPU(x)   le16_to_cpu(x) +#define MV_LE32_TO_CPU(x)   le32_to_cpu(x) + +#ifdef __BIG_ENDIAN_BITFIELD +#define MV_BIG_ENDIAN_BITFIELD +#endif + +/* System dependent register read / write in byte/word/dword variants */ +#define MV_REG_WRITE_BYTE(base, offset, val)    writeb(val, base + offset) +#define MV_REG_WRITE_WORD(base, offset, val)    writew(val, base + offset) +#define MV_REG_WRITE_DWORD(base, offset, val)   writel(val, base + offset) +#define MV_REG_READ_BYTE(base, offset)          readb(base + offset) +#define MV_REG_READ_WORD(base, offset)          readw(base + offset) +#define MV_REG_READ_DWORD(base, offset)         readl(base + offset) + + +/* Typedefs    */ + +/* System dependant typedefs */ +typedef void            *MV_VOID_PTR; +typedef u32             *MV_U32_PTR; +typedef u16             *MV_U16_PTR; +typedef u8              *MV_U8_PTR; +typedef char            *MV_CHAR_PTR; +typedef void            *MV_BUS_ADDR_T; +typedef unsigned long   MV_CPU_FLAGS; + + +/* Structures  */ +/* System dependent structure */ +typedef struct mvOsSemaphore +{ +  int notUsed; +} MV_OS_SEMAPHORE; + + +/* Functions (User implemented)*/ + +/* Semaphore init, take and release */ +#define mvOsSemInit(x) MV_TRUE +#define mvOsSemTake(x) +#define mvOsSemRelease(x) + +/* Interrupt masking and unmasking functions */ +MV_CPU_FLAGS mvOsSaveFlagsAndMaskCPUInterrupts(MV_VOID); +MV_VOID      mvOsRestoreFlags(MV_CPU_FLAGS); + +/* Delay function in micro seconds resolution */ +void mvMicroSecondsDelay(MV_VOID_PTR, MV_U32); + +/* Typedefs    */ +typedef enum mvBoolean +{ +    MV_SFALSE, MV_STRUE +} MV_BOOLEAN; + +/* System logging function */ +#include "mvLog.h" +/* Enable READ/WRITE Long SCSI command only when driver is compiled for debugging */ +#ifdef MV_LOGGER +#define MV_SATA_SUPPORT_READ_WRITE_LONG +#endif + +#define MV_IAL_LOG_ID       3 + +#endif /* __INCmvOsLinuxh */  | 
