[PATCH] m32r: Support M32104UT target platform
This patch is for supporting a new target platform, Renesas M32104UT evaluation board. The M32104UT is an eval board based on an uT-Engine specification. This board has an MMU-less M32R family processor, M32104. http://www-wa0.personal-media.co.jp/pmc/archive/te/te_m32104_e.pdf This board is one of the most popular M32R platform, so we have ported Linux/M32R to it. Signed-off-by: Naoto Sugai <Sugai.Naoto@ak.MitsubishiElectric.co.jp> Signed-off-by: Hirokazu Takata <takata@linux-m32r.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
		
							parent
							
								
									60c83c77c4
								
							
						
					
					
						commit
						9287d95ea1
					
				| @ -81,6 +81,12 @@ config PLAT_MAPPI2 | ||||
| config PLAT_MAPPI3 | ||||
|        bool "Mappi-III(M3A-2170)" | ||||
| 
 | ||||
| config PLAT_M32104UT | ||||
| 	bool "M32104UT" | ||||
| 	help | ||||
| 	  The M3T-M32104UT is an reference board based on uT-Engine | ||||
| 	  specification.  This board has a M32104 chip. | ||||
| 
 | ||||
| endchoice | ||||
| 
 | ||||
| choice | ||||
| @ -93,6 +99,10 @@ config CHIP_M32700 | ||||
| config CHIP_M32102 | ||||
| 	bool "M32102" | ||||
| 
 | ||||
| config CHIP_M32104 | ||||
| 	bool "M32104" | ||||
| 	depends on PLAT_M32104UT | ||||
| 
 | ||||
| config CHIP_VDEC2 | ||||
|        bool "VDEC2" | ||||
| 
 | ||||
| @ -115,7 +125,7 @@ config TLB_ENTRIES | ||||
| 
 | ||||
| config ISA_M32R | ||||
|         bool | ||||
| 	depends on CHIP_M32102 | ||||
| 	depends on CHIP_M32102 || CHIP_M32104 | ||||
| 	default y | ||||
| 
 | ||||
| config ISA_M32R2 | ||||
| @ -140,6 +150,7 @@ config BUS_CLOCK | ||||
| 	default "50000000" if PLAT_MAPPI3 | ||||
| 	default "50000000" if PLAT_M32700UT | ||||
| 	default "50000000" if PLAT_OPSPUT | ||||
| 	default "54000000" if PLAT_M32104UT | ||||
| 	default "33333333" if PLAT_OAKS32R | ||||
| 	default "20000000" if PLAT_MAPPI2 | ||||
| 
 | ||||
| @ -157,6 +168,7 @@ config MEMORY_START | ||||
| 	default "08000000" if PLAT_USRV | ||||
| 	default "08000000" if PLAT_M32700UT | ||||
| 	default "08000000" if PLAT_OPSPUT | ||||
| 	default "04000000" if PLAT_M32104UT | ||||
| 	default "01000000" if PLAT_OAKS32R | ||||
| 
 | ||||
| config MEMORY_SIZE | ||||
| @ -166,6 +178,7 @@ config MEMORY_SIZE | ||||
| 	default "02000000" if PLAT_USRV | ||||
| 	default "01000000" if PLAT_M32700UT | ||||
| 	default "01000000" if PLAT_OPSPUT | ||||
| 	default "01000000" if PLAT_M32104UT | ||||
| 	default "00800000" if PLAT_OAKS32R | ||||
| 
 | ||||
| config NOHIGHMEM | ||||
| @ -174,21 +187,22 @@ config NOHIGHMEM | ||||
| 
 | ||||
| config ARCH_DISCONTIGMEM_ENABLE | ||||
| 	bool "Internal RAM Support" | ||||
| 	depends on CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP | ||||
| 	depends on CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104 | ||||
| 	default y | ||||
| 
 | ||||
| source "mm/Kconfig" | ||||
| 
 | ||||
| config IRAM_START | ||||
| 	hex "Internal memory start address (hex)" | ||||
| 	default "00f00000" | ||||
| 	depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP) && DISCONTIGMEM | ||||
| 	default "00f00000" if !CHIP_M32104 | ||||
| 	default "00700000" if CHIP_M32104 | ||||
| 	depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104) && DISCONTIGMEM | ||||
| 
 | ||||
| config IRAM_SIZE | ||||
| 	hex "Internal memory size (hex)" | ||||
| 	depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP) && DISCONTIGMEM | ||||
| 	depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104) && DISCONTIGMEM | ||||
| 	default "00080000" if CHIP_M32700 | ||||
| 	default "00010000" if CHIP_M32102 || CHIP_OPSP | ||||
| 	default "00010000" if CHIP_M32102 || CHIP_OPSP || CHIP_M32104 | ||||
| 	default "00008000" if CHIP_VDEC2 | ||||
| 
 | ||||
| # | ||||
|  | ||||
| @ -143,6 +143,11 @@ startup: | ||||
| 	ldi	r0, -2 | ||||
| 	ldi	r1, 0x0100	; invalidate
 | ||||
| 	stb	r1, @r0
 | ||||
| #elif defined(CONFIG_CHIP_M32104) | ||||
| 	/* Cache flush */ | ||||
| 	ldi	r0, -2 | ||||
| 	ldi	r1, 0x0700	; invalidate i-cache, copy back d-cache
 | ||||
| 	sth	r1, @r0
 | ||||
| #else | ||||
| #error "put your cache flush function, please" | ||||
| #endif | ||||
|  | ||||
| @ -80,6 +80,10 @@ ENTRY(boot) | ||||
| 	ldi	r1, #0x101		; cache on (with invalidation)
 | ||||
| ;	ldi	r1, #0x00		; cache off
 | ||||
| 	st	r1, @r0
 | ||||
| #elif defined(CONFIG_CHIP_M32104) | ||||
| 	ldi	r0, #-4              ;LDIMM	(r0, M32R_MCCR)
 | ||||
| 	ldi	r1, #0x703		; cache on (with invalidation)
 | ||||
| 	st	r1, @r0
 | ||||
| #else | ||||
| #error unknown chip configuration | ||||
| #endif | ||||
| @ -115,10 +119,15 @@ mmu_on: | ||||
| 	st      r1, @(MATM_offset,r0)		; Set MATM (T bit ON)
 | ||||
| 	ld      r0, @(MATM_offset,r0)		; Check
 | ||||
| #else | ||||
| #if defined(CONFIG_CHIP_M32700) | ||||
| 	seth	r0,#high(M32R_MCDCAR) | ||||
| 	or3	r0,r0,#low(M32R_MCDCAR) | ||||
| 	ld24	r1,#0x8080 | ||||
| 	st	r1,@r0
 | ||||
| #elif defined(CONFIG_CHIP_M32104) | ||||
| 	LDIMM	(r2, eit_vector)		; set EVB(cr5)
 | ||||
| 	mvtc    r2, cr5 | ||||
| #endif | ||||
| #endif	/* CONFIG_MMU */ | ||||
| 	jmp	r13 | ||||
| 	nop | ||||
|  | ||||
| @ -16,5 +16,6 @@ obj-$(CONFIG_PLAT_M32700UT)	+= setup_m32700ut.o io_m32700ut.o | ||||
| obj-$(CONFIG_PLAT_OPSPUT)	+= setup_opsput.o io_opsput.o | ||||
| obj-$(CONFIG_MODULES)		+= module.o | ||||
| obj-$(CONFIG_PLAT_OAKS32R)	+= setup_oaks32r.o io_oaks32r.o | ||||
| obj-$(CONFIG_PLAT_M32104UT)	+= setup_m32104ut.o io_m32104ut.o | ||||
| 
 | ||||
| EXTRA_AFLAGS	:= -traditional | ||||
|  | ||||
| @ -315,7 +315,7 @@ ENTRY(ei_handler) | ||||
| 	mv	r1, sp			; arg1(regs)
 | ||||
| #if defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_XNUX2) \ | ||||
| 	|| defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32102) \ | ||||
| 	|| defined(CONFIG_CHIP_OPSP) | ||||
| 	|| defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) | ||||
| 
 | ||||
| ;    GET_ICU_STATUS;
 | ||||
| 	seth	r0, #shigh(M32R_ICU_ISTS_ADDR) | ||||
| @ -541,7 +541,20 @@ check_int2: | ||||
| 	bra	check_end | ||||
| 	.fillinsn | ||||
| check_end: | ||||
| #endif  /* CONFIG_PLAT_OPSPUT */ | ||||
| #elif defined(CONFIG_PLAT_M32104UT) | ||||
| 	add3	r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
 | ||||
| 	bnez	r2, check_end | ||||
| 	; read ICU status register of PLD
 | ||||
| 	seth	r0, #high(PLD_ICUISTS) | ||||
| 	or3	r0, r0, #low(PLD_ICUISTS) | ||||
| 	lduh	r0, @r0
 | ||||
| 	slli	r0, #21 | ||||
| 	srli	r0, #27                         ; ISN
 | ||||
| 	addi	r0, #(M32104UT_PLD_IRQ_BASE) | ||||
| 	bra	check_end | ||||
| 	.fillinsn | ||||
| check_end: | ||||
| #endif  /* CONFIG_PLAT_M32104UT */ | ||||
| 	bl	do_IRQ | ||||
| #endif  /* CONFIG_SMP */ | ||||
| 	ld	r14, @sp+
 | ||||
|  | ||||
							
								
								
									
										298
									
								
								arch/m32r/kernel/io_m32104ut.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										298
									
								
								arch/m32r/kernel/io_m32104ut.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,298 @@ | ||||
