Updated nas/eapd binaries from BCM SDK 5.10.147.0
[tomato.git] / release / src-rt / include / pmon_osl.h
blob0c05260ae2d97ff46a345d0887186e4ed70b5b08
1 /*
2 * MIPS PMON boot loader OS Abstraction Layer.
4 * Copyright 2004, Broadcom Corporation
5 * All Rights Reserved.
6 *
7 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
8 * the contents of this file may not be disclosed to third parties, copied
9 * or duplicated in any form, in whole or in part, without the prior
10 * written permission of Broadcom Corporation.
11 * $Id$
14 #ifndef _pmon_osl_h_
15 #define _pmon_osl_h_
17 #include <typedefs.h>
18 #include <mips.h>
19 #include <string.h>
20 #include <utypes.h>
22 extern int printf(char *fmt,...);
23 extern int sprintf(char *dst,char *fmt,...);
25 #define OSL_UNCACHED(va) phy2k1(log2phy((va)))
26 #define REG_MAP(pa, size) phy2k1((pa))
27 #define REG_UNMAP(va) /* nop */
29 /* Common macros */
31 #define BUSPROBE(val, addr) ((val) = *(addr))
33 #define ASSERT(exp)
35 #define OSL_PCMCIA_READ_ATTR(osh, offset, buf, size) bzero(buf, size)
36 #define OSL_PCMCIA_WRITE_ATTR(osh, offset, buf, size)
38 /* kludge */
39 #define OSL_PCI_READ_CONFIG(loc, offset, size) ((offset == 8)? 0: 0xffffffff)
40 #define OSL_PCI_WRITE_CONFIG(loc, offset, size, val) ASSERT(0)
42 #define wreg32(r,v) (*(volatile uint32 *)(r) = (v))
43 #define rreg32(r) (*(volatile uint32 *)(r))
44 #ifdef IL_BIGENDIAN
45 #define wreg16(r,v) (*(volatile uint16 *)((uint32)r^2) = (v))
46 #define rreg16(r) (*(volatile uint16 *)((uint32)r^2))
47 #else
48 #define wreg16(r,v) (*(volatile uint16 *)(r) = (v))
49 #define rreg16(r) (*(volatile uint16 *)(r))
50 #endif
52 #include <memory.h>
53 #define bcopy(src, dst, len) memcpy(dst, src, len)
54 #define bcmp(b1, b2, len) memcmp(b1, b2, len)
55 #define bzero(b, len) memset(b, '\0', len)
57 /* register access macros */
58 #define R_REG(r) ((sizeof *(r) == sizeof (uint32))? rreg32(r): rreg16(r))
59 #define W_REG(r,v) ((sizeof *(r) == sizeof (uint32))? wreg32(r,(uint32)v): wreg16(r,(uint16)v))
60 #define AND_REG(r, v) W_REG((r), R_REG(r) & (v))
61 #define OR_REG(r, v) W_REG((r), R_REG(r) | (v))
63 #define R_SM(r) *(r)
64 #define W_SM(r, v) (*(r) = (v))
65 #define BZERO_SM(r, len) memset(r, '\0', len)
67 /* Host/Bus architecture specific swap. Noop for little endian systems, possible swap on big endian */
68 #define BUS_SWAP32(v) (v)
70 #define OSL_DELAY(usec) delay_us(usec)
71 extern void delay_us(uint usec);
73 #define OSL_GETCYCLES(x) ((x) = 0)
75 #define osl_attach(pdev) (pdev)
76 #define osl_detach(osh)
78 #define MALLOC(osh, size) malloc(size)
79 #define MFREE(osh, addr, size) free(addr)
80 #define MALLOCED(osh) (0)
81 #define MALLOC_DUMP(osh, buf, sz)
82 #define MALLOC_FAILED(osh)
83 extern void *malloc();
84 extern void free(void *addr);
86 #define DMA_CONSISTENT_ALIGN sizeof (int)
87 #define DMA_ALLOC_CONSISTENT(osh, size, pap) et_dma_alloc_consistent(osh, size, pap)
88 #define DMA_FREE_CONSISTENT(osh, va, size, pa)
89 extern void* et_dma_alloc_consistent(void *osh, uint size, ulong *pap);
90 #define DMA_TX 0
91 #define DMA_RX 1
93 #define DMA_MAP(osh, va, size, direction, p) osl_dma_map(osh, (void*)va, size, direction)
94 #define DMA_UNMAP(osh, pa, size, direction, p) /* nop */
95 extern void* osl_dma_map(void *osh, void *va, uint size, uint direction);
97 struct lbuf {
98 struct lbuf *next; /* pointer to next lbuf on freelist */
99 uchar *buf; /* pointer to buffer */
100 uint len; /* nbytes of data */
103 /* the largest reasonable packet buffer driver uses for ethernet MTU in bytes */
104 #define PKTBUFSZ 2048
106 /* packet primitives */
107 #define PKTGET(drv, len, send) et_pktget(drv, len, send)
108 #define PKTFREE(drv, lb, send) et_pktfree(drv, (struct lbuf*)lb, send)
109 #define PKTDATA(drv, lb) ((uchar*)OSL_UNCACHED(((struct lbuf*)lb)->buf))
110 #define PKTLEN(drv, lb) ((struct lbuf*)lb)->len
111 #define PKTHEADROOM(drv, lb) (0)
112 #define PKTTAILROOM(drv, lb) (0)
113 #define PKTNEXT(drv, lb) NULL
114 #define PKTSETNEXT(lb, x) ASSERT(0)
115 #define PKTSETLEN(drv, lb, bytes) ((struct lbuf*)lb)->len = bytes
116 #define PKTPUSH(drv, lb, bytes) ASSERT(0)
117 #define PKTPULL(drv, lb, bytes) ASSERT(0)
118 #define PKTDUP(drv, lb) ASSERT(0)
119 #define PKTLINK(lb) ((struct lbuf*)lb)->next
120 #define PKTSETLINK(lb, x) ((struct lbuf*)lb)->next = (struct lbuf*)x
121 #define PKTPRIO(lb) (0)
122 #define PKTSETPRIO(lb, x) do {} while (0)
123 extern void *et_pktget(void *drv, uint len, bool send);
124 extern void et_pktfree(void *drv, struct lbuf *lb, bool send);
126 #endif /* _pmon_osl_h_ */