Commit 0d04f34a357d004364b58159b64aad354e65137e

Authored by Stephen Warren
Committed by Albert ARIBAUD
1 parent efad6cf881

ARM: add Raspberry Pi model B board, using BCM2835 SoC

The Raspberry Pi model B uses the BCM2835 SoC, has 256MB of RAM,
contains an SMSC 9512 USB LAN/Hub chip, and various IO connectors.
For more details, see http://www.raspberrypi.org/.

Various portions (cache enable, MACH_TYPE setup, RAM size limit, stack
relocation to top of RAM) extracted from work by:
Oleksandr Tymoshenko <gonzo@bluezbox.com>.

GPIO driver enablement by Vikram Narayanan <vikram186@gmail.com>.

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
Acked-by: Tom Rini <trini@ti.com>

Showing 5 changed files with 177 additions and 0 deletions Side-by-side Diff

... ... @@ -952,6 +952,10 @@
952 952 trimslice Tegra2 (ARM7 & A9 Dual Core)
953 953 whistler Tegra2 (ARM7 & A9 Dual Core)
954 954  
  955 +Stephen Warren <swarren@wwwdotorg.org>
  956 +
  957 + rpi_b BCM2835 (ARM1176)
  958 +
955 959 Thomas Weber <weber@corscience.de>
956 960  
957 961 devkit8000 ARM ARMV7 (OMAP3530 SoC)
board/raspberrypi/rpi_b/Makefile
  1 +#
  2 +# See file CREDITS for list of people who contributed to this
  3 +# project.
  4 +#
  5 +# This program is free software; you can redistribute it and/or
  6 +# modify it under the terms of the GNU General Public License
  7 +# version 2 as published by the Free Software Foundation.
  8 +#
  9 +# This program is distributed in the hope that it will be useful, but
  10 +# WITHOUT ANY WARRANTY; without even the implied warranty of
  11 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12 +# GNU General Public License for more details.
  13 +#
  14 +
  15 +include $(TOPDIR)/config.mk
  16 +
  17 +LIB = $(obj)lib$(BOARD).o
  18 +
  19 +COBJS := $(BOARD).o
  20 +
  21 +SRCS := $(COBJS:.o=.c)
  22 +OBJS := $(addprefix $(obj),$(COBJS))
  23 +
  24 +$(LIB): $(obj).depend $(OBJS)
  25 + $(call cmd_link_o_target, $(OBJS))
  26 +
  27 +#########################################################################
  28 +
  29 +# defines $(obj).depend target
  30 +include $(SRCTREE)/rules.mk
  31 +
  32 +sinclude $(obj).depend
  33 +
  34 +#########################################################################
board/raspberrypi/rpi_b/rpi_b.c
  1 +/*
  2 + * (C) Copyright 2012 Stephen Warren
  3 + *
  4 + * See file CREDITS for list of people who contributed to this
  5 + * project.
  6 + *
  7 + * This program is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU General Public License
  9 + * version 2 as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful, but
  12 + * WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + */
  16 +
  17 +#include <common.h>
  18 +#include <asm/global_data.h>
  19 +
  20 +DECLARE_GLOBAL_DATA_PTR;
  21 +
  22 +int dram_init(void)
  23 +{
  24 + gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
  25 +
  26 + return 0;
  27 +}
  28 +
  29 +int board_init(void)
  30 +{
  31 + gd->bd->bi_boot_params = 0x100;
  32 +
  33 + return 0;
  34 +}
... ... @@ -53,6 +53,7 @@
53 53 apollon arm arm1136 apollon - omap24xx
54 54 omap2420h4 arm arm1136 - ti omap24xx
55 55 tnetv107x_evm arm arm1176 tnetv107xevm ti tnetv107x
  56 +rpi_b arm arm1176 rpi_b raspberrypi bcm2835