| /*
 | ||||
|  *  linux/arch/m32r/kernel/io_m32104ut.c | ||||
|  * | ||||
|  *  Typical I/O routines for M32104UT board. | ||||
|  * | ||||
|  *  Copyright (c) 2001-2005  Hiroyuki Kondo, Hirokazu Takata, | ||||
|  *                           Hitoshi Yamamoto, Mamoru Sakugawa, | ||||
|  *                           Naoto Sugai, Hayato Fujiwara | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <asm/m32r.h> | ||||
| #include <asm/page.h> | ||||
| #include <asm/io.h> | ||||
| #include <asm/byteorder.h> | ||||
| 
 | ||||
| #if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC) | ||||
| #include <linux/types.h> | ||||
| 
 | ||||
| #define M32R_PCC_IOMAP_SIZE 0x1000 | ||||
| 
 | ||||
| #define M32R_PCC_IOSTART0 0x1000 | ||||
| #define M32R_PCC_IOEND0   (M32R_PCC_IOSTART0 + M32R_PCC_IOMAP_SIZE - 1) | ||||
| 
 | ||||
| extern void pcc_ioread_byte(int, unsigned long, void *, size_t, size_t, int); | ||||
| extern void pcc_ioread_word(int, unsigned long, void *, size_t, size_t, int); | ||||
| extern void pcc_iowrite_byte(int, unsigned long, void *, size_t, size_t, int); | ||||
| extern void pcc_iowrite_word(int, unsigned long, void *, size_t, size_t, int); | ||||
| #endif /* CONFIG_PCMCIA && CONFIG_M32R_CFC */ | ||||
| 
 | ||||
| #define PORT2ADDR(port)  _port2addr(port) | ||||
| 
 | ||||
| static inline void *_port2addr(unsigned long port) | ||||
| { | ||||
| 	return (void *)(port + NONCACHE_OFFSET); | ||||
| } | ||||
| 
 | ||||
| #if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC) | ||||
| static inline void *__port2addr_ata(unsigned long port) | ||||
| { | ||||
| 	static int	dummy_reg; | ||||
| 
 | ||||
| 	switch (port) { | ||||
| 	case 0x1f0:	return (void *)0xac002000; | ||||
| 	case 0x1f1:	return (void *)0xac012800; | ||||
| 	case 0x1f2:	return (void *)0xac012002; | ||||
| 	case 0x1f3:	return (void *)0xac012802; | ||||
| 	case 0x1f4:	return (void *)0xac012004; | ||||
| 	case 0x1f5:	return (void *)0xac012804; | ||||
| 	case 0x1f6:	return (void *)0xac012006; | ||||
| 	case 0x1f7:	return (void *)0xac012806; | ||||
| 	case 0x3f6:	return (void *)0xac01200e; | ||||
| 	default: 	return (void *)&dummy_reg; | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * M32104T-LAN is located in the extended bus space | ||||
|  * from 0x01000000 to 0x01ffffff on physical address. | ||||
|  * The base address of LAN controller(LAN91C111) is 0x300. | ||||
|  */ | ||||
| #define LAN_IOSTART	0x300 | ||||
| #define LAN_IOEND	0x320 | ||||
| static inline void *_port2addr_ne(unsigned long port) | ||||
| { | ||||
| 	return (void *)(port + NONCACHE_OFFSET + 0x01000000); | ||||
| } | ||||
| 
 | ||||
| static inline void delay(void) | ||||
| { | ||||
| 	__asm__ __volatile__ ("push r0; \n\t pop r0;" : : :"memory"); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * NIC I/O function | ||||
|  */ | ||||
| 
 | ||||
| #define PORT2ADDR_NE(port)  _port2addr_ne(port) | ||||
| 
 | ||||
| static inline unsigned char _ne_inb(void *portp) | ||||
| { | ||||
| 	return *(volatile unsigned char *)portp; | ||||
| } | ||||
| 
 | ||||
| static inline unsigned short _ne_inw(void *portp) | ||||
| { | ||||
| 	return (unsigned short)le16_to_cpu(*(volatile unsigned short *)portp); | ||||
| } | ||||
| 
 | ||||
| static inline void _ne_insb(void *portp, void *addr, unsigned long count) | ||||
| { | ||||
| 	unsigned char *buf = (unsigned char *)addr; | ||||
| 
 | ||||
| 	while (count--) | ||||
| 		*buf++ = _ne_inb(portp); | ||||
| } | ||||
| 
 | ||||
| static inline void _ne_outb(unsigned char b, void *portp) | ||||
| { | ||||
| 	*(volatile unsigned char *)portp = b; | ||||
| } | ||||
| 
 | ||||
| static inline void _ne_outw(unsigned short w, void *portp) | ||||
| { | ||||
| 	*(volatile unsigned short *)portp = cpu_to_le16(w); | ||||
| } | ||||
| 
 | ||||
| unsigned char _inb(unsigned long port) | ||||
| { | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) | ||||
| 		return _ne_inb(PORT2ADDR_NE(port)); | ||||
| 
 | ||||
| 	return *(volatile unsigned char *)PORT2ADDR(port); | ||||
| } | ||||
| 
 | ||||
| unsigned short _inw(unsigned long port) | ||||
| { | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) | ||||
| 		return _ne_inw(PORT2ADDR_NE(port)); | ||||
| 
 | ||||
| 	return *(volatile unsigned short *)PORT2ADDR(port); | ||||
| } | ||||
| 
 | ||||
| unsigned long _inl(unsigned long port) | ||||
| { | ||||
| 	return *(volatile unsigned long *)PORT2ADDR(port); | ||||
| } | ||||
| 
 | ||||
| unsigned char _inb_p(unsigned long port) | ||||
| { | ||||
| 	unsigned char v = _inb(port); | ||||
| 	delay(); | ||||
| 	return (v); | ||||
| } | ||||
| 
 | ||||
| unsigned short _inw_p(unsigned long port) | ||||
| { | ||||
| 	unsigned short v = _inw(port); | ||||
| 	delay(); | ||||
| 	return (v); | ||||
| } | ||||
| 
 | ||||
| unsigned long _inl_p(unsigned long port) | ||||
| { | ||||
| 	unsigned long v = _inl(port); | ||||
| 	delay(); | ||||
| 	return (v); | ||||
| } | ||||
| 
 | ||||
| void _outb(unsigned char b, unsigned long port) | ||||
| { | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) | ||||
| 		_ne_outb(b, PORT2ADDR_NE(port)); | ||||
| 	else | ||||
| 		*(volatile unsigned char *)PORT2ADDR(port) = b; | ||||
| } | ||||
| 
 | ||||
| void _outw(unsigned short w, unsigned long port) | ||||
| { | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) | ||||
| 		_ne_outw(w, PORT2ADDR_NE(port)); | ||||
| 	else | ||||
| 		*(volatile unsigned short *)PORT2ADDR(port) = w; | ||||
| } | ||||
| 
 | ||||
| void _outl(unsigned long l, unsigned long port) | ||||
| { | ||||
| 	*(volatile unsigned long *)PORT2ADDR(port) = l; | ||||
| } | ||||
| 
 | ||||
| void _outb_p(unsigned char b, unsigned long port) | ||||
| { | ||||
| 	_outb(b, port); | ||||
| 	delay(); | ||||
| } | ||||
| 
 | ||||
| void _outw_p(unsigned short w, unsigned long port) | ||||
| { | ||||
| 	_outw(w, port); | ||||
| 	delay(); | ||||
| } | ||||
| 
 | ||||
| void _outl_p(unsigned long l, unsigned long port) | ||||
| { | ||||
| 	_outl(l, port); | ||||
| 	delay(); | ||||
| } | ||||
| 
 | ||||
