diff options
| -rw-r--r-- | arch/sh/Kconfig.debug | 2 | ||||
| -rw-r--r-- | arch/sh/boards/se/770x/irq.c | 32 | ||||
| -rw-r--r-- | arch/sh/boards/se/770x/setup.c | 2 | ||||
| -rw-r--r-- | arch/sh/configs/se7705_defconfig | 106 | ||||
| -rw-r--r-- | arch/sh/kernel/cpu/irq/Makefile | 2 | ||||
| -rw-r--r-- | arch/sh/kernel/cpu/irq/pint.c | 56 | ||||
| -rw-r--r-- | arch/sh/kernel/cpu/sh3/setup-sh7705.c | 54 | ||||
| -rw-r--r-- | arch/sh/mm/Kconfig | 1 | ||||
| -rw-r--r-- | include/asm-sh/se.h | 5 | 
9 files changed, 215 insertions, 45 deletions
diff --git a/arch/sh/Kconfig.debug b/arch/sh/Kconfig.debug index be60def6f30..b56307294b6 100644 --- a/arch/sh/Kconfig.debug +++ b/arch/sh/Kconfig.debug @@ -33,7 +33,7 @@ config EARLY_SCIF_CONSOLE_PORT  	default "0xffe00000" if CPU_SUBTYPE_SH7780  	default "0xfffe9800" if CPU_SUBTYPE_SH7206  	default "0xf8420000" if CPU_SUBTYPE_SH7619 -	default "0xa4400000" if CPU_SUBTYPE_SH7712 +	default "0xa4400000" if CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7705  	default "0xffe80000" if CPU_SH4  config EARLY_PRINTK diff --git a/arch/sh/boards/se/770x/irq.c b/arch/sh/boards/se/770x/irq.c index 59cdffa1396..c8eccff77a0 100644 --- a/arch/sh/boards/se/770x/irq.c +++ b/arch/sh/boards/se/770x/irq.c @@ -65,24 +65,24 @@ static struct ipr_data se770x_ipr_map[] = {  	*  8: rtc  	* 12: mouse  	* 14: ide0 -	 */ +	*/  #if defined(CONFIG_CPU_SUBTYPE_SH7705)  	/* This is default value */ -	{ 0xf-0x2, 0, 8,  0x2 , BCR_ILCRA}, -	{ 0xf-0xa, 0, 4,  0xa , BCR_ILCRA}, -	{ 0xf-0x5, 0, 0,  0x5 , BCR_ILCRB}, -	{ 0xf-0x8, 0, 4,  0x8 , BCR_ILCRC}, -	{ 0xf-0xc, 0, 0,  0xc , BCR_ILCRC}, -	{ 0xf-0xe, 0, 12, 0xe , BCR_ILCRD}, -	{ 0xf-0x3, 0, 4,  0x3 , BCR_ILCRD}, /* LAN */ -	{ 0xf-0xd, 0, 8,  0xd , BCR_ILCRE}, -	{ 0xf-0x9, 0, 4,  0x9 , BCR_ILCRE}, -	{ 0xf-0x1, 0, 0,  0x1 , BCR_ILCRE}, -	{ 0xf-0xf, 0, 12, 0xf , BCR_ILCRF}, -	{ 0xf-0xb, 0, 4,  0xb , BCR_ILCRF}, -	{ 0xf-0x7, 0, 12, 0x7 , BCR_ILCRG}, -	{ 0xf-0x6, 0, 8,  0x6 , BCR_ILCRG}, -	{ 0xf-0x4, 0, 4,  0x4 , BCR_ILCRG}, +	{ 13, 0, 8,  0x0f-13 ,BCR_ILCRA}, +	{ 5 , 0, 4,  0x0f- 5 ,BCR_ILCRA}, +	{ 10, 0, 0,  0x0f-10, BCR_ILCRB}, +	{ 7 , 0, 4,  0x0f- 7, BCR_ILCRC}, +	{ 3 , 0, 0,  0x0f- 3, BCR_ILCRC}, +	{ 1 , 0, 12, 0x0f- 1, BCR_ILCRD}, +	{ 12, 0, 4,  0x0f-12, BCR_ILCRD}, /* LAN */ +	{ 2 , 0, 8,  0x0f- 2, BCR_ILCRE}, /* PCIRQ2 */ +	{ 6 , 0, 4,  0x0f- 6, BCR_ILCRE}, /* PCIRQ1 */ +	{ 14, 0, 0,  0x0f-14, BCR_ILCRE}, /* PCIRQ0 */ +	{ 0 , 0, 12, 0x0f   , BCR_ILCRF},  +	{ 4 , 0, 4,  0x0f- 4, BCR_ILCRF}, +	{ 8 , 0, 12, 0x0f- 8, BCR_ILCRG}, +	{ 9 , 0, 8,  0x0f- 9, BCR_ILCRG}, +	{ 11, 0, 4,  0x0f-11, BCR_ILCRG},  #else  	{ 14, 0,  8, 0x0f-14 ,BCR_ILCRA},  	{ 12, 0,  4, 0x0f-12 ,BCR_ILCRA}, diff --git a/arch/sh/boards/se/770x/setup.c b/arch/sh/boards/se/770x/setup.c index f1c7c8d9fdd..17a2631de3b 100644 --- a/arch/sh/boards/se/770x/setup.c +++ b/arch/sh/boards/se/770x/setup.c @@ -76,7 +76,7 @@ static struct resource cf_ide_resources[] = {  		.flags  = IORESOURCE_MEM,  	},  	[2] = { -		.start  = 7, +		.start  = IRQ_CFCARD,  		.flags  = IORESOURCE_IRQ,  	},  }; diff --git a/arch/sh/configs/se7705_defconfig b/arch/sh/configs/se7705_defconfig index 06ebd6ec0cd..87ae5c1f862 100644 --- a/arch/sh/configs/se7705_defconfig +++ b/arch/sh/configs/se7705_defconfig @@ -1,15 +1,21 @@  #  # Automatically generated make config: don't edit -# Linux kernel version: 2.6.18 -# Tue Oct  3 12:03:04 2006 +# Linux kernel version: 2.6.21-rc5 +# Thu Apr 26 09:16:31 2007  #  CONFIG_SUPERH=y  CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_BUG=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_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set  CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"  # @@ -33,7 +39,9 @@ CONFIG_LOCALVERSION_AUTO=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_BLK_DEV_INITRD=y  CONFIG_INITRAMFS_SOURCE=""  # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set  CONFIG_SYSCTL=y @@ -91,27 +99,30 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"  CONFIG_SOLUTION_ENGINE=y  CONFIG_SH_SOLUTION_ENGINE=y  # CONFIG_SH_7751_SOLUTION_ENGINE is not set +# CONFIG_SH_7780_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_7722_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_HIGHLANDER 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 is not set +# CONFIG_SH_LBOX_RE2 is not set  # CONFIG_SH_UNKNOWN is not set  # @@ -123,6 +134,12 @@ CONFIG_CPU_SH3=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 @@ -134,6 +151,7 @@ CONFIG_CPU_SUBTYPE_SH7705=y  # CONFIG_CPU_SUBTYPE_SH7708 is not set  # CONFIG_CPU_SUBTYPE_SH7709 is not set  # CONFIG_CPU_SUBTYPE_SH7710 is not set +# CONFIG_CPU_SUBTYPE_SH7712 is not set  #  # SH-4 Processor Support @@ -158,12 +176,14 @@ CONFIG_CPU_SUBTYPE_SH7705=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  #  # CONFIG_CPU_SUBTYPE_SH73180 is not set  # CONFIG_CPU_SUBTYPE_SH7343 is not set +# CONFIG_CPU_SUBTYPE_SH7722 is not set  #  # Memory management options @@ -173,6 +193,11 @@ CONFIG_PAGE_OFFSET=0x80000000  CONFIG_MEMORY_START=0x0c000000  CONFIG_MEMORY_SIZE=0x02000000  CONFIG_VSYSCALL=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_POPULATES_NODE_MAP=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 @@ -182,6 +207,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y  # CONFIG_SPARSEMEM_STATIC is not set  CONFIG_SPLIT_PTLOCK_CPUS=4  # CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0  #  # Cache configuration @@ -190,23 +216,31 @@ CONFIG_SH7705_CACHE_32KB=y  # CONFIG_SH_DIRECT_MAPPED is not set  # CONFIG_SH_WRITETHROUGH is not set  # CONFIG_SH_OCRAM is not set -# CONFIG_CF_ENABLER is not set +CONFIG_CF_ENABLER=y +# CONFIG_CF_AREA5 is not set +CONFIG_CF_AREA6=y +# CONFIG_CF_AREA4 is not set +CONFIG_CF_BASE_ADDR=0xb8000000  #  # Processor features  #  CONFIG_CPU_LITTLE_ENDIAN=y +# CONFIG_CPU_BIG_ENDIAN is not set  # CONFIG_SH_FPU_EMU is not set  # CONFIG_SH_DSP is not set  # CONFIG_SH_ADC is not set  CONFIG_CPU_HAS_INTEVT=y  CONFIG_CPU_HAS_PINT_IRQ=y +CONFIG_CPU_HAS_IPR_IRQ=y  CONFIG_CPU_HAS_SR_RB=y  # -# Timer support +# Timer and clock configuration  #  CONFIG_SH_TMU=y +CONFIG_SH_TIMER_IRQ=16 +# CONFIG_NO_IDLE_HZ is not set  CONFIG_SH_PCLK_FREQ=33333333  # @@ -223,13 +257,19 @@ CONFIG_SH_PCLK_FREQ=33333333  # Companion Chips  #  # CONFIG_HD6446X_SERIES is not set + +# +# Additional SuperH Device Drivers +#  CONFIG_HEARTBEAT=y +# CONFIG_PUSH_SWITCH is not set  #  # Kernel features  #  # CONFIG_HZ_100 is not set  CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set  # CONFIG_HZ_1000 is not set  CONFIG_HZ=250  # CONFIG_KEXEC is not set @@ -287,6 +327,7 @@ CONFIG_UNIX=y  CONFIG_XFRM=y  # CONFIG_XFRM_USER is not set  # CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set  # CONFIG_NET_KEY is not set  CONFIG_INET=y  # CONFIG_IP_MULTICAST is not set @@ -307,11 +348,13 @@ CONFIG_IP_PNP_RARP=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  # CONFIG_IPV6 is not set  # CONFIG_INET6_XFRM_TUNNEL is not set  # CONFIG_INET6_TUNNEL is not set @@ -388,6 +431,7 @@ CONFIG_MTD_PARTITIONS=y  # User Modules And Translation Layers  #  CONFIG_MTD_CHAR=y +CONFIG_MTD_BLKDEVS=y  CONFIG_MTD_BLOCK=y  # CONFIG_FTL is not set  # CONFIG_NFTL is not set @@ -461,6 +505,7 @@ CONFIG_MTD_CFI_UTIL=y  #  # Plug and Play support  # +# CONFIG_PNPACPI is not set  #  # Block devices @@ -472,11 +517,14 @@ CONFIG_BLK_DEV_RAM=y  CONFIG_BLK_DEV_RAM_COUNT=16  CONFIG_BLK_DEV_RAM_SIZE=8192  CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 -CONFIG_BLK_DEV_INITRD=y  # CONFIG_CDROM_PKTCDVD is not set  # CONFIG_ATA_OVER_ETH is not set  # +# Misc devices +# + +#  # ATA/ATAPI/MFM/RLL support  #  # CONFIG_IDE is not set @@ -649,17 +697,12 @@ CONFIG_HW_RANDOM=y  # 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 -# CONFIG_TELCLOCK is not set  #  # I2C support @@ -675,6 +718,7 @@ CONFIG_HW_RANDOM=y  #  # Dallas's 1-wire bus  # +# CONFIG_W1 is not set  #  # Hardware Monitoring support @@ -683,18 +727,19 @@ CONFIG_HWMON=y  # CONFIG_HWMON_VID is not set  # CONFIG_SENSORS_ABITUGURU is not set  # CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_PC87427 is not set  # CONFIG_SENSORS_VT1211 is not set  # CONFIG_HWMON_DEBUG_CHIP is not set  # -# Misc devices +# Multifunction device drivers  # +# CONFIG_MFD_SM501 is not set  #  # Multimedia devices  #  # CONFIG_VIDEO_DEV is not set -CONFIG_VIDEO_V4L2=y  #  # Digital Video Broadcasting Devices @@ -704,7 +749,7 @@ CONFIG_VIDEO_V4L2=y  #  # Graphics support  # -CONFIG_FIRMWARE_EDID=y +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set  # CONFIG_FB is not set  # @@ -713,6 +758,12 @@ CONFIG_FIRMWARE_EDID=y  # CONFIG_SOUND is not set  # +# HID Devices +# +CONFIG_HID=y +# CONFIG_HID_DEBUG is not set + +#  # USB support  #  # CONFIG_USB_ARCH_HAS_HCD is not set @@ -773,16 +824,26 @@ CONFIG_FIRMWARE_EDID=y  #  # +# Auxiliary Display support +# + +# +# Virtualization +# + +#  # File systems  #  CONFIG_EXT2_FS=y  # CONFIG_EXT2_FS_XATTR is not set  # CONFIG_EXT2_FS_XIP 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 is not set  CONFIG_INOTIFY=y @@ -828,7 +889,6 @@ CONFIG_RAMFS=y  # 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=y  CONFIG_JFFS2_FS_DEBUG=0  CONFIG_JFFS2_FS_WRITEBUFFER=y @@ -878,6 +938,10 @@ CONFIG_MSDOS_PARTITION=y  # CONFIG_NLS is not set  # +# Distributed Lock Manager +# + +#  # Profiling support  #  # CONFIG_PROFILING is not set @@ -885,15 +949,18 @@ CONFIG_MSDOS_PARTITION=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  # CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_HEADERS_CHECK is not set  # CONFIG_DEBUG_KERNEL is not set  CONFIG_LOG_BUF_SHIFT=14  # CONFIG_DEBUG_BUGVERBOSE is not set  # CONFIG_SH_STANDARD_BIOS is not set -# CONFIG_KGDB is not set +# CONFIG_EARLY_SCIF_CONSOLE is not set +# CONFIG_SH_KGDB is not set  #  # Security options @@ -908,6 +975,7 @@ CONFIG_LOG_BUF_SHIFT=14  #  # Library routines  # +CONFIG_BITREVERSE=y  CONFIG_CRC_CCITT=y  # CONFIG_CRC16 is not set  CONFIG_CRC32=y @@ -915,3 +983,5 @@ CONFIG_CRC32=y  CONFIG_ZLIB_INFLATE=y  CONFIG_ZLIB_DEFLATE=y  CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y diff --git a/arch/sh/kernel/cpu/irq/Makefile b/arch/sh/kernel/cpu/irq/Makefile index 0049d217561..1c23308cfc2 100644 --- a/arch/sh/kernel/cpu/irq/Makefile +++ b/arch/sh/kernel/cpu/irq/Makefile @@ -4,6 +4,6 @@  obj-y	+= imask.o  obj-$(CONFIG_CPU_HAS_IPR_IRQ)		+= ipr.o -obj-$(CONFIG_CPU_HAS_PINT_IRQ)		+= pint.o +obj-$(CONFIG_CPU_HAS_PINT_IRQ)		+= pint.o   obj-$(CONFIG_CPU_HAS_MASKREG_IRQ)	+= maskreg.o  obj-$(CONFIG_CPU_HAS_INTC2_IRQ)		+= intc2.o diff --git a/arch/sh/kernel/cpu/irq/pint.c b/arch/sh/kernel/cpu/irq/pint.c index f60007783a2..67602685df1 100644 --- a/arch/sh/kernel/cpu/irq/pint.c +++ b/arch/sh/kernel/cpu/irq/pint.c @@ -18,6 +18,58 @@  #include <asm/io.h>  #include <asm/machvec.h> +#if defined(CONFIG_CPU_SUBTYPE_SH7705) +#define INTC_INTER      0xA4000014UL +#define INTC_IPRD       0xA4000018UL +#define INTC_ICR2       0xA4000012UL + +/* PFC */ +#define PORT_PACR       0xA4000100UL +#define PORT_PBCR       0xA4000102UL +#define PORT_PCCR       0xA4000104UL +#define PORT_PDCR       0xA4000106UL +#define PORT_PECR       0xA4000108UL +#define PORT_PFCR       0xA400010AUL +#define PORT_PGCR       0xA400010CUL +#define PORT_PHCR       0xA400010EUL +#define PORT_PJCR       0xA4000110UL +#define PORT_PKCR       0xA4000112UL +#define PORT_PLCR       0xA4000114UL +#define PORT_PMCR       0xA4000118UL +#define PORT_PNCR       0xA400011AUL +#define PORT_PECR2      0xA4050148UL +#define PORT_PFCR2      0xA405014AUL +#define PORT_PNCR2      0xA405015AUL + +/* I/O port */ +#define PORT_PADR       0xA4000120UL +#define PORT_PBDR       0xA4000122UL +#define PORT_PCDR       0xA4000124UL +#define PORT_PDDR       0xA4000126UL +#define PORT_PEDR       0xA4000128UL +#define PORT_PFDR       0xA400012AUL +#define PORT_PGDR       0xA400012CUL +#define PORT_PHDR       0xA400012EUL +#define PORT_PJDR       0xA4000130UL +#define PORT_PKDR       0xA4000132UL +#define PORT_PLDR       0xA4000134UL +#define PORT_PMDR       0xA4000138UL +#define PORT_PNDR       0xA400013AUL + +#define PINT0_IRQ       40 +#define PINT8_IRQ       41 +#define PINT_IRQ_BASE   86 + +#define PINT0_IPR_ADDR          INTC_IPRD +#define PINT0_IPR_POS           3 +#define PINT0_PRIORITY      2 + +#define PINT8_IPR_ADDR          INTC_IPRD +#define PINT8_IPR_POS           2 +#define PINT8_PRIORITY      2 + +#endif /* CONFIG_CPU_SUBTYPE_SH7705 */ +  static unsigned char pint_map[256];  static unsigned long portcr_mask; @@ -126,7 +178,7 @@ int ipr_irq_demux(int irq)  	unsigned long creg, dreg, d, sav;  	if (irq == PINT0_IRQ) { -#if defined(CONFIG_CPU_SUBTYPE_SH7707) +#if defined(CONFIG_CPU_SUBTYPE_SH7705) || defined(CONFIG_CPU_SUBTYPE_SH7707)  		creg = PORT_PACR;  		dreg = PORT_PADR;  #else @@ -144,7 +196,7 @@ int ipr_irq_demux(int irq)  		return PINT_IRQ_BASE + pint_map[d];  	} else if (irq == PINT8_IRQ) { -#if defined(CONFIG_CPU_SUBTYPE_SH7707) +#if defined(CONFIG_CPU_SUBTYPE_SH7705) || defined(CONFIG_CPU_SUBTYPE_SH7707)  		creg = PORT_PBCR;  		dreg = PORT_PBDR;  #else diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c index a8e41c5241f..1983fb7ad6e 100644 --- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c +++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c @@ -2,6 +2,7 @@   * SH7705 Setup   *   *  Copyright (C) 2006  Paul Mundt + *  Copyright (C) 2007  Nobuhiro Iwamatsu   *   * 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 @@ -14,15 +15,15 @@  static struct plat_sci_port sci_platform_data[] = {  	{ -		.mapbase	= 0xa4400000, +		.mapbase	= 0xa4410000,  		.flags		= UPF_BOOT_AUTOCONF,  		.type		= PORT_SCIF, -		.irqs		= { 52, 53, 55, 54 }, +		.irqs		= { 56, 57, 59 },  	}, { -		.mapbase	= 0xa4410000, +		.mapbase	= 0xa4400000,  		.flags		= UPF_BOOT_AUTOCONF,  		.type		= PORT_SCIF, -		.irqs		= { 56, 57, 59, 58 }, +		.irqs		= { 52, 53, 55 },  	}, {  		.flags = 0,  	} @@ -46,3 +47,48 @@ static int __init sh7705_devices_setup(void)  				    ARRAY_SIZE(sh7705_devices));  }  __initcall(sh7705_devices_setup); + +static struct ipr_data sh7705_ipr_map[] = { +	/* IRQ, IPR-idx, shift, priority */ +	{ 16, 0, 12, 2 }, /* TMU0 TUNI*/ +	{ 17, 0,  8, 2 }, /* TMU1 TUNI */ +	{ 18, 0,  4, 2 }, /* TMU2 TUNI */ +	{ 27, 1, 12, 2 }, /* WDT ITI */ +	{ 20, 0,  0, 2 }, /* RTC ATI (alarm) */ +	{ 21, 0,  0, 2 }, /* RTC PRI (period) */ +	{ 22, 0,  0, 2 }, /* RTC CUI (carry) */ +	{ 48, 4, 12, 7 }, /* DMAC DMTE0 */ +	{ 49, 4, 12, 7 }, /* DMAC DMTE1 */ +	{ 50, 4, 12, 7 }, /* DMAC DMTE2 */ +	{ 51, 4, 12, 7 }, /* DMAC DMTE3 */ +	{ 52, 4,  8, 3 }, /* SCIF0 ERI */ +	{ 53, 4,  8, 3 }, /* SCIF0 RXI */ +	{ 55, 4,  8, 3 }, /* SCIF0 TXI */ +	{ 56, 4,  4, 3 }, /* SCIF1 ERI */ +	{ 57, 4,  4, 3 }, /* SCIF1 RXI */ +	{ 59, 4,  4, 3 }, /* SCIF1 TXI */ +}; + +static unsigned long ipr_offsets[] = { +	0xFFFFFEE2	/* 0: IPRA */ +,	0xFFFFFEE4	/* 1: IPRB */ +,	0xA4000016	/* 2: IPRC */ +,	0xA4000018	/* 3: IPRD */ +,	0xA400001A	/* 4: IPRE */ +,	0xA4080000	/* 5: IPRF */ +,	0xA4080002	/* 6: IPRG */ +,	0xA4080004	/* 7: IPRH */ +}; + +/* given the IPR index return the address of the IPR register */ +unsigned int map_ipridx_to_addr(int idx) +{ +	if (idx >= ARRAY_SIZE(ipr_offsets)) +		return 0; +	return ipr_offsets[idx]; +} + +void __init init_IRQ_ipr() +{ +	make_ipr_irq(sh7705_ipr_map, ARRAY_SIZE(sh7705_ipr_map)); +} diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig index 5359f3dff93..12f3d394dc2 100644 --- a/arch/sh/mm/Kconfig +++ b/arch/sh/mm/Kconfig @@ -67,6 +67,7 @@ config CPU_SUBTYPE_SH7300  config CPU_SUBTYPE_SH7705  	bool "Support SH7705 processor"  	select CPU_SH3 +	select CPU_HAS_IPR_IRQ  	select CPU_HAS_PINT_IRQ  config CPU_SUBTYPE_SH7706 diff --git a/include/asm-sh/se.h b/include/asm-sh/se.h index eeaf5c9124c..bd2596c014a 100644 --- a/include/asm-sh/se.h +++ b/include/asm-sh/se.h @@ -69,11 +69,12 @@  #define BCR_ILCRG	(PA_BCR + 12)  #if defined(CONFIG_CPU_SUBTYPE_SH7705) -#define IRQ_STNIC   12 +#define IRQ_STNIC	12 +#define IRQ_CFCARD	14  #else  #define IRQ_STNIC	10 +#define IRQ_CFCARD	7  #endif -#define IRQ_CFCARD    7  #define __IO_PREFIX	se  #include <asm/io_generic.h>  |