1/*  *********************************************************************
2    *  Broadcom Common Firmware Environment (CFE)
3    *
4    *  Null console device			File: dev_null.c
5    *
6    *  This is a null console device, useful for console-less
7    *  operation, or when using chip simulators.
8    *
9    *  Author:  Mitch Lichtenberg (mpl@broadcom.com)
10    *
11    *********************************************************************
12    *
13    *  Copyright 2000,2001,2002,2003
14    *  Broadcom Corporation. All rights reserved.
15    *
16    *  This software is furnished under license and may be used and
17    *  copied only in accordance with the following terms and
18    *  conditions.  Subject to these conditions, you may download,
19    *  copy, install, use, modify and distribute modified or unmodified
20    *  copies of this software in source and/or binary form.  No title
21    *  or ownership is transferred hereby.
22    *
23    *  1) Any source code used, modified or distributed must reproduce
24    *     and retain this copyright notice and list of conditions
25    *     as they appear in the source file.
26    *
27    *  2) No right is granted to use any trade name, trademark, or
28    *     logo of Broadcom Corporation.  The "Broadcom Corporation"
29    *     name may not be used to endorse or promote products derived
30    *     from this software without the prior written permission of
31    *     Broadcom Corporation.
32    *
33    *  3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
34    *     IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
35    *     WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
36    *     PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
37    *     SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
38    *     PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
39    *     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
40    *     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
41    *     GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
42    *     BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
43    *     OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
44    *     TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
45    *     THE POSSIBILITY OF SUCH DAMAGE.
46    ********************************************************************* */
47
48
49
50#include "lib_types.h"
51#include "lib_malloc.h"
52#include "lib_printf.h"
53#include "cfe_iocb.h"
54#include "cfe_device.h"
55
56static void nulldrv_probe(cfe_driver_t *drv,
57			      unsigned long probe_a, unsigned long probe_b,
58			      void *probe_ptr);
59
60
61static int nulldrv_open(cfe_devctx_t *ctx);
62static int nulldrv_read(cfe_devctx_t *ctx,iocb_buffer_t *buffer);
63static int nulldrv_inpstat(cfe_devctx_t *ctx,iocb_inpstat_t *inpstat);
64static int nulldrv_write(cfe_devctx_t *ctx,iocb_buffer_t *buffer);
65static int nulldrv_ioctl(cfe_devctx_t *ctx,iocb_buffer_t *buffer);
66static int nulldrv_close(cfe_devctx_t *ctx);
67
68const static cfe_devdisp_t nulldrv_dispatch = {
69    nulldrv_open,
70    nulldrv_read,
71    nulldrv_inpstat,
72    nulldrv_write,
73    nulldrv_ioctl,
74    nulldrv_close,
75    NULL,
76    NULL
77};
78
79const cfe_driver_t nulldrv = {
80    "Null console device",
81    "null",
82    CFE_DEV_SERIAL,
83    &nulldrv_dispatch,
84    nulldrv_probe
85};
86
87
88static void nulldrv_probe(cfe_driver_t *drv,
89			      unsigned long probe_a, unsigned long probe_b,
90			      void *probe_ptr)
91{
92    cfe_attach(drv,NULL,NULL,drv->drv_description);
93}
94
95
96static int nulldrv_open(cfe_devctx_t *ctx)
97{
98/*    nulldrv_t *softc = ctx->dev_softc; */
99
100    return 0;
101}
102
103static int nulldrv_read(cfe_devctx_t *ctx,iocb_buffer_t *buffer)
104{
105/*    nulldrv_t *softc = ctx->dev_softc; */
106
107    buffer->buf_retlen = buffer->buf_length;
108    return 0;
109}
110
111static int nulldrv_inpstat(cfe_devctx_t *ctx,iocb_inpstat_t *inpstat)
112{
113/*    nulldrv_t *softc = ctx->dev_softc; */
114
115    inpstat->inp_status = 0;
116
117    return 0;
118}
119
120static int nulldrv_write(cfe_devctx_t *ctx,iocb_buffer_t *buffer)
121{
122/*    nulldrv_t *softc = ctx->dev_softc; */
123
124    buffer->buf_retlen = buffer->buf_length;
125    return 0;
126}
127
128static int nulldrv_ioctl(cfe_devctx_t *ctx,iocb_buffer_t *buffer)
129{
130/*    nulldrv_t *softc = ctx->dev_softc;*/
131
132    return -1;
133}
134
135static int nulldrv_close(cfe_devctx_t *ctx)
136{
137/*    nulldrv_t *softc = ctx->dev_softc; */
138
139    return 0;
140}
141
142
143