Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 208811
b: refs/heads/master
c: 054d5c9
h: refs/heads/master
i:
  208809: a253548
  208807: 7fcf78d
v: v3
  • Loading branch information
Russell King committed Aug 9, 2010
1 parent 0c2f1e8 commit ca433f1
Show file tree
Hide file tree
Showing 15 changed files with 464 additions and 31 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2192482ee5ce5d5d4a6cec0c351b2d3a744606eb
refs/heads/master: 054d5c9238f3c577ad51195c3ee7803613f322cc
11 changes: 6 additions & 5 deletions trunk/MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -617,10 +617,10 @@ M: Richard Purdie <rpurdie@rpsys.net>
S: Maintained

ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
M: Paulius Zaleckas <paulius.zaleckas@gmail.com>
M: Hans Ulli Kroll <ulli.kroll@googlemail.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
T: git git://gitorious.org/linux-gemini/mainline.git
S: Odd Fixes
T: git git://git.berlios.de/gemini-board
S: Maintained
F: arch/arm/mach-gemini/

ARM/EBSA110 MACHINE SUPPORT
Expand All @@ -642,9 +642,10 @@ T: topgit git://git.openezx.org/openezx.git
F: arch/arm/mach-pxa/ezx.c

ARM/FARADAY FA526 PORT
M: Paulius Zaleckas <paulius.zaleckas@gmail.com>
M: Hans Ulli Kroll <ulli.kroll@googlemail.com>
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
S: Odd Fixes
S: Maintained
T: git://git.berlios.de/gemini-board
F: arch/arm/mm/*-fa*

ARM/FOOTBRIDGE ARCHITECTURE
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/arm/include/asm/elf.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ typedef struct user_fp elf_fpregset_t;

#define R_ARM_THM_CALL 10
#define R_ARM_THM_JUMP24 30
#define R_ARM_THM_MOVW_ABS_NC 47
#define R_ARM_THM_MOVT_ABS 48

/*
* These are used to set parameters in the core dumps.
Expand Down
34 changes: 34 additions & 0 deletions trunk/arch/arm/kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,9 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
unsigned long loc;
Elf32_Sym *sym;
s32 offset;
#ifdef CONFIG_THUMB2_KERNEL
u32 upper, lower, sign, j1, j2;
#endif

offset = ELF32_R_SYM(rel->r_info);
if (offset < 0 || offset > (symsec->sh_size / sizeof(Elf32_Sym))) {
Expand Down Expand Up @@ -185,6 +187,7 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
(offset & 0x0fff);
break;

#ifdef CONFIG_THUMB2_KERNEL
case R_ARM_THM_CALL:
case R_ARM_THM_JUMP24:
upper = *(u16 *)loc;
Expand Down Expand Up @@ -233,9 +236,40 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
*(u16 *)(loc + 2) = (u16)((lower & 0xd000) |
(j1 << 13) | (j2 << 11) |
((offset >> 1) & 0x07ff));
break;

case R_ARM_THM_MOVW_ABS_NC:
case R_ARM_THM_MOVT_ABS:
upper = *(u16 *)loc;
lower = *(u16 *)(loc + 2);

/*
* MOVT/MOVW instructions encoding in Thumb-2:
*
* i = upper[10]
* imm4 = upper[3:0]
* imm3 = lower[14:12]
* imm8 = lower[7:0]
*
* imm16 = imm4:i:imm3:imm8
*/
offset = ((upper & 0x000f) << 12) |
((upper & 0x0400) << 1) |
((lower & 0x7000) >> 4) | (lower & 0x00ff);
offset = (offset ^ 0x8000) - 0x8000;
offset += sym->st_value;

if (ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_ABS)
offset >>= 16;

*(u16 *)loc = (u16)((upper & 0xfbf0) |
((offset & 0xf000) >> 12) |
((offset & 0x0800) >> 1));
*(u16 *)(loc + 2) = (u16)((lower & 0x8f00) |
((offset & 0x0700) << 4) |
(offset & 0x00ff));
break;
#endif

