From mboxrd@z Thu Jan 1 00:00:00 1970 From: stanleymiao@gmail.com (stanleymiao at gmail.com) Date: Thu, 14 Oct 2010 16:38:07 +0800 Subject: [PATCH 1/3] Add Mindspeed Comcerto platform support In-Reply-To: <1287045489-1133-1-git-send-email-stanleymiao@gmail.com> References: <1287045489-1133-1-git-send-email-stanleymiao@gmail.com> Message-ID: <1287045489-1133-2-git-send-email-stanleymiao@gmail.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org From: Stanley.Miao Add Mindspeed Comcerto platform support. Now this patch includes only Multifunction EVM board with Comcerto-1000 CPU. Signed-off-by: Stanley.Miao --- arch/arm/Kconfig | 11 ++ arch/arm/Makefile | 1 + arch/arm/boot/compressed/Makefile | 4 + arch/arm/boot/compressed/head-comcerto.S | 6 + arch/arm/boot/compressed/head.S | 5 + arch/arm/mach-comcerto/Kconfig | 32 +++++ arch/arm/mach-comcerto/Makefile | 10 ++ arch/arm/mach-comcerto/Makefile.boot | 2 + arch/arm/mach-comcerto/board-c1kmfcn_evm.c | 88 ++++++++++++ arch/arm/mach-comcerto/comcerto-1000.c | 146 ++++++++++++++++++++ .../arm/mach-comcerto/include/mach/comcerto-1000.h | 91 ++++++++++++ arch/arm/mach-comcerto/include/mach/debug-macro.S | 46 ++++++ arch/arm/mach-comcerto/include/mach/entry-macro.S | 70 ++++++++++ arch/arm/mach-comcerto/include/mach/hardware.h | 37 +++++ arch/arm/mach-comcerto/include/mach/io.h | 32 +++++ arch/arm/mach-comcerto/include/mach/memory.h | 33 +++++ arch/arm/mach-comcerto/include/mach/system.h | 39 +++++ arch/arm/mach-comcerto/include/mach/timex.h | 28 ++++ arch/arm/mach-comcerto/include/mach/uncompress.h | 58 ++++++++ arch/arm/mach-comcerto/include/mach/vmalloc.h | 21 +++ 20 files changed, 760 insertions(+), 0 deletions(-) create mode 100644 arch/arm/boot/compressed/head-comcerto.S create mode 100644 arch/arm/mach-comcerto/Kconfig create mode 100644 arch/arm/mach-comcerto/Makefile create mode 100644 arch/arm/mach-comcerto/Makefile.boot create mode 100644 arch/arm/mach-comcerto/board-c1kmfcn_evm.c create mode 100644 arch/arm/mach-comcerto/comcerto-1000.c create mode 100644 arch/arm/mach-comcerto/include/mach/comcerto-1000.h create mode 100644 arch/arm/mach-comcerto/include/mach/debug-macro.S create mode 100644 arch/arm/mach-comcerto/include/mach/entry-macro.S create mode 100644 arch/arm/mach-comcerto/include/mach/hardware.h create mode 100644 arch/arm/mach-comcerto/include/mach/io.h create mode 100644 arch/arm/mach-comcerto/include/mach/memory.h create mode 100644 arch/arm/mach-comcerto/include/mach/system.h create mode 100644 arch/arm/mach-comcerto/include/mach/timex.h create mode 100644 arch/arm/mach-comcerto/include/mach/uncompress.h create mode 100644 arch/arm/mach-comcerto/include/mach/vmalloc.h diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 88c97bc..ca6ccf7 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -334,6 +334,15 @@ config ARCH_EP93XX help This enables support for the Cirrus EP93xx series of CPUs. +config ARCH_COMCERTO + bool "Mindspeed Comcerto" + select ZONE_DMA + select CPU_V6 + help + This enables support for Mindspeed's Comcerto development boards. + If you would like to build your kernel to run on one of these boards + then you must say 'Y' here. Otherwise say 'N' + config ARCH_FOOTBRIDGE bool "FootBridge" select CPU_SA110 @@ -841,6 +850,8 @@ source "arch/arm/mach-clps711x/Kconfig" source "arch/arm/mach-cns3xxx/Kconfig" +source "arch/arm/mach-comcerto/Kconfig" + source "arch/arm/mach-davinci/Kconfig" source "arch/arm/mach-dove/Kconfig" diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 59c1ce8..2daad67 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -141,6 +141,7 @@ machine-$(CONFIG_ARCH_INTEGRATOR) := integrator machine-$(CONFIG_ARCH_IOP13XX) := iop13xx machine-$(CONFIG_ARCH_IOP32X) := iop32x machine-$(CONFIG_ARCH_IOP33X) := iop33x +machine-$(CONFIG_ARCH_COMCERTO) := comcerto machine-$(CONFIG_ARCH_IXP2000) := ixp2000 machine-$(CONFIG_ARCH_IXP23XX) := ixp23xx machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 65a7c1c..e8419db 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -33,6 +33,10 @@ ifeq ($(CONFIG_CPU_XSCALE),y) OBJS += head-xscale.o endif +ifeq ($(CONFIG_ARCH_COMCERTO),y) +OBJS += head-comcerto.o +endif + ifeq ($(CONFIG_PXA_SHARPSL_DETECT_MACH_ID),y) OBJS += head-sharpsl.o endif diff --git a/arch/arm/boot/compressed/head-comcerto.S b/arch/arm/boot/compressed/head-comcerto.S new file mode 100644 index 0000000..60160f6 --- /dev/null +++ b/arch/arm/boot/compressed/head-comcerto.S @@ -0,0 +1,6 @@ +#include + + .section ".start", "ax" + ldr r7, mach_type + +mach_type: .word MACH_TYPE_COMCERTO diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 6825c34..8f38fbf 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -66,6 +66,11 @@ wait: mrc p14, 0, pc, c0, c1, 0 add \rb, \rb, #0x00010000 @ Ser1 #endif .endm +#elif defined(CONFIG_ARCH_COMCERTO) + .macro loadsp, rb, tmp + mov \rb, #0x10000000 + orr \rb, \rb, #0x00090000 + .endm #elif defined(CONFIG_ARCH_S3C2410) .macro loadsp, rb, tmp mov \rb, #0x50000000 diff --git a/arch/arm/mach-comcerto/Kconfig b/arch/arm/mach-comcerto/Kconfig new file mode 100644 index 0000000..a61a31a --- /dev/null +++ b/arch/arm/mach-comcerto/Kconfig @@ -0,0 +1,32 @@ +if ARCH_COMCERTO + +menu "Comcerto Implementation Options" + +choice + prompt "Comcerto System Type" + default ARCH_M83XXX + +config ARCH_M83XXX + bool "M83xxx" + select GENERIC_TIME + select GENERIC_CLOCKEVENTS + help + Say Y here if you intend to run this kernel with a Comcerto1000 device. + +endchoice + +choice + prompt "Comcerto Board type" + default EVM_C1KMFCN_EVM + +config EVM_C1KMFCN_EVM + bool "C1KMFCN_EVM" + depends on ARCH_M83XXX + help + Say Y here if you intend to run this kernel with a C1K Multifunction EVM board. + +endchoice + +endmenu + +endif diff --git a/arch/arm/mach-comcerto/Makefile b/arch/arm/mach-comcerto/Makefile new file mode 100644 index 0000000..70aac61 --- /dev/null +++ b/arch/arm/mach-comcerto/Makefile @@ -0,0 +1,10 @@ +# +# Makefile for the linux kernel. +# + +# Object file lists. + +obj-y := + +obj-$(CONFIG_ARCH_M83XXX) += comcerto-1000.o +obj-$(CONFIG_EVM_C1KMFCN_EVM) += board-c1kmfcn_evm.o diff --git a/arch/arm/mach-comcerto/Makefile.boot b/arch/arm/mach-comcerto/Makefile.boot new file mode 100644 index 0000000..6262c4b --- /dev/null +++ b/arch/arm/mach-comcerto/Makefile.boot @@ -0,0 +1,2 @@ +zreladdr-y := 0x80808000 +params_phys-y := 0x80800100 diff --git a/arch/arm/mach-comcerto/board-c1kmfcn_evm.c b/arch/arm/mach-comcerto/board-c1kmfcn_evm.c new file mode 100644 index 0000000..74a7da3 --- /dev/null +++ b/arch/arm/mach-comcerto/board-c1kmfcn_evm.c @@ -0,0 +1,88 @@ +/* + * linux/arch/arm/mach-comcerto/board-c1kmfcn_evm.c + * + * Copyright (C) 2004,2008 Mindspeed Technologies, Inc. + * Copyright (c) 2010 Wind River Systems, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* -------------------------------------------------------------------- + * Serial interface + * -------------------------------------------------------------------- */ +static struct plat_serial8250_port comcerto_uart_data[] = { + { + .mapbase = COMCERTO_APB_UART0_BASE, + .membase = (void *)APB_VADDR(COMCERTO_APB_UART0_BASE), + .irq = IRQ_UART0, + .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, + .iotype = UPIO_MEM, + .regshift = 2, + .uartclk = COMCERTO_DEFAULTAHBCLK * 1000000, + }, + { + .flags = 0, + }, +}; + +static struct platform_device comcerto_uart = { + .name = "serial8250", + .id = PLAT8250_DEV_PLATFORM, + .dev = { + .platform_data = comcerto_uart_data, + }, +}; + +static struct platform_device *comcerto_devices[] __initdata = { + &comcerto_uart, +}; + +/************************************************************************ + * Machine definition + * + ************************************************************************/ +static void __init platform_map_io(void) +{ + device_map_io(); +} + +static void __init platform_irq_init(void) +{ +} + +static void __init platform_init(void) +{ + platform_add_devices(comcerto_devices, ARRAY_SIZE(comcerto_devices)); +} + +MACHINE_START(COMCERTO, "Comcerto 1000 (Multifunction EVM)") + /* Mindspeed Technologies Inc. */ + .phys_io = COMCERTO_AHB_APB_BASE, + .io_pg_offst = ((COMCERTO_AHB_APB_BASE) >> 18) & 0xfffc, + .boot_params = COMCERTO_SDRAM_BASE + 0x100, + .map_io = platform_map_io, + .init_irq = platform_irq_init, + .init_machine = platform_init, + .timer = &comcerto_timer, +MACHINE_END diff --git a/arch/arm/mach-comcerto/comcerto-1000.c b/arch/arm/mach-comcerto/comcerto-1000.c new file mode 100644 index 0000000..09032ea --- /dev/null +++ b/arch/arm/mach-comcerto/comcerto-1000.c @@ -0,0 +1,146 @@ +/* + * linux/arch/arm/mach-comcerto/comcerto-1000.c + * + * Copyright (C) 2004,2008 Mindspeed Technologies, Inc. + * Copyright (c) 2010 Wind River Systems, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*********************************************************** + * Virtual address Mapping * + * * + ***********************************************************/ + +static struct map_desc comcerto_io_desc[] __initdata = { + { + .virtual = SDRAM_MSP_MEMORY_VADDR, + .pfn = __phys_to_pfn(SDRAM_MSP_MEMORY_PHY), + .length = SDRAM_MSP_MEMORY_SIZE, + .type = MT_DEVICE + }, + { + .virtual = ARAM_MEMORY_VADDR, + .pfn = __phys_to_pfn(COMCERTO_AHB_ARAM_BASE), + .length = ARAM_MEMORY_SIZE, + .type = MT_DEVICE + }, + { + .virtual = (ARAM_MEMORY_VADDR + 0x100000), + .pfn = __phys_to_pfn(COMCERTO_AHB_ARAM_BASE + 0x100000), + .length = ARAM_MEMORY_SIZE, + .type = MT_DEVICE + }, + { + .virtual = ARAM_MEMORY_VADDR + 0x100000, + .pfn = __phys_to_pfn(COMCERTO_AHB_ARAM_BASE + 0x100000), + .length = ARAM_MEMORY_SIZE, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_TIMER_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_TIMER_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_GPIO_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_GPIO_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_UART0_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_UART0_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_UART1_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_UART1_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_SPI_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_SPI_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_I2C_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_I2C_BASE), + .length = SZ_16K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_INTC_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_INTC_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_CLK_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_CLK_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_EMAC0_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_EMAC0_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_EMAC1_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_EMAC1_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_ARAM_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_ARAM_BASE), + .length = SZ_4K, + .type = MT_DEVICE + }, + { + .virtual = APB_VADDR(COMCERTO_APB_EXPBUS_BASE), + .pfn = __phys_to_pfn(COMCERTO_APB_EXPBUS_BASE), + .length = SZ_64K, + .type = MT_DEVICE + }, + { + .virtual = COMCERTO_IPSEC_VADDR_BASE, + .pfn = __phys_to_pfn(COMCERTO_AHB_IPSEC_BASE), + .length = SZ_1M, + .type = MT_DEVICE + }, +}; + +void __init device_map_io(void) +{ + iotable_init(comcerto_io_desc, ARRAY_SIZE(comcerto_io_desc)); +} + diff --git a/arch/arm/mach-comcerto/include/mach/comcerto-1000.h b/arch/arm/mach-comcerto/include/mach/comcerto-1000.h new file mode 100644 index 0000000..f48ae34 --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/comcerto-1000.h @@ -0,0 +1,91 @@ +/* + * arch/arm/mach-comcerto/include/mach/comcerto-1000.h + * + * Copyright (C) 2008 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __ASM_ARCH_COMCERTO1000_H__ +#define __ASM_ARCH_COMCERTO1000_H__ + +#define COMCERTO_DEFAULTAHBCLK 187 /* MHz */ +#define COMCERTO_PHYCLK 250 /* MHz */ +#define COMCERTO_ARMCLK 650 /* MHz */ + +/***** Physical address of IO on APB Bus *****/ + +/* 0x001F0000 Reserved*/ +#define COMCERTO_APB_MDMA_BASE 0x101E0000 +#define COMCERTO_APB_TDMA2_BASE 0x101D0000 +/* 0x101B0000 --> 0x101C0000 Reserved*/ +#define COMCERTO_APB_EXPBUS_BASE 0x101A0000 +#define COMCERTO_APB_EMAC1_BASE 0x10190000 +/* 0x10100000 --> 0x00180000 Reserved*/ +#define COMCERTO_APB_ARAM_BASE 0x100F0000 +/* 0x100E0000 Reserved*/ +#define COMCERTO_APB_EMAC0_BASE 0x100D0000 +/* 0x100C0000 Reserved*/ +#define COMCERTO_APB_CLK_BASE 0x100B0000 +#define COMCERTO_APB_INTC_BASE 0x100A0000 +#define COMCERTO_APB_I2C_BASE 0x1009C000 +#define COMCERTO_APB_SPI_BASE 0x10098000 +#define COMCERTO_APB_UART1_BASE 0x10094000 +#define COMCERTO_APB_UART0_BASE 0x10090000 +/* 0x10080000 Reserved*/ +#define COMCERTO_APB_GPIO_BASE 0x10070000 +#define COMCERTO_APB_PCIePHY_BASE 0x10060000 +#define COMCERTO_APB_TIMER_BASE 0x10050000 +#define COMCERTO_APB_AHB_BASE 0x10040000 +#define COMCERTO_APB_PCIe1_BASE 0x10030000 +#define COMCERTO_APB_TDMA_BASE 0x10020000 +#define COMCERTO_APB_PCIe0_BASE 0x10010000 +#define COMCERTO_APB_TDM_BASE 0x10000000 + +/***** Physical address on AHB Bus *****/ +#define COMCERTO_AHB_HIGHMEMDDR_BASE 0xFFFF0000 +#define COMCERTO_AHB_DDR_BASE 0x80000000 +#define COMCERTO_AHB_PCIe1_BASE 0x50000000 +#define COMCERTO_AHB_PCIe0_BASE 0x40000000 +#define COMCERTO_AHB_EXP_BASE 0x20000000 +#define COMCERTO_AHB_PCIe1CMD_BASE 0x11410000 +#define COMCERTO_AHB_PCIe0CMD_BASE 0x11400000 +#define COMCERTO_AHB_IBR_BASE 0x11000000 +#define COMCERTO_AHB_APB_BASE 0x10000000 +#define COMCERTO_AHB_USB0_BASE 0x0F000000 +#define COMCERTO_AHB_IPSEC_BASE 0x0E000000 +#define COMCERTO_AHB_DDRCONFIG_BASE 0x0D000000 +#define COMCERTO_AHB_ARAM_BASE 0x0A000000 + +/* Physical addresses of memories */ +#define COMCERTO_SDRAM_BASE (COMCERTO_AHB_DDR_BASE + SZ_8M) +#define ARAM_MEMORY_SIZE SZ_128K +#define SDRAM_MSP_MEMORY_PHY COMCERTO_AHB_DDR_BASE +#define SDRAM_MSP_MEMORY_SIZE SZ_8M + +#define IO_SPACE_LIMIT 0 + +/* + * Virtual address mapping + */ +#define SDRAM_MSP_MEMORY_VADDR 0xf0000000 +#define ARAM_MEMORY_VADDR 0xfa000000 +#define COMCERTO_PCIe0CMD_VADDR_BASE 0xfa020000 +#define COMCERTO_PCIe1CMD_VADDR_BASE 0xfa030000 +#define COMCERTO_IPSEC_VADDR_BASE 0xfb000000 +#define APB_VADDR_BASE 0xfc000000 /* VA of IO on APB bus */ + +#define APB_VADDR(x) ((x) - COMCERTO_AHB_APB_BASE + APB_VADDR_BASE) +#endif diff --git a/arch/arm/mach-comcerto/include/mach/debug-macro.S b/arch/arm/mach-comcerto/include/mach/debug-macro.S new file mode 100644 index 0000000..42bc5a0 --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/debug-macro.S @@ -0,0 +1,46 @@ +/* + * arch/arm/mach-comcerto/include/mach/debug-macro.S + * + * Copyright (C) 2004,2005 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define UART_LSR 0x14 + + .macro addruart,rx, tmp + mrc p15, 0, \rx, c1, c0 + tst \rx, #1 @ MMU enabled? + moveq \rx, #0x10000000 @ physical base address + movne \rx, #0xfc000000 @ virtual base + orr \rx, \rx, #0x00090000 @ UART0 + .endm + + .macro senduart,rd,rx + strb \rd, [\rx, #0x00] + .endm + + .macro waituart,rd,rx +1001: ldrb \rd, [\rx, #UART_LSR] + tst \rd, #0x20 @ wait for THRE + beq 1001b + .endm + + .macro busyuart,rd,rx +1001: ldrb \rd, [\rx, #UART_LSR] + and \rd, \rd, #0x60 + teq \rd, #0x60 @ wait for TEMT and THRE + bne 1001b + .endm diff --git a/arch/arm/mach-comcerto/include/mach/entry-macro.S b/arch/arm/mach-comcerto/include/mach/entry-macro.S new file mode 100644 index 0000000..442ad92 --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/entry-macro.S @@ -0,0 +1,70 @@ +/* + * arch/arm/mach-comcerto/include/mach/entry-macro.S + * + * Copyright (C) 2004,2005 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include + +#if defined(CONFIG_ARCH_COMCERTO) + .macro disable_fiq + .endm + + .macro get_irqnr_preamble, base, tmp + .endm + + .macro arch_ret_to_user, tmp1, tmp2 + .endm + + .macro get_irqnr_and_base, irqnr, irqstat, base, tmp + + mov \irqnr, #0 + ldr \base, =COMCERTO_INTC_CSP_IRQ_WNR + ldr \tmp, [\base] + cmp \tmp, #0 + beq 10011f + cmp \tmp, #32 + movne \irqnr, \tmp + bne 1004f + + +10011: + mov \irqnr, #0 + ldr \base, =COMCERTO_INTC_STATUS_REG_1 + ldr \tmp, =COMCERTO_INTC_CSP_IRQMASK_1 + ldr \irqstat, [\base] + ldr \tmp, [\tmp] + ands \irqstat, \irqstat, \tmp + beq 1004f + + tst \irqstat, #0x2000 + movne \irqnr,#13 + bne 1003f + +1001: tst \irqstat, #1 + bne 1003f + add \irqnr, \irqnr, #1 + mov \irqstat, \irqstat, lsr #1 + cmp \irqnr, #32 + bcc 1001b +1003: add \irqnr, \irqnr, #32 + +1004: + .endm + + .macro irq_prio_table + .endm +#endif diff --git a/arch/arm/mach-comcerto/include/mach/hardware.h b/arch/arm/mach-comcerto/include/mach/hardware.h new file mode 100644 index 0000000..577289d --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/hardware.h @@ -0,0 +1,37 @@ +/* + * arch/arm/mach-comcerto/include/mach/hardware.h + * + * Copyright (C) 2006 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __ASM_ARCH_HARDWARE_H +#define __ASM_ARCH_HARDWARE_H + +/***** Device *****/ +#if defined(CONFIG_ARCH_M83XXX) + #include +#else + #error "mach/hardware.h : Unknown architecture" +#endif + +#ifndef __ASSEMBLY__ +struct sys_timer; +extern struct sys_timer comcerto_timer; +extern void device_map_io(void); +#endif + +#endif diff --git a/arch/arm/mach-comcerto/include/mach/io.h b/arch/arm/mach-comcerto/include/mach/io.h new file mode 100644 index 0000000..be3320f --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/io.h @@ -0,0 +1,32 @@ +/* + * arch/arm/mach-comcerto/include/mach/io.h + * + * Copyright (C) 2004,2005 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __ASM_ARCH_COMCERTO1000_IO_H +#define __ASM_ARCH_COMCERTO1000_IO_H + +#include + +#if !defined(CONFIG_PCI) + +#define __io(a) ((void __iomem *)(a)) +#define __mem_pci(a) (a) + +#endif + +#endif /* __ASM_ARCH_COMCERTO1000_IO_H */ diff --git a/arch/arm/mach-comcerto/include/mach/memory.h b/arch/arm/mach-comcerto/include/mach/memory.h new file mode 100644 index 0000000..6d42d06 --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/memory.h @@ -0,0 +1,33 @@ +/* + * arch/arm/mach-comcerto/include/mach/memory.h + * + * Copyright (C) 2006 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __ASM_ARCH_MEMORY_H +#define __ASM_ARCH_MEMORY_H + +#include + +#define PHYS_OFFSET COMCERTO_SDRAM_BASE + +#define __virt_to_bus(x) __virt_to_phys(x) +#define __bus_to_virt(x) __phys_to_virt(x) +#define __pfn_to_bus(x) __pfn_to_phys(x) +#define __bus_to_pfn(x) __phys_to_pfn(x) + +#endif diff --git a/arch/arm/mach-comcerto/include/mach/system.h b/arch/arm/mach-comcerto/include/mach/system.h new file mode 100644 index 0000000..364cc7e --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/system.h @@ -0,0 +1,39 @@ +/* + * arch/arm/mach-comcerto/include/mach/system.h + * + * Copyright (C) 2004,2005 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __ASM_ARCH_SYSTEM_H +#define __ASM_ARCH_SYSTEM_H + +#include +#include + +static inline void arch_idle(void) +{ + /* + * This should do all the clock switching + * and wait for interrupt tricks + */ + cpu_do_idle(); +} + +static inline void arch_reset(char mode, const char *cmd) +{ +} + +#endif /* __ASM_ARCH_SYSTEM_H */ diff --git a/arch/arm/mach-comcerto/include/mach/timex.h b/arch/arm/mach-comcerto/include/mach/timex.h new file mode 100644 index 0000000..4ca125d --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/timex.h @@ -0,0 +1,28 @@ +/* + * linux/include/asm-arm/arch-comcerto/timex.h + * + * Copyright (C) 2006 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __ASM_ARCH_TIMEX_H__ +#define __ASM_ARCH_TIMEX_H__ + +#include + +#define CLOCK_TICK_RATE (COMCERTO_DEFAULTAHBCLK * 1000 * 1000) + +#endif diff --git a/arch/arm/mach-comcerto/include/mach/uncompress.h b/arch/arm/mach-comcerto/include/mach/uncompress.h new file mode 100644 index 0000000..e3e6938 --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/uncompress.h @@ -0,0 +1,58 @@ +/* + * arch/arm/mach-comcerto/include/mach/uncompress.h + * + * Copyright (C) 2004,2008 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __ASM_ARCH_UNCOMPRESS_H +#define __ASM_ARCH_UNCOMPRESS_H + +#define UART_DR (*(volatile unsigned long *)0x10090000) +#define UART_LSR (*(volatile unsigned long *)0x10090014) + +static inline void putc(int c) +{ + while (!(UART_LSR & 0x20)) + barrier(); + + UART_DR = c; +} + +static void flush(void) +{ +} +static inline void puts(const char *ptr) +{ + char c; + + while ((c = *ptr++) != '\0') { + if (c == '\n') + putc('\r'); + putc(c); + } + + flush(); + +} + +/* + * nothing to do + */ +#define arch_decomp_setup() + +#define arch_decomp_wdog() + +#endif /* __ASM_ARCH_UNCOMPRESS_H */ diff --git a/arch/arm/mach-comcerto/include/mach/vmalloc.h b/arch/arm/mach-comcerto/include/mach/vmalloc.h new file mode 100644 index 0000000..f807501 --- /dev/null +++ b/arch/arm/mach-comcerto/include/mach/vmalloc.h @@ -0,0 +1,21 @@ +/* + * arch/arm/mach-comcerto/include/mach/vmalloc.h + * + * Copyright (C) 2004,2005 Mindspeed Technologies, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#define VMALLOC_END (0xF0000000) -- 1.5.4.3