sh: RTS7751R2D board updates.
More of the same, trivial cleanups, and moving options to their own board-specific Kconfig. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
@@ -402,7 +402,7 @@ endmenu
|
|||||||
|
|
||||||
source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
|
source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
|
||||||
|
|
||||||
#source "arch/sh/boards/renesas/rts7751r2d/Kconfig"
|
source "arch/sh/boards/renesas/rts7751r2d/Kconfig"
|
||||||
|
|
||||||
config SH_PCLK_FREQ
|
config SH_PCLK_FREQ
|
||||||
int "Peripheral clock frequency (in Hz)"
|
int "Peripheral clock frequency (in Hz)"
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
# Makefile for the HS7751RVoIP specific parts of the kernel
|
# Makefile for the HS7751RVoIP specific parts of the kernel
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-y := setup.o io.o irq.o led.o
|
obj-y := setup.o io.o irq.o
|
||||||
|
|
||||||
obj-$(CONFIG_PCI) += pci.o
|
obj-$(CONFIG_PCI) += pci.o
|
||||||
|
|
||||||
|
@@ -1,26 +0,0 @@
|
|||||||
/*
|
|
||||||
* linux/arch/sh/kernel/setup_hs7751rvoip.c
|
|
||||||
*
|
|
||||||
* Copyright (C) 2000 Kazumoto Kojima
|
|
||||||
*
|
|
||||||
* Renesas Technology Sales HS7751RVoIP Support.
|
|
||||||
*
|
|
||||||
* Modified for HS7751RVoIP by
|
|
||||||
* Atom Create Engineering Co., Ltd. 2002.
|
|
||||||
* Lineo uSolutions, Inc. 2003.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/hs7751rvoip/hs7751rvoip.h>
|
|
||||||
|
|
||||||
extern unsigned int debug_counter;
|
|
||||||
|
|
||||||
void debug_led_disp(void)
|
|
||||||
{
|
|
||||||
unsigned short value;
|
|
||||||
|
|
||||||
value = (unsigned char)debug_counter++;
|
|
||||||
ctrl_outb((0xf0|value), PA_OUTPORTR);
|
|
||||||
if (value == 0x0f)
|
|
||||||
debug_counter = 0;
|
|
||||||
}
|
|
12
arch/sh/boards/renesas/rts7751r2d/Kconfig
Normal file
12
arch/sh/boards/renesas/rts7751r2d/Kconfig
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
if SH_RTS7751R2D
|
||||||
|
|
||||||
|
menu "RTS7751R2D options"
|
||||||
|
|
||||||
|
config RTS7751R2D_REV11
|
||||||
|
bool "RTS7751R2D Rev. 1.1 board support"
|
||||||
|
help
|
||||||
|
Selecting this option will support version rev. 1.1.
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
@@ -13,13 +13,11 @@
|
|||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/types.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 <linux/pci.h>
|
||||||
#include "../../../drivers/pci/pci-sh7751.h"
|
#include "../../../drivers/pci/pci-sh7751.h"
|
||||||
|
#include <asm/rts7751r2d/rts7751r2d.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/addrspace.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The 7751R RTS7751R2D uses the built-in PCI controller (PCIC)
|
* The 7751R RTS7751R2D uses the built-in PCI controller (PCIC)
|
||||||
@@ -35,10 +33,6 @@
|
|||||||
|
|
||||||
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
#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)
|
static inline void delay(void)
|
||||||
{
|
{
|
||||||
ctrl_inw(0xa0000000);
|
ctrl_inw(0xa0000000);
|
||||||
@@ -52,7 +46,7 @@ static inline unsigned long port2adr(unsigned int port)
|
|||||||
else
|
else
|
||||||
return (PA_AREA5_IO + 0x1000 + ((port-0x1f0) << 1));
|
return (PA_AREA5_IO + 0x1000 + ((port-0x1f0) << 1));
|
||||||
else
|
else
|
||||||
maybebadio(port2adr, (unsigned long)port);
|
maybebadio((unsigned long)port);
|
||||||
|
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
@@ -138,13 +132,13 @@ unsigned char rts7751r2d_inb_p(unsigned long port)
|
|||||||
unsigned short rts7751r2d_inw(unsigned long port)
|
unsigned short rts7751r2d_inw(unsigned long port)
|
||||||
{
|
{
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
maybebadio(inw, port);
|
maybebadio(port);
|
||||||
else if (PXSEG(port))
|
else if (PXSEG(port))
|
||||||
return *(volatile unsigned short *)port;
|
return *(volatile unsigned short *)port;
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
return *(volatile unsigned short *)PCI_IOMAP(port);
|
return *(volatile unsigned short *)PCI_IOMAP(port);
|
||||||
else
|
else
|
||||||
maybebadio(inw, port);
|
maybebadio(port);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -152,13 +146,13 @@ unsigned short rts7751r2d_inw(unsigned long port)
|
|||||||
unsigned int rts7751r2d_inl(unsigned long port)
|
unsigned int rts7751r2d_inl(unsigned long port)
|
||||||
{
|
{
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
maybebadio(inl, port);
|
maybebadio(port);
|
||||||
else if (PXSEG(port))
|
else if (PXSEG(port))
|
||||||
return *(volatile unsigned long *)port;
|
return *(volatile unsigned long *)port;
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
return *(volatile unsigned long *)PCI_IOMAP(port);
|
return *(volatile unsigned long *)PCI_IOMAP(port);
|
||||||
else
|
else
|
||||||
maybebadio(inl, port);
|
maybebadio(port);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -191,51 +185,55 @@ void rts7751r2d_outb_p(unsigned char value, unsigned long port)
|
|||||||
void rts7751r2d_outw(unsigned short value, unsigned long port)
|
void rts7751r2d_outw(unsigned short value, unsigned long port)
|
||||||
{
|
{
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
maybebadio(outw, port);
|
maybebadio(port);
|
||||||
else if (PXSEG(port))
|
else if (PXSEG(port))
|
||||||
*(volatile unsigned short *)port = value;
|
*(volatile unsigned short *)port = value;
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
*(volatile unsigned short *)PCI_IOMAP(port) = value;
|
*(volatile unsigned short *)PCI_IOMAP(port) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outw, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rts7751r2d_outl(unsigned int value, unsigned long port)
|
void rts7751r2d_outl(unsigned int value, unsigned long port)
|
||||||
{
|
{
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
maybebadio(outl, port);
|
maybebadio(port);
|
||||||
else if (PXSEG(port))
|
else if (PXSEG(port))
|
||||||
*(volatile unsigned long *)port = value;
|
*(volatile unsigned long *)port = value;
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
*(volatile unsigned long *)PCI_IOMAP(port) = value;
|
*(volatile unsigned long *)PCI_IOMAP(port) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count)
|
void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
|
unsigned long a = (unsigned long)addr;
|
||||||
volatile __u8 *bp;
|
volatile __u8 *bp;
|
||||||
volatile __u16 *p;
|
volatile __u16 *p;
|
||||||
unsigned char *s = addr;
|
|
||||||
|
|
||||||
if (CHECK_AX88796L_PORT(port)) {
|
if (CHECK_AX88796L_PORT(port)) {
|
||||||
p = (volatile unsigned short *)port88796l(port, 0);
|
p = (volatile unsigned short *)port88796l(port, 0);
|
||||||
while (count--) *s++ = *p & 0xff;
|
while (count--)
|
||||||
|
ctrl_outb(*p & 0xff, a++);
|
||||||
} else if (PXSEG(port))
|
} else if (PXSEG(port))
|
||||||
while (count--) *s++ = *(volatile unsigned char *)port;
|
while (count--)
|
||||||
|
ctrl_outb(ctrl_inb(port), a++);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
bp = (__u8 *)PCI_IOMAP(port);
|
bp = (__u8 *)PCI_IOMAP(port);
|
||||||
while (count--) *s++ = *bp;
|
while (count--)
|
||||||
|
ctrl_outb(*bp, a++);
|
||||||
} else {
|
} else {
|
||||||
p = (volatile unsigned short *)port2adr(port);
|
p = (volatile unsigned short *)port2adr(port);
|
||||||
while (count--) *s++ = *p & 0xff;
|
while (count--)
|
||||||
|
ctrl_outb(*p & 0xff, a++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
|
void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
|
unsigned long a = (unsigned long)addr;
|
||||||
volatile __u16 *p;
|
volatile __u16 *p;
|
||||||
__u16 *s = addr;
|
|
||||||
|
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
p = (volatile unsigned short *)port88796l(port, 1);
|
p = (volatile unsigned short *)port88796l(port, 1);
|
||||||
@@ -245,46 +243,53 @@ void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count)
|
|||||||
p = (volatile unsigned short *)PCI_IOMAP(port);
|
p = (volatile unsigned short *)PCI_IOMAP(port);
|
||||||
else
|
else
|
||||||
p = (volatile unsigned short *)port2adr(port);
|
p = (volatile unsigned short *)port2adr(port);
|
||||||
while (count--) *s++ = *p;
|
while (count--)
|
||||||
|
ctrl_outw(*p, a++);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count)
|
void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
maybebadio(insl, port);
|
maybebadio(port);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
|
unsigned long a = (unsigned long)addr;
|
||||||
__u32 *s = addr;
|
|
||||||
|
|
||||||
while (count--) *s++ = *p;
|
while (count--) {
|
||||||
|
ctrl_outl(ctrl_inl(PCI_IOMAP(port)), a);
|
||||||
|
a += 4;
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
maybebadio(insl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count)
|
void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
|
unsigned long a = (unsigned long)addr;
|
||||||
volatile __u8 *bp;
|
volatile __u8 *bp;
|
||||||
volatile __u16 *p;
|
volatile __u16 *p;
|
||||||
const __u8 *s = addr;
|
|
||||||
|
|
||||||
if (CHECK_AX88796L_PORT(port)) {
|
if (CHECK_AX88796L_PORT(port)) {
|
||||||
p = (volatile unsigned short *)port88796l(port, 0);
|
p = (volatile unsigned short *)port88796l(port, 0);
|
||||||
while (count--) *p = *s++;
|
while (count--)
|
||||||
|
*p = ctrl_inb(a++);
|
||||||
} else if (PXSEG(port))
|
} else if (PXSEG(port))
|
||||||
while (count--) *(volatile unsigned char *)port = *s++;
|
while (count--)
|
||||||
|
ctrl_outb(a++, port);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
bp = (__u8 *)PCI_IOMAP(port);
|
bp = (__u8 *)PCI_IOMAP(port);
|
||||||
while (count--) *bp = *s++;
|
while (count--)
|
||||||
|
*bp = ctrl_inb(a++);
|
||||||
} else {
|
} else {
|
||||||
p = (volatile unsigned short *)port2adr(port);
|
p = (volatile unsigned short *)port2adr(port);
|
||||||
while (count--) *p = *s++;
|
while (count--)
|
||||||
|
*p = ctrl_inb(a++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
|
void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
|
unsigned long a = (unsigned long)addr;
|
||||||
volatile __u16 *p;
|
volatile __u16 *p;
|
||||||
const __u16 *s = addr;
|
|
||||||
|
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
p = (volatile unsigned short *)port88796l(port, 1);
|
p = (volatile unsigned short *)port88796l(port, 1);
|
||||||
@@ -294,20 +299,26 @@ void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count)
|
|||||||
p = (volatile unsigned short *)PCI_IOMAP(port);
|
p = (volatile unsigned short *)PCI_IOMAP(port);
|
||||||
else
|
else
|
||||||
p = (volatile unsigned short *)port2adr(port);
|
p = (volatile unsigned short *)port2adr(port);
|
||||||
while (count--) *p = *s++;
|
|
||||||
|
while (count--) {
|
||||||
|
ctrl_outw(*p, a);
|
||||||
|
a += 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count)
|
void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
if (CHECK_AX88796L_PORT(port))
|
if (CHECK_AX88796L_PORT(port))
|
||||||
maybebadio(outsl, port);
|
maybebadio(port);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
|
unsigned long a = (unsigned long)addr;
|
||||||
const __u32 *s = addr;
|
|
||||||
|
|
||||||
while (count--) *p = *s++;
|
while (count--) {
|
||||||
|
ctrl_outl(ctrl_inl(a), PCI_IOMAP(port));
|
||||||
|
a += 4;
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
maybebadio(outsl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *rts7751r2d_ioremap(unsigned long offset, unsigned long size)
|
void *rts7751r2d_ioremap(unsigned long offset, unsigned long size)
|
||||||
|
@@ -53,12 +53,3 @@ void rts7751r2d_led(unsigned short value)
|
|||||||
ctrl_outw(value, PA_OUTPORT);
|
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;
|
|
||||||
}
|
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/rtc.h>
|
#include <asm/rtc.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/rts7751r2d/io.h>
|
#include <asm/mach/rts7751r2d.h>
|
||||||
|
|
||||||
extern void heartbeat_rts7751r2d(void);
|
extern void heartbeat_rts7751r2d(void);
|
||||||
extern void init_rts7751r2d_IRQ(void);
|
extern void init_rts7751r2d_IRQ(void);
|
||||||
@@ -54,7 +54,6 @@ struct sh_machine_vector mv_rts7751r2d __initmv = {
|
|||||||
.mv_outsl = rts7751r2d_outsl,
|
.mv_outsl = rts7751r2d_outsl,
|
||||||
|
|
||||||
.mv_ioremap = rts7751r2d_ioremap,
|
.mv_ioremap = rts7751r2d_ioremap,
|
||||||
.mv_isa_port2addr = rts7751r2d_isa_port2addr,
|
|
||||||
.mv_init_irq = init_rts7751r2d_IRQ,
|
.mv_init_irq = init_rts7751r2d_IRQ,
|
||||||
#ifdef CONFIG_HEARTBEAT
|
#ifdef CONFIG_HEARTBEAT
|
||||||
.mv_heartbeat = heartbeat_rts7751r2d,
|
.mv_heartbeat = heartbeat_rts7751r2d,
|
||||||
|
Reference in New Issue
Block a user