forked from Minki/linux
Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6: (29 commits) sh: Fixup SH-2 BUG() trap handling. sh: Use early_param() for earlyprintk parsing. sh: Fix .empty_zero_page alignment for PAGE_SIZE > 4096. sh: Fixup .data.page_aligned. sh: Hook up SH7722 scif ipr interrupts. sh: Fixup sh_bios() trap handling. sh: SH-MobileR SH7722 CPU support. sh: Fixup dma_cache_sync() callers. sh: Convert remaining remap_area_pages() users to ioremap_page_range(). sh: Fixup kernel_execve() for syscall cleanups. sh: Fix get_wchan(). sh: BUG() handling through trapa vector. rtc: rtc-sh: alarm support. rtc: rtc-sh: fix rtc for out-by-one for the month. sh: Kill off unused SE7619 I/O ops. serial: sh-sci: Shut up various sci_rxd_in() gcc4 warnings. sh: Split out atomic ops logically. sh: Fix Solution Engine 7619 build. sh: Trivial build fixes for SH-2 support. sh: IPR IRQ updates for SH7619/SH7206. ...
This commit is contained in:
commit
d224a93d91
@ -479,7 +479,7 @@ config SH_CLK_MD
|
||||
int "CPU Mode Pin Setting"
|
||||
depends on CPU_SUBTYPE_SH7619 || CPU_SUBTYPE_SH7206
|
||||
help
|
||||
MD2 - MD0 Setting.
|
||||
MD2 - MD0 pin setting.
|
||||
|
||||
menu "CPU Frequency scaling"
|
||||
|
||||
@ -580,18 +580,6 @@ config NR_CPUS
|
||||
|
||||
source "kernel/Kconfig.preempt"
|
||||
|
||||
config CPU_HAS_SR_RB
|
||||
bool "CPU has SR.RB"
|
||||
depends on CPU_SH3 || CPU_SH4
|
||||
default y
|
||||
help
|
||||
This will enable the use of SR.RB register bank usage. Processors
|
||||
that are lacking this bit must have another method in place for
|
||||
accomplishing what is taken care of by the banked registers.
|
||||
|
||||
See <file:Documentation/sh/register-banks.txt> for further
|
||||
information on SR.RB and register banking in the kernel in general.
|
||||
|
||||
config NODES_SHIFT
|
||||
int
|
||||
default "1"
|
||||
|
@ -31,7 +31,8 @@ config EARLY_SCIF_CONSOLE_PORT
|
||||
hex "SCIF port for early console"
|
||||
depends on EARLY_SCIF_CONSOLE
|
||||
default "0xffe00000" if CPU_SUBTYPE_SH7780
|
||||
default "0xfffe9800" if CPU_SUBTYPE_SH72060
|
||||
default "0xfffe9800" if CPU_SUBTYPE_SH7206
|
||||
default "0xf8420000" if CPU_SUBTYPE_SH7619
|
||||
default "0xffe80000" if CPU_SH4
|
||||
|
||||
config EARLY_PRINTK
|
||||
|
@ -179,7 +179,7 @@ maketools: include/linux/version.h FORCE
|
||||
|
||||
all: zImage
|
||||
|
||||
zImage: vmlinux
|
||||
zImage uImage uImage.srec vmlinux.srec: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
||||
|
||||
compressed: zImage
|
||||
@ -190,5 +190,8 @@ archclean:
|
||||
CLEAN_FILES += include/asm-sh/machtypes.h
|
||||
|
||||
define archhelp
|
||||
@echo ' zImage - Compressed kernel image (arch/sh/boot/zImage)'
|
||||
@echo '* zImage - Compressed kernel image'
|
||||
@echo ' vmlinux.srec - Create an ELF S-record'
|
||||
@echo ' uImage - Create a bootable image for U-Boot'
|
||||
@echo ' uImage.srec - Create an S-record for U-Boot'
|
||||
endef
|
||||
|
@ -16,8 +16,8 @@
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/irq.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <asm/landisk/iodata_landisk.h>
|
||||
|
||||
static void enable_landisk_irq(unsigned int irq);
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <linux/irq.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <asm/se7206.h>
|
||||
|
||||
#define INTSTS0 0x31800000
|
||||
@ -18,6 +19,13 @@
|
||||
#define INTMSK1 0x31800006
|
||||
#define INTSEL 0x31800008
|
||||
|
||||
#define IRQ0_IRQ 64
|
||||
#define IRQ1_IRQ 65
|
||||
#define IRQ3_IRQ 67
|
||||
|
||||
#define INTC_IPR01 0xfffe0818
|
||||
#define INTC_ICR1 0xfffe0802
|
||||
|
||||
static void disable_se7206_irq(unsigned int irq)
|
||||
{
|
||||
unsigned short val;
|
||||
@ -39,7 +47,7 @@ static void disable_se7206_irq(unsigned int irq)
|
||||
case IRQ1_IRQ:
|
||||
msk0 |= 0x000f;
|
||||
break;
|
||||
case IRQ2_IRQ:
|
||||
case IRQ3_IRQ:
|
||||
msk0 |= 0x0f00;
|
||||
msk1 |= 0x00ff;
|
||||
break;
|
||||
@ -70,7 +78,7 @@ static void enable_se7206_irq(unsigned int irq)
|
||||
case IRQ1_IRQ:
|
||||
msk0 &= ~0x000f;
|
||||
break;
|
||||
case IRQ2_IRQ:
|
||||
case IRQ3_IRQ:
|
||||
msk0 &= ~0x0f00;
|
||||
msk1 &= ~0x00ff;
|
||||
break;
|
||||
@ -96,7 +104,7 @@ static void eoi_se7206_irq(unsigned int irq)
|
||||
case IRQ1_IRQ:
|
||||
sts0 &= ~0x000f;
|
||||
break;
|
||||
case IRQ2_IRQ:
|
||||
case IRQ3_IRQ:
|
||||
sts0 &= ~0x0f00;
|
||||
sts1 &= ~0x00ff;
|
||||
break;
|
||||
@ -106,7 +114,7 @@ static void eoi_se7206_irq(unsigned int irq)
|
||||
}
|
||||
|
||||
static struct irq_chip se7206_irq_chip __read_mostly = {
|
||||
.name = "SE7206-FPGA-IRQ",
|
||||
.name = "SE7206-FPGA",
|
||||
.mask = disable_se7206_irq,
|
||||
.unmask = enable_se7206_irq,
|
||||
.mask_ack = disable_se7206_irq,
|
||||
|
@ -2,4 +2,4 @@
|
||||
# Makefile for the 7619 SolutionEngine specific parts of the kernel
|
||||
#
|
||||
|
||||
obj-y := setup.o io.o
|
||||
obj-y := setup.o
|
||||
|
@ -1,102 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* linux/arch/sh/boards/se/7619/io.c
|
||||
*
|
||||
* Copyright (C) 2006 Yoshinori Sato
|
||||
*
|
||||
* I/O routine for Hitachi 7619 SolutionEngine.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/se7619.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
/* FIXME: M3A-ZAB7 Compact Flash Slot support */
|
||||
|
||||
static inline void delay(void)
|
||||
{
|
||||
ctrl_inw(0xa0000000); /* Uncached ROM area (P2) */
|
||||
}
|
||||
|
||||
#define badio(name,port) \
|
||||
printk("bad I/O operation (%s) for port 0x%lx at 0x%08x\n", \
|
||||
#name, (port), (__u32) __builtin_return_address(0))
|
||||
|
||||
unsigned char se7619___inb(unsigned long port)
|
||||
{
|
||||
badio(inb, port);
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned char se7619___inb_p(unsigned long port)
|
||||
{
|
||||
badio(inb_p, port);
|
||||
delay();
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned short se7619___inw(unsigned long port)
|
||||
{
|
||||
badio(inw, port);
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int se7619___inl(unsigned long port)
|
||||
{
|
||||
badio(inl, port);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void se7619___outb(unsigned char value, unsigned long port)
|
||||
{
|
||||
badio(outb, port);
|
||||
}
|
||||
|
||||
void se7619___outb_p(unsigned char value, unsigned long port)
|
||||
{
|
||||
badio(outb_p, port);
|
||||
delay();
|
||||
}
|
||||
|
||||
void se7619___outw(unsigned short value, unsigned long port)
|
||||
{
|
||||
badio(outw, port);
|
||||
}
|
||||
|
||||
void se7619___outl(unsigned int value, unsigned long port)
|
||||
{
|
||||
badio(outl, port);
|
||||
}
|
||||
|
||||
void se7619___insb(unsigned long port, void *addr, unsigned long count)
|
||||
{
|
||||
badio(inw, port);
|
||||
}
|
||||
|
||||
void se7619___insw(unsigned long port, void *addr, unsigned long count)
|
||||
{
|
||||
badio(inw, port);
|
||||
}
|
||||
|
||||
void se7619___insl(unsigned long port, void *addr, unsigned long count)
|
||||
{
|
||||
badio(insl, port);
|
||||
}
|
||||
|
||||
void se7619___outsb(unsigned long port, const void *addr, unsigned long count)
|
||||
{
|
||||
badio(insl, port);
|
||||
}
|
||||
|
||||
void se7619___outsw(unsigned long port, const void *addr, unsigned long count)
|
||||
{
|
||||
badio(insl, port);
|
||||
}
|
||||
|
||||
void se7619___outsl(unsigned long port, const void *addr, unsigned long count)
|
||||
{
|
||||
badio(outsw, port);
|
||||
}
|
@ -9,7 +9,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/se7619.h>
|
||||
#include <asm/machvec.h>
|
||||
|
||||
/*
|
||||
@ -19,25 +18,5 @@
|
||||
struct sh_machine_vector mv_se __initmv = {
|
||||
.mv_name = "SolutionEngine",
|
||||
.mv_nr_irqs = 108,
|
||||
.mv_inb = se7619___inb,
|
||||
.mv_inw = se7619___inw,
|
||||
.mv_inl = se7619___inl,
|
||||
.mv_outb = se7619___outb,
|
||||
.mv_outw = se7619___outw,
|
||||
.mv_outl = se7619___outl,
|
||||
|
||||
.mv_inb_p = se7619___inb_p,
|
||||
.mv_inw_p = se7619___inw,
|
||||
.mv_inl_p = se7619___inl,
|
||||
.mv_outb_p = se7619___outb_p,
|
||||
.mv_outw_p = se7619___outw,
|
||||
.mv_outl_p = se7619___outl,
|
||||
|
||||
.mv_insb = se7619___insb,
|
||||
.mv_insw = se7619___insw,
|
||||
.mv_insl = se7619___insl,
|
||||
.mv_outsb = se7619___outsb,
|
||||
.mv_outsw = se7619___outsw,
|
||||
.mv_outsl = se7619___outsl,
|
||||
};
|
||||
ALIAS_MV(se)
|
||||
|
@ -8,13 +8,49 @@
|
||||
# Copyright (C) 1999 Stuart Menefy
|
||||
#
|
||||
|
||||
targets := zImage
|
||||
MKIMAGE := $(srctree)/scripts/mkuboot.sh
|
||||
|
||||
#
|
||||
# Assign safe dummy values if these variables are not defined,
|
||||
# in order to suppress error message.
|
||||
#
|
||||
CONFIG_PAGE_OFFSET ?= 0x80000000
|
||||
CONFIG_MEMORY_START ?= 0x0c000000
|
||||
CONFIG_BOOT_LINK_OFFSET ?= 0x00800000
|
||||
CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000
|
||||
|
||||
export CONFIG_PAGE_OFFSET CONFIG_MEMORY_START CONFIG_BOOT_LINK_OFFSET \
|
||||
CONFIG_ZERO_PAGE_OFFSET
|
||||
|
||||
targets := zImage vmlinux.srec uImage uImage.srec
|
||||
subdir- := compressed
|
||||
|
||||
$(obj)/zImage: $(obj)/compressed/vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
@echo 'Kernel: $@ is ready'
|
||||
@echo ' Kernel: $@ is ready'
|
||||
|
||||
$(obj)/compressed/vmlinux: FORCE
|
||||
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
||||
|
||||
KERNEL_LOAD := $(shell printf "0x%8x" $$[$(CONFIG_PAGE_OFFSET) + \
|
||||
$(CONFIG_MEMORY_START) + \
|
||||
$(CONFIG_ZERO_PAGE_OFFSET)+0x1000])
|
||||
|
||||
quiet_cmd_uimage = UIMAGE $@
|
||||
cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A sh -O linux -T kernel \
|
||||
-C gzip -a $(KERNEL_LOAD) -e $(KERNEL_LOAD) \
|
||||
-n 'Linux-$(KERNELRELEASE)' -d $< $@
|
||||
|
||||
$(obj)/uImage: $(obj)/zImage FORCE
|
||||
$(call if_changed,uimage)
|
||||
@echo ' Image $@ is ready'
|
||||
|
||||
OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec
|
||||
$(obj)/vmlinux.srec: $(obj)/compressed/vmlinux
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
OBJCOPYFLAGS_uImage.srec := -I binary -O srec
|
||||
$(obj)/uImage.srec: $(obj)/uImage
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
clean-files += uImage uImage.srec vmlinux.srec
|
||||
|
@ -15,13 +15,7 @@ endif
|
||||
|
||||
#
|
||||
# IMAGE_OFFSET is the load offset of the compression loader
|
||||
# Assign dummy values if these 2 variables are not defined,
|
||||
# in order to suppress error message.
|
||||
#
|
||||
CONFIG_PAGE_OFFSET ?= 0x80000000
|
||||
CONFIG_MEMORY_START ?= 0x0c000000
|
||||
CONFIG_BOOT_LINK_OFFSET ?= 0x00800000
|
||||
|
||||
IMAGE_OFFSET := $(shell printf "0x%08x" $$[$(CONFIG_PAGE_OFFSET) + \
|
||||
$(CONFIG_MEMORY_START) + \
|
||||
$(CONFIG_BOOT_LINK_OFFSET)])
|
||||
|
@ -8,6 +8,7 @@
|
||||
.text
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
.global startup
|
||||
startup:
|
||||
@ -97,7 +98,7 @@ init_stack_addr:
|
||||
decompress_kernel_addr:
|
||||
.long decompress_kernel
|
||||
kernel_start_addr:
|
||||
.long _text+0x1000
|
||||
.long _text+PAGE_SIZE
|
||||
|
||||
.align 9
|
||||
fake_headers_as_bzImage:
|
||||
|
@ -13,6 +13,7 @@
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/page.h>
|
||||
#ifdef CONFIG_SH_STANDARD_BIOS
|
||||
#include <asm/sh_bios.h>
|
||||
#endif
|
||||
@ -229,7 +230,7 @@ long* stack_start = &user_stack[STACK_SIZE];
|
||||
void decompress_kernel(void)
|
||||
{
|
||||
output_data = 0;
|
||||
output_ptr = P2SEGADDR((unsigned long)&_text+0x1000);
|
||||
output_ptr = P2SEGADDR((unsigned long)&_text+PAGE_SIZE);
|
||||
free_mem_ptr = (unsigned long)&_end;
|
||||
free_mem_end_ptr = free_mem_ptr + HEAP_SIZE;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.18
|
||||
# Tue Oct 3 11:14:13 2006
|
||||
# Linux kernel version: 2.6.19
|
||||
# Thu Dec 7 17:13:04 2006
|
||||
#
|
||||
CONFIG_SUPERH=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
@ -10,6 +10,9 @@ CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
# CONFIG_GENERIC_TIME is not set
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -33,6 +36,7 @@ CONFIG_SYSVIPC=y
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
@ -114,6 +118,8 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_SH_LANDISK=y
|
||||
# CONFIG_SH_TITAN is not set
|
||||
# CONFIG_SH_SHMIN is not set
|
||||
# CONFIG_SH_7206_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_7619_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_UNKNOWN is not set
|
||||
|
||||
#
|
||||
@ -125,6 +131,12 @@ CONFIG_CPU_SH4=y
|
||||
# SH-2 Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7604 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7619 is not set
|
||||
|
||||
#
|
||||
# SH-2A Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7206 is not set
|
||||
|
||||
#
|
||||
# SH-3 Processor Support
|
||||
@ -160,6 +172,7 @@ CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7770 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7780 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7785 is not set
|
||||
|
||||
#
|
||||
# SH4AL-DSP Processor Support
|
||||
@ -175,6 +188,9 @@ CONFIG_PAGE_OFFSET=0x80000000
|
||||
CONFIG_MEMORY_START=0x0c000000
|
||||
CONFIG_MEMORY_SIZE=0x04000000
|
||||
CONFIG_VSYSCALL=y
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
@ -196,16 +212,21 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# Processor features
|
||||
#
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||
CONFIG_SH_FPU=y
|
||||
# CONFIG_SH_DSP is not set
|
||||
# CONFIG_SH_STORE_QUEUES is not set
|
||||
CONFIG_CPU_HAS_INTEVT=y
|
||||
CONFIG_CPU_HAS_IPR_IRQ=y
|
||||
CONFIG_CPU_HAS_SR_RB=y
|
||||
CONFIG_CPU_HAS_PTEA=y
|
||||
|
||||
#
|
||||
# Timer support
|
||||
#
|
||||
CONFIG_SH_TMU=y
|
||||
CONFIG_SH_TIMER_IRQ=16
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
CONFIG_SH_PCLK_FREQ=33333333
|
||||
|
||||
#
|
||||
@ -216,9 +237,7 @@ CONFIG_SH_PCLK_FREQ=33333333
|
||||
#
|
||||
# DMA support
|
||||
#
|
||||
CONFIG_SH_DMA=y
|
||||
CONFIG_NR_ONCHIP_DMA_CHANNELS=4
|
||||
# CONFIG_NR_DMA_CHANNELS_BOOL is not set
|
||||
# CONFIG_SH_DMA is not set
|
||||
|
||||
#
|
||||
# Companion Chips
|
||||
@ -226,6 +245,11 @@ CONFIG_NR_ONCHIP_DMA_CHANNELS=4
|
||||
# CONFIG_HD6446X_SERIES is not set
|
||||
CONFIG_HEARTBEAT=y
|
||||
|
||||
#
|
||||
# Additional SuperH Device Drivers
|
||||
#
|
||||
# CONFIG_PUSH_SWITCH is not set
|
||||
|
||||
#
|
||||
# Kernel features
|
||||
#
|
||||
@ -340,11 +364,13 @@ CONFIG_IP_PNP=y
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TCP_MD5SIG is not set
|
||||
|
||||
#
|
||||
# IP: Virtual Server Configuration
|
||||
@ -361,24 +387,12 @@ CONFIG_NETFILTER=y
|
||||
# Core Netfilter Configuration
|
||||
#
|
||||
# CONFIG_NETFILTER_NETLINK is not set
|
||||
# CONFIG_NF_CONNTRACK_ENABLED is not set
|
||||
# CONFIG_NETFILTER_XTABLES is not set
|
||||
|
||||
#
|
||||
# IP: Netfilter Configuration
|
||||
#
|
||||
CONFIG_IP_NF_CONNTRACK=m
|
||||
CONFIG_IP_NF_CT_ACCT=y
|
||||
CONFIG_IP_NF_CONNTRACK_MARK=y
|
||||
# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
|
||||
# CONFIG_IP_NF_CT_PROTO_SCTP is not set
|
||||
CONFIG_IP_NF_FTP=m
|
||||
CONFIG_IP_NF_IRC=m
|
||||
# CONFIG_IP_NF_NETBIOS_NS is not set
|
||||
CONFIG_IP_NF_TFTP=m
|
||||
CONFIG_IP_NF_AMANDA=m
|
||||
# CONFIG_IP_NF_PPTP is not set
|
||||
# CONFIG_IP_NF_H323 is not set
|
||||
# CONFIG_IP_NF_SIP is not set
|
||||
CONFIG_IP_NF_QUEUE=m
|
||||
|
||||
#
|
||||
@ -476,6 +490,12 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
@ -519,6 +539,7 @@ CONFIG_BLK_DEV_AEC62XX=y
|
||||
# CONFIG_BLK_DEV_CS5530 is not set
|
||||
# CONFIG_BLK_DEV_HPT34X is not set
|
||||
# CONFIG_BLK_DEV_HPT366 is not set
|
||||
# CONFIG_BLK_DEV_JMICRON is not set
|
||||
# CONFIG_BLK_DEV_SC1200 is not set
|
||||
# CONFIG_BLK_DEV_PIIX is not set
|
||||
# CONFIG_BLK_DEV_IT821X is not set
|
||||
@ -542,6 +563,7 @@ CONFIG_IDEDMA_AUTO=y
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_TGT is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
@ -561,6 +583,7 @@ CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
# CONFIG_SCSI_CONSTANTS is not set
|
||||
# CONFIG_SCSI_LOGGING is not set
|
||||
# CONFIG_SCSI_SCAN_ASYNC is not set
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
@ -602,12 +625,12 @@ CONFIG_SCSI_MULTI_LUN=y
|
||||
# CONFIG_SCSI_NCR53C406A is not set
|
||||
# CONFIG_SCSI_STEX is not set
|
||||
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
||||
# CONFIG_SCSI_IPR is not set
|
||||
# CONFIG_SCSI_PAS16 is not set
|
||||
# CONFIG_SCSI_PSI240I is not set
|
||||
# CONFIG_SCSI_QLOGIC_FAS is not set
|
||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||
# CONFIG_SCSI_QLA_FC is not set
|
||||
# CONFIG_SCSI_QLA_ISCSI is not set
|
||||
# CONFIG_SCSI_LPFC is not set
|
||||
# CONFIG_SCSI_SYM53C416 is not set
|
||||
# CONFIG_SCSI_DC395x is not set
|
||||
@ -615,6 +638,7 @@ CONFIG_SCSI_MULTI_LUN=y
|
||||
# CONFIG_SCSI_T128 is not set
|
||||
# CONFIG_SCSI_NSP32 is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_SRP is not set
|
||||
|
||||
#
|
||||
# PCMCIA SCSI adapter support
|
||||
@ -757,6 +781,7 @@ CONFIG_8139CP=y
|
||||
# CONFIG_IXGB is not set
|
||||
# CONFIG_S2IO is not set
|
||||
# CONFIG_MYRI10GE is not set
|
||||
# CONFIG_NETXEN_NIC is not set
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
@ -871,10 +896,6 @@ CONFIG_HW_RANDOM=y
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_APPLICOM is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_DRM is not set
|
||||
|
||||
#
|
||||
@ -889,7 +910,6 @@ CONFIG_HW_RANDOM=y
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_TELCLOCK is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
@ -905,6 +925,7 @@ CONFIG_HW_RANDOM=y
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
@ -916,10 +937,6 @@ CONFIG_HWMON=y
|
||||
# CONFIG_SENSORS_VT1211 is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
@ -1037,6 +1054,7 @@ CONFIG_USB=y
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_MULTITHREAD_PROBE is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
|
||||
#
|
||||
@ -1106,7 +1124,6 @@ CONFIG_USB_HIDINPUT=y
|
||||
# CONFIG_USB_ATI_REMOTE2 is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
@ -1121,6 +1138,7 @@ CONFIG_USB_HIDINPUT=y
|
||||
# CONFIG_USB_KAWETH is not set
|
||||
CONFIG_USB_PEGASUS=m
|
||||
CONFIG_USB_RTL8150=m
|
||||
# CONFIG_USB_USBNET_MII is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
CONFIG_USB_MON=y
|
||||
|
||||
@ -1156,6 +1174,7 @@ CONFIG_USB_SERIAL_FTDI_SIO=m
|
||||
# CONFIG_USB_SERIAL_KLSI is not set
|
||||
# CONFIG_USB_SERIAL_KOBIL_SCT is not set
|
||||
# CONFIG_USB_SERIAL_MCT_U232 is not set
|
||||
# CONFIG_USB_SERIAL_MOS7720 is not set
|
||||
# CONFIG_USB_SERIAL_MOS7840 is not set
|
||||
# CONFIG_USB_SERIAL_NAVMAN is not set
|
||||
CONFIG_USB_SERIAL_PL2303=m
|
||||
@ -1167,6 +1186,7 @@ CONFIG_USB_SERIAL_PL2303=m
|
||||
# CONFIG_USB_SERIAL_XIRCOM is not set
|
||||
# CONFIG_USB_SERIAL_OPTION is not set
|
||||
# CONFIG_USB_SERIAL_OMNINET is not set
|
||||
# CONFIG_USB_SERIAL_DEBUG is not set
|
||||
|
||||
#
|
||||
# USB Miscellaneous drivers
|
||||
@ -1188,6 +1208,7 @@ CONFIG_USB_EMI26=m
|
||||
CONFIG_USB_SISUSBVGA=m
|
||||
CONFIG_USB_SISUSBVGA_CON=y
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
@ -1254,6 +1275,7 @@ CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
CONFIG_JBD=y
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
@ -1264,6 +1286,7 @@ CONFIG_REISERFS_FS=y
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
@ -1414,6 +1437,7 @@ CONFIG_NLS_CODEPAGE_932=y
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
@ -1422,6 +1446,7 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_SH_STANDARD_BIOS=y
|
||||
# CONFIG_EARLY_SCIF_CONSOLE is not set
|
||||
# CONFIG_EARLY_PRINTK is not set
|
||||
@ -1445,6 +1470,4 @@ CONFIG_SH_STANDARD_BIOS=y
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_TEXTSEARCH=y
|
||||
CONFIG_TEXTSEARCH_KMP=m
|
||||
CONFIG_PLIST=y
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.19-rc4
|
||||
# Sun Nov 5 16:20:10 2006
|
||||
# Linux kernel version: 2.6.19
|
||||
# Wed Dec 6 14:40:15 2006
|
||||
#
|
||||
CONFIG_SUPERH=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
@ -11,6 +11,8 @@ CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
# CONFIG_GENERIC_TIME is not set
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -34,24 +36,23 @@ CONFIG_LOCALVERSION=""
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_UID16 is not set
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
# CONFIG_KALLSYMS is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
# CONFIG_ELF_CORE is not set
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
CONFIG_TINY_SHMEM=y
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_BASE_SMALL=1
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
@ -160,6 +161,7 @@ CONFIG_CPU_SUBTYPE_SH7206=y
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7770 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7780 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7785 is not set
|
||||
|
||||
#
|
||||
# SH4AL-DSP Processor Support
|
||||
@ -172,7 +174,10 @@ CONFIG_CPU_SUBTYPE_SH7206=y
|
||||
#
|
||||
CONFIG_PAGE_OFFSET=0x00000000
|
||||
CONFIG_MEMORY_START=0x0c000000
|
||||
CONFIG_MEMORY_SIZE=0x02000000
|
||||
CONFIG_MEMORY_SIZE=0x04000000
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
@ -194,6 +199,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# Processor features
|
||||
#
|
||||
# CONFIG_CPU_LITTLE_ENDIAN is not set
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
# CONFIG_SH_FPU is not set
|
||||
# CONFIG_SH_FPU_EMU is not set
|
||||
# CONFIG_SH_DSP is not set
|
||||
@ -203,6 +209,8 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
#
|
||||
CONFIG_SH_CMT=y
|
||||
# CONFIG_SH_MTU2 is not set
|
||||
CONFIG_SH_TIMER_IRQ=140
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
CONFIG_SH_PCLK_FREQ=33333333
|
||||
CONFIG_SH_CLK_MD=6
|
||||
|
||||
@ -221,6 +229,11 @@ CONFIG_SH_CLK_MD=6
|
||||
#
|
||||
# CONFIG_HD6446X_SERIES is not set
|
||||
|
||||
#
|
||||
# Additional SuperH Device Drivers
|
||||
#
|
||||
# CONFIG_PUSH_SWITCH is not set
|
||||
|
||||
#
|
||||
# Kernel features
|
||||
#
|
||||
@ -279,9 +292,6 @@ CONFIG_NET=y
|
||||
# CONFIG_NETDEBUG is not set
|
||||
# CONFIG_PACKET is not set
|
||||
# CONFIG_UNIX is not set
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
@ -297,9 +307,9 @@ CONFIG_IP_FIB_HASH=y
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
@ -371,7 +381,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_CONCAT=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
||||
@ -422,7 +432,7 @@ CONFIG_MTD_CFI_UTIL=y
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_START=0x20000000
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x1000000
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x01000000
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=4
|
||||
# CONFIG_MTD_SOLUTIONENGINE is not set
|
||||
# CONFIG_MTD_UCLINUX is not set
|
||||
@ -468,10 +478,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=4
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
@ -519,7 +526,50 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
#
|
||||
# Network device support
|
||||
#
|
||||
# CONFIG_NETDEVICES is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_STNIC is not set
|
||||
CONFIG_SMC91X=y
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
@ -536,7 +586,26 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
# CONFIG_INPUT is not set
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
@ -564,8 +633,7 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_UNIX98_PTYS is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
|
||||
#
|
||||
# IPMI
|
||||
@ -576,7 +644,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
@ -610,12 +678,8 @@ CONFIG_HW_RANDOM=y
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_SENSORS_ABITUGURU is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
# CONFIG_SENSORS_VT1211 is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
@ -630,7 +694,7 @@ CONFIG_HWMON=y
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
@ -701,8 +765,7 @@ CONFIG_FIRMWARE_EDID=y
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
@ -755,7 +818,7 @@ CONFIG_RAMFS=y
|
||||
# CONFIG_EFS_FS is not set
|
||||
# CONFIG_JFFS_FS is not set
|
||||
# CONFIG_JFFS2_FS is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
@ -793,8 +856,9 @@ CONFIG_MSDOS_PARTITION=y
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
@ -819,7 +883,7 @@ CONFIG_LOG_BUF_SHIFT=14
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
|
744
arch/sh/configs/se7619_defconfig
Normal file
744
arch/sh/configs/se7619_defconfig
Normal file
@ -0,0 +1,744 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.19
|
||||
# Wed Dec 6 16:35:36 2006
|
||||
#
|
||||
CONFIG_SUPERH=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
# CONFIG_GENERIC_TIME is not set
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SYSVIPC is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_UID16 is not set
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
# CONFIG_KALLSYMS is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
# CONFIG_ELF_CORE is not set
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
CONFIG_TINY_SHMEM=y
|
||||
CONFIG_BASE_SMALL=1
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
# CONFIG_MODULES is not set
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_LSF is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
# CONFIG_IOSCHED_AS is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
# CONFIG_DEFAULT_AS is not set
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
|
||||
#
|
||||
# System type
|
||||
#
|
||||
# CONFIG_SH_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_7751_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_7300_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_7343_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_73180_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_7751_SYSTEMH is not set
|
||||
# CONFIG_SH_HP6XX is not set
|
||||
# CONFIG_SH_EC3104 is not set
|
||||
# CONFIG_SH_SATURN is not set
|
||||
# CONFIG_SH_DREAMCAST is not set
|
||||
# CONFIG_SH_BIGSUR is not set
|
||||
# CONFIG_SH_MPC1211 is not set
|
||||
# CONFIG_SH_SH03 is not set
|
||||
# CONFIG_SH_SECUREEDGE5410 is not set
|
||||
# CONFIG_SH_HS7751RVOIP is not set
|
||||
# CONFIG_SH_7710VOIPGW is not set
|
||||
# CONFIG_SH_RTS7751R2D is not set
|
||||
# CONFIG_SH_R7780RP is not set
|
||||
# CONFIG_SH_EDOSK7705 is not set
|
||||
# CONFIG_SH_SH4202_MICRODEV is not set
|
||||
# CONFIG_SH_LANDISK is not set
|
||||
# CONFIG_SH_TITAN is not set
|
||||
# CONFIG_SH_SHMIN is not set
|
||||
# CONFIG_SH_7206_SOLUTION_ENGINE is not set
|
||||
CONFIG_SH_7619_SOLUTION_ENGINE=y
|
||||
# CONFIG_SH_UNKNOWN is not set
|
||||
|
||||
#
|
||||
# Processor selection
|
||||
#
|
||||
CONFIG_CPU_SH2=y
|
||||
|
||||
#
|
||||
# SH-2 Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7604 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7619=y
|
||||
|
||||
#
|
||||
# SH-2A Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7206 is not set
|
||||
|
||||
#
|
||||
# SH-3 Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7300 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7705 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7706 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7707 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7708 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7709 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7710 is not set
|
||||
|
||||
#
|
||||
# SH-4 Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7750 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7751R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
|
||||
#
|
||||
# ST40 Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_ST40STB1 is not set
|
||||
# CONFIG_CPU_SUBTYPE_ST40GX1 is not set
|
||||
|
||||
#
|
||||
# SH-4A Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH7770 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7780 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7785 is not set
|
||||
|
||||
#
|
||||
# SH4AL-DSP Processor Support
|
||||
#
|
||||
# CONFIG_CPU_SUBTYPE_SH73180 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7343 is not set
|
||||
|
||||
#
|
||||
# Memory management options
|
||||
#
|
||||
CONFIG_PAGE_OFFSET=0x00000000
|
||||
CONFIG_MEMORY_START=0x0c000000
|
||||
CONFIG_MEMORY_SIZE=0x04000000
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
|
||||
#
|
||||
# Cache configuration
|
||||
#
|
||||
# CONFIG_SH_DIRECT_MAPPED is not set
|
||||
CONFIG_SH_WRITETHROUGH=y
|
||||
# CONFIG_SH_OCRAM is not set
|
||||
|
||||
#
|
||||
# Processor features
|
||||
#
|
||||
# CONFIG_CPU_LITTLE_ENDIAN is not set
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
# CONFIG_SH_FPU is not set
|
||||
# CONFIG_SH_FPU_EMU is not set
|
||||
# CONFIG_SH_DSP is not set
|
||||
|
||||
#
|
||||
# Timer support
|
||||
#
|
||||
CONFIG_SH_CMT=y
|
||||
CONFIG_SH_TIMER_IRQ=86
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
CONFIG_SH_PCLK_FREQ=31250000
|
||||
CONFIG_SH_CLK_MD=5
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
#
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
|
||||
#
|
||||
# DMA support
|
||||
#
|
||||
# CONFIG_SH_DMA is not set
|
||||
|
||||
#
|
||||
# Companion Chips
|
||||
#
|
||||
# CONFIG_HD6446X_SERIES is not set
|
||||
|
||||
#
|
||||
# Additional SuperH Device Drivers
|
||||
#
|
||||
# CONFIG_PUSH_SWITCH is not set
|
||||
|
||||
#
|
||||
# Kernel features
|
||||
#
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=100
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_SMP is not set
|
||||
CONFIG_PREEMPT_NONE=y
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
# CONFIG_PREEMPT is not set
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZERO_PAGE_OFFSET=0x00001000
|
||||
CONFIG_BOOT_LINK_OFFSET=0x00800000
|
||||
# CONFIG_UBC_WAKEUP is not set
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
# CONFIG_PCI is not set
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
|
||||
#
|
||||
# PCI Hotplug Support
|
||||
#
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_FLAT=y
|
||||
CONFIG_BINFMT_ZFLAT=y
|
||||
# CONFIG_BINFMT_SHARED_FLAT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
|
||||
#
|
||||
# Power management options (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
# CONFIG_NET is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
CONFIG_MTD_CONCAT=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
CONFIG_MTD_REDBOOT_PARTS=y
|
||||
CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
|
||||
# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set
|
||||
# CONFIG_MTD_CMDLINE_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_RFD_FTL is not set
|
||||
# CONFIG_SSFDC is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
#
|
||||
CONFIG_MTD_CFI=y
|
||||
# CONFIG_MTD_JEDECPROBE is not set
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
# CONFIG_MTD_CFI_INTELEXT is not set
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
# CONFIG_MTD_CFI_STAA is not set
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
# CONFIG_MTD_RAM is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
# CONFIG_MTD_OBSOLETE_CHIPS is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_START=0xa0000000
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x01000000
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
||||
# CONFIG_MTD_SOLUTIONENGINE is not set
|
||||
# CONFIG_MTD_UCLINUX is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
|
||||
#
|
||||
# Disk-On-Chip Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
|
||||
#
|
||||
# NAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_NAND is not set
|
||||
|
||||
#
|
||||
# OneNAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
|
||||
#
|
||||
# Serial ATA (prod) and Parallel ATA (experimental) drivers
|
||||
#
|
||||
# CONFIG_ATA is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
|
||||
#
|
||||
# Telephony Support
|
||||
#
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_SH_SCI=y
|
||||
CONFIG_SERIAL_SH_SCI_NR_UARTS=3
|
||||
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_UNIX98_PTYS is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_GEN_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
# CONFIG_USB_ARCH_HAS_HCD is not set
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
|
||||
#
|
||||
# InfiniBand support
|
||||
#
|
||||
|
||||
#
|
||||
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
|
||||
#
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
|
||||
#
|
||||
# DMA Engine support
|
||||
#
|
||||
# CONFIG_DMA_ENGINE is not set
|
||||
|
||||
#
|
||||
# DMA Clients
|
||||
#
|
||||
|
||||
#
|
||||
# DMA Devices
|
||||
#
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
# CONFIG_ISO9660_FS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
# CONFIG_VFAT_FS is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
# CONFIG_SYSFS is not set
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
# CONFIG_JFFS_FS is not set
|
||||
# CONFIG_JFFS2_FS is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_UNWIND_INFO is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_SH_STANDARD_BIOS is not set
|
||||
# CONFIG_EARLY_SCIF_CONSOLE is not set
|
||||
# CONFIG_KGDB is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
@ -14,7 +14,7 @@
|
||||
#include <asm/push-switch.h>
|
||||
|
||||
#define DRV_NAME "push-switch"
|
||||
#define DRV_VERSION "0.1.0"
|
||||
#define DRV_VERSION "0.1.1"
|
||||
|
||||
static ssize_t switch_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
@ -32,10 +32,10 @@ static void switch_timer(unsigned long data)
|
||||
schedule_work(&psw->work);
|
||||
}
|
||||
|
||||
static void switch_work_handler(void *data)
|
||||
static void switch_work_handler(struct work_struct *work)
|
||||
{
|
||||
struct platform_device *pdev = data;
|
||||
struct push_switch *psw = platform_get_drvdata(pdev);
|
||||
struct push_switch *psw = container_of(work, struct push_switch, work);
|
||||
struct platform_device *pdev = psw->pdev;
|
||||
|
||||
psw->state = 0;
|
||||
|
||||
@ -76,12 +76,15 @@ static int switch_drv_probe(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
INIT_WORK(&psw->work, switch_work_handler, pdev);
|
||||
INIT_WORK(&psw->work, switch_work_handler);
|
||||
init_timer(&psw->debounce);
|
||||
|
||||
psw->debounce.function = switch_timer;
|
||||
psw->debounce.data = (unsigned long)psw;
|
||||
|
||||
/* Workqueue API brain-damage */
|
||||
psw->pdev = pdev;
|
||||
|
||||
platform_set_drvdata(pdev, psw);
|
||||
|
||||
return 0;
|
||||
|
@ -6,6 +6,7 @@ obj-$(CONFIG_CPU_SH2) = sh2/
|
||||
obj-$(CONFIG_CPU_SH2A) = sh2a/
|
||||
obj-$(CONFIG_CPU_SH3) = sh3/
|
||||
obj-$(CONFIG_CPU_SH4) = sh4/
|
||||
obj-$(CONFIG_CPU_SH4A) += sh4a/
|
||||
|
||||
obj-$(CONFIG_UBC_WAKEUP) += ubc.o
|
||||
obj-$(CONFIG_SH_ADC) += adc.o
|
||||
|
@ -177,15 +177,21 @@ interrupt_entry:
|
||||
7: .long do_IRQ
|
||||
8: .long do_exception_error
|
||||
|
||||
trap_entry:
|
||||
add #-0x10,r9
|
||||
trap_entry:
|
||||
/* verbose BUG trapa entry check */
|
||||
mov #0x3e,r8
|
||||
cmp/ge r8,r9
|
||||
bf/s 1f
|
||||
add #-0x10,r9
|
||||
add #0x10,r9
|
||||
1:
|
||||
shll2 r9 ! TRA
|
||||
mov #OFF_TRA,r8
|
||||
add r15,r8
|
||||
mov.l r9,@r8
|
||||
mov r9,r8
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
mov.l 5f, r9
|
||||
mov.l 2f, r9
|
||||
jsr @r9
|
||||
nop
|
||||
#endif
|
||||
@ -194,12 +200,8 @@ trap_entry:
|
||||
nop
|
||||
|
||||
.align 2
|
||||
1: .long syscall_exit
|
||||
2: .long break_point_trap_software
|
||||
3: .long NR_syscalls
|
||||
4: .long sys_call_table
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
5: .long trace_hardirqs_on
|
||||
2: .long trace_hardirqs_on
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SH_STANDARD_BIOS)
|
||||
@ -264,7 +266,7 @@ ENTRY(address_error_handler)
|
||||
restore_all:
|
||||
cli
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
mov.l 3f, r0
|
||||
mov.l 1f, r0
|
||||
jsr @r0
|
||||
nop
|
||||
#endif
|
||||
@ -309,20 +311,14 @@ restore_all:
|
||||
mov.l @r15,r15
|
||||
rte
|
||||
nop
|
||||
2:
|
||||
mov.l 1f,r8
|
||||
mov.l 2f,r9
|
||||
jmp @r9
|
||||
lds r8,pr
|
||||
|
||||
.align 2
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
1: .long trace_hardirqs_off
|
||||
#endif
|
||||
$current_thread_info:
|
||||
.long __current_thread_info
|
||||
$cpu_mode:
|
||||
.long __cpu_mode
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
3: .long trace_hardirqs_off
|
||||
#endif
|
||||
|
||||
! common exception handler
|
||||
#include "../../entry-common.S"
|
||||
|
@ -51,3 +51,44 @@ static int __init sh7619_devices_setup(void)
|
||||
ARRAY_SIZE(sh7619_devices));
|
||||
}
|
||||
__initcall(sh7619_devices_setup);
|
||||
|
||||
#define INTC_IPRC 0xf8080000UL
|
||||
#define INTC_IPRD 0xf8080002UL
|
||||
|
||||
#define CMI0_IRQ 86
|
||||
|
||||
#define SCIF0_ERI_IRQ 88
|
||||
#define SCIF0_RXI_IRQ 89
|
||||
#define SCIF0_BRI_IRQ 90
|
||||
#define SCIF0_TXI_IRQ 91
|
||||
|
||||
#define SCIF1_ERI_IRQ 92
|
||||
#define SCIF1_RXI_IRQ 93
|
||||
#define SCIF1_BRI_IRQ 94
|
||||
#define SCIF1_TXI_IRQ 95
|
||||
|
||||
#define SCIF2_BRI_IRQ 96
|
||||
#define SCIF2_ERI_IRQ 97
|
||||
#define SCIF2_RXI_IRQ 98
|
||||
#define SCIF2_TXI_IRQ 99
|
||||
|
||||
static struct ipr_data sh7619_ipr_map[] = {
|
||||
{ CMI0_IRQ, INTC_IPRC, 1, 2 },
|
||||
{ SCIF0_ERI_IRQ, INTC_IPRD, 3, 3 },
|
||||
{ SCIF0_RXI_IRQ, INTC_IPRD, 3, 3 },
|
||||
{ SCIF0_BRI_IRQ, INTC_IPRD, 3, 3 },
|
||||
{ SCIF0_TXI_IRQ, INTC_IPRD, 3, 3 },
|
||||
{ SCIF1_ERI_IRQ, INTC_IPRD, 2, 3 },
|
||||
{ SCIF1_RXI_IRQ, INTC_IPRD, 2, 3 },
|
||||
{ SCIF1_BRI_IRQ, INTC_IPRD, 2, 3 },
|
||||
{ SCIF1_TXI_IRQ, INTC_IPRD, 2, 3 },
|
||||
{ SCIF2_ERI_IRQ, INTC_IPRD, 1, 3 },
|
||||
{ SCIF2_RXI_IRQ, INTC_IPRD, 1, 3 },
|
||||
{ SCIF2_BRI_IRQ, INTC_IPRD, 1, 3 },
|
||||
{ SCIF2_TXI_IRQ, INTC_IPRD, 1, 3 },
|
||||
};
|
||||
|
||||
void __init init_IRQ_ipr(void)
|
||||
{
|
||||
make_ipr_irq(sh7619_ipr_map, ARRAY_SIZE(sh7619_ipr_map));
|
||||
}
|
||||
|
@ -17,22 +17,22 @@ static struct plat_sci_port sci_platform_data[] = {
|
||||
.mapbase = 0xfffe8000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 240, 241, 242, 243},
|
||||
.irqs = { 241, 242, 243, 240},
|
||||
}, {
|
||||
.mapbase = 0xfffe8800,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 244, 245, 246, 247},
|
||||
.irqs = { 247, 244, 245, 246},
|
||||
}, {
|
||||
.mapbase = 0xfffe9000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 248, 249, 250, 251},
|
||||
.irqs = { 249, 250, 251, 248},
|
||||
}, {
|
||||
.mapbase = 0xfffe9800,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 252, 253, 254, 255},
|
||||
.irqs = { 253, 254, 255, 252},
|
||||
}, {
|
||||
.flags = 0,
|
||||
}
|
||||
@ -56,3 +56,57 @@ static int __init sh7206_devices_setup(void)
|
||||
ARRAY_SIZE(sh7206_devices));
|
||||
}
|
||||
__initcall(sh7206_devices_setup);
|
||||
|
||||
#define INTC_IPR08 0xfffe0c04UL
|
||||
#define INTC_IPR09 0xfffe0c06UL
|
||||
#define INTC_IPR14 0xfffe0c10UL
|
||||
|
||||
#define CMI0_IRQ 140
|
||||
|
||||
#define MTU1_TGI1A 164
|
||||
|
||||
#define SCIF0_BRI_IRQ 240
|
||||
#define SCIF0_ERI_IRQ 241
|
||||
#define SCIF0_RXI_IRQ 242
|
||||
#define SCIF0_TXI_IRQ 243
|
||||
|
||||
#define SCIF1_BRI_IRQ 244
|
||||
#define SCIF1_ERI_IRQ 245
|
||||
#define SCIF1_RXI_IRQ 246
|
||||
#define SCIF1_TXI_IRQ 247
|
||||
|
||||
#define SCIF2_BRI_IRQ 248
|
||||
#define SCIF2_ERI_IRQ 249
|
||||
#define SCIF2_RXI_IRQ 250
|
||||
#define SCIF2_TXI_IRQ 251
|
||||
|
||||
#define SCIF3_BRI_IRQ 252
|
||||
#define SCIF3_ERI_IRQ 253
|
||||
#define SCIF3_RXI_IRQ 254
|
||||
#define SCIF3_TXI_IRQ 255
|
||||
|
||||
static struct ipr_data sh7206_ipr_map[] = {
|
||||
{ CMI0_IRQ, INTC_IPR08, 3, 2 },
|
||||
{ MTU2_TGI1A, INTC_IPR09, 1, 2 },
|
||||
{ SCIF0_ERI_IRQ, INTC_IPR14, 3, 3 },
|
||||
{ SCIF0_RXI_IRQ, INTC_IPR14, 3, 3 },
|
||||
{ SCIF0_BRI_IRQ, INTC_IPR14, 3, 3 },
|
||||
{ SCIF0_TXI_IRQ, INTC_IPR14, 3, 3 },
|
||||
{ SCIF1_ERI_IRQ, INTC_IPR14, 2, 3 },
|
||||
{ SCIF1_RXI_IRQ, INTC_IPR14, 2, 3 },
|
||||
{ SCIF1_BRI_IRQ, INTC_IPR14, 2, 3 },
|
||||
{ SCIF1_TXI_IRQ, INTC_IPR14, 2, 3 },
|
||||
{ SCIF2_ERI_IRQ, INTC_IPR14, 1, 3 },
|
||||
{ SCIF2_RXI_IRQ, INTC_IPR14, 1, 3 },
|
||||
{ SCIF2_BRI_IRQ, INTC_IPR14, 1, 3 },
|
||||
{ SCIF2_TXI_IRQ, INTC_IPR14, 1, 3 },
|
||||
{ SCIF3_ERI_IRQ, INTC_IPR14, 0, 3 },
|
||||
{ SCIF3_RXI_IRQ, INTC_IPR14, 0, 3 },
|
||||
{ SCIF3_BRI_IRQ, INTC_IPR14, 0, 3 },
|
||||
{ SCIF3_TXI_IRQ, INTC_IPR14, 0, 3 },
|
||||
};
|
||||
|
||||
void __init init_IRQ_ipr(void)
|
||||
{
|
||||
make_ipr_irq(sh7206_ipr_map, ARRAY_SIZE(sh7206_ipr_map));
|
||||
}
|
||||
|
@ -12,17 +12,12 @@ obj-$(CONFIG_SH_STORE_QUEUES) += sq.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7750) += setup-sh7750.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7751) += setup-sh7750.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7760) += setup-sh7760.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH4_202) += setup-sh4-202.o
|
||||
|
||||
# Primary on-chip clocks (common)
|
||||
ifndef CONFIG_CPU_SH4A
|
||||
clock-$(CONFIG_CPU_SH4) := clock-sh4.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
|
||||
endif
|
||||
|
||||
# Additional clocks by subtype
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH4_202) += clock-sh4-202.o
|
||||
|
@ -119,11 +119,20 @@ int __init detect_cpu_and_cache_system(void)
|
||||
break;
|
||||
case 0x3000:
|
||||
case 0x3003:
|
||||
case 0x3009:
|
||||
cpu_data->type = CPU_SH7343;
|
||||
cpu_data->icache.ways = 4;
|
||||
cpu_data->dcache.ways = 4;
|
||||
cpu_data->flags |= CPU_HAS_LLSC;
|
||||
break;
|
||||
case 0x3008:
|
||||
if (prr == 0xa0) {
|
||||
cpu_data->type = CPU_SH7722;
|
||||
cpu_data->icache.ways = 4;
|
||||
cpu_data->dcache.ways = 4;
|
||||
cpu_data->flags |= CPU_HAS_LLSC;
|
||||
}
|
||||
break;
|
||||
case 0x8000:
|
||||
cpu_data->type = CPU_ST40RA;
|
||||
cpu_data->flags |= CPU_HAS_FPU;
|
||||
|
@ -14,6 +14,36 @@
|
||||
#include <linux/io.h>
|
||||
#include <asm/sci.h>
|
||||
|
||||
static struct resource rtc_resources[] = {
|
||||
[0] = {
|
||||
.start = 0xffc80000,
|
||||
.end = 0xffc80000 + 0x58 - 1,
|
||||
.flags = IORESOURCE_IO,
|
||||
},
|
||||
[1] = {
|
||||
/* Period IRQ */
|
||||
.start = 21,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
[2] = {
|
||||
/* Carry IRQ */
|
||||
.start = 22,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
[3] = {
|
||||
/* Alarm IRQ */
|
||||
.start = 20,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device rtc_device = {
|
||||
.name = "sh-rtc",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(rtc_resources),
|
||||
.resource = rtc_resources,
|
||||
};
|
||||
|
||||
static struct plat_sci_port sci_platform_data[] = {
|
||||
{
|
||||
.mapbase = 0xffe00000,
|
||||
@ -39,6 +69,7 @@ static struct platform_device sci_device = {
|
||||
};
|
||||
|
||||
static struct platform_device *sh7750_devices[] __initdata = {
|
||||
&rtc_device,
|
||||
&sci_device,
|
||||
};
|
||||
|
||||
|
@ -111,8 +111,9 @@ static int __sq_remap(struct sq_mapping *map, unsigned long flags)
|
||||
|
||||
vma->phys_addr = map->addr;
|
||||
|
||||
if (remap_area_pages((unsigned long)vma->addr, vma->phys_addr,
|
||||
map->size, flags)) {
|
||||
if (ioremap_page_range((unsigned long)vma->addr,
|
||||
(unsigned long)vma->addr + map->size,
|
||||
vma->phys_addr, __pgprot(flags))) {
|
||||
vunmap(vma->addr);
|
||||
return -EAGAIN;
|
||||
}
|
||||
@ -176,7 +177,7 @@ unsigned long sq_remap(unsigned long phys, unsigned int size,
|
||||
|
||||
map->sq_addr = P4SEG_STORE_QUE + (page << PAGE_SHIFT);
|
||||
|
||||
ret = __sq_remap(map, flags);
|
||||
ret = __sq_remap(map, pgprot_val(PAGE_KERNEL_NOCACHE) | flags);
|
||||
if (unlikely(ret != 0))
|
||||
goto out;
|
||||
|
||||
|
19
arch/sh/kernel/cpu/sh4a/Makefile
Normal file
19
arch/sh/kernel/cpu/sh4a/Makefile
Normal file
@ -0,0 +1,19 @@
|
||||
#
|
||||
# Makefile for the Linux/SuperH SH-4 backends.
|
||||
#
|
||||
|
||||
# CPU subtype setup
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7770) += setup-sh7770.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7780) += setup-sh7780.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH73180) += setup-sh73180.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7343) += setup-sh7343.o
|
||||
obj-$(CONFIG_CPU_SUBTYPE_SH7722) += setup-sh7722.o
|
||||
|
||||
# Primary on-chip clocks (common)
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH73180) := clock-sh73180.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7770) := clock-sh7770.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7780) := clock-sh7780.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7343) := clock-sh7343.o
|
||||
clock-$(CONFIG_CPU_SUBTYPE_SH7722) := clock-sh7343.o
|
||||
|
||||
obj-y += $(clock-y)
|
99
arch/sh/kernel/cpu/sh4a/clock-sh7343.c
Normal file
99
arch/sh/kernel/cpu/sh4a/clock-sh7343.c
Normal file
@ -0,0 +1,99 @@
|
||||
/*
|
||||
* arch/sh/kernel/cpu/sh4/clock-sh7343.c
|
||||
*
|
||||
* SH7343/SH7722 support for the clock framework
|
||||
*
|
||||
* Copyright (C) 2006 Paul Mundt
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/io.h>
|
||||
#include <asm/clock.h>
|
||||
#include <asm/freq.h>
|
||||
|
||||
/*
|
||||
* SH7343/SH7722 uses a common set of multipliers and divisors, so this
|
||||
* is quite simple..
|
||||
*/
|
||||
static int multipliers[] = { 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
|
||||
static int divisors[] = { 1, 3, 2, 5, 3, 4, 5, 6, 8, 10, 12, 16, 20 };
|
||||
|
||||
#define pll_calc() (((ctrl_inl(FRQCR) >> 24) & 0x1f) + 1)
|
||||
|
||||
static void master_clk_init(struct clk *clk)
|
||||
{
|
||||
clk->parent = clk_get(NULL, "cpu_clk");
|
||||
}
|
||||
|
||||
static void master_clk_recalc(struct clk *clk)
|
||||
{
|
||||
int idx = (ctrl_inl(FRQCR) & 0x000f);
|
||||
clk->rate *= clk->parent->rate * multipliers[idx] / divisors[idx];
|
||||
}
|
||||
|
||||
static struct clk_ops sh7343_master_clk_ops = {
|
||||
.init = master_clk_init,
|
||||
.recalc = master_clk_recalc,
|
||||
};
|
||||
|
||||
static void module_clk_init(struct clk *clk)
|
||||
{
|
||||
clk->parent = NULL;
|
||||
clk->rate = CONFIG_SH_PCLK_FREQ;
|
||||
}
|
||||
|
||||
static struct clk_ops sh7343_module_clk_ops = {
|
||||
.init = module_clk_init,
|
||||
};
|
||||
|
||||
static void bus_clk_init(struct clk *clk)
|
||||
{
|
||||
clk->parent = clk_get(NULL, "cpu_clk");
|
||||
}
|
||||
|
||||
static void bus_clk_recalc(struct clk *clk)
|
||||
{
|
||||
int idx = (ctrl_inl(FRQCR) >> 8) & 0x000f;
|
||||
clk->rate = clk->parent->rate * multipliers[idx] / divisors[idx];
|
||||
}
|
||||
|
||||
static struct clk_ops sh7343_bus_clk_ops = {
|
||||
.init = bus_clk_init,
|
||||
.recalc = bus_clk_recalc,
|
||||
};
|
||||
|
||||
static void cpu_clk_init(struct clk *clk)
|
||||
{
|
||||
clk->parent = clk_get(NULL, "module_clk");
|
||||
clk->flags |= CLK_RATE_PROPAGATES;
|
||||
clk_set_rate(clk, clk_get_rate(clk));
|
||||
}
|
||||
|
||||
static void cpu_clk_recalc(struct clk *clk)
|
||||
{
|
||||
int idx = (ctrl_inl(FRQCR) >> 20) & 0x000f;
|
||||
clk->rate = clk->parent->rate * pll_calc() *
|
||||
multipliers[idx] / divisors[idx];
|
||||
}
|
||||
|
||||
static struct clk_ops sh7343_cpu_clk_ops = {
|
||||
.init = cpu_clk_init,
|
||||
.recalc = cpu_clk_recalc,
|
||||
};
|
||||
|
||||
static struct clk_ops *sh7343_clk_ops[] = {
|
||||
&sh7343_master_clk_ops,
|
||||
&sh7343_module_clk_ops,
|
||||
&sh7343_bus_clk_ops,
|
||||
&sh7343_cpu_clk_ops,
|
||||
};
|
||||
|
||||
void __init arch_init_clk_ops(struct clk_ops **ops, int idx)
|
||||
{
|
||||
if (idx < ARRAY_SIZE(sh7343_clk_ops))
|
||||
*ops = sh7343_clk_ops[idx];
|
||||
}
|
80
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
Normal file
80
arch/sh/kernel/cpu/sh4a/setup-sh7722.c
Normal file
@ -0,0 +1,80 @@
|
||||
/*
|
||||
* SH7722 Setup
|
||||
*
|
||||
* Copyright (C) 2006 Paul Mundt
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/serial.h>
|
||||
#include <asm/sci.h>
|
||||
|
||||
static struct plat_sci_port sci_platform_data[] = {
|
||||
{
|
||||
.mapbase = 0xffe00000,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.type = PORT_SCIF,
|
||||
.irqs = { 80, 81, 83, 82 },
|
||||
}, {
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device sci_device = {
|
||||
.name = "sh-sci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = sci_platform_data,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *sh7722_devices[] __initdata = {
|
||||
&sci_device,
|
||||
};
|
||||
|
||||
static int __init sh7722_devices_setup(void)
|
||||
{
|
||||
return platform_add_devices(sh7722_devices,
|
||||
ARRAY_SIZE(sh7722_devices));
|
||||
}
|
||||
__initcall(sh7722_devices_setup);
|
||||
|
||||
static struct ipr_data sh7722_ipr_map[] = {
|
||||
/* IRQ, IPR-idx, shift, prio */
|
||||
{ 16, 0, 12, 2 }, /* TMU0 */
|
||||
{ 17, 0, 8, 2 }, /* TMU1 */
|
||||
{ 80, 6, 12, 3 }, /* SCIF ERI */
|
||||
{ 81, 6, 12, 3 }, /* SCIF RXI */
|
||||
{ 82, 6, 12, 3 }, /* SCIF BRI */
|
||||
{ 83, 6, 12, 3 }, /* SCIF TXI */
|
||||
};
|
||||
|
||||
static unsigned long ipr_offsets[] = {
|
||||
0xa4080000, /* 0: IPRA */
|
||||
0xa4080004, /* 1: IPRB */
|
||||
0xa4080008, /* 2: IPRC */
|
||||
0xa408000c, /* 3: IPRD */
|
||||
0xa4080010, /* 4: IPRE */
|
||||
0xa4080014, /* 5: IPRF */
|
||||
0xa4080018, /* 6: IPRG */
|
||||
0xa408001c, /* 7: IPRH */
|
||||
0xa4080020, /* 8: IPRI */
|
||||
0xa4080024, /* 9: IPRJ */
|
||||
0xa4080028, /* 10: IPRK */
|
||||
0xa408002c, /* 11: IPRL */
|
||||
};
|
||||
|
||||
unsigned int map_ipridx_to_addr(int idx)
|
||||
{
|
||||
if (unlikely(idx >= ARRAY_SIZE(ipr_offsets)))
|
||||
return 0;
|
||||
return ipr_offsets[idx];
|
||||
}
|
||||
|
||||
void __init init_IRQ_ipr(void)
|
||||
{
|
||||
make_ipr_irq(sh7722_ipr_map, ARRAY_SIZE(sh7722_ipr_map));
|
||||
}
|
@ -144,16 +144,16 @@ static struct console *early_console =
|
||||
;
|
||||
|
||||
static int __initdata keep_early;
|
||||
static int early_console_initialized;
|
||||
|
||||
int __init setup_early_printk(char *opt)
|
||||
int __init setup_early_printk(char *buf)
|
||||
{
|
||||
char *space;
|
||||
char buf[256];
|
||||
if (!buf)
|
||||
return 0;
|
||||
|
||||
strlcpy(buf, opt, sizeof(buf));
|
||||
space = strchr(buf, ' ');
|
||||
if (space)
|
||||
*space = 0;
|
||||
if (early_console_initialized)
|
||||
return 0;
|
||||
early_console_initialized = 1;
|
||||
|
||||
if (strstr(buf, "keep"))
|
||||
keep_early = 1;
|
||||
@ -175,12 +175,14 @@ int __init setup_early_printk(char *opt)
|
||||
if (likely(early_console))
|
||||
register_console(early_console);
|
||||
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
__setup("earlyprintk=", setup_early_printk);
|
||||
early_param("earlyprintk", setup_early_printk);
|
||||
|
||||
void __init disable_early_printk(void)
|
||||
{
|
||||
if (!early_console_initialized || !early_console)
|
||||
return;
|
||||
if (!keep_early) {
|
||||
printk("disabling early console\n");
|
||||
unregister_console(early_console);
|
||||
|
@ -79,18 +79,29 @@ debug_kernel_sw:
|
||||
.align 2
|
||||
3: .long kgdb_handle_exception
|
||||
#endif /* CONFIG_SH_KGDB */
|
||||
|
||||
#ifdef CONFIG_SH_STANDARD_BIOS
|
||||
bra debug_kernel_fw
|
||||
nop
|
||||
#endif
|
||||
#endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */
|
||||
|
||||
|
||||
.align 2
|
||||
debug_trap:
|
||||
#if defined(CONFIG_SH_STANDARD_BIOS) || defined(CONFIG_SH_KGDB)
|
||||
mov r8, r0
|
||||
shlr2 r0
|
||||
cmp/eq #0x3f, r0 ! sh_bios() trap
|
||||
bf 1f
|
||||
#ifdef CONFIG_SH_KGDB
|
||||
cmp/eq #0xff, r0 ! XXX: KGDB trap, fix for SH-2.
|
||||
bf 1f
|
||||
#endif
|
||||
mov #OFF_SR, r0
|
||||
mov.l @(r0,r15), r0 ! get status register
|
||||
shll r0
|
||||
shll r0 ! kernel space?
|
||||
bt/s debug_kernel
|
||||
1:
|
||||
#endif
|
||||
mov.l @r15, r0 ! Restore R0 value
|
||||
mov.l 1f, r8
|
||||
|
@ -33,7 +33,8 @@ ENTRY(empty_zero_page)
|
||||
.long 0x00360000 /* INITRD_START */
|
||||
.long 0x000a0000 /* INITRD_SIZE */
|
||||
.long 0
|
||||
.balign PAGE_SIZE,0,PAGE_SIZE
|
||||
1:
|
||||
.skip PAGE_SIZE - empty_zero_page - 1b
|
||||
|
||||
.text
|
||||
/*
|
||||
|
@ -470,9 +470,10 @@ unsigned long get_wchan(struct task_struct *p)
|
||||
*/
|
||||
pc = thread_saved_pc(p);
|
||||
if (in_sched_functions(pc)) {
|
||||
schedule_frame = ((unsigned long *)(long)p->thread.sp)[1];
|
||||
return (unsigned long)((unsigned long *)schedule_frame)[1];
|
||||
schedule_frame = (unsigned long)p->thread.sp;
|
||||
return ((unsigned long *)schedule_frame)[21];
|
||||
}
|
||||
|
||||
return pc;
|
||||
}
|
||||
|
||||
@ -498,6 +499,16 @@ asmlinkage void break_point_trap_software(unsigned long r4, unsigned long r5,
|
||||
{
|
||||
struct pt_regs *regs = RELOC_HIDE(&__regs, 0);
|
||||
|
||||
/* Rewind */
|
||||
regs->pc -= 2;
|
||||
|
||||
#ifdef CONFIG_BUG
|
||||
if (__kernel_text_address(instruction_pointer(regs))) {
|
||||
u16 insn = *(u16 *)instruction_pointer(regs);
|
||||
if (insn == TRAPA_BUG_OPCODE)
|
||||
handle_BUG(regs);
|
||||
}
|
||||
#endif
|
||||
|
||||
force_sig(SIGTRAP, current);
|
||||
}
|
||||
|
@ -84,8 +84,7 @@ unsigned long memory_start, memory_end;
|
||||
|
||||
static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE],
|
||||
struct sh_machine_vector** mvp,
|
||||
unsigned long *mv_io_base,
|
||||
int *mv_mmio_enable)
|
||||
unsigned long *mv_io_base)
|
||||
{
|
||||
char c = ' ', *to = command_line, *from = COMMAND_LINE;
|
||||
int len = 0;
|
||||
@ -112,23 +111,6 @@ static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE],
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_EARLY_PRINTK
|
||||
if (c == ' ' && !memcmp(from, "earlyprintk=", 12)) {
|
||||
char *ep_end;
|
||||
|
||||
if (to != command_line)
|
||||
to--;
|
||||
|
||||
from += 12;
|
||||
ep_end = strchr(from, ' ');
|
||||
|
||||
setup_early_printk(from);
|
||||
printk("early console enabled\n");
|
||||
|
||||
from = ep_end;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (c == ' ' && !memcmp(from, "sh_mv=", 6)) {
|
||||
char* mv_end;
|
||||
char* mv_comma;
|
||||
@ -145,7 +127,6 @@ static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE],
|
||||
int ints[3];
|
||||
get_options(mv_comma+1, ARRAY_SIZE(ints), ints);
|
||||
*mv_io_base = ints[1];
|
||||
*mv_mmio_enable = ints[2];
|
||||
mv_len = mv_comma - from;
|
||||
} else {
|
||||
mv_len = mv_end - from;
|
||||
@ -158,6 +139,7 @@ static inline void parse_cmdline (char ** cmdline_p, char mv_name[MV_NAME_SIZE],
|
||||
|
||||
*mvp = get_mv_byname(mv_name);
|
||||
}
|
||||
|
||||
c = *(from++);
|
||||
if (!c)
|
||||
break;
|
||||
@ -177,9 +159,8 @@ static int __init sh_mv_setup(char **cmdline_p)
|
||||
struct sh_machine_vector *mv = NULL;
|
||||
char mv_name[MV_NAME_SIZE] = "";
|
||||
unsigned long mv_io_base = 0;
|
||||
int mv_mmio_enable = 0;
|
||||
|
||||
parse_cmdline(cmdline_p, mv_name, &mv, &mv_io_base, &mv_mmio_enable);
|
||||
parse_cmdline(cmdline_p, mv_name, &mv, &mv_io_base);
|
||||
|
||||
#ifdef CONFIG_SH_UNKNOWN
|
||||
if (mv == NULL) {
|
||||
@ -258,6 +239,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
sh_mv_setup(cmdline_p);
|
||||
|
||||
|
||||
/*
|
||||
* Find the highest page frame number we have available
|
||||
*/
|
||||
@ -305,6 +287,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
PFN_PHYS(pages));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Reserve the kernel text and
|
||||
* Reserve the bootmem bitmap. We do this in two steps (first step
|
||||
@ -325,14 +308,18 @@ void __init setup_arch(char **cmdline_p)
|
||||
ROOT_DEV = MKDEV(RAMDISK_MAJOR, 0);
|
||||
if (&__rd_start != &__rd_end) {
|
||||
LOADER_TYPE = 1;
|
||||
INITRD_START = PHYSADDR((unsigned long)&__rd_start) - __MEMORY_START;
|
||||
INITRD_SIZE = (unsigned long)&__rd_end - (unsigned long)&__rd_start;
|
||||
INITRD_START = PHYSADDR((unsigned long)&__rd_start) -
|
||||
__MEMORY_START;
|
||||
INITRD_SIZE = (unsigned long)&__rd_end -
|
||||
(unsigned long)&__rd_start;
|
||||
}
|
||||
|
||||
if (LOADER_TYPE && INITRD_START) {
|
||||
if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
|
||||
reserve_bootmem_node(NODE_DATA(0), INITRD_START+__MEMORY_START, INITRD_SIZE);
|
||||
initrd_start = INITRD_START + PAGE_OFFSET + __MEMORY_START;
|
||||
reserve_bootmem_node(NODE_DATA(0), INITRD_START +
|
||||
__MEMORY_START, INITRD_SIZE);
|
||||
initrd_start = INITRD_START + PAGE_OFFSET +
|
||||
__MEMORY_START;
|
||||
initrd_end = initrd_start + INITRD_SIZE;
|
||||
} else {
|
||||
printk("initrd extends beyond end of memory "
|
||||
@ -404,7 +391,7 @@ static const char *cpu_name[] = {
|
||||
[CPU_SH4_202] = "SH4-202", [CPU_SH4_501] = "SH4-501",
|
||||
[CPU_SH7770] = "SH7770", [CPU_SH7780] = "SH7780",
|
||||
[CPU_SH7781] = "SH7781", [CPU_SH7343] = "SH7343",
|
||||
[CPU_SH7785] = "SH7785",
|
||||
[CPU_SH7785] = "SH7785", [CPU_SH7722] = "SH7722",
|
||||
[CPU_SH_NONE] = "Unknown"
|
||||
};
|
||||
|
||||
|
@ -70,13 +70,26 @@ DECLARE_EXPORT(__sdivsi3);
|
||||
DECLARE_EXPORT(__ashrdi3);
|
||||
DECLARE_EXPORT(__ashldi3);
|
||||
DECLARE_EXPORT(__lshrdi3);
|
||||
DECLARE_EXPORT(__movstr);
|
||||
DECLARE_EXPORT(__movstrSI16);
|
||||
#if __GNUC__ == 4
|
||||
DECLARE_EXPORT(__movmem);
|
||||
#else
|
||||
DECLARE_EXPORT(__movstr);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_SH4
|
||||
#if __GNUC__ == 4
|
||||
DECLARE_EXPORT(__movmem_i4_even);
|
||||
DECLARE_EXPORT(__movmem_i4_odd);
|
||||
DECLARE_EXPORT(__movmemSI12_i4);
|
||||
DECLARE_EXPORT(__sdivsi3_i4i);
|
||||
DECLARE_EXPORT(__udiv_qrnnd_16);
|
||||
DECLARE_EXPORT(__udivsi3_i4i);
|
||||
#else /* GCC 3.x */
|
||||
DECLARE_EXPORT(__movstr_i4_even);
|
||||
DECLARE_EXPORT(__movstr_i4_odd);
|
||||
DECLARE_EXPORT(__movstrSI12_i4);
|
||||
#endif /* __GNUC__ == 4 */
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)
|
||||
|
@ -101,7 +101,7 @@ sys_sigaltstack(const stack_t __user *uss, stack_t __user *uoss,
|
||||
*/
|
||||
|
||||
#define MOVW(n) (0x9300|((n)-2)) /* Move mem word at PC+n to R3 */
|
||||
#if defined(CONFIG_CPU_SH2) || defined(CONFIG_CPU_SH2A)
|
||||
#if defined(CONFIG_CPU_SH2)
|
||||
#define TRAP_NOARG 0xc320 /* Syscall w/no args (NR in R3) */
|
||||
#else
|
||||
#define TRAP_NOARG 0xc310 /* Syscall w/no args (NR in R3) */
|
||||
|
@ -314,6 +314,12 @@ asmlinkage int sys_fadvise64_64_wrapper(int fd, u32 offset0, u32 offset1,
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(CONFIG_CPU_SH2) || defined(CONFIG_CPU_SH2A)
|
||||
#define SYSCALL_ARG3 "trapa #0x23"
|
||||
#else
|
||||
#define SYSCALL_ARG3 "trapa #0x13"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Do a system call from kernel instead of calling sys_execve so we
|
||||
* end up with proper pt_regs.
|
||||
@ -324,7 +330,7 @@ int kernel_execve(const char *filename, char *const argv[], char *const envp[])
|
||||
register long __sc4 __asm__ ("r4") = (long) filename;
|
||||
register long __sc5 __asm__ ("r5") = (long) argv;
|
||||
register long __sc6 __asm__ ("r6") = (long) envp;
|
||||
__asm__ __volatile__ ("trapa #0x13" : "=z" (__sc0)
|
||||
__asm__ __volatile__ (SYSCALL_ARG3 : "=z" (__sc0)
|
||||
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6)
|
||||
: "memory");
|
||||
return __sc0;
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/debug_locks.h>
|
||||
#include <linux/limits.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
@ -129,6 +130,40 @@ static int die_if_no_fixup(const char * str, struct pt_regs * regs, long err)
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BUG
|
||||
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||
static inline void do_bug_verbose(struct pt_regs *regs)
|
||||
{
|
||||
struct bug_frame f;
|
||||
long len;
|
||||
|
||||
if (__copy_from_user(&f, (const void __user *)regs->pc,
|
||||
sizeof(struct bug_frame)))
|
||||
return;
|
||||
|
||||
len = __strnlen_user(f.file, PATH_MAX) - 1;
|
||||
if (unlikely(len < 0 || len >= PATH_MAX))
|
||||
f.file = "<bad filename>";
|
||||
len = __strnlen_user(f.func, PATH_MAX) - 1;
|
||||
if (unlikely(len < 0 || len >= PATH_MAX))
|
||||
f.func = "<bad function>";
|
||||
|
||||
printk(KERN_ALERT "kernel BUG in %s() at %s:%d!\n",
|
||||
f.func, f.file, f.line);
|
||||
}
|
||||
#else
|
||||
static inline void do_bug_verbose(struct pt_regs *regs)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_DEBUG_BUGVERBOSE */
|
||||
#endif /* CONFIG_BUG */
|
||||
|
||||
void handle_BUG(struct pt_regs *regs)
|
||||
{
|
||||
do_bug_verbose(regs);
|
||||
die("Kernel BUG", regs, TRAPA_BUG_OPCODE & 0xff);
|
||||
}
|
||||
|
||||
/*
|
||||
* handle an instruction that does an unaligned memory access by emulating the
|
||||
* desired behaviour
|
||||
|
@ -51,7 +51,7 @@ SECTIONS
|
||||
}
|
||||
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
.data.page_aligned : { *(.data.idt) }
|
||||
.data.page_aligned : { *(.data.page_aligned) }
|
||||
|
||||
. = ALIGN(32);
|
||||
__per_cpu_start = .;
|
||||
|
@ -35,6 +35,9 @@ config CPU_SUBTYPE_ST40
|
||||
select CPU_SH4
|
||||
select CPU_HAS_INTC2_IRQ
|
||||
|
||||
config CPU_SHX2
|
||||
bool
|
||||
|
||||
#
|
||||
# Processor subtypes
|
||||
#
|
||||
@ -180,6 +183,7 @@ config CPU_SUBTYPE_SH7780
|
||||
config CPU_SUBTYPE_SH7785
|
||||
bool "Support SH7785 processor"
|
||||
select CPU_SH4A
|
||||
select CPU_SHX2
|
||||
select CPU_HAS_INTC2_IRQ
|
||||
|
||||
comment "SH4AL-DSP Processor Support"
|
||||
@ -192,6 +196,12 @@ config CPU_SUBTYPE_SH7343
|
||||
bool "Support SH7343 processor"
|
||||
select CPU_SH4AL_DSP
|
||||
|
||||
config CPU_SUBTYPE_SH7722
|
||||
bool "Support SH7722 processor"
|
||||
select CPU_SH4AL_DSP
|
||||
select CPU_SHX2
|
||||
select CPU_HAS_IPR_IRQ
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Memory management options"
|
||||
@ -250,7 +260,7 @@ config 32BIT
|
||||
|
||||
config X2TLB
|
||||
bool "Enable extended TLB mode"
|
||||
depends on CPU_SUBTYPE_SH7785 && MMU && EXPERIMENTAL
|
||||
depends on CPU_SHX2 && MMU && EXPERIMENTAL
|
||||
help
|
||||
Selecting this option will enable the extended mode of the SH-X2
|
||||
TLB. For legacy SH-X behaviour and interoperability, say N. For
|
||||
|
@ -107,7 +107,7 @@ void __init p3_cache_init(void)
|
||||
|
||||
emit_cache_params();
|
||||
|
||||
if (remap_area_pages(P3SEG, 0, PAGE_SIZE * 4, _PAGE_CACHABLE))
|
||||
if (ioremap_page_range(P3SEG, P3SEG + (PAGE_SIZE * 4), 0, PAGE_KERNEL))
|
||||
panic("%s failed.", __FUNCTION__);
|
||||
|
||||
for (i = 0; i < cpu_data->dcache.n_aliases; i++)
|
||||
|
@ -77,6 +77,7 @@ void show_mem(void)
|
||||
printk("%d pages swap cached\n",cached);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
|
||||
{
|
||||
pgd_t *pgd;
|
||||
@ -139,6 +140,7 @@ void __set_fixmap(enum fixed_addresses idx, unsigned long phys, pgprot_t prot)
|
||||
|
||||
set_pte_phys(address, phys, prot);
|
||||
}
|
||||
#endif /* CONFIG_MMU */
|
||||
|
||||
/* References to section boundaries */
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
* SuperH On-Chip RTC Support
|
||||
*
|
||||
* Copyright (C) 2006 Paul Mundt
|
||||
* Copyright (C) 2006 Jamie Lenehan
|
||||
*
|
||||
* Based on the old arch/sh/kernel/cpu/rtc.c by:
|
||||
*
|
||||
@ -21,7 +22,10 @@
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <asm/io.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#define DRV_NAME "sh-rtc"
|
||||
#define DRV_VERSION "0.1.2"
|
||||
|
||||
#ifdef CONFIG_CPU_SH3
|
||||
#define rtc_reg_size sizeof(u16)
|
||||
@ -33,22 +37,26 @@
|
||||
|
||||
#define RTC_REG(r) ((r) * rtc_reg_size)
|
||||
|
||||
#define R64CNT RTC_REG(0)
|
||||
#define RSECCNT RTC_REG(1)
|
||||
#define RMINCNT RTC_REG(2)
|
||||
#define RHRCNT RTC_REG(3)
|
||||
#define RWKCNT RTC_REG(4)
|
||||
#define RDAYCNT RTC_REG(5)
|
||||
#define RMONCNT RTC_REG(6)
|
||||
#define RYRCNT RTC_REG(7)
|
||||
#define RSECAR RTC_REG(8)
|
||||
#define RMINAR RTC_REG(9)
|
||||
#define RHRAR RTC_REG(10)
|
||||
#define RWKAR RTC_REG(11)
|
||||
#define RDAYAR RTC_REG(12)
|
||||
#define RMONAR RTC_REG(13)
|
||||
#define RCR1 RTC_REG(14)
|
||||
#define RCR2 RTC_REG(15)
|
||||
#define R64CNT RTC_REG(0)
|
||||
|
||||
#define RSECCNT RTC_REG(1) /* RTC sec */
|
||||
#define RMINCNT RTC_REG(2) /* RTC min */
|
||||
#define RHRCNT RTC_REG(3) /* RTC hour */
|
||||
#define RWKCNT RTC_REG(4) /* RTC week */
|
||||
#define RDAYCNT RTC_REG(5) /* RTC day */
|
||||
#define RMONCNT RTC_REG(6) /* RTC month */
|
||||
#define RYRCNT RTC_REG(7) /* RTC year */
|
||||
#define RSECAR RTC_REG(8) /* ALARM sec */
|
||||
#define RMINAR RTC_REG(9) /* ALARM min */
|
||||
#define RHRAR RTC_REG(10) /* ALARM hour */
|
||||
#define RWKAR RTC_REG(11) /* ALARM week */
|
||||
#define RDAYAR RTC_REG(12) /* ALARM day */
|
||||
#define RMONAR RTC_REG(13) /* ALARM month */
|
||||
#define RCR1 RTC_REG(14) /* Control */
|
||||
#define RCR2 RTC_REG(15) /* Control */
|
||||
|
||||
/* ALARM Bits - or with BCD encoded value */
|
||||
#define AR_ENB 0x80 /* Enable for alarm cmp */
|
||||
|
||||
/* RCR1 Bits */
|
||||
#define RCR1_CF 0x80 /* Carry Flag */
|
||||
@ -71,22 +79,28 @@ struct sh_rtc {
|
||||
unsigned int alarm_irq, periodic_irq, carry_irq;
|
||||
struct rtc_device *rtc_dev;
|
||||
spinlock_t lock;
|
||||
int rearm_aie;
|
||||
};
|
||||
|
||||
static irqreturn_t sh_rtc_interrupt(int irq, void *id)
|
||||
static irqreturn_t sh_rtc_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
struct platform_device *pdev = id;
|
||||
struct platform_device *pdev = to_platform_device(dev_id);
|
||||
struct sh_rtc *rtc = platform_get_drvdata(pdev);
|
||||
unsigned int tmp, events = 0;
|
||||
|
||||
spin_lock(&rtc->lock);
|
||||
|
||||
tmp = readb(rtc->regbase + RCR1);
|
||||
tmp &= ~RCR1_CF;
|
||||
|
||||
if (tmp & RCR1_AF)
|
||||
events |= RTC_AF | RTC_IRQF;
|
||||
|
||||
tmp &= ~(RCR1_CF | RCR1_AF);
|
||||
if (rtc->rearm_aie) {
|
||||
if (tmp & RCR1_AF)
|
||||
tmp &= ~RCR1_AF; /* try to clear AF again */
|
||||
else {
|
||||
tmp |= RCR1_AIE; /* AF has cleared, rearm IRQ */
|
||||
rtc->rearm_aie = 0;
|
||||
}
|
||||
}
|
||||
|
||||
writeb(tmp, rtc->regbase + RCR1);
|
||||
|
||||
@ -97,9 +111,45 @@ static irqreturn_t sh_rtc_interrupt(int irq, void *id)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static irqreturn_t sh_rtc_periodic(int irq, void *id)
|
||||
static irqreturn_t sh_rtc_alarm(int irq, void *dev_id)
|
||||
{
|
||||
struct sh_rtc *rtc = dev_get_drvdata(id);
|
||||
struct platform_device *pdev = to_platform_device(dev_id);
|
||||
struct sh_rtc *rtc = platform_get_drvdata(pdev);
|
||||
unsigned int tmp, events = 0;
|
||||
|
||||
spin_lock(&rtc->lock);
|
||||
|
||||
tmp = readb(rtc->regbase + RCR1);
|
||||
|
||||
/*
|
||||
* If AF is set then the alarm has triggered. If we clear AF while
|
||||
* the alarm time still matches the RTC time then AF will
|
||||
* immediately be set again, and if AIE is enabled then the alarm
|
||||
* interrupt will immediately be retrigger. So we clear AIE here
|
||||
* and use rtc->rearm_aie so that the carry interrupt will keep
|
||||
* trying to clear AF and once it stays cleared it'll re-enable
|
||||
* AIE.
|
||||
*/
|
||||
if (tmp & RCR1_AF) {
|
||||
events |= RTC_AF | RTC_IRQF;
|
||||
|
||||
tmp &= ~(RCR1_AF|RCR1_AIE);
|
||||
|
||||
writeb(tmp, rtc->regbase + RCR1);
|
||||
|
||||
rtc->rearm_aie = 1;
|
||||
|
||||
rtc_update_irq(&rtc->rtc_dev->class_dev, 1, events);
|
||||
}
|
||||
|
||||
spin_unlock(&rtc->lock);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static irqreturn_t sh_rtc_periodic(int irq, void *dev_id)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev_id);
|
||||
struct sh_rtc *rtc = platform_get_drvdata(pdev);
|
||||
|
||||
spin_lock(&rtc->lock);
|
||||
|
||||
@ -139,10 +189,11 @@ static inline void sh_rtc_setaie(struct device *dev, unsigned int enable)
|
||||
|
||||
tmp = readb(rtc->regbase + RCR1);
|
||||
|
||||
if (enable)
|
||||
tmp |= RCR1_AIE;
|
||||
else
|
||||
if (!enable) {
|
||||
tmp &= ~RCR1_AIE;
|
||||
rtc->rearm_aie = 0;
|
||||
} else if (rtc->rearm_aie == 0)
|
||||
tmp |= RCR1_AIE;
|
||||
|
||||
writeb(tmp, rtc->regbase + RCR1);
|
||||
|
||||
@ -177,7 +228,7 @@ static int sh_rtc_open(struct device *dev)
|
||||
goto err_bad_carry;
|
||||
}
|
||||
|
||||
ret = request_irq(rtc->alarm_irq, sh_rtc_interrupt, IRQF_DISABLED,
|
||||
ret = request_irq(rtc->alarm_irq, sh_rtc_alarm, IRQF_DISABLED,
|
||||
"sh-rtc alarm", dev);
|
||||
if (unlikely(ret)) {
|
||||
dev_err(dev, "request alarm IRQ failed with %d, IRQ %d\n",
|
||||
@ -200,6 +251,7 @@ static void sh_rtc_release(struct device *dev)
|
||||
struct sh_rtc *rtc = dev_get_drvdata(dev);
|
||||
|
||||
sh_rtc_setpie(dev, 0);
|
||||
sh_rtc_setaie(dev, 0);
|
||||
|
||||
free_irq(rtc->periodic_irq, dev);
|
||||
free_irq(rtc->carry_irq, dev);
|
||||
@ -267,7 +319,7 @@ static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm)
|
||||
tm->tm_hour = BCD2BIN(readb(rtc->regbase + RHRCNT));
|
||||
tm->tm_wday = BCD2BIN(readb(rtc->regbase + RWKCNT));
|
||||
tm->tm_mday = BCD2BIN(readb(rtc->regbase + RDAYCNT));
|
||||
tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT));
|
||||
tm->tm_mon = BCD2BIN(readb(rtc->regbase + RMONCNT)) - 1;
|
||||
|
||||
#if defined(CONFIG_CPU_SH4)
|
||||
yr = readw(rtc->regbase + RYRCNT);
|
||||
@ -295,7 +347,7 @@ static int sh_rtc_read_time(struct device *dev, struct rtc_time *tm)
|
||||
"mday=%d, mon=%d, year=%d, wday=%d\n",
|
||||
__FUNCTION__,
|
||||
tm->tm_sec, tm->tm_min, tm->tm_hour,
|
||||
tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
|
||||
tm->tm_mday, tm->tm_mon + 1, tm->tm_year, tm->tm_wday);
|
||||
|
||||
if (rtc_valid_tm(tm) < 0)
|
||||
dev_err(dev, "invalid date\n");
|
||||
@ -322,7 +374,7 @@ static int sh_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
||||
writeb(BIN2BCD(tm->tm_hour), rtc->regbase + RHRCNT);
|
||||
writeb(BIN2BCD(tm->tm_wday), rtc->regbase + RWKCNT);
|
||||
writeb(BIN2BCD(tm->tm_mday), rtc->regbase + RDAYCNT);
|
||||
writeb(BIN2BCD(tm->tm_mon), rtc->regbase + RMONCNT);
|
||||
writeb(BIN2BCD(tm->tm_mon + 1), rtc->regbase + RMONCNT);
|
||||
|
||||
#ifdef CONFIG_CPU_SH3
|
||||
year = tm->tm_year % 100;
|
||||
@ -344,12 +396,136 @@ static int sh_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int sh_rtc_read_alarm_value(struct sh_rtc *rtc, int reg_off)
|
||||
{
|
||||
unsigned int byte;
|
||||
int value = 0xff; /* return 0xff for ignored values */
|
||||
|
||||
byte = readb(rtc->regbase + reg_off);
|
||||
if (byte & AR_ENB) {
|
||||
byte &= ~AR_ENB; /* strip the enable bit */
|
||||
value = BCD2BIN(byte);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static int sh_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct sh_rtc *rtc = platform_get_drvdata(pdev);
|
||||
struct rtc_time* tm = &wkalrm->time;
|
||||
|
||||
spin_lock_irq(&rtc->lock);
|
||||
|
||||
tm->tm_sec = sh_rtc_read_alarm_value(rtc, RSECAR);
|
||||
tm->tm_min = sh_rtc_read_alarm_value(rtc, RMINAR);
|
||||
tm->tm_hour = sh_rtc_read_alarm_value(rtc, RHRAR);
|
||||
tm->tm_wday = sh_rtc_read_alarm_value(rtc, RWKAR);
|
||||
tm->tm_mday = sh_rtc_read_alarm_value(rtc, RDAYAR);
|
||||
tm->tm_mon = sh_rtc_read_alarm_value(rtc, RMONAR);
|
||||
if (tm->tm_mon > 0)
|
||||
tm->tm_mon -= 1; /* RTC is 1-12, tm_mon is 0-11 */
|
||||
tm->tm_year = 0xffff;
|
||||
|
||||
spin_unlock_irq(&rtc->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sh_rtc_write_alarm_value(struct sh_rtc *rtc,
|
||||
int value, int reg_off)
|
||||
{
|
||||
/* < 0 for a value that is ignored */
|
||||
if (value < 0)
|
||||
writeb(0, rtc->regbase + reg_off);
|
||||
else
|
||||
writeb(BIN2BCD(value) | AR_ENB, rtc->regbase + reg_off);
|
||||
}
|
||||
|
||||
static int sh_rtc_check_alarm(struct rtc_time* tm)
|
||||
{
|
||||
/*
|
||||
* The original rtc says anything > 0xc0 is "don't care" or "match
|
||||
* all" - most users use 0xff but rtc-dev uses -1 for the same thing.
|
||||
* The original rtc doesn't support years - some things use -1 and
|
||||
* some 0xffff. We use -1 to make out tests easier.
|
||||
*/
|
||||
if (tm->tm_year == 0xffff)
|
||||
tm->tm_year = -1;
|
||||
if (tm->tm_mon >= 0xff)
|
||||
tm->tm_mon = -1;
|
||||
if (tm->tm_mday >= 0xff)
|
||||
tm->tm_mday = -1;
|
||||
if (tm->tm_wday >= 0xff)
|
||||
tm->tm_wday = -1;
|
||||
if (tm->tm_hour >= 0xff)
|
||||
tm->tm_hour = -1;
|
||||
if (tm->tm_min >= 0xff)
|
||||
tm->tm_min = -1;
|
||||
if (tm->tm_sec >= 0xff)
|
||||
tm->tm_sec = -1;
|
||||
|
||||
if (tm->tm_year > 9999 ||
|
||||
tm->tm_mon >= 12 ||
|
||||
tm->tm_mday == 0 || tm->tm_mday >= 32 ||
|
||||
tm->tm_wday >= 7 ||
|
||||
tm->tm_hour >= 24 ||
|
||||
tm->tm_min >= 60 ||
|
||||
tm->tm_sec >= 60)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sh_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *wkalrm)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct sh_rtc *rtc = platform_get_drvdata(pdev);
|
||||
unsigned int rcr1;
|
||||
struct rtc_time *tm = &wkalrm->time;
|
||||
int mon, err;
|
||||
|
||||
err = sh_rtc_check_alarm(tm);
|
||||
if (unlikely(err < 0))
|
||||
return err;
|
||||
|
||||
spin_lock_irq(&rtc->lock);
|
||||
|
||||
/* disable alarm interrupt and clear flag */
|
||||
rcr1 = readb(rtc->regbase + RCR1);
|
||||
rcr1 &= ~RCR1_AF;
|
||||
writeb(rcr1 & ~RCR1_AIE, rtc->regbase + RCR1);
|
||||
|
||||
rtc->rearm_aie = 0;
|
||||
|
||||
/* set alarm time */
|
||||
sh_rtc_write_alarm_value(rtc, tm->tm_sec, RSECAR);
|
||||
sh_rtc_write_alarm_value(rtc, tm->tm_min, RMINAR);
|
||||
sh_rtc_write_alarm_value(rtc, tm->tm_hour, RHRAR);
|
||||
sh_rtc_write_alarm_value(rtc, tm->tm_wday, RWKAR);
|
||||
sh_rtc_write_alarm_value(rtc, tm->tm_mday, RDAYAR);
|
||||
mon = tm->tm_mon;
|
||||
if (mon >= 0)
|
||||
mon += 1;
|
||||
sh_rtc_write_alarm_value(rtc, mon, RMONAR);
|
||||
|
||||
/* Restore interrupt activation status */
|
||||
writeb(rcr1, rtc->regbase + RCR1);
|
||||
|
||||
spin_unlock_irq(&rtc->lock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct rtc_class_ops sh_rtc_ops = {
|
||||
.open = sh_rtc_open,
|
||||
.release = sh_rtc_release,
|
||||
.ioctl = sh_rtc_ioctl,
|
||||
.read_time = sh_rtc_read_time,
|
||||
.set_time = sh_rtc_set_time,
|
||||
.read_alarm = sh_rtc_read_alarm,
|
||||
.set_alarm = sh_rtc_set_alarm,
|
||||
.proc = sh_rtc_proc,
|
||||
};
|
||||
|
||||
@ -442,7 +618,7 @@ static int __devexit sh_rtc_remove(struct platform_device *pdev)
|
||||
}
|
||||
static struct platform_driver sh_rtc_platform_driver = {
|
||||
.driver = {
|
||||
.name = "sh-rtc",
|
||||
.name = DRV_NAME,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = sh_rtc_probe,
|
||||
@ -463,5 +639,6 @@ module_init(sh_rtc_init);
|
||||
module_exit(sh_rtc_exit);
|
||||
|
||||
MODULE_DESCRIPTION("SuperH on-chip RTC driver");
|
||||
MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>");
|
||||
MODULE_VERSION(DRV_VERSION);
|
||||
MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>, Jamie Lenehan <lenehan@twibble.org>");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
@ -319,6 +319,28 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
|
||||
|
||||
sci_out(port, SCFCR, fcr_val);
|
||||
}
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
|
||||
{
|
||||
unsigned int fcr_val = 0;
|
||||
|
||||
if (cflag & CRTSCTS) {
|
||||
fcr_val |= SCFCR_MCE;
|
||||
|
||||
ctrl_outw(0x0000, PORT_PSCR);
|
||||
} else {
|
||||
unsigned short data;
|
||||
|
||||
data = ctrl_inw(PORT_PSCR);
|
||||
data &= 0x033f;
|
||||
data |= 0x0400;
|
||||
ctrl_outw(data, PORT_PSCR);
|
||||
|
||||
ctrl_outw(ctrl_inw(SCSPTR0) & 0x17, SCSPTR0);
|
||||
}
|
||||
|
||||
sci_out(port, SCFCR, fcr_val);
|
||||
}
|
||||
#else
|
||||
/* For SH7750 */
|
||||
static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag)
|
||||
|
@ -90,6 +90,13 @@
|
||||
# define SCSPTR3 0xffe30010 /* 16 bit SCIF */
|
||||
# define SCSCR_INIT(port) 0x32 /* TIE=0,RIE=0,TE=1,RE=1,REIE=0,CKE=1 */
|
||||
# define SCIF_ONLY
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
# define SCPDR0 0xA405013E /* 16 bit SCIF0 PSDR */
|
||||
# define SCSPTR0 SCPDR0
|
||||
# define SCIF_ORER 0x0001 /* overrun error bit */
|
||||
# define SCSCR_INIT(port) 0x0038 /* TIE=0,RIE=0,TE=1,RE=1,REIE=1 */
|
||||
# define SCIF_ONLY
|
||||
# define PORT_PSCR 0xA405011E
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH4_202)
|
||||
# define SCSPTR2 0xffe80020 /* 16 bit SCIF */
|
||||
# define SCIF_ORER 0x0001 /* overrun error bit */
|
||||
@ -495,6 +502,7 @@ static inline int sci_rxd_in(struct uart_port *port)
|
||||
return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
if (port->mapbase == 0xfe620000)
|
||||
return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
return 1;
|
||||
}
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7300)
|
||||
static inline int sci_rxd_in(struct uart_port *port)
|
||||
@ -521,6 +529,13 @@ static inline int sci_rxd_in(struct uart_port *port)
|
||||
return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
return 1;
|
||||
}
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
static inline int sci_rxd_in(struct uart_port *port)
|
||||
{
|
||||
if (port->mapbase == 0xffe00000)
|
||||
return ctrl_inb(SCPDR0) & 0x0001 ? 1 : 0; /* SCIF0 */
|
||||
return 1;
|
||||
}
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_ST40STB1)
|
||||
static inline int sci_rxd_in(struct uart_port *port)
|
||||
{
|
||||
@ -550,6 +565,7 @@ static inline int sci_rxd_in(struct uart_port *port)
|
||||
return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
if (port->mapbase == 0xff925000)
|
||||
return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
return 1;
|
||||
}
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7780)
|
||||
static inline int sci_rxd_in(struct uart_port *port)
|
||||
@ -558,6 +574,7 @@ static inline int sci_rxd_in(struct uart_port *port)
|
||||
return ctrl_inw(SCSPTR0) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
if (port->mapbase == 0xffe10000)
|
||||
return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
return 1;
|
||||
}
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7206)
|
||||
static inline int sci_rxd_in(struct uart_port *port)
|
||||
@ -570,6 +587,7 @@ static inline int sci_rxd_in(struct uart_port *port)
|
||||
return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
if (port->mapbase == 0xfffe9800)
|
||||
return ctrl_inw(SCSPTR3) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
return 1;
|
||||
}
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7619)
|
||||
static inline int sci_rxd_in(struct uart_port *port)
|
||||
@ -580,6 +598,7 @@ static inline int sci_rxd_in(struct uart_port *port)
|
||||
return ctrl_inw(SCSPTR1) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
if (port->mapbase == 0xf8420000)
|
||||
return ctrl_inw(SCSPTR2) & 0x0001 ? 1 : 0; /* SCIF */
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
71
include/asm-sh/atomic-irq.h
Normal file
71
include/asm-sh/atomic-irq.h
Normal file
@ -0,0 +1,71 @@
|
||||
#ifndef __ASM_SH_ATOMIC_IRQ_H
|
||||
#define __ASM_SH_ATOMIC_IRQ_H
|
||||
|
||||
/*
|
||||
* To get proper branch prediction for the main line, we must branch
|
||||
* forward to code at the end of this object's .text section, then
|
||||
* branch back to restart the operation.
|
||||
*/
|
||||
static inline void atomic_add(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v += i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline void atomic_sub(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v -= i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline int atomic_add_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long temp, flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
temp = *(long *)v;
|
||||
temp += i;
|
||||
*(long *)v = temp;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
static inline int atomic_sub_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long temp, flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
temp = *(long *)v;
|
||||
temp -= i;
|
||||
*(long *)v = temp;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
static inline void atomic_clear_mask(unsigned int mask, atomic_t *v)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v &= ~mask;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline void atomic_set_mask(unsigned int mask, atomic_t *v)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v |= mask;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
#endif /* __ASM_SH_ATOMIC_IRQ_H */
|
107
include/asm-sh/atomic-llsc.h
Normal file
107
include/asm-sh/atomic-llsc.h
Normal file
@ -0,0 +1,107 @@
|
||||
#ifndef __ASM_SH_ATOMIC_LLSC_H
|
||||
#define __ASM_SH_ATOMIC_LLSC_H
|
||||
|
||||
/*
|
||||
* To get proper branch prediction for the main line, we must branch
|
||||
* forward to code at the end of this object's .text section, then
|
||||
* branch back to restart the operation.
|
||||
*/
|
||||
static inline void atomic_add(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_add \n"
|
||||
" add %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
}
|
||||
|
||||
static inline void atomic_sub(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_sub \n"
|
||||
" sub %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
}
|
||||
|
||||
/*
|
||||
* SH-4A note:
|
||||
*
|
||||
* We basically get atomic_xxx_return() for free compared with
|
||||
* atomic_xxx(). movli.l/movco.l require r0 due to the instruction
|
||||
* encoding, so the retval is automatically set without having to
|
||||
* do any special work.
|
||||
*/
|
||||
static inline int atomic_add_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long temp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_add_return \n"
|
||||
" add %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
" synco \n"
|
||||
: "=&z" (temp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
static inline int atomic_sub_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long temp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_sub_return \n"
|
||||
" sub %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
" synco \n"
|
||||
: "=&z" (temp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
static inline void atomic_clear_mask(unsigned int mask, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_clear_mask \n"
|
||||
" and %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (~mask), "r" (&v->counter)
|
||||
: "t");
|
||||
}
|
||||
|
||||
static inline void atomic_set_mask(unsigned int mask, atomic_t *v)
|
||||
{
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_set_mask \n"
|
||||
" or %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (mask), "r" (&v->counter)
|
||||
: "t");
|
||||
}
|
||||
|
||||
#endif /* __ASM_SH_ATOMIC_LLSC_H */
|
@ -17,119 +17,14 @@ typedef struct { volatile int counter; } atomic_t;
|
||||
#include <linux/compiler.h>
|
||||
#include <asm/system.h>
|
||||
|
||||
/*
|
||||
* To get proper branch prediction for the main line, we must branch
|
||||
* forward to code at the end of this object's .text section, then
|
||||
* branch back to restart the operation.
|
||||
*/
|
||||
static inline void atomic_add(int i, atomic_t *v)
|
||||
{
|
||||
#ifdef CONFIG_CPU_SH4A
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_add \n"
|
||||
" add %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
#include <asm/atomic-llsc.h>
|
||||
#else
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v += i;
|
||||
local_irq_restore(flags);
|
||||
#include <asm/atomic-irq.h>
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void atomic_sub(int i, atomic_t *v)
|
||||
{
|
||||
#ifdef CONFIG_CPU_SH4A
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_sub \n"
|
||||
" sub %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
#else
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v -= i;
|
||||
local_irq_restore(flags);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* SH-4A note:
|
||||
*
|
||||
* We basically get atomic_xxx_return() for free compared with
|
||||
* atomic_xxx(). movli.l/movco.l require r0 due to the instruction
|
||||
* encoding, so the retval is automatically set without having to
|
||||
* do any special work.
|
||||
*/
|
||||
static inline int atomic_add_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long temp;
|
||||
|
||||
#ifdef CONFIG_CPU_SH4A
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_add_return \n"
|
||||
" add %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
" synco \n"
|
||||
: "=&z" (temp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
#else
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
temp = *(long *)v;
|
||||
temp += i;
|
||||
*(long *)v = temp;
|
||||
local_irq_restore(flags);
|
||||
#endif
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
#define atomic_add_negative(a, v) (atomic_add_return((a), (v)) < 0)
|
||||
|
||||
static inline int atomic_sub_return(int i, atomic_t *v)
|
||||
{
|
||||
unsigned long temp;
|
||||
|
||||
#ifdef CONFIG_CPU_SH4A
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_sub_return \n"
|
||||
" sub %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
" synco \n"
|
||||
: "=&z" (temp)
|
||||
: "r" (i), "r" (&v->counter)
|
||||
: "t");
|
||||
#else
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
temp = *(long *)v;
|
||||
temp -= i;
|
||||
*(long *)v = temp;
|
||||
local_irq_restore(flags);
|
||||
#endif
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
#define atomic_dec_return(v) atomic_sub_return(1,(v))
|
||||
#define atomic_inc_return(v) atomic_add_return(1,(v))
|
||||
|
||||
@ -180,50 +75,6 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
|
||||
}
|
||||
#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
|
||||
|
||||
static inline void atomic_clear_mask(unsigned int mask, atomic_t *v)
|
||||
{
|
||||
#ifdef CONFIG_CPU_SH4A
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_clear_mask \n"
|
||||
" and %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (~mask), "r" (&v->counter)
|
||||
: "t");
|
||||
#else
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v &= ~mask;
|
||||
local_irq_restore(flags);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void atomic_set_mask(unsigned int mask, atomic_t *v)
|
||||
{
|
||||
#ifdef CONFIG_CPU_SH4A
|
||||
unsigned long tmp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: movli.l @%2, %0 ! atomic_set_mask \n"
|
||||
" or %1, %0 \n"
|
||||
" movco.l %0, @%2 \n"
|
||||
" bf 1b \n"
|
||||
: "=&z" (tmp)
|
||||
: "r" (mask), "r" (&v->counter)
|
||||
: "t");
|
||||
#else
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v |= mask;
|
||||
local_irq_restore(flags);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Atomic operations are already serializing on SH */
|
||||
#define smp_mb__before_atomic_dec() barrier()
|
||||
#define smp_mb__after_atomic_dec() barrier()
|
||||
|
@ -1,19 +1,54 @@
|
||||
#ifndef __ASM_SH_BUG_H
|
||||
#define __ASM_SH_BUG_H
|
||||
|
||||
|
||||
#ifdef CONFIG_BUG
|
||||
/*
|
||||
* Tell the user there is some problem.
|
||||
*/
|
||||
#define BUG() do { \
|
||||
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
|
||||
*(volatile int *)0 = 0; \
|
||||
|
||||
struct bug_frame {
|
||||
unsigned short opcode;
|
||||
unsigned short line;
|
||||
const char *file;
|
||||
const char *func;
|
||||
};
|
||||
|
||||
struct pt_regs;
|
||||
|
||||
extern void handle_BUG(struct pt_regs *);
|
||||
|
||||
#define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */
|
||||
|
||||
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||
|
||||
#define BUG() \
|
||||
do { \
|
||||
__asm__ __volatile__ ( \
|
||||
".align 2\n\t" \
|
||||
".short %O0\n\t" \
|
||||
".short %O1\n\t" \
|
||||
".long %O2\n\t" \
|
||||
".long %O3\n\t" \
|
||||
: \
|
||||
: "n" (TRAPA_BUG_OPCODE), \
|
||||
"i" (__LINE__), "X" (__FILE__), \
|
||||
"X" (__FUNCTION__)); \
|
||||
} while (0)
|
||||
|
||||
#else
|
||||
|
||||
#define BUG() \
|
||||
do { \
|
||||
__asm__ __volatile__ ( \
|
||||
".align 2\n\t" \
|
||||
".short %O0\n\t" \
|
||||
: \
|
||||
: "n" (TRAPA_BUG_OPCODE)); \
|
||||
} while (0)
|
||||
|
||||
#endif /* CONFIG_DEBUG_BUGVERBOSE */
|
||||
|
||||
#define HAVE_ARCH_BUG
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_BUG */
|
||||
|
||||
#include <asm-generic/bug.h>
|
||||
|
||||
#endif
|
||||
#endif /* __ASM_SH_BUG_H */
|
||||
|
@ -16,9 +16,8 @@
|
||||
|
||||
static void __init check_bugs(void)
|
||||
{
|
||||
extern char *get_cpu_subtype(void);
|
||||
extern unsigned long loops_per_jiffy;
|
||||
char *p= &init_utsname()->machine[2]; /* "sh" */
|
||||
char *p = &init_utsname()->machine[2]; /* "sh" */
|
||||
|
||||
cpu_data->loops_per_jiffy = loops_per_jiffy;
|
||||
|
||||
@ -40,6 +39,15 @@ static void __init check_bugs(void)
|
||||
*p++ = '4';
|
||||
*p++ = 'a';
|
||||
break;
|
||||
case CPU_SH73180 ... CPU_SH7722:
|
||||
*p++ = '4';
|
||||
*p++ = 'a';
|
||||
*p++ = 'l';
|
||||
*p++ = '-';
|
||||
*p++ = 'd';
|
||||
*p++ = 's';
|
||||
*p++ = 'p';
|
||||
break;
|
||||
default:
|
||||
*p++ = '?';
|
||||
*p++ = '!';
|
||||
|
@ -34,25 +34,26 @@ asmlinkage __wsum csum_partial(const void *buff, int len, __wsum sum);
|
||||
*/
|
||||
|
||||
asmlinkage __wsum csum_partial_copy_generic(const void *src, void *dst,
|
||||
int len, __wsum sum, int *src_err_ptr, int *dst_err_ptr);
|
||||
int len, __wsum sum,
|
||||
int *src_err_ptr, int *dst_err_ptr);
|
||||
|
||||
/*
|
||||
* Note: when you get a NULL pointer exception here this means someone
|
||||
* passed in an incorrect kernel address to one of these functions.
|
||||
*
|
||||
* If you use these functions directly please don't forget the
|
||||
* passed in an incorrect kernel address to one of these functions.
|
||||
*
|
||||
* If you use these functions directly please don't forget the
|
||||
* access_ok().
|
||||
*/
|
||||
static __inline__
|
||||
static inline
|
||||
__wsum csum_partial_copy_nocheck(const void *src, void *dst,
|
||||
int len, __wsum sum)
|
||||
int len, __wsum sum)
|
||||
{
|
||||
return csum_partial_copy_generic ( src, dst, len, sum, NULL, NULL);
|
||||
return csum_partial_copy_generic(src, dst, len, sum, NULL, NULL);
|
||||
}
|
||||
|
||||
static __inline__
|
||||
static inline
|
||||
__wsum csum_partial_copy_from_user(const void __user *src, void *dst,
|
||||
int len, __wsum sum, int *err_ptr)
|
||||
int len, __wsum sum, int *err_ptr)
|
||||
{
|
||||
return csum_partial_copy_generic((__force const void *)src, dst,
|
||||
len, sum, err_ptr, NULL);
|
||||
@ -62,7 +63,7 @@ __wsum csum_partial_copy_from_user(const void __user *src, void *dst,
|
||||
* Fold a partial checksum
|
||||
*/
|
||||
|
||||
static __inline__ __sum16 csum_fold(__wsum sum)
|
||||
static inline __sum16 csum_fold(__wsum sum)
|
||||
{
|
||||
unsigned int __dummy;
|
||||
__asm__("swap.w %0, %1\n\t"
|
||||
@ -85,7 +86,7 @@ static __inline__ __sum16 csum_fold(__wsum sum)
|
||||
* i386 version by Jorge Cwik <jorge@laser.satlink.net>, adapted
|
||||
* for linux by * Arnt Gulbrandsen.
|
||||
*/
|
||||
static __inline__ __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
||||
static inline __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
||||
{
|
||||
unsigned int sum, __dummy0, __dummy1;
|
||||
|
||||
@ -113,10 +114,10 @@ static __inline__ __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
||||
return csum_fold(sum);
|
||||
}
|
||||
|
||||
static __inline__ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
|
||||
unsigned short len,
|
||||
unsigned short proto,
|
||||
__wsum sum)
|
||||
static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
|
||||
unsigned short len,
|
||||
unsigned short proto,
|
||||
__wsum sum)
|
||||
{
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
unsigned long len_proto = (proto + len) << 8;
|
||||
@ -132,6 +133,7 @@ static __inline__ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
|
||||
: "=r" (sum), "=r" (len_proto)
|
||||
: "r" (daddr), "r" (saddr), "1" (len_proto), "0" (sum)
|
||||
: "t");
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
@ -139,30 +141,28 @@ static __inline__ __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
|
||||
* computes the checksum of the TCP/UDP pseudo-header
|
||||
* returns a 16-bit checksum, already complemented
|
||||
*/
|
||||
static __inline__ __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
|
||||
unsigned short len,
|
||||
unsigned short proto,
|
||||
__wsum sum)
|
||||
static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
|
||||
unsigned short len,
|
||||
unsigned short proto,
|
||||
__wsum sum)
|
||||
{
|
||||
return csum_fold(csum_tcpudp_nofold(saddr,daddr,len,proto,sum));
|
||||
return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
|
||||
}
|
||||
|
||||
/*
|
||||
* this routine is used for miscellaneous IP-like checksums, mainly
|
||||
* in icmp.c
|
||||
*/
|
||||
|
||||
static __inline__ __sum16 ip_compute_csum(const void *buff, int len)
|
||||
static inline __sum16 ip_compute_csum(const void *buff, int len)
|
||||
{
|
||||
return csum_fold (csum_partial(buff, len, 0));
|
||||
return csum_fold(csum_partial(buff, len, 0));
|
||||
}
|
||||
|
||||
#define _HAVE_ARCH_IPV6_CSUM
|
||||
#ifdef CONFIG_IPV6
|
||||
static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum)
|
||||
static inline __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
const struct in6_addr *daddr,
|
||||
__u32 len, unsigned short proto,
|
||||
__wsum sum)
|
||||
{
|
||||
unsigned int __dummy;
|
||||
__asm__("clrt\n\t"
|
||||
@ -187,22 +187,21 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
|
||||
"movt %1\n\t"
|
||||
"add %1, %0\n"
|
||||
: "=r" (sum), "=&r" (__dummy)
|
||||
: "r" (saddr), "r" (daddr),
|
||||
: "r" (saddr), "r" (daddr),
|
||||
"r" (htonl(len)), "r" (htonl(proto)), "0" (sum)
|
||||
: "t");
|
||||
|
||||
return csum_fold(sum);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copy and checksum to user
|
||||
*/
|
||||
#define HAVE_CSUM_COPY_USER
|
||||
static __inline__ __wsum csum_and_copy_to_user (const void *src,
|
||||
void __user *dst,
|
||||
int len, __wsum sum,
|
||||
int *err_ptr)
|
||||
static inline __wsum csum_and_copy_to_user(const void *src,
|
||||
void __user *dst,
|
||||
int len, __wsum sum,
|
||||
int *err_ptr)
|
||||
{
|
||||
if (access_ok(VERIFY_WRITE, dst, len))
|
||||
return csum_partial_copy_generic((__force const void *)src,
|
||||
|
@ -22,7 +22,7 @@
|
||||
#define CCR_CACHE_ICE 0x0100 /* Instruction Cache Enable */
|
||||
#define CCR_CACHE_ICI 0x0800 /* IC Invalidate */
|
||||
#define CCR_CACHE_IIX 0x8000 /* IC Index Enable */
|
||||
#ifndef CONFIG_CPU_SUBTYPE_SH7780
|
||||
#ifndef CONFIG_CPU_SH4A
|
||||
#define CCR_CACHE_EMODE 0x80000000 /* EMODE Enable */
|
||||
#endif
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
#ifndef __ASM_CPU_SH4_FREQ_H
|
||||
#define __ASM_CPU_SH4_FREQ_H
|
||||
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH73180)
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH73180) || defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
#define FRQCR 0xa4150000
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7780)
|
||||
#define FRQCR 0xffc80000
|
||||
|
@ -67,7 +67,7 @@ static inline dma_addr_t dma_map_single(struct device *dev,
|
||||
if (dev->bus == &pci_bus_type)
|
||||
return virt_to_bus(ptr);
|
||||
#endif
|
||||
dma_cache_sync(ptr, size, dir);
|
||||
dma_cache_sync(dev, ptr, size, dir);
|
||||
|
||||
return virt_to_bus(ptr);
|
||||
}
|
||||
@ -81,7 +81,7 @@ static inline int dma_map_sg(struct device *dev, struct scatterlist *sg,
|
||||
|
||||
for (i = 0; i < nents; i++) {
|
||||
#if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT)
|
||||
dma_cache_sync(page_address(sg[i].page) + sg[i].offset,
|
||||
dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset,
|
||||
sg[i].length, dir);
|
||||
#endif
|
||||
sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset;
|
||||
@ -112,7 +112,7 @@ static inline void dma_sync_single(struct device *dev, dma_addr_t dma_handle,
|
||||
if (dev->bus == &pci_bus_type)
|
||||
return;
|
||||
#endif
|
||||
dma_cache_sync(bus_to_virt(dma_handle), size, dir);
|
||||
dma_cache_sync(dev, bus_to_virt(dma_handle), size, dir);
|
||||
}
|
||||
|
||||
static inline void dma_sync_single_range(struct device *dev,
|
||||
@ -124,7 +124,7 @@ static inline void dma_sync_single_range(struct device *dev,
|
||||
if (dev->bus == &pci_bus_type)
|
||||
return;
|
||||
#endif
|
||||
dma_cache_sync(bus_to_virt(dma_handle) + offset, size, dir);
|
||||
dma_cache_sync(dev, bus_to_virt(dma_handle) + offset, size, dir);
|
||||
}
|
||||
|
||||
static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg,
|
||||
@ -134,7 +134,7 @@ static inline void dma_sync_sg(struct device *dev, struct scatterlist *sg,
|
||||
|
||||
for (i = 0; i < nelems; i++) {
|
||||
#if !defined(CONFIG_PCI) || defined(CONFIG_SH_PCIDMA_NONCOHERENT)
|
||||
dma_cache_sync(page_address(sg[i].page) + sg[i].offset,
|
||||
dma_cache_sync(dev, page_address(sg[i].page) + sg[i].offset,
|
||||
sg[i].length, dir);
|
||||
#endif
|
||||
sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset;
|
||||
|
@ -37,7 +37,8 @@
|
||||
# define ONCHIP_NR_IRQS 144
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7300) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH73180) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7343)
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7343) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7722)
|
||||
# define ONCHIP_NR_IRQS 109
|
||||
#elif defined(CONFIG_CPU_SUBTYPE_SH7780)
|
||||
# define ONCHIP_NR_IRQS 111
|
||||
@ -79,6 +80,8 @@
|
||||
# define OFFCHIP_NR_IRQS 16
|
||||
#elif defined(CONFIG_SH_7343_SOLUTION_ENGINE)
|
||||
# define OFFCHIP_NR_IRQS 12
|
||||
#elif defined(CONFIG_SH_7722_SOLUTION_ENGINE)
|
||||
# define OFFCHIP_NR_IRQS 14
|
||||
#elif defined(CONFIG_SH_UNKNOWN)
|
||||
# define OFFCHIP_NR_IRQS 16 /* Must also be last */
|
||||
#else
|
||||
|
@ -508,16 +508,50 @@ struct vm_area_struct;
|
||||
extern void update_mmu_cache(struct vm_area_struct * vma,
|
||||
unsigned long address, pte_t pte);
|
||||
|
||||
/* Encode and de-code a swap entry */
|
||||
/*
|
||||
* Encode and de-code a swap entry
|
||||
*
|
||||
* Constraints:
|
||||
* _PAGE_FILE at bit 0
|
||||
* _PAGE_PRESENT at bit 8
|
||||
* _PAGE_PROTNONE at bit 9
|
||||
*
|
||||
* For the normal case, we encode the swap type into bits 0:7 and the
|
||||
* swap offset into bits 10:30. For the 64-bit PTE case, we keep the
|
||||
* preserved bits in the low 32-bits and use the upper 32 as the swap
|
||||
* offset (along with a 5-bit type), following the same approach as x86
|
||||
* PAE. This keeps the logic quite simple, and allows for a full 32
|
||||
* PTE_FILE_MAX_BITS, as opposed to the 29-bits we're constrained with
|
||||
* in the pte_low case.
|
||||
*
|
||||
* As is evident by the Alpha code, if we ever get a 64-bit unsigned
|
||||
* long (swp_entry_t) to match up with the 64-bit PTEs, this all becomes
|
||||
* much cleaner..
|
||||
*
|
||||
* NOTE: We should set ZEROs at the position of _PAGE_PRESENT
|
||||
* and _PAGE_PROTNONE bits
|
||||
*/
|
||||
#define __swp_type(x) ((x).val & 0xff)
|
||||
#define __swp_offset(x) ((x).val >> 10)
|
||||
#define __swp_entry(type, offset) ((swp_entry_t) { (type) | ((offset) << 10) })
|
||||
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 1 })
|
||||
#define __swp_entry_to_pte(x) ((pte_t) { (x).val << 1 })
|
||||
#ifdef CONFIG_X2TLB
|
||||
#define __swp_type(x) ((x).val & 0x1f)
|
||||
#define __swp_offset(x) ((x).val >> 5)
|
||||
#define __swp_entry(type, offset) ((swp_entry_t){ (type) | (offset) << 5})
|
||||
#define __pte_to_swp_entry(pte) ((swp_entry_t){ (pte).pte_high })
|
||||
#define __swp_entry_to_pte(x) ((pte_t){ 0, (x).val })
|
||||
|
||||
/*
|
||||
* Encode and decode a nonlinear file mapping entry
|
||||
*/
|
||||
#define pte_to_pgoff(pte) ((pte).pte_high)
|
||||
#define pgoff_to_pte(off) ((pte_t) { _PAGE_FILE, (off) })
|
||||
|
||||
#define PTE_FILE_MAX_BITS 32
|
||||
#else
|
||||
#define __swp_type(x) ((x).val & 0xff)
|
||||
#define __swp_offset(x) ((x).val >> 10)
|
||||
#define __swp_entry(type, offset) ((swp_entry_t){(type) | (offset) <<10})
|
||||
|
||||
#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 1 })
|
||||
#define __swp_entry_to_pte(x) ((pte_t) { (x).val << 1 })
|
||||
|
||||
/*
|
||||
* Encode and decode a nonlinear file mapping entry
|
||||
@ -525,6 +559,7 @@ extern void update_mmu_cache(struct vm_area_struct * vma,
|
||||
#define PTE_FILE_MAX_BITS 29
|
||||
#define pte_to_pgoff(pte) (pte_val(pte) >> 1)
|
||||
#define pgoff_to_pte(off) ((pte_t) { ((off) << 1) | _PAGE_FILE })
|
||||
#endif
|
||||
|
||||
typedef pte_t *pte_addr_t;
|
||||
|
||||
|
@ -27,6 +27,8 @@
|
||||
#define CCN_CVR 0xff000040
|
||||
#define CCN_PRR 0xff000044
|
||||
|
||||
const char *get_cpu_subtype(void);
|
||||
|
||||
/*
|
||||
* CPU type and hardware bug flags. Kept separately for each CPU.
|
||||
*
|
||||
@ -52,8 +54,10 @@ enum cpu_type {
|
||||
CPU_SH7760, CPU_ST40RA, CPU_ST40GX1, CPU_SH4_202, CPU_SH4_501,
|
||||
|
||||
/* SH-4A types */
|
||||
CPU_SH73180, CPU_SH7343, CPU_SH7770, CPU_SH7780, CPU_SH7781,
|
||||
CPU_SH7785,
|
||||
CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785,
|
||||
|
||||
/* SH4AL-DSP types */
|
||||
CPU_SH73180, CPU_SH7343, CPU_SH7722,
|
||||
|
||||
/* Unknown subtype */
|
||||
CPU_SH_NONE
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <linux/timer.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
struct push_switch {
|
||||
/* switch state */
|
||||
@ -12,6 +13,8 @@ struct push_switch {
|
||||
struct timer_list debounce;
|
||||
/* workqueue */
|
||||
struct work_struct work;
|
||||
/* platform device, for workqueue handler */
|
||||
struct platform_device *pdev;
|
||||
};
|
||||
|
||||
struct push_switch_platform_info {
|
||||
|
Loading…
Reference in New Issue
Block a user