| void _insb(unsigned int port, void *addr, unsigned long count) | ||||
| { | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) | ||||
| 		_ne_insb(PORT2ADDR_NE(port), addr, count); | ||||
| 	else { | ||||
| 		unsigned char *buf = addr; | ||||
| 		unsigned char *portp = PORT2ADDR(port); | ||||
| 		while (count--) | ||||
| 			*buf++ = *(volatile unsigned char *)portp; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void _insw(unsigned int port, void *addr, unsigned long count) | ||||
| { | ||||
| 	unsigned short *buf = addr; | ||||
| 	unsigned short *portp; | ||||
| 
 | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) { | ||||
| 		/*
 | ||||
| 		 * This portion is only used by smc91111.c to read data | ||||
| 		 * from the DATA_REG. Do not swap the data. | ||||
| 		 */ | ||||
| 		portp = PORT2ADDR_NE(port); | ||||
| 		while (count--) | ||||
| 			*buf++ = *(volatile unsigned short *)portp; | ||||
| #if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC) | ||||
| 	} else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) { | ||||
| 		pcc_ioread_word(9, port, (void *)addr, sizeof(unsigned short), | ||||
| 				count, 1); | ||||
| #endif | ||||
| #if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC) | ||||
| 	} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) { | ||||
| 		portp = __port2addr_ata(port); | ||||
| 		while (count--) | ||||
| 			*buf++ = *(volatile unsigned short *)portp; | ||||
| #endif | ||||
| 	} else { | ||||
| 		portp = PORT2ADDR(port); | ||||
| 		while (count--) | ||||
| 			*buf++ = *(volatile unsigned short *)portp; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void _insl(unsigned int port, void *addr, unsigned long count) | ||||
| { | ||||
| 	unsigned long *buf = addr; | ||||
| 	unsigned long *portp; | ||||
| 
 | ||||
| 	portp = PORT2ADDR(port); | ||||
| 	while (count--) | ||||
| 		*buf++ = *(volatile unsigned long *)portp; | ||||
| } | ||||
| 
 | ||||
| void _outsb(unsigned int port, const void *addr, unsigned long count) | ||||
| { | ||||
| 	const unsigned char *buf = addr; | ||||
| 	unsigned char *portp; | ||||
| 
 | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) { | ||||
| 		portp = PORT2ADDR_NE(port); | ||||
| 		while (count--) | ||||
| 			_ne_outb(*buf++, portp); | ||||
| 	} else { | ||||
| 		portp = PORT2ADDR(port); | ||||
| 		while (count--) | ||||
| 			*(volatile unsigned char *)portp = *buf++; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void _outsw(unsigned int port, const void *addr, unsigned long count) | ||||
| { | ||||
| 	const unsigned short *buf = addr; | ||||
| 	unsigned short *portp; | ||||
| 
 | ||||
| 	if (port >= LAN_IOSTART && port < LAN_IOEND) { | ||||
| 		/*
 | ||||
| 		 * This portion is only used by smc91111.c to write data | ||||
| 		 * into the DATA_REG. Do not swap the data. | ||||
| 		 */ | ||||
| 		portp = PORT2ADDR_NE(port); | ||||
| 		while (count--) | ||||
| 			*(volatile unsigned short *)portp = *buf++; | ||||
| #if defined(CONFIG_IDE) && !defined(CONFIG_M32R_CFC) | ||||
| 	} else if ((port >= 0x1f0 && port <=0x1f7) || port == 0x3f6) { | ||||
| 		portp = __port2addr_ata(port); | ||||
| 		while (count--) | ||||
| 			*(volatile unsigned short *)portp = *buf++; | ||||
| #endif | ||||
| #if defined(CONFIG_PCMCIA) && defined(CONFIG_M32R_CFC) | ||||
| 	} else if (port >= M32R_PCC_IOSTART0 && port <= M32R_PCC_IOEND0) { | ||||
| 		pcc_iowrite_word(9, port, (void *)addr, sizeof(unsigned short), | ||||
| 				 count, 1); | ||||
| #endif | ||||
| 	} else { | ||||
| 		portp = PORT2ADDR(port); | ||||
| 		while (count--) | ||||
| 			*(volatile unsigned short *)portp = *buf++; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void _outsl(unsigned int port, const void *addr, unsigned long count) | ||||
| { | ||||
| 	const unsigned long *buf = addr; | ||||
| 	unsigned char *portp; | ||||
| 
 | ||||
| 	portp = PORT2ADDR(port); | ||||
| 	while (count--) | ||||
| 		*(volatile unsigned long *)portp = *buf++; | ||||
| } | ||||
| @ -320,6 +320,9 @@ static int show_cpuinfo(struct seq_file *m, void *v) | ||||
| #elif defined(CONFIG_CHIP_MP) | ||||
| 	seq_printf(m, "cpu family\t: M32R-MP\n" | ||||
| 		"cache size\t: I-xxKB/D-xxKB\n"); | ||||
| #elif  defined(CONFIG_CHIP_M32104) | ||||
| 	seq_printf(m,"cpu family\t: M32104\n" | ||||
| 		"cache size\t: I-8KB/D-8KB\n"); | ||||
| #else | ||||
| 	seq_printf(m, "cpu family\t: Unknown\n"); | ||||
| #endif | ||||
| @ -340,6 +343,8 @@ static int show_cpuinfo(struct seq_file *m, void *v) | ||||
| 	seq_printf(m, "Machine\t\t: uServer\n"); | ||||
| #elif defined(CONFIG_PLAT_OAKS32R) | ||||
| 	seq_printf(m, "Machine\t\t: OAKS32R\n"); | ||||
| #elif  defined(CONFIG_PLAT_M32104UT) | ||||
| 	seq_printf(m, "Machine\t\t: M3T-M32104UT uT Engine board\n"); | ||||
| #else | ||||
| 	seq_printf(m, "Machine\t\t: Unknown\n"); | ||||
| #endif | ||||
| @ -389,7 +394,7 @@ unsigned long cpu_initialized __initdata = 0; | ||||
|  */ | ||||
| #if defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_XNUX2)	\ | ||||
| 	|| defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32102) \ | ||||
| 	|| defined(CONFIG_CHIP_OPSP) | ||||
| 	|| defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) | ||||
| void __init cpu_init (void) | ||||
| { | ||||
| 	int cpu_id = smp_processor_id(); | ||||
|  | ||||
							
								
								
									
										162
									
								
								arch/m32r/kernel/setup_m32104ut.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								arch/m32r/kernel/setup_m32104ut.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,162 @@ | ||||
| /*
 | ||||
|  *  linux/arch/m32r/kernel/setup_m32104ut.c | ||||
|  * | ||||
|  *  Setup routines for M32104UT Board | ||||
|  * | ||||
|  *  Copyright (c) 2002-2005  Hiroyuki Kondo, Hirokazu Takata, | ||||
|  *                           Hitoshi Yamamoto, Mamoru Sakugawa, | ||||
|  *                           Naoto Sugai, Hayato Fujiwara | ||||
|  */ | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| #include <linux/irq.h> | ||||
| #include <linux/kernel.h> | ||||
| #include <linux/init.h> | ||||
| #include <linux/device.h> | ||||
| 
 | ||||
| #include <asm/system.h> | ||||
| #include <asm/m32r.h> | ||||
| #include <asm/io.h> | ||||
| 
 | ||||
| #define irq2port(x) (M32R_ICU_CR1_PORTL + ((x - 1) * sizeof(unsigned long))) | ||||
| 
 | ||||
| #ifndef CONFIG_SMP | ||||
| typedef struct { | ||||
| 	unsigned long icucr;  /* ICU Control Register */ | ||||
| } icu_data_t; | ||||
| #endif /* CONFIG_SMP */ | ||||
| 
 | ||||
| icu_data_t icu_data[NR_IRQS]; | ||||
| 
 | ||||
| static void disable_m32104ut_irq(unsigned int irq) | ||||
| { | ||||
| 	unsigned long port, data; | ||||
| 
 | ||||
| 	port = irq2port(irq); | ||||
| 	data = icu_data[irq].icucr|M32R_ICUCR_ILEVEL7; | ||||
| 	outl(data, port); | ||||
| } | ||||
| 
 | ||||
| static void enable_m32104ut_irq(unsigned int irq) | ||||
| { | ||||
| 	unsigned long port, data; | ||||
| 
 | ||||
| 	port = irq2port(irq); | ||||
| 	data = icu_data[irq].icucr|M32R_ICUCR_IEN|M32R_ICUCR_ILEVEL6; | ||||
| 	outl(data, port); | ||||
| } | ||||
| 
 | ||||
| static void mask_and_ack_m32104ut(unsigned int irq) | ||||
| { | ||||
| 	disable_m32104ut_irq(irq); | ||||
| } | ||||
| 
 | ||||
| static void end_m32104ut_irq(unsigned int irq) | ||||
| { | ||||
| 	enable_m32104ut_irq(irq); | ||||
| } | ||||
| 
 | ||||
| static unsigned int startup_m32104ut_irq(unsigned int irq) | ||||
| { | ||||
| 	enable_m32104ut_irq(irq); | ||||
| 	return (0); | ||||
| } | ||||
| 
 | ||||
| static void shutdown_m32104ut_irq(unsigned int irq) | ||||
| { | ||||
| 	unsigned long port; | ||||
| 
 | ||||
| 	port = irq2port(irq); | ||||
| 	outl(M32R_ICUCR_ILEVEL7, port); | ||||
| } | ||||
| 
 | ||||
| static struct hw_interrupt_type m32104ut_irq_type = | ||||
| { | ||||
| 	.typename = "M32104UT-IRQ", | ||||
| 	.startup = startup_m32104ut_irq, | ||||
| 	.shutdown = shutdown_m32104ut_irq, | ||||
| 	.enable = enable_m32104ut_irq, | ||||
| 	.disable = disable_m32104ut_irq, | ||||
| 	.ack = mask_and_ack_m32104ut, | ||||
| 	.end = end_m32104ut_irq | ||||
| }; | ||||
| 
 | ||||
| void __init init_IRQ(void) | ||||
| { | ||||
| 	static int once = 0; | ||||
| 
 | ||||
| 	if (once) | ||||
| 		return; | ||||
| 	else | ||||
| 		once++; | ||||
| 
 | ||||
| #if defined(CONFIG_SMC91X) | ||||
| 	/* INT#0: LAN controller on M32104UT-LAN (SMC91C111)*/ | ||||
| 	irq_desc[M32R_IRQ_INT0].status = IRQ_DISABLED; | ||||
| 	irq_desc[M32R_IRQ_INT0].handler = &m32104ut_irq_type; | ||||
| 	irq_desc[M32R_IRQ_INT0].action = 0; | ||||
| 	irq_desc[M32R_IRQ_INT0].depth = 1; | ||||
| 	icu_data[M32R_IRQ_INT0].icucr = M32R_ICUCR_IEN | M32R_ICUCR_ISMOD11; /* "H" level sense */ | ||||
| 	disable_m32104ut_irq(M32R_IRQ_INT0); | ||||
| #endif  /* CONFIG_SMC91X */ | ||||
| 
 | ||||
| 	/* MFT2 : system timer */ | ||||
| 	irq_desc[M32R_IRQ_MFT2].status = IRQ_DISABLED; | ||||
| 	irq_desc[M32R_IRQ_MFT2].handler = &m32104ut_irq_type; | ||||
| 	irq_desc[M32R_IRQ_MFT2].action = 0; | ||||
| 	irq_desc[M32R_IRQ_MFT2].depth = 1; | ||||
| 	icu_data[M32R_IRQ_MFT2].icucr = M32R_ICUCR_IEN; | ||||
| 	disable_m32104ut_irq(M32R_IRQ_MFT2); | ||||
| 
 | ||||
| #ifdef CONFIG_SERIAL_M32R_SIO | ||||
| 	/* SIO0_R : uart receive data */ | ||||
| 	irq_desc[M32R_IRQ_SIO0_R].status = IRQ_DISABLED; | ||||
| 	irq_desc[M32R_IRQ_SIO0_R].handler = &m32104ut_irq_type; | ||||
| 	irq_desc[M32R_IRQ_SIO0_R].action = 0; | ||||
| 	irq_desc[M32R_IRQ_SIO0_R].depth = 1; | ||||
| 	icu_data[M32R_IRQ_SIO0_R].icucr = M32R_ICUCR_IEN; | ||||
| 	disable_m32104ut_irq(M32R_IRQ_SIO0_R); | ||||
| 
 | ||||
| 	/* SIO0_S : uart send data */ | ||||
| 	irq_desc[M32R_IRQ_SIO0_S].status = IRQ_DISABLED; | ||||
| 	irq_desc[M32R_IRQ_SIO0_S].handler = &m32104ut_irq_type; | ||||
| 	irq_desc[M32R_IRQ_SIO0_S].action = 0; | ||||
| 	irq_desc[M32R_IRQ_SIO0_S].depth = 1; | ||||
| 	icu_data[M32R_IRQ_SIO0_S].icucr = M32R_ICUCR_IEN; | ||||
| 	disable_m32104ut_irq(M32R_IRQ_SIO0_S); | ||||
| #endif /* CONFIG_SERIAL_M32R_SIO */ | ||||
| } | ||||
| 
 | ||||
| #if defined(CONFIG_SMC91X) | ||||
| 
 | ||||
| #define LAN_IOSTART     0x300 | ||||
| #define LAN_IOEND       0x320 | ||||
| static struct resource smc91x_resources[] = { | ||||
| 	[0] = { | ||||
| 		.start  = (LAN_IOSTART), | ||||
| 		.end    = (LAN_IOEND), | ||||
| 		.flags  = IORESOURCE_MEM, | ||||
| 	}, | ||||
| 	[1] = { | ||||
| 		.start  = M32R_IRQ_INT0, | ||||
| 		.end    = M32R_IRQ_INT0, | ||||
| 		.flags  = IORESOURCE_IRQ, | ||||
| 	} | ||||
| }; | ||||
| 
 | ||||
| static struct platform_device smc91x_device = { | ||||
| 	.name		= "smc91x", | ||||
| 	.id		= 0, | ||||
| 	.num_resources  = ARRAY_SIZE(smc91x_resources), | ||||
| 	.resource       = smc91x_resources, | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| static int __init platform_init(void) | ||||
| { | ||||
| #if defined(CONFIG_SMC91X) | ||||
| 	platform_device_register(&smc91x_device); | ||||
| #endif | ||||
| 	return 0; | ||||
| } | ||||
| arch_initcall(platform_init); | ||||
| @ -57,7 +57,7 @@ static unsigned long do_gettimeoffset(void) | ||||
| 
 | ||||
| #if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \ | ||||
| 	|| defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \ | ||||
| 	|| defined(CONFIG_CHIP_OPSP) | ||||
| 	|| defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) | ||||
| #ifndef CONFIG_SMP | ||||
| 
 | ||||
| 	unsigned long count; | ||||
| @ -268,7 +268,7 @@ void __init time_init(void) | ||||
| 
 | ||||
| #if defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_XNUX2) \ | ||||
| 	|| defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_M32700) \ | ||||
| 	|| defined(CONFIG_CHIP_OPSP) | ||||
| 	|| defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) | ||||
| 
 | ||||
| 	/* M32102 MFT setup */ | ||||
| 	setup_irq(M32R_IRQ_MFT2, &irq0); | ||||
|  | ||||
							
								
								
									
										657
									
								
								arch/m32r/m32104ut/defconfig.m32104ut
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										657
									
								
								arch/m32r/m32104ut/defconfig.m32104ut
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,657 @@ | ||||
| # | ||||
| # Automatically generated make config: don't edit | ||||
| # Linux kernel version: 2.6.14 | ||||
| # Wed Nov  9 16:04:51 2005 | ||||
| # | ||||
| CONFIG_M32R=y | ||||
| # CONFIG_UID16 is not set | ||||
| CONFIG_GENERIC_ISA_DMA=y | ||||
| CONFIG_GENERIC_HARDIRQS=y | ||||
| CONFIG_GENERIC_IRQ_PROBE=y | ||||
| 
 | ||||
| # | ||||
| # Code maturity level options | ||||
| # | ||||
| CONFIG_EXPERIMENTAL=y | ||||
| CONFIG_CLEAN_COMPILE=y | ||||
| CONFIG_BROKEN_ON_SMP=y | ||||
| CONFIG_INIT_ENV_ARG_LIMIT=32 | ||||
| 
 | ||||
| # | ||||
| # General setup | ||||
| # | ||||
| CONFIG_LOCALVERSION="" | ||||
| CONFIG_LOCALVERSION_AUTO=y | ||||
| # CONFIG_POSIX_MQUEUE is not set | ||||
| # CONFIG_BSD_PROCESS_ACCT is not set | ||||
| CONFIG_SYSCTL=y | ||||
| # CONFIG_AUDIT is not set | ||||
| CONFIG_HOTPLUG=y | ||||
| # CONFIG_KOBJECT_UEVENT is not set | ||||
| # CONFIG_IKCONFIG is not set | ||||
| CONFIG_INITRAMFS_SOURCE="" | ||||
| CONFIG_EMBEDDED=y | ||||
| # CONFIG_KALLSYMS is not set | ||||
| CONFIG_PRINTK=y | ||||
| CONFIG_BUG=y | ||||
| CONFIG_BASE_FULL=y | ||||
| # CONFIG_FUTEX is not set | ||||
| # CONFIG_EPOLL is not set | ||||
| # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||||
| CONFIG_CC_ALIGN_FUNCTIONS=0 | ||||
| CONFIG_CC_ALIGN_LABELS=0 | ||||
| CONFIG_CC_ALIGN_LOOPS=0 | ||||
| CONFIG_CC_ALIGN_JUMPS=0 | ||||
| CONFIG_TINY_SHMEM=y | ||||
| CONFIG_BASE_SMALL=0 | ||||
| 
 | ||||
| # | ||||
| # Loadable module support | ||||
| # | ||||
| # CONFIG_MODULES is not set | ||||
| 
 | ||||
| # | ||||
| # Processor type and features | ||||
| # | ||||
| # CONFIG_PLAT_MAPPI is not set | ||||
| # CONFIG_PLAT_USRV is not set | ||||
| # CONFIG_PLAT_M32700UT is not set | ||||
| # CONFIG_PLAT_OPSPUT is not set | ||||
| # CONFIG_PLAT_OAKS32R is not set | ||||
| # CONFIG_PLAT_MAPPI2 is not set | ||||
| # CONFIG_PLAT_MAPPI3 is not set | ||||
| CONFIG_PLAT_M32104UT=y | ||||
| # CONFIG_CHIP_M32700 is not set | ||||
| # CONFIG_CHIP_M32102 is not set | ||||
| CONFIG_CHIP_M32104=y | ||||
| # CONFIG_CHIP_VDEC2 is not set | ||||
| # CONFIG_CHIP_OPSP is not set | ||||
| CONFIG_ISA_M32R=y | ||||
| CONFIG_BUS_CLOCK=54000000 | ||||
| CONFIG_TIMER_DIVIDE=128 | ||||
| # CONFIG_CPU_LITTLE_ENDIAN is not set | ||||
| CONFIG_MEMORY_START=04000000 | ||||
| CONFIG_MEMORY_SIZE=01000000 | ||||
| CONFIG_NOHIGHMEM=y | ||||
| # CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_RWSEM_GENERIC_SPINLOCK=y | ||||
| # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | ||||
| CONFIG_GENERIC_CALIBRATE_DELAY=y | ||||
| # CONFIG_PREEMPT is not set | ||||
| # CONFIG_SMP is not set | ||||
| 
 | ||||
| # | ||||
| # Bus options (PCI, PCMCIA, EISA, MCA, ISA) | ||||
| # | ||||
| # CONFIG_ISA is not set | ||||
| 
 | ||||
| # | ||||
| # PCCARD (PCMCIA/CardBus) support | ||||
| # | ||||
| CONFIG_PCCARD=y | ||||
| # CONFIG_PCMCIA_DEBUG is not set | ||||
| CONFIG_PCMCIA=y | ||||
| CONFIG_PCMCIA_LOAD_CIS=y | ||||
| CONFIG_PCMCIA_IOCTL=y | ||||
| 
 | ||||
| # | ||||
| # PC-card bridges | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # PCI Hotplug Support | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Executable file formats | ||||
| # | ||||
| CONFIG_BINFMT_FLAT=y | ||||
| # CONFIG_BINFMT_ZFLAT is not set | ||||
| # CONFIG_BINFMT_SHARED_FLAT is not set | ||||
| # CONFIG_BINFMT_MISC is not set | ||||
| 
 | ||||
| # | ||||
| # Networking | ||||
| # | ||||
| CONFIG_NET=y | ||||
| 
 | ||||
| # | ||||
| # Networking options | ||||
| # | ||||
| # CONFIG_PACKET is not set | ||||
| CONFIG_UNIX=y | ||||
| # CONFIG_NET_KEY is not set | ||||
| CONFIG_INET=y | ||||
| # CONFIG_IP_MULTICAST is not set | ||||
| # CONFIG_IP_ADVANCED_ROUTER is not set | ||||
| CONFIG_IP_FIB_HASH=y | ||||
| CONFIG_IP_PNP=y | ||||
| CONFIG_IP_PNP_DHCP=y | ||||
| # CONFIG_IP_PNP_BOOTP is not set | ||||
| # CONFIG_IP_PNP_RARP is not set | ||||
| # CONFIG_NET_IPIP is not set | ||||
| # CONFIG_NET_IPGRE is not set | ||||
| # CONFIG_ARPD is not set | ||||
| # CONFIG_SYN_COOKIES is not set | ||||
| # CONFIG_INET_AH is not set | ||||
| # CONFIG_INET_ESP is not set | ||||
| # CONFIG_INET_IPCOMP is not set | ||||
| # CONFIG_INET_TUNNEL is not set | ||||
| CONFIG_INET_DIAG=y | ||||
| CONFIG_INET_TCP_DIAG=y | ||||
| # CONFIG_TCP_CONG_ADVANCED is not set | ||||
| CONFIG_TCP_CONG_BIC=y | ||||
| # CONFIG_IPV6 is not set | ||||
| # CONFIG_NETFILTER is not set | ||||
| 
 | ||||
| # | ||||
| # DCCP Configuration (EXPERIMENTAL) | ||||
| # | ||||
| # CONFIG_IP_DCCP is not set | ||||
| 
 | ||||
| # | ||||
| # SCTP Configuration (EXPERIMENTAL) | ||||
| # | ||||
| # CONFIG_IP_SCTP is not set | ||||
| # CONFIG_ATM is not set | ||||
| # CONFIG_BRIDGE is not set | ||||
| # CONFIG_VLAN_8021Q is not set | ||||
| # CONFIG_DECNET is not set | ||||
| # CONFIG_LLC2 is not set | ||||
| # CONFIG_IPX is not set | ||||
| # CONFIG_ATALK is not set | ||||
| # CONFIG_X25 is not set | ||||
| # CONFIG_LAPB is not set | ||||
| # CONFIG_NET_DIVERT is not set | ||||
| # CONFIG_ECONET is not set | ||||
| # CONFIG_WAN_ROUTER is not set | ||||
| # CONFIG_NET_SCHED is not set | ||||
| # CONFIG_NET_CLS_ROUTE is not set | ||||
| 
 | ||||
| # | ||||
| # Network testing | ||||
| # | ||||
| # CONFIG_NET_PKTGEN is not set | ||||
| # CONFIG_HAMRADIO is not set | ||||
| # CONFIG_IRDA is not set | ||||
| # CONFIG_BT is not set | ||||
| # CONFIG_IEEE80211 is not set | ||||
| 
 | ||||
| # | ||||
| # Device Drivers | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Generic Driver Options | ||||
| # | ||||
| CONFIG_STANDALONE=y | ||||
| CONFIG_PREVENT_FIRMWARE_BUILD=y | ||||
| CONFIG_FW_LOADER=y | ||||
| # CONFIG_DEBUG_DRIVER is not set | ||||
| 
 | ||||
| # | ||||
| # Connector - unified userspace <-> kernelspace linker | ||||
| # | ||||
| # CONFIG_CONNECTOR is not set | ||||
| 
 | ||||
| # | ||||
| # Memory Technology Devices (MTD) | ||||
| # | ||||
| # CONFIG_MTD 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=y | ||||
| # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||||
| CONFIG_BLK_DEV_NBD=y | ||||
| CONFIG_BLK_DEV_RAM=y | ||||
| CONFIG_BLK_DEV_RAM_COUNT=16 | ||||
| CONFIG_BLK_DEV_RAM_SIZE=4096 | ||||
| CONFIG_BLK_DEV_INITRD=y | ||||
| # CONFIG_CDROM_PKTCDVD 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_ATA_OVER_ETH 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 | ||||
| 
 | ||||
| # | ||||
| # 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 | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Network device support | ||||
| # | ||||
| CONFIG_NETDEVICES=y | ||||
| CONFIG_DUMMY=y | ||||
| # 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_SMC91X=y | ||||
| # CONFIG_NE2000 is not set | ||||
| 
 | ||||
| # | ||||
| # Ethernet (1000 Mbit) | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Ethernet (10000 Mbit) | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Token Ring devices | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Wireless LAN (non-hamradio) | ||||
| # | ||||
| # CONFIG_NET_RADIO is not set | ||||
| 
 | ||||
| # | ||||
| # PCMCIA network device support | ||||
| # | ||||
| # CONFIG_NET_PCMCIA 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 | ||||
| 
 | ||||
| # | ||||
| # ISDN subsystem | ||||
| # | ||||
| # CONFIG_ISDN is not set | ||||
| 
 | ||||
| # | ||||
| # Telephony Support | ||||
| # | ||||
| # CONFIG_PHONE is not set | ||||
| 
 | ||||
| # | ||||
| # Input device support | ||||
| # | ||||
| # CONFIG_INPUT 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_CORE=y | ||||
| CONFIG_SERIAL_CORE_CONSOLE=y | ||||
| CONFIG_SERIAL_M32R_SIO=y | ||||
| CONFIG_SERIAL_M32R_SIO_CONSOLE=y | ||||
| CONFIG_UNIX98_PTYS=y | ||||
| CONFIG_LEGACY_PTYS=y | ||||
| CONFIG_LEGACY_PTY_COUNT=256 | ||||
| 
 | ||||
| # | ||||
| # IPMI | ||||
| # | ||||
| # CONFIG_IPMI_HANDLER is not set | ||||
| 
 | ||||
| # | ||||
| # Watchdog Cards | ||||
| # | ||||
| CONFIG_WATCHDOG=y | ||||
| # CONFIG_WATCHDOG_NOWAYOUT is not set | ||||
| 
 | ||||
| # | ||||
| # Watchdog Device Drivers | ||||
| # | ||||
| CONFIG_SOFT_WATCHDOG=y | ||||
| # CONFIG_RTC is not set | ||||
| # CONFIG_DTLK is not set | ||||
| # CONFIG_R3964 is not set | ||||
| 
 | ||||
| # | ||||
| # Ftape, the floppy tape device driver | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # PCMCIA character devices | ||||
| # | ||||
| # CONFIG_SYNCLINK_CS is not set | ||||
| # CONFIG_RAW_DRIVER is not set | ||||
| 
 | ||||
| # | ||||
| # TPM devices | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # I2C support | ||||
| # | ||||
| # CONFIG_I2C 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 | ||||
| 
 | ||||
| # | ||||
| # Misc devices | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Multimedia Capabilities Port drivers | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Multimedia devices | ||||
| # | ||||
| # CONFIG_VIDEO_DEV is not set | ||||
| 
 | ||||
| # | ||||
| # Digital Video Broadcasting Devices | ||||
| # | ||||
| # CONFIG_DVB is not set | ||||
| 
 | ||||
| # | ||||
| # Graphics support | ||||
| # | ||||
| # 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 | ||||
| 
 | ||||
| # | ||||
| # USB Gadget Support | ||||
| # | ||||
| # CONFIG_USB_GADGET is not set | ||||
| 
 | ||||
| # | ||||
| # MMC/SD Card support | ||||
| # | ||||
| # CONFIG_MMC is not set | ||||
| 
 | ||||
| # | ||||
| # InfiniBand support | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # SN Devices | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # File systems | ||||
| # | ||||
| CONFIG_EXT2_FS=y | ||||
| # CONFIG_EXT2_FS_XATTR is not set | ||||
| # CONFIG_EXT2_FS_XIP is not set | ||||
| CONFIG_EXT3_FS=y | ||||
| CONFIG_EXT3_FS_XATTR=y | ||||
| CONFIG_EXT3_FS_POSIX_ACL=y | ||||
| # CONFIG_EXT3_FS_SECURITY is not set | ||||
| CONFIG_JBD=y | ||||
| # CONFIG_JBD_DEBUG is not set | ||||
| CONFIG_FS_MBCACHE=y | ||||
| # CONFIG_REISERFS_FS is not set | ||||
| # CONFIG_JFS_FS is not set | ||||
| CONFIG_FS_POSIX_ACL=y | ||||
| # CONFIG_XFS_FS is not set | ||||
| # CONFIG_MINIX_FS is not set | ||||
| # CONFIG_ROMFS_FS is not set | ||||
| # CONFIG_INOTIFY is not set | ||||
| # CONFIG_QUOTA is not set | ||||
| CONFIG_DNOTIFY=y | ||||
| # 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_FAT_FS=y | ||||
| CONFIG_MSDOS_FS=y | ||||
| CONFIG_VFAT_FS=y | ||||
| CONFIG_FAT_DEFAULT_CODEPAGE=932 | ||||
| CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||||
| # CONFIG_NTFS_FS is not set | ||||
| 
 | ||||
| # | ||||
| # Pseudo filesystems | ||||
| # | ||||
| CONFIG_PROC_FS=y | ||||
| CONFIG_SYSFS=y | ||||
| CONFIG_TMPFS=y | ||||
| # CONFIG_HUGETLB_PAGE is not set | ||||
| CONFIG_RAMFS=y | ||||
| # CONFIG_RELAYFS_FS is not set | ||||
| 
 | ||||
| # | ||||
| # 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_CRAMFS=y | ||||
| # 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 | ||||
| 
 | ||||
| # | ||||
| # Network File Systems | ||||
| # | ||||
| CONFIG_NFS_FS=y | ||||
| CONFIG_NFS_V3=y | ||||
| # CONFIG_NFS_V3_ACL is not set | ||||
| # CONFIG_NFS_V4 is not set | ||||
| # CONFIG_NFS_DIRECTIO is not set | ||||
| # CONFIG_NFSD is not set | ||||
| CONFIG_ROOT_NFS=y | ||||
| CONFIG_LOCKD=y | ||||
| CONFIG_LOCKD_V4=y | ||||
| CONFIG_NFS_COMMON=y | ||||
| CONFIG_SUNRPC=y | ||||
| # CONFIG_RPCSEC_GSS_KRB5 is not set | ||||
| # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||||
| # CONFIG_SMB_FS is not set | ||||
| # CONFIG_CIFS is not set | ||||
| # CONFIG_NCP_FS is not set | ||||
| # CONFIG_CODA_FS is not set | ||||
| # CONFIG_AFS_FS is not set | ||||
| # CONFIG_9P_FS is not set | ||||
| 
 | ||||
| # | ||||
| # Partition Types | ||||
| # | ||||
| # CONFIG_PARTITION_ADVANCED is not set | ||||
| CONFIG_MSDOS_PARTITION=y | ||||
| 
 | ||||
| # | ||||
| # Native Language Support | ||||
| # | ||||
| CONFIG_NLS=y | ||||
| CONFIG_NLS_DEFAULT="iso8859-1" | ||||
| CONFIG_NLS_CODEPAGE_437=y | ||||
| # CONFIG_NLS_CODEPAGE_737 is not set | ||||
| # CONFIG_NLS_CODEPAGE_775 is not set | ||||
| # CONFIG_NLS_CODEPAGE_850 is not set | ||||
| # CONFIG_NLS_CODEPAGE_852 is not set | ||||
| # CONFIG_NLS_CODEPAGE_855 is not set | ||||
| # CONFIG_NLS_CODEPAGE_857 is not set | ||||
| # CONFIG_NLS_CODEPAGE_860 is not set | ||||
| # CONFIG_NLS_CODEPAGE_861 is not set | ||||
| # CONFIG_NLS_CODEPAGE_862 is not set | ||||
| # CONFIG_NLS_CODEPAGE_863 is not set | ||||
| # CONFIG_NLS_CODEPAGE_864 is not set | ||||
| # CONFIG_NLS_CODEPAGE_865 is not set | ||||
| # CONFIG_NLS_CODEPAGE_866 is not set | ||||
| # CONFIG_NLS_CODEPAGE_869 is not set | ||||
| # CONFIG_NLS_CODEPAGE_936 is not set | ||||
| # CONFIG_NLS_CODEPAGE_950 is not set | ||||
| CONFIG_NLS_CODEPAGE_932=y | ||||
| # CONFIG_NLS_CODEPAGE_949 is not set | ||||
| # CONFIG_NLS_CODEPAGE_874 is not set | ||||
| # CONFIG_NLS_ISO8859_8 is not set | ||||
| # CONFIG_NLS_CODEPAGE_1250 is not set | ||||
| # CONFIG_NLS_CODEPAGE_1251 is not set | ||||
| # CONFIG_NLS_ASCII is not set | ||||
| # CONFIG_NLS_ISO8859_1 is not set | ||||
| # CONFIG_NLS_ISO8859_2 is not set | ||||
| # CONFIG_NLS_ISO8859_3 is not set | ||||
| # CONFIG_NLS_ISO8859_4 is not set | ||||
| # CONFIG_NLS_ISO8859_5 is not set | ||||
| # CONFIG_NLS_ISO8859_6 is not set | ||||
| # CONFIG_NLS_ISO8859_7 is not set | ||||
| # CONFIG_NLS_ISO8859_9 is not set | ||||
| # CONFIG_NLS_ISO8859_13 is not set | ||||
| # CONFIG_NLS_ISO8859_14 is not set | ||||
| # CONFIG_NLS_ISO8859_15 is not set | ||||
| # CONFIG_NLS_KOI8_R is not set | ||||
| # CONFIG_NLS_KOI8_U is not set | ||||
| CONFIG_NLS_UTF8=y | ||||
| 
 | ||||
| # | ||||
| # Profiling support | ||||
| # | ||||
| # CONFIG_PROFILING is not set | ||||
| 
 | ||||
| # | ||||
| # Kernel hacking | ||||
| # | ||||
| # CONFIG_PRINTK_TIME is not set | ||||
| CONFIG_DEBUG_KERNEL=y | ||||
| CONFIG_MAGIC_SYSRQ=y | ||||
| CONFIG_LOG_BUF_SHIFT=14 | ||||
| CONFIG_DETECT_SOFTLOCKUP=y | ||||
| # CONFIG_SCHEDSTATS is not set | ||||
| # CONFIG_DEBUG_SLAB is not set | ||||
| # CONFIG_DEBUG_SPINLOCK is not set | ||||
| # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||||
| # CONFIG_DEBUG_KOBJECT is not set | ||||
| # CONFIG_DEBUG_BUGVERBOSE is not set | ||||
| CONFIG_DEBUG_INFO=y | ||||
| # CONFIG_DEBUG_FS is not set | ||||
| # CONFIG_FRAME_POINTER is not set | ||||
| # CONFIG_DEBUG_STACKOVERFLOW is not set | ||||
| # CONFIG_DEBUG_STACK_USAGE is not set | ||||
| 
 | ||||
| # | ||||
| # Security options | ||||
| # | ||||
| # CONFIG_KEYS is not set | ||||
| # CONFIG_SECURITY is not set | ||||
| 
 | ||||
| # | ||||
| # Cryptographic options | ||||
| # | ||||
| # CONFIG_CRYPTO is not set | ||||
| 
 | ||||
| # | ||||
| # Hardware crypto devices | ||||
| # | ||||
| 
 | ||||
| # | ||||
| # Library routines | ||||
| # | ||||
| # CONFIG_CRC_CCITT is not set | ||||
| # CONFIG_CRC16 is not set | ||||
| CONFIG_CRC32=y | ||||
| CONFIG_LIBCRC32C=y | ||||
| CONFIG_ZLIB_INFLATE=y | ||||
| @ -26,6 +26,16 @@ | ||||
| #define MCCR		((volatile unsigned char*)0xfffffffe) | ||||
| #define MCCR_IIV	(1UL << 0)	/* I-cache invalidate */ | ||||
| #define MCCR_ICACHE_INV		MCCR_IIV | ||||
| #elif defined(CONFIG_CHIP_M32104) | ||||
| #define MCCR		((volatile unsigned long*)0xfffffffc) | ||||
| #define MCCR_IIV	(1UL << 8)	/* I-cache invalidate */ | ||||
| #define MCCR_DIV	(1UL << 9)	/* D-cache invalidate */ | ||||
| #define MCCR_DCB	(1UL << 10)	/* D-cache copy back */ | ||||
| #define MCCR_ICM	(1UL << 0)	/* I-cache mode [0:off,1:on] */ | ||||
| #define MCCR_DCM	(1UL << 1)	/* D-cache mode [0:off,1:on] */ | ||||
| #define MCCR_ICACHE_INV		MCCR_IIV | ||||
| #define MCCR_DCACHE_CB		MCCR_DCB | ||||
| #define MCCR_DCACHE_CBINV	(MCCR_DIV|MCCR_DCB) | ||||
| #endif /* CONFIG_CHIP_XNUX2 || CONFIG_CHIP_M32700 */ | ||||
| 
 | ||||
| #ifndef MCCR | ||||
|  | ||||
| @ -52,7 +52,7 @@ | ||||
| 	or3	\reg, \reg, #low(\x) | ||||
| 	.endm | ||||
| 
 | ||||
| #if !defined(CONFIG_CHIP_M32102) | ||||
| #if !(defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_M32104)) | ||||
| #define STI(reg) STI_M reg | ||||
| 	.macro STI_M reg | ||||
| 	setpsw  #0x40	    ->	nop | ||||
| @ -64,7 +64,7 @@ | ||||
| 	clrpsw  #0x40	    ->	nop | ||||
| 	; WORKAROUND: "-> nop" is a workaround for the M32700(TS1). | ||||
| 	.endm | ||||
| #else	/* CONFIG_CHIP_M32102 */ | ||||
| #else	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ | ||||
| #define STI(reg) STI_M reg | ||||
| 	.macro STI_M reg | ||||
| 	mvfc	\reg, psw | ||||
| @ -191,12 +191,12 @@ | ||||
| 	and  \reg, sp | ||||
| 	.endm | ||||
| 
 | ||||
| #if !defined(CONFIG_CHIP_M32102) | ||||
| #if !(defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_M32104)) | ||||
| 	.macro	SWITCH_TO_KERNEL_STACK | ||||
| 	; switch to kernel stack (spi) | ||||
| 	clrpsw	#0x80	    ->	nop | ||||
| 	.endm | ||||
| #else	/* CONFIG_CHIP_M32102 */ | ||||
| #else	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ | ||||
| 	.macro	SWITCH_TO_KERNEL_STACK | ||||
| 	push	r0		; save r0 for working | ||||
| 	mvfc	r0, psw | ||||
| @ -218,7 +218,7 @@ | ||||
| 	.fillinsn | ||||
| 2: | ||||
| 	.endm | ||||
| #endif	/* CONFIG_CHIP_M32102 */ | ||||
| #endif	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ | ||||
| 
 | ||||
| #endif	/* __ASSEMBLY__ */ | ||||
| 
 | ||||
|  | ||||
| @ -7,7 +7,7 @@ | ||||
| extern void _flush_cache_all(void); | ||||
| extern void _flush_cache_copyback_all(void); | ||||
| 
 | ||||
| #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_OPSP) | ||||
| #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) | ||||
| #define flush_cache_all()			do { } while (0) | ||||
| #define flush_cache_mm(mm)			do { } while (0) | ||||
| #define flush_cache_range(vma, start, end)	do { } while (0) | ||||
|  | ||||
| @ -65,6 +65,22 @@ | ||||
| #define NR_IRQS \ | ||||
| 	(OPSPUT_NUM_CPU_IRQ + OPSPUT_NUM_PLD_IRQ \ | ||||
| 	+ OPSPUT_NUM_LCD_PLD_IRQ + OPSPUT_NUM_LAN_PLD_IRQ) | ||||
| 
 | ||||
| #elif defined(CONFIG_PLAT_M32104UT) | ||||
| /*
 | ||||
|  * IRQ definitions for M32104UT | ||||
|  *  M32104 Chip: 64 interrupts | ||||
|  *  ICU of M32104UT-on-board PLD: 32 interrupts cascaded to INT1# chip pin | ||||
|  */ | ||||
| #define	M32104UT_NUM_CPU_IRQ	(64) | ||||
| #define M32104UT_NUM_PLD_IRQ	(32) | ||||
| #define M32104UT_IRQ_BASE	0 | ||||
| #define M32104UT_CPU_IRQ_BASE	M32104UT_IRQ_BASE | ||||
| #define M32104UT_PLD_IRQ_BASE	(M32104UT_CPU_IRQ_BASE + M32104UT_NUM_CPU_IRQ) | ||||
| 
 | ||||
| #define NR_IRQS	\ | ||||
|     (M32104UT_NUM_CPU_IRQ + M32104UT_NUM_PLD_IRQ) | ||||
| 
 | ||||
| #else | ||||
| #define NR_IRQS	64 | ||||
| #endif | ||||
|  | ||||
| @ -11,7 +11,11 @@ | ||||
| /*======================================================================*
 | ||||
|  * Special Function Register | ||||
|  *======================================================================*/ | ||||
| #if !defined(CONFIG_CHIP_M32104) | ||||
| #define M32R_SFR_OFFSET  (0x00E00000)  /* 0x00E00000-0x00EFFFFF 1[MB] */ | ||||
| #else | ||||
| #define M32R_SFR_OFFSET  (0x00700000)  /* 0x00700000-0x007FFFFF 1[MB] */ | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * Clock and Power Management registers. | ||||
| @ -100,7 +104,7 @@ | ||||
| #define M32R_MFT5RLD_PORTL     (0x0C+M32R_MFT5_OFFSET)  /* MFT4 reload */ | ||||
| #define M32R_MFT5CMPRLD_PORTL  (0x10+M32R_MFT5_OFFSET)  /* MFT4 compare reload */ | ||||
| 
 | ||||
| #ifdef CONFIG_CHIP_M32700 | ||||
| #if defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32104) | ||||
| #define M32R_MFTCR_MFT0MSK  (1UL<<31)  /* b0 */ | ||||
| #define M32R_MFTCR_MFT1MSK  (1UL<<30)  /* b1 */ | ||||
| #define M32R_MFTCR_MFT2MSK  (1UL<<29)  /* b2 */ | ||||
| @ -113,7 +117,7 @@ | ||||
| #define M32R_MFTCR_MFT3EN   (1UL<<20)  /* b11 */ | ||||
| #define M32R_MFTCR_MFT4EN   (1UL<<19)  /* b12 */ | ||||
| #define M32R_MFTCR_MFT5EN   (1UL<<18)  /* b13 */ | ||||
| #else	/* not CONFIG_CHIP_M32700 */ | ||||
| #else	/* not CONFIG_CHIP_M32700 && not CONFIG_CHIP_M32104 */ | ||||
| #define M32R_MFTCR_MFT0MSK  (1UL<<15)  /* b16 */ | ||||
| #define M32R_MFTCR_MFT1MSK  (1UL<<14)  /* b17 */ | ||||
| #define M32R_MFTCR_MFT2MSK  (1UL<<13)  /* b18 */ | ||||
| @ -126,7 +130,7 @@ | ||||
| #define M32R_MFTCR_MFT3EN   (1UL<<4)   /* b27 */ | ||||
| #define M32R_MFTCR_MFT4EN   (1UL<<3)   /* b28 */ | ||||
| #define M32R_MFTCR_MFT5EN   (1UL<<2)   /* b29 */ | ||||
| #endif	/* not CONFIG_CHIP_M32700 */ | ||||
| #endif	/* not CONFIG_CHIP_M32700 && not CONFIG_CHIP_M32104 */ | ||||
| 
 | ||||
| #define M32R_MFTMOD_CC_MASK    (1UL<<15)  /* b16 */ | ||||
| #define M32R_MFTMOD_TCCR       (1UL<<13)  /* b18 */ | ||||
| @ -241,8 +245,24 @@ | ||||
| #define M32R_IRQ_MFT1    (17)  /* MFT1 */ | ||||
| #define M32R_IRQ_MFT2    (18)  /* MFT2 */ | ||||
| #define M32R_IRQ_MFT3    (19)  /* MFT3 */ | ||||
| #define M32R_IRQ_MFT4    (20)  /* MFT4 */ | ||||
| #define M32R_IRQ_MFT5    (21)  /* MFT5 */ | ||||
| #ifdef CONFIG_CHIP_M32104 | ||||
| #define M32R_IRQ_MFTX0   (24)  /* MFTX0 */ | ||||
| #define M32R_IRQ_MFTX1   (25)  /* MFTX1 */ | ||||
| #define M32R_IRQ_DMA0    (32)  /* DMA0 */ | ||||
| #define M32R_IRQ_DMA1    (33)  /* DMA1 */ | ||||
| #define M32R_IRQ_DMA2    (34)  /* DMA2 */ | ||||
| #define M32R_IRQ_DMA3    (35)  /* DMA3 */ | ||||
| #define M32R_IRQ_SIO0_R  (40)  /* SIO0 send    */ | ||||
| #define M32R_IRQ_SIO0_S  (41)  /* SIO0 receive */ | ||||
| #define M32R_IRQ_SIO1_R  (42)  /* SIO1 send    */ | ||||
| #define M32R_IRQ_SIO1_S  (43)  /* SIO1 receive */ | ||||
| #define M32R_IRQ_SIO2_R  (44)  /* SIO2 send    */ | ||||
| #define M32R_IRQ_SIO2_S  (45)  /* SIO2 receive */ | ||||
| #define M32R_IRQ_SIO3_R  (46)  /* SIO3 send    */ | ||||
| #define M32R_IRQ_SIO3_S  (47)  /* SIO3 receive */ | ||||
| #define M32R_IRQ_ADC     (56)  /* ADC */ | ||||
| #define M32R_IRQ_PC      (57)  /* PC */ | ||||
| #else /* ! M32104 */ | ||||
| #define M32R_IRQ_DMA0    (32)  /* DMA0 */ | ||||
| #define M32R_IRQ_DMA1    (33)  /* DMA1 */ | ||||
| #define M32R_IRQ_SIO0_R  (48)  /* SIO0 send    */ | ||||
| @ -255,6 +275,7 @@ | ||||
| #define M32R_IRQ_SIO3_S  (55)  /* SIO3 receive */ | ||||
| #define M32R_IRQ_SIO4_R  (56)  /* SIO4 send    */ | ||||
| #define M32R_IRQ_SIO4_S  (57)  /* SIO4 receive */ | ||||
| #endif /* ! M32104 */ | ||||
| 
 | ||||
| #ifdef CONFIG_SMP | ||||
| #define M32R_IRQ_IPI0    (56) | ||||
|  | ||||
							
								
								
									
										163
									
								
								include/asm-m32r/m32104ut/m32104ut_pld.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								include/asm-m32r/m32104ut/m32104ut_pld.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,163 @@ | ||||
| /*
 | ||||
|  * include/asm/m32104ut/m32104ut_pld.h | ||||
|  * | ||||
|  * Definitions for Programable Logic Device(PLD) on M32104UT board. | ||||
|  * Based on m32700ut_pld.h | ||||
|  * | ||||
|  * Copyright (c) 2002	Takeo Takahashi | ||||
|  * Copyright (c) 2005	Naoto Sugai | ||||
|  * | ||||
|  * 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. | ||||
|  */ | ||||
| 
 | ||||
| #ifndef _M32104UT_M32104UT_PLD_H | ||||
| #define _M32104UT_M32104UT_PLD_H | ||||
| 
 | ||||
| #include <linux/config.h> | ||||
| 
 | ||||
| #if defined(CONFIG_PLAT_M32104UT) | ||||
| #define PLD_PLAT_BASE		0x02c00000 | ||||
| #else | ||||
| #error "no platform configuration" | ||||
| #endif | ||||
| 
 | ||||
| #ifndef __ASSEMBLY__ | ||||
| /*
 | ||||
|  * C functions use non-cache address. | ||||
|  */ | ||||
| #define PLD_BASE		(PLD_PLAT_BASE /* + NONCACHE_OFFSET */) | ||||
| #define __reg8			(volatile unsigned char *) | ||||
| #define __reg16			(volatile unsigned short *) | ||||
| #define __reg32			(volatile unsigned int *) | ||||
| #else | ||||
| #define PLD_BASE		(PLD_PLAT_BASE + NONCACHE_OFFSET) | ||||
| #define __reg8 | ||||
| #define __reg16 | ||||
| #define __reg32 | ||||
| #endif	/* __ASSEMBLY__ */ | ||||
| 
 | ||||
| /* CFC */ | ||||
| #define	PLD_CFRSTCR		__reg16(PLD_BASE + 0x0000) | ||||
| #define PLD_CFSTS		__reg16(PLD_BASE + 0x0002) | ||||
| #define PLD_CFIMASK		__reg16(PLD_BASE + 0x0004) | ||||
| #define PLD_CFBUFCR		__reg16(PLD_BASE + 0x0006) | ||||
| 
 | ||||
| /* MMC */ | ||||
| #define PLD_MMCCR		__reg16(PLD_BASE + 0x4000) | ||||
| #define PLD_MMCMOD		__reg16(PLD_BASE + 0x4002) | ||||
| #define PLD_MMCSTS		__reg16(PLD_BASE + 0x4006) | ||||
| #define PLD_MMCBAUR		__reg16(PLD_BASE + 0x400a) | ||||
| #define PLD_MMCCMDBCUT		__reg16(PLD_BASE + 0x400c) | ||||
| #define PLD_MMCCDTBCUT		__reg16(PLD_BASE + 0x400e) | ||||
| #define PLD_MMCDET		__reg16(PLD_BASE + 0x4010) | ||||
| #define PLD_MMCWP		__reg16(PLD_BASE + 0x4012) | ||||
| #define PLD_MMCWDATA		__reg16(PLD_BASE + 0x5000) | ||||
| #define PLD_MMCRDATA		__reg16(PLD_BASE + 0x6000) | ||||
| #define PLD_MMCCMDDATA		__reg16(PLD_BASE + 0x7000) | ||||
| #define PLD_MMCRSPDATA		__reg16(PLD_BASE + 0x7006) | ||||
| 
 | ||||
| /* ICU
 | ||||
|  *  ICUISTS:	status register | ||||
|  *  ICUIREQ0: 	request register | ||||
|  *  ICUIREQ1: 	request register | ||||
|  *  ICUCR3:	control register for CFIREQ# interrupt | ||||
|  *  ICUCR4:	control register for CFC Card insert interrupt | ||||
|  *  ICUCR5:	control register for CFC Card eject interrupt | ||||
|  *  ICUCR6:	control register for external interrupt | ||||
|  *  ICUCR11:	control register for MMC Card insert/eject interrupt | ||||
|  *  ICUCR13:	control register for SC error interrupt | ||||
|  *  ICUCR14:	control register for SC receive interrupt | ||||
|  *  ICUCR15:	control register for SC send interrupt | ||||
|  */ | ||||
| 
 | ||||
| #define PLD_IRQ_INT0		(M32104UT_PLD_IRQ_BASE + 0)	/* None */ | ||||
| #define PLD_IRQ_CFIREQ		(M32104UT_PLD_IRQ_BASE + 3)	/* CF IREQ */ | ||||
| #define PLD_IRQ_CFC_INSERT	(M32104UT_PLD_IRQ_BASE + 4)	/* CF Insert */ | ||||
| #define PLD_IRQ_CFC_EJECT	(M32104UT_PLD_IRQ_BASE + 5)	/* CF Eject */ | ||||
| #define PLD_IRQ_EXINT		(M32104UT_PLD_IRQ_BASE + 6)	/* EXINT */ | ||||
| #define PLD_IRQ_MMCCARD		(M32104UT_PLD_IRQ_BASE + 11)	/* MMC Insert/Eject */ | ||||
| #define PLD_IRQ_SC_ERROR	(M32104UT_PLD_IRQ_BASE + 13)	/* SC error */ | ||||
| #define PLD_IRQ_SC_RCV		(M32104UT_PLD_IRQ_BASE + 14)	/* SC receive */ | ||||
| #define PLD_IRQ_SC_SND		(M32104UT_PLD_IRQ_BASE + 15)	/* SC send */ | ||||
| 
 | ||||
| #define PLD_ICUISTS		__reg16(PLD_BASE + 0x8002) | ||||
| #define PLD_ICUISTS_VECB_MASK	(0xf000) | ||||
| #define PLD_ICUISTS_VECB(x)	((x) & PLD_ICUISTS_VECB_MASK) | ||||
| #define PLD_ICUISTS_ISN_MASK	(0x07c0) | ||||
| #define PLD_ICUISTS_ISN(x)	((x) & PLD_ICUISTS_ISN_MASK) | ||||
| #define PLD_ICUCR3		__reg16(PLD_BASE + 0x8104) | ||||
| #define PLD_ICUCR4		__reg16(PLD_BASE + 0x8106) | ||||
| #define PLD_ICUCR5		__reg16(PLD_BASE + 0x8108) | ||||
| #define PLD_ICUCR6		__reg16(PLD_BASE + 0x810a) | ||||
| #define PLD_ICUCR11		__reg16(PLD_BASE + 0x8114) | ||||
| #define PLD_ICUCR13		__reg16(PLD_BASE + 0x8118) | ||||
| #define PLD_ICUCR14		__reg16(PLD_BASE + 0x811a) | ||||
| #define PLD_ICUCR15		__reg16(PLD_BASE + 0x811c) | ||||
| #define PLD_ICUCR_IEN		(0x1000) | ||||
| #define PLD_ICUCR_IREQ		(0x0100) | ||||
| #define PLD_ICUCR_ISMOD00	(0x0000)	/* Low edge */ | ||||
| #define PLD_ICUCR_ISMOD01	(0x0010)	/* Low level */ | ||||
| #define PLD_ICUCR_ISMOD02	(0x0020)	/* High edge */ | ||||
| #define PLD_ICUCR_ISMOD03	(0x0030)	/* High level */ | ||||
| #define PLD_ICUCR_ILEVEL0	(0x0000) | ||||
| #define PLD_ICUCR_ILEVEL1	(0x0001) | ||||
| #define PLD_ICUCR_ILEVEL2	(0x0002) | ||||
| #define PLD_ICUCR_ILEVEL3	(0x0003) | ||||
| #define PLD_ICUCR_ILEVEL4	(0x0004) | ||||
| #define PLD_ICUCR_ILEVEL5	(0x0005) | ||||
| #define PLD_ICUCR_ILEVEL6	(0x0006) | ||||
| #define PLD_ICUCR_ILEVEL7	(0x0007) | ||||
| 
 | ||||
| /* Power Control of MMC and CF */ | ||||
| #define PLD_CPCR		__reg16(PLD_BASE + 0x14000) | ||||
| #define PLD_CPCR_CDP		0x0001 | ||||
| 
 | ||||
| /* LED Control
 | ||||
|  * | ||||
|  * 1: DIP swich side | ||||
|  * 2: Reset switch side | ||||
|  */ | ||||
| #define PLD_IOLEDCR		__reg16(PLD_BASE + 0x14002) | ||||
| #define PLD_IOLED_1_ON		0x001 | ||||
| #define PLD_IOLED_1_OFF		0x000 | ||||
| #define PLD_IOLED_2_ON		0x002 | ||||
| #define PLD_IOLED_2_OFF		0x000 | ||||
| 
 | ||||
| /* DIP Switch
 | ||||
|  *  0: Write-protect of Flash Memory (0:protected, 1:non-protected) | ||||
|  *  1: - | ||||
|  *  2: - | ||||
|  *  3: - | ||||
|  */ | ||||
| #define PLD_IOSWSTS		__reg16(PLD_BASE + 0x14004) | ||||
| #define	PLD_IOSWSTS_IOSW2	0x0200 | ||||
| #define	PLD_IOSWSTS_IOSW1	0x0100 | ||||
| #define	PLD_IOSWSTS_IOWP0	0x0001 | ||||
| 
 | ||||
| /* CRC */ | ||||
| #define PLD_CRC7DATA		__reg16(PLD_BASE + 0x18000) | ||||
| #define PLD_CRC7INDATA		__reg16(PLD_BASE + 0x18002) | ||||
| #define PLD_CRC16DATA		__reg16(PLD_BASE + 0x18004) | ||||
| #define PLD_CRC16INDATA		__reg16(PLD_BASE + 0x18006) | ||||
| #define PLD_CRC16ADATA		__reg16(PLD_BASE + 0x18008) | ||||
| #define PLD_CRC16AINDATA	__reg16(PLD_BASE + 0x1800a) | ||||
| 
 | ||||
| /* RTC */ | ||||
| #define PLD_RTCCR		__reg16(PLD_BASE + 0x1c000) | ||||
| #define PLD_RTCBAUR		__reg16(PLD_BASE + 0x1c002) | ||||
| #define PLD_RTCWRDATA		__reg16(PLD_BASE + 0x1c004) | ||||
| #define PLD_RTCRDDATA		__reg16(PLD_BASE + 0x1c006) | ||||
| #define PLD_RTCRSTODT		__reg16(PLD_BASE + 0x1c008) | ||||
| 
 | ||||
| /* SIM Card */ | ||||
| #define PLD_SCCR		__reg16(PLD_BASE + 0x38000) | ||||
| #define PLD_SCMOD		__reg16(PLD_BASE + 0x38004) | ||||
| #define PLD_SCSTS		__reg16(PLD_BASE + 0x38006) | ||||
| #define PLD_SCINTCR		__reg16(PLD_BASE + 0x38008) | ||||
| #define PLD_SCBAUR		__reg16(PLD_BASE + 0x3800a) | ||||
| #define PLD_SCTXB		__reg16(PLD_BASE + 0x3800c) | ||||
| #define PLD_SCRXB		__reg16(PLD_BASE + 0x3800e) | ||||
| 
 | ||||
| #endif	/* _M32104UT_M32104UT_PLD_H */ | ||||
| @ -14,7 +14,7 @@ | ||||
| #include <asm/m32r_mp_fpga.h> | ||||
| #elif defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_XNUX2) \ | ||||
| 	|| defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32102) \ | ||||
|         || defined(CONFIG_CHIP_OPSP) | ||||
|         || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104) | ||||
| #include <asm/m32102.h> | ||||
| #endif | ||||
| 
 | ||||
