1/**
2 * \file
3 * \brief Serial port driver.
4 */
5
6/*
7 * Copyright (c) 2007, 2008, 2012, ETH Zurich.
8 * All rights reserved.
9 *
10 * This file is distributed under the terms in the attached LICENSE file.
11 * If you do not find this file, copies can be found by writing to:
12 * ETH Zurich D-INFK, CAB F.78, Universitaetstr. 6, CH-8092 Zurich,
13 * Attn: Systems Group.
14 */
15
16#ifndef SERIAL_H
17#define SERIAL_H
18
19#include <barrelfish/barrelfish.h>
20
21struct serial_buffer {
22    char *buf;
23    size_t len;
24};
25
26#define SERIAL_PORTBASE_INVALID 0xffffffff
27#define SERIAL_IRQ_INVALID      0xffffffff
28#define SERIAL_MEMBASE_INVALID  0xffffffffffffffffULL
29
30struct serial_params {
31    uint32_t portbase;
32    uint32_t irq;
33    uint64_t membase;
34};
35
36typedef void serial_input_fn_t(char *data, size_t length);
37
38void serial_write(const char *c, size_t len);
39errval_t serial_init(struct serial_params *params);
40void start_service(void);
41void start_basic_service(char *driver_name);
42void start_terminal_service(char *driver_name);
43void serial_input(char *data, size_t length);
44void set_new_input_consumer(serial_input_fn_t fn);
45
46#endif
47