-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 126926 b: refs/heads/master c: 8fa5723 h: refs/heads/master v: v3
- Loading branch information
Chris Zankel
committed
Nov 6, 2008
1 parent
d967cbd
commit 840f92d
Showing
5 changed files
with
270 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 367b8112fe2ea5c39a7bb4d263dcdd9b612fae18 | ||
refs/heads/master: 8fa5723aa7e053d498336b48448b292fc2e0458b |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# | ||
# Makefile for the Tensilica XT2000 Emulation Board | ||
# | ||
|
||
obj-y = setup.o |
55 changes: 55 additions & 0 deletions
55
trunk/arch/xtensa/platforms/xt2000/include/platform/hardware.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/* | ||
* platform/hardware.h | ||
* | ||
* This file is subject to the terms and conditions of the GNU General Public | ||
* License. See the file "COPYING" in the main directory of this archive | ||
* for more details. | ||
* | ||
* Copyright (C) 2001 Tensilica Inc. | ||
*/ | ||
|
||
/* | ||
* This file contains the hardware configuration of the XT2000 board. | ||
*/ | ||
|
||
#ifndef _XTENSA_XT2000_HARDWARE_H | ||
#define _XTENSA_XT2000_HARDWARE_H | ||
|
||
#include <variant/core.h> | ||
#include <asm/io.h> | ||
|
||
/* | ||
* Memory configuration. | ||
*/ | ||
|
||
#define PLATFORM_DEFAULT_MEM_START 0x00000000 | ||
#define PLATFORM_DEFAULT_MEM_SIZE 0x08000000 | ||
|
||
/* | ||
* Number of platform IRQs | ||
*/ | ||
#define PLATFORM_NR_IRQS 3 | ||
/* | ||
* On-board components. | ||
*/ | ||
|
||
#define SONIC83934_INTNUM XCHAL_EXTINT3_NUM | ||
#define SONIC83934_ADDR IOADDR(0x0d030000) | ||
|
||
/* | ||
* V3-PCI | ||
*/ | ||
|
||
/* The XT2000 uses the V3 as a cascaded interrupt controller for the PCI bus */ | ||
|
||
#define IRQ_PCI_A (XCHAL_NUM_INTERRUPTS + 0) | ||
#define IRQ_PCI_B (XCHAL_NUM_INTERRUPTS + 1) | ||
#define IRQ_PCI_C (XCHAL_NUM_INTERRUPTS + 2) | ||
|
||
/* | ||
* Various other components. | ||
*/ | ||
|
||
#define XT2000_LED_ADDR IOADDR(0x0d040000) | ||
|
||
#endif /* _XTENSA_XT2000_HARDWARE_H */ |
28 changes: 28 additions & 0 deletions
28
trunk/arch/xtensa/platforms/xt2000/include/platform/serial.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
/* | ||
* platform/serial.h | ||
* | ||
* This file is subject to the terms and conditions of the GNU General Public | ||
* License. See the file "COPYING" in the main directory of this archive | ||
* for more details. | ||
* | ||
* Copyright (C) 2001 Tensilica Inc. | ||
*/ | ||
|
||
#ifndef _XTENSA_XT2000_SERIAL_H | ||
#define _XTENSA_XT2000_SERIAL_H | ||
|
||
#include <variant/core.h> | ||
#include <asm/io.h> | ||
|
||
/* National-Semi PC16552D DUART: */ | ||
|
||
#define DUART16552_1_INTNUM XCHAL_EXTINT4_NUM | ||
#define DUART16552_2_INTNUM XCHAL_EXTINT5_NUM | ||
|
||
#define DUART16552_1_ADDR IOADDR(0x0d050020) /* channel 1 */ | ||
#define DUART16552_2_ADDR IOADDR(0x0d050000) /* channel 2 */ | ||
|
||
#define DUART16552_XTAL_FREQ 18432000 /* crystal frequency in Hz */ | ||
#define BASE_BAUD ( DUART16552_XTAL_FREQ / 16 ) | ||
|
||
#endif /* _XTENSA_XT2000_SERIAL_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,181 @@ | ||
/* | ||
* arch/xtensa/platforms/xt2000/setup.c | ||
* | ||
* Platform specific functions for the XT2000 board. | ||
* | ||
* Authors: Chris Zankel <chris@zankel.net> | ||
* Joe Taylor <joe@tensilica.com> | ||
* | ||
* Copyright 2001 - 2004 Tensilica 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. | ||
* | ||
*/ | ||
#include <linux/stddef.h> | ||
#include <linux/kernel.h> | ||
#include <linux/init.h> | ||
#include <linux/errno.h> | ||
#include <linux/reboot.h> | ||
#include <linux/kdev_t.h> | ||
#include <linux/types.h> | ||
#include <linux/major.h> | ||
#include <linux/console.h> | ||
#include <linux/delay.h> | ||
#include <linux/stringify.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/serial.h> | ||
#include <linux/serial_8250.h> | ||
|
||
#include <asm/processor.h> | ||
#include <asm/platform.h> | ||
#include <asm/bootparam.h> | ||
#include <platform/hardware.h> | ||
#include <platform/serial.h> | ||
|
||
/* Assumes s points to an 8-chr string. No checking for NULL. */ | ||
|
||
static void led_print (int f, char *s) | ||
{ | ||
unsigned long* led_addr = (unsigned long*) (XT2000_LED_ADDR + 0xE0) + f; | ||
int i; | ||
for (i = f; i < 8; i++) | ||
if ((*led_addr++ = *s++) == 0) | ||
break; | ||
} | ||
|
||
void platform_halt(void) | ||
{ | ||
led_print (0, " HALT "); | ||
local_irq_disable(); | ||
while (1); | ||
} | ||
|
||
void platform_power_off(void) | ||
{ | ||
led_print (0, "POWEROFF"); | ||
local_irq_disable(); | ||
while (1); | ||
} | ||
|
||
void platform_restart(void) | ||
{ | ||
/* Flush and reset the mmu, simulate a processor reset, and | ||
* jump to the reset vector. */ | ||
|
||
__asm__ __volatile__ ("movi a2, 15\n\t" | ||
"wsr a2, " __stringify(ICOUNTLEVEL) "\n\t" | ||
"movi a2, 0\n\t" | ||
"wsr a2, " __stringify(ICOUNT) "\n\t" | ||
"wsr a2, " __stringify(IBREAKENABLE) "\n\t" | ||
"wsr a2, " __stringify(LCOUNT) "\n\t" | ||
"movi a2, 0x1f\n\t" | ||
"wsr a2, " __stringify(PS) "\n\t" | ||
"isync\n\t" | ||
"jx %0\n\t" | ||
: | ||
: "a" (XCHAL_RESET_VECTOR_VADDR) | ||
: "a2" | ||
); | ||
|
||
/* control never gets here */ | ||
} | ||
|
||
void __init platform_setup(char** cmdline) | ||
{ | ||
led_print (0, "LINUX "); | ||
} | ||
|
||
/* early initialization */ | ||
|
||
extern sysmem_info_t __initdata sysmem; | ||
|
||
void platform_init(bp_tag_t* first) | ||
{ | ||
/* Set default memory block if not provided by the bootloader. */ | ||
|
||
if (sysmem.nr_banks == 0) { | ||
sysmem.nr_banks = 1; | ||
sysmem.bank[0].start = PLATFORM_DEFAULT_MEM_START; | ||
sysmem.bank[0].end = PLATFORM_DEFAULT_MEM_START | ||
+ PLATFORM_DEFAULT_MEM_SIZE; | ||
} | ||
} | ||
|
||
/* Heartbeat. Let the LED blink. */ | ||
|
||
void platform_heartbeat(void) | ||
{ | ||
static int i=0, t = 0; | ||
|
||
if (--t < 0) | ||
{ | ||
t = 59; | ||
led_print(7, i ? ".": " "); | ||
i ^= 1; | ||
} | ||
} | ||
|
||
//#define RS_TABLE_SIZE 2 | ||
//#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF|ASYNC_SKIP_TEST) | ||
|
||
#define _SERIAL_PORT(_base,_irq) \ | ||
{ \ | ||
.mapbase = (_base), \ | ||
.membase = (void*)(_base), \ | ||
.irq = (_irq), \ | ||
.uartclk = DUART16552_XTAL_FREQ, \ | ||
.iotype = UPIO_MEM, \ | ||
.flags = UPF_BOOT_AUTOCONF, \ | ||
.regshift = 2, \ | ||
} | ||
|
||
static struct plat_serial8250_port xt2000_serial_data[] = { | ||
#if XCHAL_HAVE_BE | ||
_SERIAL_PORT(DUART16552_1_ADDR + 3, DUART16552_1_INTNUM), | ||
_SERIAL_PORT(DUART16552_2_ADDR + 3, DUART16552_2_INTNUM), | ||
#else | ||
_SERIAL_PORT(DUART16552_1_ADDR, DUART16552_1_INTNUM), | ||
_SERIAL_PORT(DUART16552_2_ADDR, DUART16552_2_INTNUM), | ||
#endif | ||
{ } | ||
}; | ||
|
||
static struct platform_device xt2000_serial8250_device = { | ||
.name = "serial8250", | ||
.id = PLAT8250_DEV_PLATFORM, | ||
.dev = { | ||
.platform_data = xt2000_serial_data, | ||
}, | ||
}; | ||
|
||
static struct resource xt2000_sonic_res[] = { | ||
{ | ||
.start = SONIC83934_ADDR, | ||
.end = SONIC83934_ADDR + 0xff, | ||
.flags = IORESOURCE_MEM, | ||
}, | ||
{ | ||
.start = SONIC83934_INTNUM, | ||
.end = SONIC83934_INTNUM, | ||
.flags = IORESOURCE_IRQ, | ||
}, | ||
}; | ||
|
||
static struct platform_device xt2000_sonic_device = { | ||
.name = "xtsonic", | ||
.num_resources = ARRAY_SIZE(xt2000_sonic_res), | ||
.resource = xt2000_sonic_res, | ||
}; | ||
|
||
static int __init xt2000_setup_devinit(void) | ||
{ | ||
platform_device_register(&xt2000_serial8250_device); | ||
platform_device_register(&xt2000_sonic_device); | ||
|
||
return 0; | ||
} | ||
|
||
device_initcall(xt2000_setup_devinit); |