| @ -43,6 +43,10 @@ | ||||
| #include <asm/m32700ut/m32700ut_pld.h> | ||||
| #endif | ||||
| 
 | ||||
| #if defined(CONFIG_PLAT_M32104UT) | ||||
| #include <asm/m32104ut/m32104ut_pld.h> | ||||
| #endif  /* CONFIG_PLAT_M32104 */ | ||||
| 
 | ||||
| /*
 | ||||
|  * M32R Register | ||||
|  */ | ||||
|  | ||||
| @ -69,12 +69,12 @@ | ||||
| } while(0) | ||||
| 
 | ||||
| /* Interrupt Control */ | ||||
| #if !defined(CONFIG_CHIP_M32102) | ||||
| #if !defined(CONFIG_CHIP_M32102) && !defined(CONFIG_CHIP_M32104) | ||||
| #define local_irq_enable() \ | ||||
| 	__asm__ __volatile__ ("setpsw #0x40 -> nop": : :"memory") | ||||
| #define local_irq_disable() \ | ||||
| 	__asm__ __volatile__ ("clrpsw #0x40 -> nop": : :"memory") | ||||
| #else	/* CONFIG_CHIP_M32102 */ | ||||
| #else	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ | ||||
| static inline void local_irq_enable(void) | ||||
| { | ||||
| 	unsigned long tmpreg; | ||||
| @ -96,7 +96,7 @@ static inline void local_irq_disable(void) | ||||
| 		"mvtc	%0, psw	\n\t" | ||||
| 	: "=&r" (tmpreg0), "=&r" (tmpreg1) : : "cbit", "memory"); | ||||
| } | ||||
| #endif	/* CONFIG_CHIP_M32102 */ | ||||
| #endif	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ | ||||
| 
 | ||||
