From e25f9cbb24d84936f0e89abbe7c0687f7f11316d Mon Sep 17 00:00:00 2001 From: "Ithamar R. Adema" Date: Wed, 21 Nov 2012 23:57:52 +0100 Subject: [PATCH] ARM: add ISA support code --- .../kernel/bus_managers/isa/arch/arm/Jamfile | 12 +++ .../isa/arch/arm/isa_controller.c | 84 +++++++++++++++++++ .../bus_managers/isa/arch/arm/isa_dma.c | 25 ++++++ 3 files changed, 121 insertions(+) create mode 100644 src/add-ons/kernel/bus_managers/isa/arch/arm/Jamfile create mode 100644 src/add-ons/kernel/bus_managers/isa/arch/arm/isa_controller.c create mode 100644 src/add-ons/kernel/bus_managers/isa/arch/arm/isa_dma.c diff --git a/src/add-ons/kernel/bus_managers/isa/arch/arm/Jamfile b/src/add-ons/kernel/bus_managers/isa/arch/arm/Jamfile new file mode 100644 index 0000000000..12a6b4a5d1 --- /dev/null +++ b/src/add-ons/kernel/bus_managers/isa/arch/arm/Jamfile @@ -0,0 +1,12 @@ +SubDir HAIKU_TOP src add-ons kernel bus_managers isa arch arm ; + +SubDirHdrs [ FDirName $(SUBDIR) $(DOTDOT) $(DOTDOT) ] ; + +UsePrivateHeaders kernel [ FDirName kernel arch arm ] ; +UsePrivateHeaders [ FDirName kernel boot platform $(TARGET_BOOT_PLATFORM) ] ; + +KernelStaticLibrary isa_arch_bus_manager : + isa_dma.c + isa_controller.c + ; + diff --git a/src/add-ons/kernel/bus_managers/isa/arch/arm/isa_controller.c b/src/add-ons/kernel/bus_managers/isa/arch/arm/isa_controller.c new file mode 100644 index 0000000000..6efd553c7c --- /dev/null +++ b/src/add-ons/kernel/bus_managers/isa/arch/arm/isa_controller.c @@ -0,0 +1,84 @@ +/* + * Copyright 2007 Haiku, Inc. + * Distributed under the terms of the MIT License. + * + * arch-specific config manager + * + * Authors (in chronological order): + * François Revol (revol@free.fr) + */ + +#include +#include "ISA.h" +#include "arch_cpu.h" +#include "isa_arch.h" + +//#define TRACE_ISA +#ifdef TRACE_ISA +# define TRACE(x) dprintf x +#else +# define TRACE(x) ; +#endif + + +uint8 +arch_isa_read_io_8(int mapped_io_addr) +{ + uint8 value = in8(mapped_io_addr); + + TRACE(("isa_read8(%x->%x)\n", mapped_io_addr, value)); + + return value; +} + + +void +arch_isa_write_io_8(int mapped_io_addr, uint8 value) +{ + TRACE(("isa_write8(%x->%x)\n", value, mapped_io_addr)); + + out8(value, mapped_io_addr); +} + + +uint16 +arch_isa_read_io_16(int mapped_io_addr) +{ + return in16(mapped_io_addr); +} + + +void +arch_isa_write_io_16(int mapped_io_addr, uint16 value) +{ + out16(value, mapped_io_addr); +} + + +uint32 +arch_isa_read_io_32(int mapped_io_addr) +{ + return in32(mapped_io_addr); +} + + +void +arch_isa_write_io_32(int mapped_io_addr, uint32 value) +{ + out32(value, mapped_io_addr); +} + + +void * +arch_isa_ram_address(const void *physical_address_in_system_memory) +{ + // this is what the BeOS kernel does + return (void *)physical_address_in_system_memory; +} + + +status_t +arch_isa_init(void) +{ + return B_OK; +} diff --git a/src/add-ons/kernel/bus_managers/isa/arch/arm/isa_dma.c b/src/add-ons/kernel/bus_managers/isa/arch/arm/isa_dma.c new file mode 100644 index 0000000000..50bc63af6c --- /dev/null +++ b/src/add-ons/kernel/bus_managers/isa/arch/arm/isa_dma.c @@ -0,0 +1,25 @@ +/* + * Copyright 2007 Haiku, Inc. + * Distributed under the terms of the MIT License. + * + * arch-specific config manager + * + * Authors (in chronological order): + * François Revol (revol@free.fr) + */ + +#include +#include "ISA.h" +#include "arch_cpu.h" +#include "isa_arch.h" + + +status_t +arch_start_isa_dma(long channel, void *buf, long transfer_count, + uchar mode, uchar e_mode) +{ + // ToDo: implement this?! + return B_NOT_ALLOWED; +} + +