default:
printk(KERN_ERR "%s: unknown relocation: %u\n",
Expand Down
7 changes: 0 additions & 7 deletions trunk/arch/arm/mach-clps711x/include/mach/hardware.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,6 @@
#define SYSPLD_VIRT_BASE 0xfe000000
#define SYSPLD_BASE SYSPLD_VIRT_BASE

#ifndef __ASSEMBLER__

#define PCIO_BASE IO_BASE

#endif


#if defined (CONFIG_ARCH_AUTCPU12)

#define CS89712_VIRT_BASE CLPS7111_VIRT_BASE
Expand Down
21 changes: 21 additions & 0 deletions trunk/arch/arm/mach-gemini/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,34 @@ if ARCH_GEMINI

menu "Cortina Systems Gemini Implementations"

config MACH_NAS4220B
bool "Raidsonic NAS-4220-B"
select GEMINI_MEM_SWAP
help
Say Y here if you intend to run this kernel on a
Raidsonic NAS-4220-B.

config MACH_RUT100
bool "Teltonika RUT100"
select GEMINI_MEM_SWAP
help
Say Y here if you intend to run this kernel on a
Teltonika 3G Router RUT100.

config MACH_WBD111
bool "Wiliboard WBD-111"
select GEMINI_MEM_SWAP
help
Say Y here if you intend to run this kernel on a
Wiliboard WBD-111.

config MACH_WBD222
bool "Wiliboard WBD-222"
select GEMINI_MEM_SWAP
help
Say Y here if you intend to run this kernel on a
Wiliboard WBD-222.

endmenu

config GEMINI_MEM_SWAP
Expand Down
3 changes: 3 additions & 0 deletions trunk/arch/arm/mach-gemini/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,7 @@
obj-y := irq.o mm.o time.o devices.o gpio.o

# Board-specific support
obj-$(CONFIG_MACH_NAS4220B) += board-nas4220b.o
obj-$(CONFIG_MACH_RUT100) += board-rut1xx.o
obj-$(CONFIG_MACH_WBD111) += board-wbd111.o
obj-$(CONFIG_MACH_WBD222) += board-wbd222.o
111 changes: 111 additions & 0 deletions trunk/arch/arm/mach-gemini/board-nas4220b.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
/*
* Support for Raidsonic NAS-4220-B
*
* Copyright (C) 2009 Janos Laube <janos.dev@gmail.com>
*
* based on rut1xx.c
* Copyright (C) 2008 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
*
* 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.
*/

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/leds.h>
#include <linux/input.h>
#include <linux/gpio_keys.h>
#include <linux/mdio-gpio.h>
#include <linux/io.h>

#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>

#include <mach/hardware.h>
#include <mach/global_reg.h>

#include "common.h"

static struct sys_timer ib4220b_timer = {
.init = gemini_timer_init,
};

static struct gpio_led ib4220b_leds[] = {
{
.name = "nas4220b:orange:hdd",
.default_trigger = "none",
.gpio = 60,
},
{
.name = "nas4220b:green:os",
.default_trigger = "heartbeat",
.gpio = 62,
},
};

static struct gpio_led_platform_data ib4220b_leds_data = {
.num_leds = ARRAY_SIZE(ib4220b_leds),
.leds = ib4220b_leds,
};

static struct platform_device ib4220b_led_device = {
.name = "leds-gpio",
.id = -1,
.dev = {
.platform_data = &ib4220b_leds_data,
},
};

static struct gpio_keys_button ib4220b_keys[] = {
{
.code = KEY_SETUP,
.gpio = 61,
.active_low = 1,
.desc = "Backup Button",
.type = EV_KEY,
},
{
.code = KEY_RESTART,
.gpio = 63,
.active_low = 1,
.desc = "Softreset Button",
.type = EV_KEY,
},
};

static struct gpio_keys_platform_data ib4220b_keys_data = {
.buttons = ib4220b_keys,
.nbuttons = ARRAY_SIZE(ib4220b_keys),
};

static struct platform_device ib4220b_key_device = {
.name = "gpio-keys",
.id = -1,
.dev = {
.platform_data = &ib4220b_keys_data,
},
};

static void __init ib4220b_init(void)
{
gemini_gpio_init();
platform_register_uart();
platform_register_pflash(SZ_16M, NULL, 0);
platform_device_register(&ib4220b_led_device);
platform_device_register(&ib4220b_key_device);
}

MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B")
.phys_io = 0x7fffc000,
.io_pg_offst = ((0xffffc000) >> 18) & 0xfffc,
.boot_params = 0x100,
.map_io = gemini_map_io,
.init_irq = gemini_init_irq,
.timer = &ib4220b_timer,
.init_machine = ib4220b_init,
MACHINE_END
Loading

0 comments on commit ca433f1

Please sign in to comment.