Major cleanup :
[openwrt.git] / target / linux / brcm63xx-2.6 / files / arch / mips / cfe / cfe_private.h
diff --git a/target/linux/brcm63xx-2.6/files/arch/mips/cfe/cfe_private.h b/target/linux/brcm63xx-2.6/files/arch/mips/cfe/cfe_private.h
new file mode 100644 (file)
index 0000000..0a604d3
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+ * Broadcom Common Firmware Environment (CFE) support
+ *
+ * Copyright 2000, 2001, 2002
+ * Broadcom Corporation. All rights reserved.
+ *
+ * Copyright (C) 2006 Michael Buesch
+ *
+ * Original Authors:  Mitch Lichtenberg, Chris Demetriou
+ *
+ * This software is furnished under license and may be used and copied only
+ * in accordance with the following terms and conditions.  Subject to these
+ * conditions, you may download, copy, install, use, modify and distribute
+ * modified or unmodified copies of this software in source and/or binary
+ * form. No title or ownership is transferred hereby.
+ *
+ * 1) Any source code used, modified or distributed must reproduce and
+ *    retain this copyright notice and list of conditions as they appear in
+ *    the source file.
+ *
+ * 2) No right is granted to use any trade name, trademark, or logo of
+ *    Broadcom Corporation.  The "Broadcom Corporation" name may not be
+ *    used to endorse or promote products derived from this software
+ *    without the prior written permission of Broadcom Corporation.
+ *
+ * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED
+ *    WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF
+ *    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
+ *    NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE
+ *    FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE
+ *    LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ *    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ *    SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ *    BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ *    WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ *    OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LINUX_CFE_PRIVATE_H_
+#define LINUX_CFE_PRIVATE_H_
+
+#ifndef __ASSEMBLY__
+
+/* Seal indicating CFE's presence, passed to the kernel. */
+#define CFE_EPTSEAL            0x43464531
+
+#define CFE_CMD_FW_GETINFO     0
+#define CFE_CMD_FW_RESTART     1
+#define CFE_CMD_FW_BOOT                2
+#define CFE_CMD_FW_CPUCTL      3
+#define CFE_CMD_FW_GETTIME      4
+#define CFE_CMD_FW_MEMENUM     5
+#define CFE_CMD_FW_FLUSHCACHE  6
+
+#define CFE_CMD_DEV_GETHANDLE  9
+#define CFE_CMD_DEV_ENUM       10
+#define CFE_CMD_DEV_OPEN       11
+#define CFE_CMD_DEV_INPSTAT    12
+#define CFE_CMD_DEV_READ       13
+#define CFE_CMD_DEV_WRITE      14
+#define CFE_CMD_DEV_IOCTL      15
+#define CFE_CMD_DEV_CLOSE      16
+#define CFE_CMD_DEV_GETINFO    17
+
+#define CFE_CMD_ENV_ENUM       20
+#define CFE_CMD_ENV_GET                22
+#define CFE_CMD_ENV_SET                23
+#define CFE_CMD_ENV_DEL                24
+
+#define CFE_CMD_MAX            32
+
+#define CFE_CMD_VENDOR_USE     0x8000  /* codes above this are for customer use */
+
+typedef u64 cfe_uint_t;
+typedef s64 cfe_int_t;
+typedef s64 cfe_ptr_t;
+
+/* Cast a pointer from native to CFE-API pointer and back */
+#define CFE_TO_PTR(p)          ((void *)(unsigned long)(p))
+#define PTR_TO_CFE(p)          ((cfe_ptr_t)(unsigned long)(p))
+
+struct cfe_iocb_buf {
+       cfe_uint_t      offset;         /* offset on device (bytes) */
+       cfe_ptr_t       ptr;            /* pointer to a buffer */
+       cfe_uint_t      length;         /* length of this buffer */
+       cfe_uint_t      retlen;         /* returned length (for read ops) */
+       union {
+               cfe_uint_t      ioctlcmd;       /* IOCTL command (used only for IOCTLs) */
+               cfe_uint_t      devflags;       /* Returned device info flags */
+       };
+};
+
+struct cfe_iocb_inpstat {
+       cfe_uint_t      status;         /* 1 means input available */
+};
+
+struct cfe_iocb_envbuf {
+       cfe_int_t       index;          /* 0-based enumeration index */
+       cfe_ptr_t       name;           /* name string buffer */
+       cfe_int_t       name_len;       /* size of name buffer */
+       cfe_ptr_t       val;            /* value string buffer */
+       cfe_int_t       val_len;        /* size of value string buffer */
+};
+
+struct cfe_iocb_cpuctl {
+       cfe_uint_t      number;         /* cpu number to control */
+       cfe_uint_t      command;        /* command to issue to CPU */
+       cfe_uint_t      start_addr;     /* CPU start address */
+       cfe_uint_t      gp;             /* starting GP value */
+       cfe_uint_t      sp;             /* starting SP value */
+       cfe_uint_t      a1;             /* starting A1 value */
+};
+
+struct cfe_iocb_time {
+       cfe_int_t       ticks;          /* current time in ticks */
+};
+
+struct cfe_iocb_exitstat {
+       cfe_int_t       status;
+};
+
+struct cfe_iocb_meminfo {
+       cfe_int_t       index;          /* 0-based enumeration index */
+       cfe_int_t       type;           /* type of memory block */
+       cfe_uint_t      addr;           /* physical start address */
+       cfe_uint_t      size;           /* block size */
+};
+
+struct cfe_iocb_fwinfo {
+       cfe_int_t       version;        /* major, minor, eco version */
+       cfe_int_t       totalmem;       /* total installed mem */
+       cfe_int_t       flags;          /* various flags */
+       cfe_int_t       boardid;        /* board ID */
+       cfe_int_t       bootarea_va;    /* VA of boot area */
+       cfe_int_t       bootarea_pa;    /* PA of boot area */
+       cfe_int_t       bootarea_size;  /* size of boot area */
+       cfe_int_t       reserved1;
+       cfe_int_t       reserved2;
+       cfe_int_t       reserved3;
+};
+
+/* CFE I/O Control Block */
+struct cfe_iocb {
+       cfe_uint_t      fcode;          /* IOCB function code */
+       cfe_int_t       status;         /* return status */
+       cfe_int_t       handle;         /* file/device handle */
+       cfe_uint_t      flags;          /* flags for this IOCB */
+       cfe_uint_t      psize;          /* size of parameter list */
+       union {
+               struct cfe_iocb_buf             buffer;         /* buffer parameters */
+               struct cfe_iocb_inpstat         inpstat;        /* input status parameters */
+               struct cfe_iocb_envbuf          envbuf;         /* environment function parameters */
+               struct cfe_iocb_cpuctl          cpuctl;         /* CPU control parameters */
+               struct cfe_iocb_time            time;           /* timer parameters */
+               struct cfe_iocb_meminfo         meminfo;        /* memory arena info parameters */
+               struct cfe_iocb_fwinfo          fwinfo;         /* firmware information */
+               struct cfe_iocb_exitstat        exitstat;       /* Exit Status */
+       };
+};
+
+
+#include <linux/init.h>
+
+void __init cfe_setup(unsigned long fwarg0, unsigned long fwarg1,
+                     unsigned long fwarg2, unsigned long fwarg3);
+
+#else /* __ASSEMBLY__ */
+
+       .macro  cfe_early_init
+#ifdef CONFIG_CFE
+               jal     cfe_setup
+#endif
+       .endm
+
+#endif /* __ASSEMBLY__ */
+#endif /* LINUX_CFE_PRIVATE_H_ */
This page took 0.030853 seconds and 4 git commands to generate.