138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt/* 238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Console support for hndrte. 338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Copyright (C) 1999-2013, Broadcom Corporation 538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Permission to use, copy, modify, and/or distribute this software for any 738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * purpose with or without fee is hereby granted, provided that the above 838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * copyright notice and this permission notice appear in all copies. 938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 1038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 1138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 1238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 1338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 1438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 1538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 1638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 1738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * 1838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * $Id: hndrte_cons.h 383834 2013-02-07 23:21:51Z $ 1938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 2038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#ifndef _HNDRTE_CONS_H 2138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define _HNDRTE_CONS_H 2238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#include <typedefs.h> 2438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define CBUF_LEN (128) 2638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#define LOG_BUF_LEN 1024 2838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 2938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct { 3038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint32 buf; /* Can't be pointer on (64-bit) hosts */ 3138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint buf_size; 3238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint idx; 3338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt char *_buf_compat; /* redundant pointer for backward compat. */ 3438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} hndrte_log_t; 3538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 3638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidttypedef struct { 3738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Virtual UART 3838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * When there is no UART (e.g. Quickturn), the host should write a complete 3938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * input line directly into cbuf and then write the length into vcons_in. 4038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * This may also be used when there is a real UART (at risk of conflicting with 4138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * the real UART). vcons_out is currently unused. 4238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 4338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt volatile uint vcons_in; 4438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt volatile uint vcons_out; 4538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 4638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Output (logging) buffer 4738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Console output is written to a ring buffer log_buf at index log_idx. 4838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * The host may read the output when it sees log_idx advance. 4938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Output will be lost if the output wraps around faster than the host polls. 5038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 5138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt hndrte_log_t log; 5238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 5338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt /* Console input line buffer 5438eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * Characters are read one at a time into cbuf until <CR> is received, then 5538eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt * the buffer is processed as a command line. Also used for virtual UART. 5638eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt */ 5738eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt uint cbuf_idx; 5838eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt char cbuf[CBUF_LEN]; 5938eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt} hndrte_cons_t; 6038eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 6138eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidthndrte_cons_t *hndrte_get_active_cons_state(void); 6238eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt 6338eaaf5a34502fe465cf8b6ac7a2dfcafa17ba41Dmitry Shmidt#endif /* _HNDRTE_CONS_H */ 64