1/* 2 * HND Minimal OS Abstraction Layer. 3 * 4 * Copyright 2007, Broadcom Corporation 5 * All Rights Reserved. 6 * 7 * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY 8 * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM 9 * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS 10 * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE. 11 * 12 * $Id: min_osl.h,v 1.1.1.1 2008/10/15 03:25:54 james26_jang Exp $ 13 */ 14 15#ifndef _min_osl_h_ 16#define _min_osl_h_ 17 18#include <typedefs.h> 19#include <sbconfig.h> 20#include <mipsinc.h> 21#include <bcmstdlib.h> 22 23/* Cache support */ 24extern void caches_on(void); 25extern void blast_dcache(void); 26extern void blast_icache(void); 27 28/* assert & debugging */ 29#define ASSERT(exp) do {} while (0) 30 31/* PCMCIA attribute space access macros */ 32#define OSL_PCMCIA_READ_ATTR(osh, offset, buf, size) \ 33 ASSERT(0) 34#define OSL_PCMCIA_WRITE_ATTR(osh, offset, buf, size) \ 35 ASSERT(0) 36 37/* PCI configuration space access macros */ 38#define OSL_PCI_READ_CONFIG(loc, offset, size) \ 39 (offset == 8 ? 0 : 0xffffffff) 40#define OSL_PCI_WRITE_CONFIG(loc, offset, size, val) \ 41 do {} while (0) 42 43/* PCI device bus # and slot # */ 44#define OSL_PCI_BUS(osh) (0) 45#define OSL_PCI_SLOT(osh) (0) 46 47/* register access macros */ 48#define wreg32(r, v) (*(volatile uint32*)(r) = (uint32)(v)) 49#define rreg32(r) (*(volatile uint32*)(r)) 50#define wreg16(r, v) (*(volatile uint16*)(r) = (uint16)(v)) 51#define rreg16(r) (*(volatile uint16*)(r)) 52#define wreg8(r, v) (*(volatile uint8*)(r) = (uint8)(v)) 53#define rreg8(r) (*(volatile uint8*)(r)) 54#define R_REG(osh, r) ({ \ 55 __typeof(*(r)) __osl_v; \ 56 switch (sizeof(*(r))) { \ 57 case sizeof(uint8): __osl_v = rreg8((r)); break; \ 58 case sizeof(uint16): __osl_v = rreg16((r)); break; \ 59 case sizeof(uint32): __osl_v = rreg32((r)); break; \ 60 } \ 61 __osl_v; \ 62}) 63#define W_REG(osh, r, v) do { \ 64 switch (sizeof(*(r))) { \ 65 case sizeof(uint8): wreg8((r), (v)); break; \ 66 case sizeof(uint16): wreg16((r), (v)); break; \ 67 case sizeof(uint32): wreg32((r), (v)); break; \ 68 } \ 69} while (0) 70#define AND_REG(osh, r, v) W_REG(osh, (r), R_REG(osh, r) & (v)) 71#define OR_REG(osh, r, v) W_REG(osh, (r), R_REG(osh, r) | (v)) 72 73/* general purpose memory allocation */ 74#define MALLOC(osh, size) malloc(size) 75#define MFREE(osh, addr, size) free(addr) 76#define MALLOCED(osh) 0 77#define MALLOC_FAILED(osh) 0 78#define MALLOC_DUMP(osh, b) 79extern int free(void *ptr); 80extern void *malloc(uint size); 81 82/* uncached virtual address */ 83#define OSL_UNCACHED(va) ((void*)KSEG1ADDR((ulong)(va))) 84 85/* host/bus architecture-specific address byte swap */ 86#define BUS_SWAP32(v) (v) 87 88/* microsecond delay */ 89#define OSL_DELAY(usec) udelay(usec) 90extern void udelay(uint32 usec); 91 92/* map/unmap physical to virtual I/O */ 93#define REG_MAP(pa, size) ((void*)KSEG1ADDR((ulong)(pa))) 94#define REG_UNMAP(va) do {} while (0) 95 96/* dereference an address that may cause a bus exception */ 97#define BUSPROBE(val, addr) (uint32 *)(addr) = (val) 98 99/* Misc stubs */ 100#define osl_attach(pdev) ((osl_t*)pdev) 101#define osl_detach(osh) 102 103#define PKTFREESETCB(osh, _tx_fn, _tx_ctx) 104 105extern void *osl_init(void); 106#define OSL_ERROR(bcmerror) osl_error(bcmerror) 107extern int osl_error(int); 108 109/* the largest reasonable packet buffer driver uses for ethernet MTU in bytes */ 110#define PKTBUFSZ (MAXPKTBUFSZ - LBUFSZ) 111 112/* packet primitives */ 113#define PKTGET(osh, len, send) ((void *)NULL) 114#define PKTFREE(osh, p, send) 115#define PKTDATA(osh, lb) ((void *)NULL) 116#define PKTLEN(osh, lb) 0 117#define PKTHEADROOM(osh, lb) 0 118#define PKTTAILROOM(osh, lb) 0 119#define PKTNEXT(osh, lb) ((void *)NULL) 120#define PKTSETNEXT(osh, lb, x) 121#define PKTSETLEN(osh, lb, len) 122#define PKTPUSH(osh, lb, bytes) 123#define PKTPULL(osh, lb, bytes) 124#define PKTDUP(osh, p) 125#define PKTTAG(lb) ((void *)NULL) 126#define PKTLINK(lb) ((void *)NULL) 127#define PKTSETLINK(lb, x) 128#define PKTPRIO(lb) 0 129#define PKTSETPRIO(lb, x) 130#define PKTSHARED(lb) 1 131#define PKTALLOCED(osh) 0 132#define PKTLIST_DUMP(osh, buf) 133#define PKTFRMNATIVE(osh, lb) ((void *)NULL) 134#define PKTTONATIVE(osh, p) ((struct lbuf *)NULL) 135 136#endif /* _min_osl_h_ */ 137