linux/arch/mips/fw/cfe/cfe_api_int.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 * Copyright (C) 2000, 2001, 2002 Broadcom Corporation
   4 */
   5#ifndef CFE_API_INT_H
   6#define CFE_API_INT_H
   7
   8/*
   9 * Constants.
  10 */
  11#define CFE_CMD_FW_GETINFO      0
  12#define CFE_CMD_FW_RESTART      1
  13#define CFE_CMD_FW_BOOT         2
  14#define CFE_CMD_FW_CPUCTL       3
  15#define CFE_CMD_FW_GETTIME      4
  16#define CFE_CMD_FW_MEMENUM      5
  17#define CFE_CMD_FW_FLUSHCACHE   6
  18
  19#define CFE_CMD_DEV_GETHANDLE   9
  20#define CFE_CMD_DEV_ENUM        10
  21#define CFE_CMD_DEV_OPEN        11
  22#define CFE_CMD_DEV_INPSTAT     12
  23#define CFE_CMD_DEV_READ        13
  24#define CFE_CMD_DEV_WRITE       14
  25#define CFE_CMD_DEV_IOCTL       15
  26#define CFE_CMD_DEV_CLOSE       16
  27#define CFE_CMD_DEV_GETINFO     17
  28
  29#define CFE_CMD_ENV_ENUM        20
  30#define CFE_CMD_ENV_GET         22
  31#define CFE_CMD_ENV_SET         23
  32#define CFE_CMD_ENV_DEL         24
  33
  34#define CFE_CMD_MAX             32
  35
  36#define CFE_CMD_VENDOR_USE      0x8000  /* codes above this are for customer use */
  37
  38/*
  39 * Structures.
  40 */
  41
  42/* eeek, signed "pointers" */
  43typedef s64 cfe_xptr_t;
  44
  45struct xiocb_buffer {
  46        u64 buf_offset;         /* offset on device (bytes) */
  47        cfe_xptr_t  buf_ptr;            /* pointer to a buffer */
  48        u64 buf_length;         /* length of this buffer */
  49        u64 buf_retlen;         /* returned length (for read ops) */
  50        u64 buf_ioctlcmd;       /* IOCTL command (used only for IOCTLs) */
  51};
  52
  53struct xiocb_inpstat {
  54        u64 inp_status;         /* 1 means input available */
  55};
  56
  57struct xiocb_envbuf {
  58        s64 enum_idx;           /* 0-based enumeration index */
  59        cfe_xptr_t name_ptr;            /* name string buffer */
  60        s64 name_length;                /* size of name buffer */
  61        cfe_xptr_t val_ptr;             /* value string buffer */
  62        s64 val_length;         /* size of value string buffer */
  63};
  64
  65struct xiocb_cpuctl {
  66        u64 cpu_number;         /* cpu number to control */
  67        u64 cpu_command;        /* command to issue to CPU */
  68        u64 start_addr;         /* CPU start address */
  69        u64 gp_val;             /* starting GP value */
  70        u64 sp_val;             /* starting SP value */
  71        u64 a1_val;             /* starting A1 value */
  72};
  73
  74struct xiocb_time {
  75        s64 ticks;              /* current time in ticks */
  76};
  77
  78struct xiocb_exitstat{
  79        s64 status;
  80};
  81
  82struct xiocb_meminfo {
  83        s64 mi_idx;             /* 0-based enumeration index */
  84        s64 mi_type;            /* type of memory block */
  85        u64 mi_addr;            /* physical start address */
  86        u64 mi_size;            /* block size */
  87};
  88
  89struct xiocb_fwinfo {
  90        s64 fwi_version;                /* major, minor, eco version */
  91        s64 fwi_totalmem;       /* total installed mem */
  92        s64 fwi_flags;          /* various flags */
  93        s64 fwi_boardid;                /* board ID */
  94        s64 fwi_bootarea_va;    /* VA of boot area */
  95        s64 fwi_bootarea_pa;    /* PA of boot area */
  96        s64 fwi_bootarea_size;  /* size of boot area */
  97        s64 fwi_reserved1;
  98        s64 fwi_reserved2;
  99        s64 fwi_reserved3;
 100};
 101
 102struct cfe_xiocb {
 103        u64 xiocb_fcode;        /* IOCB function code */
 104        s64 xiocb_status;       /* return status */
 105        s64 xiocb_handle;       /* file/device handle */
 106        u64 xiocb_flags;        /* flags for this IOCB */
 107        u64 xiocb_psize;        /* size of parameter list */
 108        union {
 109                /* buffer parameters */
 110                struct xiocb_buffer xiocb_buffer;
 111
 112                /* input status parameters */
 113                struct xiocb_inpstat xiocb_inpstat;
 114
 115                /* environment function parameters */
 116                struct xiocb_envbuf xiocb_envbuf;
 117
 118                /* CPU control parameters */
 119                struct xiocb_cpuctl xiocb_cpuctl;
 120
 121                /* timer parameters */
 122                struct xiocb_time xiocb_time;
 123
 124                /* memory arena info parameters */
 125                struct xiocb_meminfo xiocb_meminfo;
 126
 127                /* firmware information */
 128                struct xiocb_fwinfo xiocb_fwinfo;
 129
 130                /* Exit Status */
 131                struct xiocb_exitstat xiocb_exitstat;
 132        } plist;
 133};
 134
 135#endif /* CFE_API_INT_H */
 136