56 57 integratorap_cm720t arm arm720t integrator armltd - integratorap:CM720T
57 58 integratorap_cm920t arm arm920t integrator armltd - integratorap:CM920T
58 59 integratorcp_cm920t arm arm920t integrator armltd - integratorcp:CM920T
include/configs/rpi_b.h
  1 +/*
  2 + * (C) Copyright 2012 Stephen Warren
  3 + *
  4 + * See file CREDITS for list of people who contributed to this
  5 + * project.
  6 + *
  7 + * This program is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU General Public License
  9 + * version 2 as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful, but
  12 + * WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + */
  16 +
  17 +#ifndef __CONFIG_H
  18 +#define __CONFIG_H
  19 +
  20 +#include <asm/sizes.h>
  21 +
  22 +/* Architecture, CPU, etc.*/
  23 +#define CONFIG_ARM1176
  24 +#define CONFIG_BCM2835
  25 +#define CONFIG_ARCH_CPU_INIT
  26 +/*
  27 + * 2835 is a SKU in a series for which the 2708 is the first or primary SoC,
  28 + * so 2708 has historically been used rather than a dedicated 2835 ID.
  29 + */
  30 +#define CONFIG_MACH_TYPE MACH_TYPE_BCM2708
  31 +
  32 +/* Timer */
  33 +#define CONFIG_SYS_HZ 1000000
  34 +
  35 +/* Memory layout */
  36 +#define CONFIG_NR_DRAM_BANKS 1
  37 +#define CONFIG_SYS_SDRAM_BASE 0x00000000
  38 +#define CONFIG_SYS_TEXT_BASE 0x00008000
  39 +#define CONFIG_SYS_UBOOT_BASE CONFIG_SYS_TEXT_BASE
  40 +/*
  41 + * The board really has 256M. However, the VC (VideoCore co-processor) shares
  42 + * the RAM, and uses a configurable portion at the top. We tell U-Boot that a
  43 + * smaller amount of RAM is present in order to avoid stomping on the area
  44 + * the VC uses.
  45 + */
  46 +#define CONFIG_SYS_SDRAM_SIZE SZ_128M
  47 +#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + \
  48 + CONFIG_SYS_SDRAM_SIZE - \
  49 + GENERATED_GBL_DATA_SIZE)
  50 +#define CONFIG_SYS_MALLOC_LEN SZ_4M
  51 +#define CONFIG_SYS_MEMTEST_START 0x00100000
  52 +#define CONFIG_SYS_MEMTEST_END 0x00200000
  53 +
  54 +/* Flash */
  55 +#define CONFIG_SYS_NO_FLASH
  56 +
  57 +/* Devices */
  58 +/* GPIO */
  59 +#define CONFIG_BCM2835_GPIO
  60 +
  61 +/* Console UART */
  62 +#define CONFIG_PL011_SERIAL
  63 +#define CONFIG_PL011_CLOCK 3000000
  64 +#define CONFIG_PL01x_PORTS { (void *)0x20201000 }
  65 +#define CONFIG_CONS_INDEX 0
  66 +#define CONFIG_BAUDRATE 115200
  67 +
  68 +/* Console configuration */
  69 +#define CONFIG_SYS_CBSIZE 1024
  70 +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
  71 + sizeof(CONFIG_SYS_PROMPT) + 16)
  72 +
  73 +/* Environment */
  74 +#define CONFIG_ENV_SIZE SZ_16K
  75 +#define CONFIG_ENV_IS_NOWHERE
  76 +#define CONFIG_SYS_LOAD_ADDR 0x1000000
  77 +
  78 +/* Shell */
  79 +#define CONFIG_SYS_HUSH_PARSER
  80 +#define CONFIG_SYS_MAXARGS 8
  81 +#define CONFIG_SYS_PROMPT "U-Boot> "
  82 +#define CONFIG_SYS_LONGHELP
  83 +#define CONFIG_CMDLINE_EDITING
  84 +#define CONFIG_COMMAND_HISTORY
  85 +#define CONFIG_AUTO_COMPLETE
  86 +
  87 +/* Commands */
  88 +#include <config_cmd_default.h>
  89 +#define CONFIG_CMD_BOOTZ
  90 +#define CONFIG_CMD_GPIO
  91 +/* Some things don't make sense on this HW or yet */
  92 +#undef CONFIG_CMD_FPGA
  93 +#undef CONFIG_CMD_NET
  94 +#undef CONFIG_CMD_NFS
  95 +#undef CONFIG_CMD_SAVEENV
  96 +
  97 +/* Device tree support for bootm/bootz */
  98 +#define CONFIG_OF_LIBFDT
  99 +/* ATAGs support for bootm/bootz */
  100 +#define CONFIG_SETUP_MEMORY_TAGS
  101 +#define CONFIG_CMDLINE_TAG
  102 +#define CONFIG_INITRD_TAG
  103 +
  104 +#endif