Remove UART specific SPEC identifiers (Ref #2403)

This commit is contained in:
Stefan Kalkowski 2017-05-02 13:00:17 +02:00 committed by Christian Helmuth
parent 9b350e7706
commit b58b69515c
40 changed files with 129 additions and 403 deletions

View File

@ -8,7 +8,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/imx53_qsb
INC_DIR += $(REP_DIR)/src/core/spec/imx53
INC_DIR += $(REP_DIR)/src/core/spec/imx
SRC_CC += spec/imx53/pic.cc
SRC_CC += spec/imx53/timer.cc

View File

@ -8,7 +8,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/wand_quad
INC_DIR += $(REP_DIR)/src/core/spec/imx
# add C++ sources
SRC_CC += platform_services.cc

View File

@ -7,7 +7,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/panda
INC_DIR += $(REP_DIR)/src/core/spec/tl16c750
# add C++ sources
SRC_CC += platform_services.cc

View File

@ -7,7 +7,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/pbxa9
INC_DIR += $(REP_DIR)/src/core/spec/pl011
# add C++ sources
SRC_CC += platform_services.cc

View File

@ -6,7 +6,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/rpi
INC_DIR += $(REP_DIR)/src/core/spec/pl011
# add C++ sources
SRC_CC += platform_services.cc

View File

@ -7,7 +7,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/usb_armory
INC_DIR += $(REP_DIR)/src/core/spec/imx53
INC_DIR += $(REP_DIR)/src/core/spec/imx
INC_DIR += $(REP_DIR)/src/core/spec/arm_v7/trustzone
INC_DIR += $(REP_DIR)/src/core/spec/imx53/trustzone

View File

@ -5,7 +5,6 @@
#
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/xilinx_uartps_0
INC_DIR += $(REP_DIR)/src/core/spec/zynq_qemu
NR_OF_CPUS = 1

View File

@ -15,13 +15,14 @@
/* base-internal includes */
#include <base/internal/unmanaged_singleton.h>
#include <serial.h>
#include <board.h>
#include <platform.h>
#include <kernel/log.h>
void Kernel::log(char const c)
{
using Genode::Serial;
using namespace Board;
enum {
ASCII_LINE_FEED = 10,
@ -29,7 +30,8 @@ void Kernel::log(char const c)
BAUD_RATE = 115200
};
Serial & serial = *unmanaged_singleton<Serial>(BAUD_RATE);
static Serial serial { Genode::Platform::mmio_to_virt(UART_BASE),
UART_CLOCK, BAUD_RATE };
if (c == ASCII_LINE_FEED) serial.put_char(ASCII_CARRIAGE_RETURN);
serial.put_char(c);
}

View File

@ -16,12 +16,19 @@
/* base includes */
#include <drivers/defs/arndale.h>
#include <drivers/uart/exynos.h>
#include <hw/spec/arm/cortex_a15.h>
namespace Board {
using namespace Arndale;
using Cpu_mmio = Hw::Cortex_a15_mmio<IRQ_CONTROLLER_BASE>;
using Serial = Genode::Exynos_uart;
enum {
UART_BASE = UART_2_MMIO_BASE,
UART_CLOCK = UART_2_CLOCK,
};
static constexpr bool SMP = true;
}

View File

@ -1,47 +0,0 @@
/*
* \brief Serial output driver for core
* \author Martin Stein
* \author Stefan Kalkowski
* \date 2013-01-09
*/
/*
* Copyright (C) 2013-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__EXYNOS5__SERIAL_H_
#define _CORE__SPEC__EXYNOS5__SERIAL_H_
/* core includes */
#include <board.h>
#include <platform.h>
/* Genode includes */
#include <drivers/uart/exynos.h>
namespace Genode
{
/**
* Serial output driver for core
*/
class Serial : public Exynos_uart
{
public:
/**
* Constructor
*
* \param baud_rate targeted transfer baud-rate
*/
Serial(unsigned const baud_rate)
:
Exynos_uart(Platform::mmio_to_virt(Board::UART_2_MMIO_BASE),
Board::UART_2_CLOCK, baud_rate)
{ }
};
}
#endif /* _CORE__SPEC__EXYNOS5__SERIAL_H_ */

View File

@ -1,39 +0,0 @@
/*
* \brief Serial output driver for core
* \author Stefan Kalkowski
* \date 2012-10-24
*/
/*
* Copyright (C) 2012-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__IMX__SERIAL_H_
#define _CORE__SPEC__IMX__SERIAL_H_
/* core includes */
#include <board.h>
#include <platform.h>
/* Genode includes */
#include <drivers/uart/imx.h>
namespace Genode
{
/**
* Serial output driver for core
*/
class Serial : public Imx_uart
{
public:
Serial(unsigned baudrate)
: Imx_uart(Platform::mmio_to_virt(Board::UART_1_MMIO_BASE),
/* ignored clock rate */ 0, baudrate) { }
};
}
#endif /* _CORE__SPEC__IMX__SERIAL_H_ */

View File

@ -16,9 +16,17 @@
#define _CORE__SPEC__IMX53_QSB__BOARD_H_
#include <drivers/defs/imx53_qsb.h>
#include <drivers/uart/imx.h>
namespace Board {
using namespace Imx53_qsb;
using Serial = Genode::Imx_uart;
enum {
UART_BASE = UART_1_MMIO_BASE,
UART_CLOCK = 0, /* ignored value */
};
static constexpr bool SMP = false;
}

View File

@ -16,12 +16,19 @@
/* base includes */
#include <drivers/defs/odroid_xu.h>
#include <drivers/uart/exynos.h>
#include <hw/spec/arm/cortex_a15.h>
namespace Board {
using namespace Odroid_xu;
using Cpu_mmio = Hw::Cortex_a15_mmio<IRQ_CONTROLLER_BASE>;
using Serial = Genode::Exynos_uart;
enum {
UART_BASE = UART_2_MMIO_BASE,
UART_CLOCK = UART_2_CLOCK,
};
static constexpr bool SMP = true;
}

View File

@ -17,6 +17,7 @@
/* base includes */
#include <drivers/defs/panda.h>
#include <drivers/uart/tl16c750.h>
#include <hw/spec/arm/cortex_a9.h>
#include <hw/spec/arm/pl310.h>
@ -26,6 +27,12 @@ namespace Board {
using namespace Panda;
using Cpu_mmio = Hw::Cortex_a9_mmio<CORTEX_A9_PRIVATE_MEM_BASE>;
using Serial = Genode::Tl16c750_uart;
enum {
UART_BASE = TL16C750_3_MMIO_BASE,
UART_CLOCK = TL16C750_CLOCK,
};
static constexpr bool SMP = true;

View File

@ -16,14 +16,22 @@
/* base includes */
#include <drivers/defs/pbxa9.h>
#include <drivers/uart/pl011.h>
#include <hw/spec/arm/cortex_a9.h>
#include <hw/spec/arm/pl310.h>
namespace Board {
using namespace Pbxa9;
using Cpu_mmio = Hw::Cortex_a9_mmio<CORTEX_A9_PRIVATE_MEM_BASE>;
using L2_cache = Hw::Pl310;
using Serial = Genode::Pl011_uart;
enum {
UART_BASE = PL011_0_MMIO_BASE,
UART_CLOCK = PL011_0_CLOCK,
};
static constexpr bool SMP = true;

View File

@ -1,43 +0,0 @@
/*
* \brief Serial output driver for core
* \author Martin Stein
* \date 2012-04-23
*/
/*
* Copyright (C) 2012-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__PL011__SERIAL_H_
#define _CORE__SPEC__PL011__SERIAL_H_
/* core includes */
#include <board.h>
#include <platform.h>
/* Genode includes */
#include <drivers/uart/pl011.h>
namespace Genode { class Serial; }
class Genode::Serial : public Pl011_uart
{
public:
/**
* Constructor
*
* \param baud_rate targeted transfer baud-rate
*/
Serial(unsigned const baud_rate)
:
Pl011_uart(Platform::mmio_to_virt(Board::PL011_0_MMIO_BASE),
Board::PL011_0_CLOCK, baud_rate)
{ }
};
#endif /* _CORE__SPEC__PL011__SERIAL_H_ */

View File

@ -14,6 +14,10 @@
#ifndef _CORE__SPEC__RISCV__BOARD_H_
#define _CORE__SPEC__RISCV__BOARD_H_
namespace Board { }
namespace Board {
enum { UART_BASE, UART_CLOCK };
struct Serial : Hw::Riscv_uart {
Serial(unsigned, unsigned, unsigned) {} };
}
#endif /* _CORE__SPEC__RISCV__BOARD_H_ */

View File

@ -1,29 +0,0 @@
/*
* \brief Serial output driver for core
* \author Sebastian Sumpf
* \date 2015-06-02
*/
/*
* Copyright (C) 2015-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__RISCV__SERIAL_H_
#define _CORE__SPEC__RISCV__SERIAL_H_
#include <hw/spec/riscv/uart.h>
namespace Genode { struct Serial; }
/**
* Serial output driver for core
*/
struct Genode::Serial : Hw::Riscv_uart
{
Serial(unsigned) { }
};
#endif /* _CORE__SPEC__RISCV__SERIAL_H_ */

View File

@ -15,12 +15,19 @@
#ifndef _CORE__SPEC__RPI__BOARD_H_
#define _CORE__SPEC__RPI__BOARD_H_
/* core includes */
#include <drivers/defs/rpi.h>
#include <drivers/uart/pl011.h>
namespace Board {
using namespace Rpi;
using Serial = Genode::Pl011_uart;
enum {
UART_BASE = Rpi::PL011_0_MMIO_BASE,
UART_CLOCK = Rpi::PL011_0_CLOCK,
};
static constexpr bool SMP = false;
};

View File

@ -1,46 +0,0 @@
/*
* \brief Serial output driver for core
* \author Martin Stein
* \date 2012-04-23
*/
/*
* Copyright (C) 2012-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__TL16C750__SERIAL_H_
#define _CORE__SPEC__TL16C750__SERIAL_H_
/* core includes */
#include <board.h>
#include <platform.h>
/* Genode includes */
#include <drivers/uart/tl16c750.h>
namespace Genode
{
/**
* Serial output driver for core
*/
class Serial : public Tl16c750_uart
{
public:
/**
* Constructor
*
* \param baud_rate targeted transfer baud-rate
*/
Serial(unsigned const baud_rate)
:
Tl16c750_uart(Platform::mmio_to_virt(Board::TL16C750_3_MMIO_BASE),
Board::TL16C750_CLOCK, baud_rate)
{ }
};
}
#endif /* _CORE__SPEC__TL16C750__SERIAL_H_ */

View File

@ -16,9 +16,17 @@
#define _CORE__SPEC__USB_ARMORY__BOARD_H_
#include <drivers/defs/usb_armory.h>
#include <drivers/uart/imx.h>
namespace Board {
using namespace Usb_armory;
using Serial = Genode::Imx_uart;
enum {
UART_BASE = UART_1_MMIO_BASE,
UART_CLOCK = 0, /* dummy value, not used */
};
static constexpr bool SMP = false;
}

View File

@ -17,6 +17,7 @@
/* base includes */
#include <drivers/defs/wand_quad.h>
#include <drivers/uart/imx.h>
#include <hw/spec/arm/cortex_a9.h>
#include <hw/spec/arm/pl310.h>
@ -25,6 +26,12 @@ namespace Board {
using namespace Wand_quad;
using Cpu_mmio = Hw::Cortex_a9_mmio<CORTEX_A9_PRIVATE_MEM_BASE>;
using L2_cache = Hw::Pl310;
using Serial = Genode::Imx_uart;
enum {
UART_BASE = UART_1_MMIO_BASE,
UART_CLOCK = 0, /* dummy value, not used */
};
static constexpr bool SMP = true;

View File

@ -14,17 +14,23 @@
#ifndef _CORE__SPEC__X86_64__BOARD_H_
#define _CORE__SPEC__X86_64__BOARD_H_
namespace Genode
{
struct Board
{
enum {
VECTOR_REMAP_BASE = 48,
TIMER_VECTOR_KERNEL = 32,
TIMER_VECTOR_USER = 50,
ISA_IRQ_END = 15,
};
#include <drivers/uart/x86_pc.h>
namespace Board {
struct Serial;
enum Dummies { UART_BASE, UART_CLOCK };
enum {
VECTOR_REMAP_BASE = 48,
TIMER_VECTOR_KERNEL = 32,
TIMER_VECTOR_USER = 50,
ISA_IRQ_END = 15,
};
}
struct Board::Serial : Genode::X86_uart {
Serial(Genode::addr_t, Genode::size_t, unsigned);
};
#endif /* _CORE__SPEC__X86_64__BOARD_H_ */

View File

@ -14,23 +14,29 @@
#ifndef _CORE__SPEC__X86_64__MUEN__BOARD_H_
#define _CORE__SPEC__X86_64__MUEN__BOARD_H_
namespace Genode
{
struct Board
{
enum {
TIMER_BASE_ADDR = 0xe00010000,
TIMER_SIZE = 0x1000,
TIMER_PREEMPT_BASE_ADDR = 0xe00011000,
TIMER_PREEMPT_SIZE = 0x1000,
#include <drivers/uart/x86_pc.h>
VECTOR_REMAP_BASE = 48,
TIMER_EVENT_PREEMPT = 30,
TIMER_EVENT_KERNEL = 31,
TIMER_VECTOR_KERNEL = 32,
TIMER_VECTOR_USER = 50,
};
namespace Board {
struct Serial;
enum Dummies { UART_BASE, UART_CLOCK };
enum {
TIMER_BASE_ADDR = 0xe00010000,
TIMER_SIZE = 0x1000,
TIMER_PREEMPT_BASE_ADDR = 0xe00011000,
TIMER_PREEMPT_SIZE = 0x1000,
VECTOR_REMAP_BASE = 48,
TIMER_EVENT_PREEMPT = 30,
TIMER_EVENT_KERNEL = 31,
TIMER_VECTOR_KERNEL = 32,
TIMER_VECTOR_USER = 50,
};
}
struct Board::Serial : Genode::X86_uart {
Serial(Genode::addr_t, Genode::size_t, unsigned);
};
#endif /* _CORE__SPEC__X86_64__MUEN__BOARD_H_ */

View File

@ -94,3 +94,8 @@ void Platform::_init_additional()
Rom_module((addr_t)Sinfo::PHYSICAL_BASE_ADDR,
Sinfo::SIZE, "subject_info_page"));
}
enum { COM1_PORT = 0x3f8 };
Board::Serial::Serial(Genode::addr_t, Genode::size_t, unsigned baudrate)
:X86_uart(COM1_PORT, 0, baudrate) {}

View File

@ -1,43 +0,0 @@
/*
* \brief Serial output driver for core
* \author Stefan Kalkowski
* \author Adrian-Ken Rueegsegger
* \date 2015-08-20
*/
/*
* Copyright (C) 2012-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__X86_64__MUEN__SERIAL_H_
#define _CORE__SPEC__X86_64__MUEN__SERIAL_H_
/* Genode includes */
#include <drivers/uart/x86_pc.h>
namespace Genode { class Serial; }
/**
* Serial output driver for core
*/
class Genode::Serial : public X86_uart
{
private:
enum {
CLOCK_UNUSED = 0,
COM1_PORT = 0x3f8
};
public:
Serial(unsigned baud_rate)
:
X86_uart(COM1_PORT, CLOCK_UNUSED, baud_rate)
{ }
};
#endif /* _CORE__SPEC__X86_64__MUEN__SERIAL_H_ */

View File

@ -11,7 +11,7 @@
* under the terms of the GNU Affero General Public License version 3.
*/
/* core includes */
#include <bios_data_area.h>
#include <platform.h>
#include <kernel/kernel.h>
@ -29,3 +29,7 @@ void Platform::setup_irq_mode(unsigned irq_number, unsigned trigger,
bool Platform::get_msi_params(const addr_t mmconf, addr_t &address,
addr_t &data, unsigned &irq_number) {
return false; }
Board::Serial::Serial(addr_t, size_t, unsigned baudrate)
:X86_uart(Bios_data_area::singleton()->serial_port(), 0, baudrate) {}

View File

@ -1,41 +0,0 @@
/*
* \brief Serial output driver for core
* \author Stefan Kalkowski
* \date 2012-10-24
*/
/*
* Copyright (C) 2012-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__X86_64__SERIAL_H_
#define _CORE__SPEC__X86_64__SERIAL_H_
/* Genode includes */
#include <bios_data_area.h>
#include <drivers/uart/x86_pc.h>
namespace Genode { class Serial; }
/**
* Serial output driver for core
*/
class Genode::Serial : public X86_uart
{
private:
enum { CLOCK_UNUSED = 0 };
public:
Serial(unsigned baud_rate)
:
X86_uart(Bios_data_area::singleton()->serial_port(),
CLOCK_UNUSED, baud_rate)
{ }
};
#endif /* _CORE__SPEC__X86_64__SERIAL_H_ */

View File

@ -1,45 +0,0 @@
/*
* \brief Serial output driver for core
* \author Johannes Schlatow
* \date 2014-12-15
*/
/*
* Copyright (C) 2014-2017 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU Affero General Public License version 3.
*/
#ifndef _CORE__SPEC__XILINX_UARTPS_0__SERIAL_H_
#define _CORE__SPEC__XILINX_UARTPS_0__SERIAL_H_
/* core includes */
#include <board.h>
#include <platform.h>
/* Genode includes */
#include <drivers/uart/xilinx.h>
namespace Genode { class Serial; }
/**
* Serial output driver for core
*/
class Genode::Serial : public Xilinx_uart
{
public:
/**
* Constructor
*
* \param baud_rate targeted transfer baud-rate
*/
Serial(unsigned const baud_rate)
:
Xilinx_uart(Platform::mmio_to_virt(Board::UART_0_MMIO_BASE),
Board::UART_CLOCK, baud_rate)
{ }
};
#endif /* _CORE__SPEC__XILINX_UARTPS_0__SERIAL_H_ */

View File

@ -18,6 +18,7 @@
/* base includes */
#include <drivers/defs/zynq_qemu.h>
#include <drivers/uart/xilinx.h>
#include <hw/spec/arm/cortex_a9.h>
#include <hw/spec/arm/pl310.h>
@ -26,6 +27,11 @@ namespace Board {
using namespace Zynq_qemu;
using Cpu_mmio = Hw::Cortex_a9_mmio<CORTEX_A9_PRIVATE_MEM_BASE>;
using L2_cache = Hw::Pl310;
using Serial = Genode::Xilinx_uart;
enum {
UART_BASE = UART_0_MMIO_BASE,
};
static constexpr bool SMP = true;

View File

@ -5,11 +5,10 @@
#
# denote specs that are fullfilled by this spec
SPECS += exynos cortex_a15 framebuffer usb
SPECS += cortex_a15 framebuffer usb
# add repository relative paths
REP_INC_DIR += include/spec/exynos5
REP_INC_DIR += include/spec/exynos
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a15.mk

View File

@ -5,11 +5,10 @@
#
# denote wich specs are also fullfilled by this spec
SPECS += cortex_a8 imx gpio framebuffer
SPECS += cortex_a8 gpio framebuffer
# add repository relative include paths
REP_INC_DIR += include/spec/imx53
REP_INC_DIR += include/spec/imx
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a8.mk

View File

@ -7,11 +7,10 @@
#
# denote wich specs are also fullfilled by this spec
SPECS += cortex_a9 imx
SPECS += cortex_a9
# add repository relative include paths
REP_INC_DIR += include/spec/imx6
REP_INC_DIR += include/spec/imx
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a9.mk

View File

@ -7,12 +7,11 @@
#
# denote specs that are fullfilled by this spec
SPECS += exynos exynos4 cortex_a9 usb framebuffer gpio
SPECS += exynos4 cortex_a9 usb framebuffer gpio
# add repository relative paths
REP_INC_DIR += include/spec/odroid_x2
REP_INC_DIR += include/spec/exynos4
REP_INC_DIR += include/spec/exynos
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a9.mk

View File

@ -1,7 +1,7 @@
#
# Enable peripherals of the platform
#
SPECS += omap4 usb cortex_a9 tl16c750 panda gpio framebuffer
SPECS += omap4 usb cortex_a9 panda gpio framebuffer
#
# Pull in CPU specifics
@ -14,5 +14,4 @@ SPECS += arm_v7a
REP_INC_DIR += include/spec/panda
include $(BASE_DIR)/mk/spec/cortex_a9.mk
include $(BASE_DIR)/mk/spec/tl16c750.mk
include $(BASE_DIR)/mk/spec/arm_v7a.mk

View File

@ -1,7 +1,7 @@
#
# Enable peripherals of the platform
#
SPECS += pl050 pl11x ps2 pl180 lan9118 pl011 framebuffer
SPECS += pl050 pl11x ps2 pl180 lan9118 framebuffer
#
# Pull in CPU specifics
@ -14,4 +14,3 @@ SPECS += cortex_a9
REP_INC_DIR += include/spec/pbxa9
include $(BASE_DIR)/mk/spec/cortex_a9.mk
include $(BASE_DIR)/mk/spec/pl011.mk

View File

@ -1,9 +0,0 @@
#
# \brief Build-system configurations specifically for the ARM PL011
# \author Martin Stein
# \date 2011-12-20
#
# add repository relative include paths
REP_INC_DIR += include/spec/pl011

View File

@ -12,4 +12,3 @@ REP_INC_DIR += include/spec/rpi
# include implied specs
include $(BASE_DIR)/mk/spec/arm_v6.mk
include $(BASE_DIR)/mk/spec/pl011.mk

View File

@ -1,9 +0,0 @@
#
# \brief Build-system configurations specifically for the TL16C750
# \author Martin Stein
# \date 2011-12-20
#
# add repository relative include paths
REP_INC_DIR += include/spec/tl16c750

View File

@ -4,6 +4,5 @@
SPECS += zynq cadence_gem
REP_INC_DIR += include/spec/zynq_qemu
REP_INC_DIR += include/spec/xilinx
include $(BASE_DIR)/mk/spec/zynq.mk