| #define local_save_flags(x) \ | ||||
| 	__asm__ __volatile__("mvfc %0,psw" : "=r"(x) : /* no input */) | ||||
| @ -105,13 +105,13 @@ static inline void local_irq_disable(void) | ||||
| 	__asm__ __volatile__("mvtc %0,psw" : /* no outputs */ \ | ||||
| 		: "r" (x) : "cbit", "memory") | ||||
| 
 | ||||
| #if !defined(CONFIG_CHIP_M32102) | ||||
| #if !(defined(CONFIG_CHIP_M32102) || defined(CONFIG_CHIP_M32104)) | ||||
| #define local_irq_save(x)				\ | ||||
| 	__asm__ __volatile__(				\ | ||||
|   		"mvfc	%0, psw;		\n\t"	\ | ||||
| 	  	"clrpsw	#0x40 -> nop;		\n\t"	\ | ||||
|   		: "=r" (x) : /* no input */ : "memory") | ||||
| #else	/* CONFIG_CHIP_M32102 */ | ||||
| #else	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ | ||||
| #define local_irq_save(x) 				\ | ||||
| 	({						\ | ||||
| 		unsigned long tmpreg;			\ | ||||
| @ -124,7 +124,7 @@ static inline void local_irq_disable(void) | ||||
| 			: "=r" (x), "=&r" (tmpreg)	\ | ||||
| 			: : "cbit", "memory");		\ | ||||
| 	}) | ||||
| #endif	/* CONFIG_CHIP_M32102 */ | ||||
| #endif	/* CONFIG_CHIP_M32102 || CONFIG_CHIP_M32104 */ | ||||
| 
 | ||||
| #define irqs_disabled()					\ | ||||
| 	({						\ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user