1*4a079c75SCarlo Caione /* 2*4a079c75SCarlo Caione * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 3*4a079c75SCarlo Caione * 4*4a079c75SCarlo Caione * SPDX-License-Identifier: BSD-3-Clause 5*4a079c75SCarlo Caione */ 6*4a079c75SCarlo Caione 7*4a079c75SCarlo Caione #ifndef MESON_CONSOLE_H 8*4a079c75SCarlo Caione #define MESON_CONSOLE_H 9*4a079c75SCarlo Caione 10*4a079c75SCarlo Caione #include <drivers/console.h> 11*4a079c75SCarlo Caione 12*4a079c75SCarlo Caione #define CONSOLE_T_MESON_BASE CONSOLE_T_DRVDATA 13*4a079c75SCarlo Caione 14*4a079c75SCarlo Caione #ifndef __ASSEMBLER__ 15*4a079c75SCarlo Caione 16*4a079c75SCarlo Caione #include <stdint.h> 17*4a079c75SCarlo Caione 18*4a079c75SCarlo Caione typedef struct { 19*4a079c75SCarlo Caione console_t console; 20*4a079c75SCarlo Caione uintptr_t base; 21*4a079c75SCarlo Caione } console_meson_t; 22*4a079c75SCarlo Caione 23*4a079c75SCarlo Caione /* 24*4a079c75SCarlo Caione * Initialize a new meson console instance and register it with the console 25*4a079c75SCarlo Caione * framework. The |console| pointer must point to storage that will be valid 26*4a079c75SCarlo Caione * for the lifetime of the console, such as a global or static local variable. 27*4a079c75SCarlo Caione * Its contents will be reinitialized from scratch. 28*4a079c75SCarlo Caione * 29*4a079c75SCarlo Caione * NOTE: The clock is actually fixed to 24 MHz. The argument is only there in 30*4a079c75SCarlo Caione * order to make this function future-proof. 31*4a079c75SCarlo Caione */ 32*4a079c75SCarlo Caione int console_meson_register(uintptr_t baseaddr, uint32_t clock, uint32_t baud, 33*4a079c75SCarlo Caione console_meson_t *console); 34*4a079c75SCarlo Caione 35*4a079c75SCarlo Caione #endif /*__ASSEMBLER__*/ 36*4a079c75SCarlo Caione 37*4a079c75SCarlo Caione #endif /* MESON_CONSOLE_H */ 38