Commit 125190ef authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] sh: Renesas RTS7751R2D board support.

From: Paul Mundt <lethal@Linux-SH.ORG>

This adds support for the Renesas Technology Sales RTS7751R2D board.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6d2f01f1
#
# Makefile for the RTS7751R2D specific parts of the kernel
#
# Note! Dependencies are done automagically by 'make dep', which also
# removes any old dependencies. DON'T put your own dependencies here
# unless it's something special (ie not a .c file).
#
obj-y := mach.o setup.o io.o irq.o led.o
/*
* linux/arch/sh/kernel/io_rts7751r2d.c
*
* Copyright (C) 2001 Ian da Silva, Jeremy Siegel
* Based largely on io_se.c.
*
* I/O routine for Renesas Technology sales RTS7751R2D.
*
* Initial version only to support LAN access; some
* placeholder code from io_rts7751r2d.c left in with the
* expectation of later SuperIO and PCMCIA access.
*/
#include <linux/kernel.h>
#include <linux/types.h>
#include <asm/io.h>
#include <asm/rts7751r2d/rts7751r2d.h>
#include <asm/addrspace.h>
#include <linux/module.h>
#include <linux/pci.h>
#include "../../../drivers/pci/pci-sh7751.h"
/*
* The 7751R RTS7751R2D uses the built-in PCI controller (PCIC)
* of the 7751R processor, and has a SuperIO accessible via the PCI.
* The board also includes a PCMCIA controller on its memory bus,
* like the other Solution Engine boards.
*/
#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR)
#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR)
#define PCI_IO_AREA SH7751_PCI_IO_BASE
#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
#define maybebadio(name,port) \
printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \
#name, (port), (__u32) __builtin_return_address(0))
static inline void delay(void)
{
ctrl_inw(0xa0000000);
}
static inline unsigned long port2adr(unsigned int port)
{
if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
if (port == 0x3f6)
return (PA_AREA5_IO + 0x80c);
else
return (PA_AREA5_IO + 0x1000 + ((port-0x1f0) << 1));
else
maybebadio(port2adr, (unsigned long)port);
return port;
}
static inline unsigned long port88796l(unsigned int port, int flag)
{
unsigned long addr;
if (flag)
addr = PA_AX88796L + ((port - AX88796L_IO_BASE) << 1);
else
addr = PA_AX88796L + ((port - AX88796L_IO_BASE) << 1) + 0x1000;
return addr;
}
/* The 7751R RTS7751R2D seems to have everything hooked */
/* up pretty normally (nothing on high-bytes only...) so this */
/* shouldn't be needed */
static inline int shifted_port(unsigned long port)
{
/* For IDE registers, value is not shifted */
if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
return 0;
else
return 1;
}
/* In case someone configures the kernel w/o PCI support: in that */
/* scenario, don't ever bother to check for PCI-window addresses */
/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
#if defined(CONFIG_PCI)
#define CHECK_SH7751_PCIIO(port) \
((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
#else
#define CHECK_SH7751_PCIIO(port) (0)
#endif
#if defined(CONFIG_NE2000) || defined(CONFIG_NE2000_MODULE)
#define CHECK_AX88796L_PORT(port) \
((port >= AX88796L_IO_BASE) && (port < (AX88796L_IO_BASE+0x20)))
#else
#define CHECK_AX88796L_PORT(port) (0)
#endif
/*
* General outline: remap really low stuff [eventually] to SuperIO,
* stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO)
* is mapped through the PCI IO window. Stuff with high bits (PXSEG)
* should be way beyond the window, and is used w/o translation for
* compatibility.
*/
unsigned char rts7751r2d_inb(unsigned long port)
{
if (CHECK_AX88796L_PORT(port))
return (*(volatile unsigned short *)port88796l(port, 0)) & 0xff;
else if (PXSEG(port))
return *(volatile unsigned char *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
return *(volatile unsigned char *)PCI_IOMAP(port);
else
return (*(volatile unsigned short *)port2adr(port) & 0xff);
}
unsigned char rts7751r2d_inb_p(unsigned long port)
{
unsigned char v;
if (CHECK_AX88796L_PORT(port))
v = (*(volatile unsigned short *)port88796l(port, 0)) & 0xff;
else if (PXSEG(port))
v = *(volatile unsigned char *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
v = *(volatile unsigned char *)PCI_IOMAP(port);
else
v = (*(volatile unsigned short *)port2adr(port) & 0xff);
delay();
return v;
}
unsigned short rts7751r2d_inw(unsigned long port)
{
if (CHECK_AX88796L_PORT(port))
maybebadio(inw, port);
else if (PXSEG(port))
return *(volatile unsigned short *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
return *(volatile unsigned short *)PCI_IOMAP(port);
else
maybebadio(inw, port);
return 0;
}
unsigned int rts7751r2d_inl(unsigned long port)
{
if (CHECK_AX88796L_PORT(port))
maybebadio(inl, port);
else if (PXSEG(port))
return *(volatile unsigned long *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
return *(volatile unsigned long *)PCI_IOMAP(port);
else
maybebadio(inl, port);
return 0;
}
void rts7751r2d_outb(unsigned char value, unsigned long port)
{
if (CHECK_AX88796L_PORT(port))
*((volatile unsigned short *)port88796l(port, 0)) = value;
else if (PXSEG(port))
*(volatile unsigned char *)port = value;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
*(volatile unsigned char *)PCI_IOMAP(port) = value;
else
*(volatile unsigned short *)port2adr(port) = value;
}
void rts7751r2d_outb_p(unsigned char value, unsigned long port)
{
if (CHECK_AX88796L_PORT(port))
*((volatile unsigned short *)port88796l(port, 0)) = value;
else if (PXSEG(port))
*(volatile unsigned char *)port = value;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
*(volatile unsigned char *)PCI_IOMAP(port) = value;
else
*(volatile unsigned short *)port2adr(port) = value;
delay();
}
void rts7751r2d_outw(unsigned short value, unsigned long port)
{
if (CHECK_AX88796L_PORT(port))
maybebadio(outw, port);
else if (PXSEG(port))
*(volatile unsigned short *)port = value;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
*(volatile unsigned short *)PCI_IOMAP(port) = value;
else
maybebadio(outw, port);
}
void rts7751r2d_outl(unsigned int value, unsigned long port)
{
if (CHECK_AX88796L_PORT(port))
maybebadio(outl, port);
else if (PXSEG(port))
*(volatile unsigned long *)port = value;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
*(volatile unsigned long *)PCI_IOMAP(port) = value;
else
maybebadio(outl, port);
}
void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count)
{
volatile __u8 *bp;
volatile __u16 *p;
if (CHECK_AX88796L_PORT(port)) {
p = (volatile unsigned short *)port88796l(port, 0);
while (count--) *((unsigned char *) addr)++ = *p & 0xff;
} else if (PXSEG(port))
while (count--) *((unsigned char *) addr)++ = *(volatile unsigned char *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
bp = (__u8 *)PCI_IOMAP(port);
while (count--) *((volatile unsigned char *) addr)++ = *bp;
} else {
p = (volatile unsigned short *)port2adr(port);
while (count--) *((unsigned char *) addr)++ = *p & 0xff;
}
}
void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
{
volatile __u16 *p;
if (CHECK_AX88796L_PORT(port))
p = (volatile unsigned short *)port88796l(port, 1);
else if (PXSEG(port))
p = (volatile unsigned short *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
p = (volatile unsigned short *)PCI_IOMAP(port);
else
p = (volatile unsigned short *)port2adr(port);
while (count--) *((__u16 *) addr)++ = *p;
}
void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count)
{
if (CHECK_AX88796L_PORT(port))
maybebadio(insl, port);
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
while (count--) *((__u32 *) addr)++ = *p;
} else
maybebadio(insl, port);
}
void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count)
{
volatile __u8 *bp;
volatile __u16 *p;
if (CHECK_AX88796L_PORT(port)) {
p = (volatile unsigned short *)port88796l(port, 0);
while (count--) *p = *((unsigned char *) addr)++;
} else if (PXSEG(port))
while (count--) *(volatile unsigned char *)port = *((unsigned char *) addr)++;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
bp = (__u8 *)PCI_IOMAP(port);
while (count--) *bp = *((volatile unsigned char *) addr)++;
} else {
p = (volatile unsigned short *)port2adr(port);
while (count--) *p = *((unsigned char *) addr)++;
}
}
void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
{
volatile __u16 *p;
if (CHECK_AX88796L_PORT(port))
p = (volatile unsigned short *)port88796l(port, 1);
else if (PXSEG(port))
p = (volatile unsigned short *)port;
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
p = (volatile unsigned short *)PCI_IOMAP(port);
else
p = (volatile unsigned short *)port2adr(port);
while (count--) *p = *((__u16 *) addr)++;
}
void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count)
{
if (CHECK_AX88796L_PORT(port))
maybebadio(outsl, port);
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
while (count--) *p = *((__u32 *) addr)++;
} else
maybebadio(outsl, port);
}
void *rts7751r2d_ioremap(unsigned long offset, unsigned long size)
{
if (offset >= 0xfd000000)
return (void *)offset;
else
return (void *)P2SEGADDR(offset);
}
EXPORT_SYMBOL(rts7751r2d_ioremap);
unsigned long rts7751r2d_isa_port2addr(unsigned long offset)
{
return port2adr(offset);
}
/*
* linux/arch/sh/boards/renesas/rts7751r2d/irq.c
*
* Copyright (C) 2000 Kazumoto Kojima
*
* Renesas Technology Sales RTS7751R2D Support.
*
* Modified for RTS7751R2D by
* Atom Create Engineering Co., Ltd. 2002.
*/
#include <linux/config.h>
#include <linux/init.h>
#include <linux/irq.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/rts7751r2d/rts7751r2d.h>
#if defined(CONFIG_RTS7751R2D_REV11)
static int mask_pos[] = {11, 9, 8, 12, 10, 6, 5, 4, 7, 14, 13, 0, 0, 0, 0};
#else
static int mask_pos[] = {6, 11, 9, 8, 12, 10, 5, 4, 7, 14, 13, 0, 0, 0, 0};
#endif
extern int voyagergx_irq_demux(int irq);
extern void setup_voyagergx_irq(void);
static void enable_rts7751r2d_irq(unsigned int irq);
static void disable_rts7751r2d_irq(unsigned int irq);
/* shutdown is same as "disable" */
#define shutdown_rts7751r2d_irq disable_rts7751r2d_irq
static void ack_rts7751r2d_irq(unsigned int irq);
static void end_rts7751r2d_irq(unsigned int irq);
static unsigned int startup_rts7751r2d_irq(unsigned int irq)
{
enable_rts7751r2d_irq(irq);
return 0; /* never anything pending */
}
static void disable_rts7751r2d_irq(unsigned int irq)
{
unsigned long flags;
unsigned short val;
unsigned short mask = 0xffff ^ (0x0001 << mask_pos[irq]);
/* Set the priority in IPR to 0 */
local_irq_save(flags);
val = ctrl_inw(IRLCNTR1);
val &= mask;
ctrl_outw(val, IRLCNTR1);
local_irq_restore(flags);
}
static void enable_rts7751r2d_irq(unsigned int irq)
{
unsigned long flags;
unsigned short val;
unsigned short value = (0x0001 << mask_pos[irq]);
/* Set priority in IPR back to original value */
local_irq_save(flags);
val = ctrl_inw(IRLCNTR1);
val |= value;
ctrl_outw(val, IRLCNTR1);
local_irq_restore(flags);
}
int rts7751r2d_irq_demux(int irq)
{
int demux_irq;
demux_irq = voyagergx_irq_demux(irq);
return demux_irq;
}
static void ack_rts7751r2d_irq(unsigned int irq)
{
disable_rts7751r2d_irq(irq);
}
static void end_rts7751r2d_irq(unsigned int irq)
{
if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS)))
enable_rts7751r2d_irq(irq);
}
static struct hw_interrupt_type rts7751r2d_irq_type = {
"RTS7751R2D IRQ",
startup_rts7751r2d_irq,
shutdown_rts7751r2d_irq,
enable_rts7751r2d_irq,
disable_rts7751r2d_irq,
ack_rts7751r2d_irq,
end_rts7751r2d_irq,
};
static void make_rts7751r2d_irq(unsigned int irq)
{
disable_irq_nosync(irq);
irq_desc[irq].handler = &rts7751r2d_irq_type;
disable_rts7751r2d_irq(irq);
}
/*
* Initialize IRQ setting
*/
void __init init_rts7751r2d_IRQ(void)
{
int i;
/* IRL0=KEY Input
* IRL1=Ethernet
* IRL2=CF Card
* IRL3=CF Card Insert
* IRL4=PCMCIA
* IRL5=VOYAGER
* IRL6=RTC Alarm
* IRL7=RTC Timer
* IRL8=SD Card
* IRL9=PCI Slot #1
* IRL10=PCI Slot #2
* IRL11=Extention #0
* IRL12=Extention #1
* IRL13=Extention #2
* IRL14=Extention #3
*/
for (i=0; i<15; i++)
make_rts7751r2d_irq(i);
setup_voyagergx_irq();
}
/*
* linux/arch/sh/kernel/led_rts7751r2d.c
*
* Copyright (C) Atom Create Engineering Co., Ltd.
*
* May be copied or modified under the terms of GNU General Public
* License. See linux/COPYING for more information.
*
* This file contains Renesas Technology Sales RTS7751R2D specific LED code.
*/
#include <linux/config.h>
#include <asm/io.h>
#include <asm/rts7751r2d/rts7751r2d.h>
extern unsigned int debug_counter;
#ifdef CONFIG_HEARTBEAT
#include <linux/sched.h>
/* Cycle the LED's in the clasic Knightriger/Sun pattern */
void heartbeat_rts7751r2d(void)
{
static unsigned int cnt = 0, period = 0;
volatile unsigned short *p = (volatile unsigned short *)PA_OUTPORT;
static unsigned bit = 0, up = 1;
cnt += 1;
if (cnt < period)
return;
cnt = 0;
/* Go through the points (roughly!):
* f(0)=10, f(1)=16, f(2)=20, f(5)=35, f(int)->110
*/
period = 110 - ((300 << FSHIFT)/((avenrun[0]/5) + (3<<FSHIFT)));
*p = 1 << bit;
if (up)
if (bit == 7) {
bit--;
up = 0;
} else
bit++;
else if (bit == 0)
up = 1;
else
bit--;
}
#endif /* CONFIG_HEARTBEAT */
void rts7751r2d_led(unsigned short value)
{
ctrl_outw(value, PA_OUTPORT);
}
void debug_led_disp(void)
{
unsigned short value;
value = (unsigned short)debug_counter++;
rts7751r2d_led(value);
if (value == 0xff)
debug_counter = 0;
}
/*
* linux/arch/sh/kernel/mach_rts7751r2d.c
*
* Minor tweak of mach_se.c file to reference rts7751r2d-specific items.
*
* May be copied or modified under the terms of the GNU General Public
* License. See linux/COPYING for more information.
*
* Machine vector for the Renesas Technology sales RTS7751R2D
*/
#include <linux/config.h>
#include <linux/init.h>
#include <linux/types.h>
#include <asm/machvec.h>
#include <asm/rtc.h>
#include <asm/irq.h>
#include <asm/rts7751r2d/io.h>
extern void heartbeat_rts7751r2d(void);
extern void init_rts7751r2d_IRQ(void);
extern void *rts7751r2d_ioremap(unsigned long, unsigned long);
extern int rts7751r2d_irq_demux(int irq);
extern void *voyagergx_consistent_alloc(struct device *, size_t, dma_addr_t *, int);
extern void voyagergx_consistent_free(struct device *, size_t, void *, dma_addr_t);
/*
* The Machine Vector
*/
struct sh_machine_vector mv_rts7751r2d __initmv = {
.mv_nr_irqs = 72,
.mv_inb = rts7751r2d_inb,
.mv_inw = rts7751r2d_inw,
.mv_inl = rts7751r2d_inl,
.mv_outb = rts7751r2d_outb,
.mv_outw = rts7751r2d_outw,
.mv_outl = rts7751r2d_outl,
.mv_inb_p = rts7751r2d_inb_p,
.mv_inw_p = rts7751r2d_inw,
.mv_inl_p = rts7751r2d_inl,
.mv_outb_p = rts7751r2d_outb_p,
.mv_outw_p = rts7751r2d_outw,
.mv_outl_p = rts7751r2d_outl,
.mv_insb = rts7751r2d_insb,
.mv_insw = rts7751r2d_insw,
.mv_insl = rts7751r2d_insl,
.mv_outsb = rts7751r2d_outsb,
.mv_outsw = rts7751r2d_outsw,
.mv_outsl = rts7751r2d_outsl,
.mv_ioremap = rts7751r2d_ioremap,
.mv_isa_port2addr = rts7751r2d_isa_port2addr,
.mv_init_irq = init_rts7751r2d_IRQ,
#ifdef CONFIG_HEARTBEAT
.mv_heartbeat = heartbeat_rts7751r2d,
#endif
.mv_irq_demux = rts7751r2d_irq_demux,
.mv_consistent_alloc = voyagergx_consistent_alloc,
.mv_consistent_free = voyagergx_consistent_free,
};
ALIAS_MV(rts7751r2d)
/*
* linux/arch/sh/kernel/setup_rts7751r2d.c
*
* Copyright (C) 2000 Kazumoto Kojima
*
* Renesas Technology Sales RTS7751R2D Support.
*
* Modified for RTS7751R2D by
* Atom Create Engineering Co., Ltd. 2002.
*/
#include <linux/init.h>
#include <asm/io.h>
#include <asm/rts7751r2d/rts7751r2d.h>
unsigned int debug_counter;
const char *get_system_type(void)
{
return "RTS7751R2D";
}
/*
* Initialize the board
*/
void __init platform_setup(void)
{
printk(KERN_INFO "Renesas Technology Sales RTS7751R2D support.\n");
ctrl_outw(0x0000, PA_OUTPORT);
debug_counter = 0;
}
This diff is collapsed.
#ifndef __ASM_SH_RTS7751R2D_IDE_H
#define __ASM_SH_RTS7751R2D_IDE_H
/* Nothing to see here.. */
#include <asm/rts7751r2d/rts7751r2d.h>
#endif /* __ASM_SH_RTS7751R2D_IDE_H */
/*
* include/asm-sh/io_rts7751r2d.h
*
* Modified version of io_se.h for the rts7751r2d-specific functions.
*
* May be copied or modified under the terms of the GNU General Public
* License. See linux/COPYING for more information.
*
* IO functions for an Renesas Technology sales RTS7751R2D
*/
#ifndef _ASM_SH_IO_RTS7751R2D_H
#define _ASM_SH_IO_RTS7751R2D_H
extern unsigned char rts7751r2d_inb(unsigned long port);
extern unsigned short rts7751r2d_inw(unsigned long port);
extern unsigned int rts7751r2d_inl(unsigned long port);
extern void rts7751r2d_outb(unsigned char value, unsigned long port);
extern void rts7751r2d_outw(unsigned short value, unsigned long port);
extern void rts7751r2d_outl(unsigned int value, unsigned long port);
extern unsigned char rts7751r2d_inb_p(unsigned long port);
extern void rts7751r2d_outb_p(unsigned char value, unsigned long port);
extern void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count);
extern void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count);
extern void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count);
extern void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count);
extern void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count);
extern void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count);
extern void *rts7751r2d_ioremap(unsigned long offset, unsigned long size);
extern unsigned long rts7751r2d_isa_port2addr(unsigned long offset);
#endif /* _ASM_SH_IO_RTS7751R2D_H */
#ifndef __ASM_SH_RENESAS_RTS7751R2D_H
#define __ASM_SH_RENESAS_RTS7751R2D_H
/*
* linux/include/asm-sh/renesas_rts7751r2d.h
*
* Copyright (C) 2000 Atom Create Engineering Co., Ltd.
*
* Renesas Technology Sales RTS7751R2D support
*/
/* Box specific addresses. */
#define PA_BCR 0xa4000000 /* FPGA */
#define PA_IRLMON 0xa4000002 /* Interrupt Status control */
#define PA_CFCTL 0xa4000004 /* CF Timing control */
#define PA_CFPOW 0xa4000006 /* CF Power control */
#define PA_DISPCTL 0xa4000008 /* Display Timing control */
#define PA_SDMPOW 0xa400000a /* SD Power control */
#define PA_RTCCE 0xa400000c /* RTC(9701) Enable control */
#define PA_PCICD 0xa400000e /* PCI Extention detect control */
#define PA_VOYAGERRTS 0xa4000020 /* VOYAGER Reset control */
#if defined(CONFIG_RTS7751R2D_REV11)
#define PA_AXRST 0xa4000022 /* AX_LAN Reset control */
#define PA_CFRST 0xa4000024 /* CF Reset control */
#define PA_ADMRTS 0xa4000026 /* SD Reset control */
#define PA_EXTRST 0xa4000028 /* Extention Reset control */
#define PA_CFCDINTCLR 0xa400002a /* CF Insert Interrupt clear */
#else
#define PA_CFRST 0xa4000022 /* CF Reset control */
#define PA_ADMRTS 0xa4000024 /* SD Reset control */
#define PA_EXTRST 0xa4000026 /* Extention Reset control */
#define PA_CFCDINTCLR 0xa4000028 /* CF Insert Interrupt clear */
#define PA_KEYCTLCLR 0xa400002a /* Key Interrupt clear */
#endif
#define PA_POWOFF 0xa4000030 /* Board Power OFF control */
#define PA_VERREG 0xa4000032 /* FPGA Version Register */
#define PA_INPORT 0xa4000034 /* KEY Input Port control */
#define PA_OUTPORT 0xa4000036 /* LED control */
#define PA_DMPORT 0xa4000038 /* DM270 Output Port control */
#define PA_AX88796L 0xaa000400 /* AX88796L Area */
#define PA_VOYAGER 0xab000000 /* VOYAGER GX Area */
#define PA_AREA5_IO 0xb4000000 /* Area 5 IO Memory */
#define PA_AREA6_IO 0xb8000000 /* Area 6 IO Memory */
#define PA_IDE_OFFSET 0x1f0 /* CF IDE Offset */
#define AX88796L_IO_BASE 0x1000 /* AX88796L IO Base Address */
#define IRLCNTR1 (PA_BCR + 0) /* Interrupt Control Register1 */
#if defined(CONFIG_RTS7751R2D_REV11)
#define IRQ_PCIETH 0 /* PCI Ethernet IRQ */
#define IRQ_CFCARD 1 /* CF Card IRQ */
#define IRQ_CFINST 2 /* CF Card Insert IRQ */
#define IRQ_PCMCIA 3 /* PCMCIA IRQ */
#define IRQ_VOYAGER 4 /* VOYAGER IRQ */
#define IRQ_ONETH 5 /* On board Ethernet IRQ */
#else
#define IRQ_KEYIN 0 /* Key Input IRQ */
#define IRQ_PCIETH 1 /* PCI Ethernet IRQ */
#define IRQ_CFCARD 2 /* CF Card IRQ */
#define IRQ_CFINST 3 /* CF Card Insert IRQ */
#define IRQ_PCMCIA 4 /* PCMCIA IRQ */
#define IRQ_VOYAGER 5 /* VOYAGER IRQ */
#endif
#define IRQ_RTCALM 6 /* RTC Alarm IRQ */
#define IRQ_RTCTIME 7 /* RTC Timer IRQ */
#define IRQ_SDCARD 8 /* SD Card IRQ */
#define IRQ_PCISLOT1 9 /* PCI Slot #1 IRQ */
#define IRQ_PCISLOT2 10 /* PCI Slot #2 IRQ */
#define IRQ_EXTENTION 11 /* EXTn IRQ */
#endif /* __ASM_SH_RENESAS_RTS7751R2D */
This diff is collapsed.
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