Files
Stewart Smith 49496485fe Re-license IBM written files as Apache 2.0 OR GPLv2+
SPDX makes it a simpler diff.

I have audited the commit history of each file to ensure that they are
exclusively authored by IBM and thus we have the right to relicense.

The motivation behind this is twofold:
1) We want to enable experiments with coreboot, which is GPLv2 licensed
2) An upcoming firmware component wants to incorporate code from skiboot
   and code from the Linux kernel, which is GPLv2 licensed.

I have gone through the IBM internal way of gaining approval for this.

The following files are not exclusively authored by IBM, so are *not*
included in this update (I will be seeking approval from contributors):

core/direct-controls.c
core/flash.c
core/pcie-slot.c
external/common/arch_flash_unknown.c
external/common/rules.mk
external/gard/Makefile
external/gard/rules.mk
external/opal-prd/Makefile
external/pflash/Makefile
external/xscom-utils/Makefile
hdata/vpd.c
hw/dts.c
hw/ipmi/ipmi-watchdog.c
hw/phb4.c
include/cpu.h
include/phb4.h
include/platform.h
libflash/libffs.c
libstb/mbedtls/sha512.c
libstb/mbedtls/sha512.h
platforms/astbmc/barreleye.c
platforms/astbmc/garrison.c
platforms/astbmc/mihawk.c
platforms/astbmc/nicole.c
platforms/astbmc/p8dnu.c
platforms/astbmc/p8dtu.c
platforms/astbmc/p9dsu.c
platforms/astbmc/vesnin.c
platforms/rhesus/ec/config.h
platforms/rhesus/ec/gpio.h
platforms/rhesus/gpio.c
platforms/rhesus/rhesus.c
platforms/astbmc/talos.c
platforms/astbmc/romulus.c

Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
[oliver: fixed up the drift]
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
2020-03-12 20:33:18 +11:00

92 lines
2.2 KiB
C

// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
/* Copyright 2013-2018 IBM Corp. */
#ifndef __CONSOLE_H
#define __CONSOLE_H
#include "unistd.h"
/*
* Our internal console uses the format of BML new-style in-memory
* console and supports input for setups without a physical console
* facility or FSP.
*
* (This is v3 of the format, the previous one sucked)
*/
struct memcons {
__be64 magic;
#define MEMCONS_MAGIC 0x6630696567726173LL
__be64 obuf_phys;
__be64 ibuf_phys;
__be32 obuf_size;
__be32 ibuf_size;
__be32 out_pos;
#define MEMCONS_OUT_POS_WRAP 0x80000000u
#define MEMCONS_OUT_POS_MASK 0x00ffffffu
__be32 in_prod;
__be32 in_cons;
};
extern struct memcons memcons;
#define INMEM_CON_IN_LEN 16
#define INMEM_CON_OUT_LEN (INMEM_CON_LEN - INMEM_CON_IN_LEN)
/* Console driver */
struct con_ops {
size_t (*write)(const char *buf, size_t len);
size_t (*read)(char *buf, size_t len);
bool (*poll_read)(void);
};
struct opal_con_ops {
const char *name;
/*
* OPAL console driver specific init function.
*/
void (*init)(void);
int64_t (*write)(int64_t term, __be64 *__len, const uint8_t *buf);
int64_t (*read)(int64_t term, __be64 *__len, uint8_t *buf);
/*
* returns the amount of space available in the console write buffer
*/
int64_t (*space)(int64_t term_number, __be64 *__length);
/*
* Forces the write buffer to be flushed by the driver
*/
int64_t (*flush)(int64_t term_number);
};
extern bool flush_console(void);
extern void set_console(struct con_ops *driver);
extern void set_opal_console(struct opal_con_ops *driver);
extern void init_opal_console(void);
extern void console_complete_flush(void);
extern size_t mambo_console_write(const char *buf, size_t count);
extern void enable_mambo_console(void);
ssize_t console_write(bool flush_to_drivers, const void *buf, size_t count);
extern void clear_console(void);
extern void memcons_add_properties(void);
extern void dummy_console_add_nodes(void);
struct dt_node *add_opal_console_node(int index, const char *type,
uint32_t write_buffer_size);
/* OPAL console drivers */
extern struct opal_con_ops uart_opal_con;
extern struct opal_con_ops fsp_opal_con;
extern struct opal_con_ops dummy_opal_con;
void mprintf(const char *fmt, ...);
#endif /* __CONSOLE_H */