Commit f5f29151 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'bcm2835-for-3.10-multiplatform' of...

Merge tag 'bcm2835-for-3.10-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-rpi into next/multiplatform

From Stephen Warren <swarren@wwwdotorg.org>:

ARM: bcm2835: convert to multi-platform

This branch (patch) converts BCM2835 to support being built into a
multi-platform single zImage. This mostly entails a few small Kconfig
tweaks, move the earlyprintk implementation to the standard multi-
platform location, and deleting some unnecessary files.

* tag 'bcm2835-for-3.10-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-rpi:
  ARM: bcm2835: convert to multi-platform

Conflicts:
	arch/arm/Kconfig
	arch/arm/Kconfig.debug
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 806a94f2 f1ac922d
...@@ -361,26 +361,6 @@ config ARCH_AT91 ...@@ -361,26 +361,6 @@ config ARCH_AT91
This enables support for systems based on Atmel This enables support for systems based on Atmel
AT91RM9200 and AT91SAM9* processors. AT91RM9200 and AT91SAM9* processors.
config ARCH_BCM2835
bool "Broadcom BCM2835 family"
select ARCH_REQUIRE_GPIOLIB
select ARM_AMBA
select ARM_ERRATA_411920
select ARM_TIMER_SP804
select CLKDEV_LOOKUP
select CLKSRC_OF
select COMMON_CLK
select CPU_V6
select GENERIC_CLOCKEVENTS
select MULTI_IRQ_HANDLER
select PINCTRL
select PINCTRL_BCM2835
select SPARSE_IRQ
select USE_OF
help
This enables support for the Broadcom BCM2835 SoC. This SoC is
use in the Raspberry Pi, and Roku 2 devices.
config ARCH_CLPS711X config ARCH_CLPS711X
bool "Cirrus Logic CLPS711x/EP721x/EP731x-based" bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
select ARCH_REQUIRE_GPIOLIB select ARCH_REQUIRE_GPIOLIB
...@@ -981,6 +961,8 @@ source "arch/arm/mach-at91/Kconfig" ...@@ -981,6 +961,8 @@ source "arch/arm/mach-at91/Kconfig"
source "arch/arm/mach-bcm/Kconfig" source "arch/arm/mach-bcm/Kconfig"
source "arch/arm/mach-bcm2835/Kconfig"
source "arch/arm/mach-clps711x/Kconfig" source "arch/arm/mach-clps711x/Kconfig"
source "arch/arm/mach-cns3xxx/Kconfig" source "arch/arm/mach-cns3xxx/Kconfig"
......
...@@ -89,6 +89,10 @@ choice ...@@ -89,6 +89,10 @@ choice
bool "Kernel low-level debugging on 9263 and 9g45" bool "Kernel low-level debugging on 9263 and 9g45"
depends on HAVE_AT91_DBGU1 depends on HAVE_AT91_DBGU1
config DEBUG_BCM2835
bool "Kernel low-level debugging on BCM2835 PL011 UART"
depends on ARCH_BCM2835
config DEBUG_CLPS711X_UART1 config DEBUG_CLPS711X_UART1
bool "Kernel low-level debugging messages via UART1" bool "Kernel low-level debugging messages via UART1"
depends on ARCH_CLPS711X depends on ARCH_CLPS711X
...@@ -593,6 +597,7 @@ endchoice ...@@ -593,6 +597,7 @@ endchoice
config DEBUG_LL_INCLUDE config DEBUG_LL_INCLUDE
string string
default "debug/bcm2835.S" if DEBUG_BCM2835
default "debug/cns3xxx.S" if DEBUG_CNS3XXX default "debug/cns3xxx.S" if DEBUG_CNS3XXX
default "debug/icedcc.S" if DEBUG_ICEDCC default "debug/icedcc.S" if DEBUG_ICEDCC
default "debug/imx.S" if DEBUG_IMX1_UART || \ default "debug/imx.S" if DEBUG_IMX1_UART || \
......
...@@ -29,6 +29,8 @@ CONFIG_EMBEDDED=y ...@@ -29,6 +29,8 @@ CONFIG_EMBEDDED=y
CONFIG_PROFILING=y CONFIG_PROFILING=y
CONFIG_OPROFILE=y CONFIG_OPROFILE=y
CONFIG_JUMP_LABEL=y CONFIG_JUMP_LABEL=y
CONFIG_ARCH_MULTI_V6=y
# CONFIG_ARCH_MULTI_V7 is not set
CONFIG_ARCH_BCM2835=y CONFIG_ARCH_BCM2835=y
CONFIG_PREEMPT_VOLUNTARY=y CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_AEABI=y CONFIG_AEABI=y
......
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
* *
*/ */
#include <mach/bcm2835_soc.h> #define BCM2835_DEBUG_PHYS 0x20201000
#define BCM2835_DEBUG_VIRT 0xf0201000
.macro addruart, rp, rv, tmp .macro addruart, rp, rv, tmp
ldr \rp, =BCM2835_DEBUG_PHYS ldr \rp, =BCM2835_DEBUG_PHYS
......
config ARCH_BCM2835
bool "Broadcom BCM2835 family" if ARCH_MULTI_V6
select ARCH_REQUIRE_GPIOLIB
select ARM_AMBA
select ARM_ERRATA_411920
select ARM_TIMER_SP804
select CLKDEV_LOOKUP
select CLKSRC_OF
select CPU_V6
select GENERIC_CLOCKEVENTS
select PINCTRL
select PINCTRL_BCM2835
help
This enables support for the Broadcom BCM2835 SoC. This SoC is
use in the Raspberry Pi, and Roku 2 devices.
...@@ -23,8 +23,6 @@ ...@@ -23,8 +23,6 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <mach/bcm2835_soc.h>
#define PM_RSTC 0x1c #define PM_RSTC 0x1c
#define PM_RSTS 0x20 #define PM_RSTS 0x20
#define PM_WDOG 0x24 #define PM_WDOG 0x24
...@@ -34,6 +32,10 @@ ...@@ -34,6 +32,10 @@
#define PM_RSTC_WRCFG_FULL_RESET 0x00000020 #define PM_RSTC_WRCFG_FULL_RESET 0x00000020
#define PM_RSTS_HADWRH_SET 0x00000040 #define PM_RSTS_HADWRH_SET 0x00000040
#define BCM2835_PERIPH_PHYS 0x20000000
#define BCM2835_PERIPH_VIRT 0xf0000000
#define BCM2835_PERIPH_SIZE SZ_16M
static void __iomem *wdt_regs; static void __iomem *wdt_regs;
/* /*
......
/*
* Copyright (C) 2012 Stephen Warren
*
* Derived from code:
* Copyright (C) 2010 Broadcom
*
* 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.
*/
#ifndef __MACH_BCM2835_BCM2835_SOC_H__
#define __MACH_BCM2835_BCM2835_SOC_H__
#include <asm/sizes.h>
#define BCM2835_PERIPH_PHYS 0x20000000
#define BCM2835_PERIPH_VIRT 0xf0000000
#define BCM2835_PERIPH_SIZE SZ_16M
#define BCM2835_DEBUG_PHYS 0x20201000
#define BCM2835_DEBUG_VIRT 0xf0201000
#endif
/*
* BCM2835 system clock frequency
*
* Copyright (C) 2010 Broadcom
*
* 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
#define CLOCK_TICK_RATE (1000000)
#endif
/*
* Copyright (C) 2010 Broadcom
* Copyright (C) 2003 ARM Limited
*
* 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.
*/
#include <linux/io.h>
#include <linux/amba/serial.h>
#include <mach/bcm2835_soc.h>
#define UART0_BASE BCM2835_DEBUG_PHYS
#define BCM2835_UART_DR IOMEM(UART0_BASE + UART01x_DR)
#define BCM2835_UART_FR IOMEM(UART0_BASE + UART01x_FR)
#define BCM2835_UART_CR IOMEM(UART0_BASE + UART011_CR)
static inline void putc(int c)
{
while (__raw_readl(BCM2835_UART_FR) & UART01x_FR_TXFF)
barrier();
__raw_writel(c, BCM2835_UART_DR);
}
static inline void flush(void)
{
int fr;
do {
fr = __raw_readl(BCM2835_UART_FR);
barrier();
} while ((fr & (UART011_FR_TXFE | UART01x_FR_BUSY)) != UART011_FR_TXFE);
}
#define arch_decomp_setup()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment