| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * linux/arch/sh/boards/se/7780/setup.c | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2006,2007  Nobuhiro Iwamatsu | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Hitachi UL SolutionEngine 7780 Support. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * 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/platform_device.h>
 | 
					
						
							|  |  |  | #include <asm/machvec.h>
 | 
					
						
							| 
									
										
										
										
											2008-07-29 21:41:37 +09:00
										 |  |  | #include <mach-se/mach/se7780.h>
 | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | #include <asm/io.h>
 | 
					
						
							| 
									
										
										
										
											2007-11-07 14:56:46 +09:00
										 |  |  | #include <asm/heartbeat.h>
 | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Heartbeat */ | 
					
						
							| 
									
										
										
										
											2010-01-15 12:24:34 +09:00
										 |  |  | static struct resource heartbeat_resource = { | 
					
						
							|  |  |  | 	.start  = PA_LED, | 
					
						
							|  |  |  | 	.end    = PA_LED, | 
					
						
							|  |  |  | 	.flags  = IORESOURCE_MEM | IORESOURCE_MEM_16BIT, | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static struct platform_device heartbeat_device = { | 
					
						
							|  |  |  | 	.name           = "heartbeat", | 
					
						
							|  |  |  | 	.id             = -1, | 
					
						
							| 
									
										
										
										
											2010-01-15 12:24:34 +09:00
										 |  |  | 	.num_resources  = 1, | 
					
						
							|  |  |  | 	.resource       = &heartbeat_resource, | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* SMC91x */ | 
					
						
							|  |  |  | static struct resource smc91x_eth_resources[] = { | 
					
						
							|  |  |  | 	[0] = { | 
					
						
							|  |  |  | 		.name   = "smc91x-regs" , | 
					
						
							|  |  |  | 		.start  = PA_LAN + 0x300, | 
					
						
							|  |  |  | 		.end    = PA_LAN + 0x300 + 0x10 , | 
					
						
							|  |  |  | 		.flags  = IORESOURCE_MEM, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	[1] = { | 
					
						
							|  |  |  | 		.start  = SMC_IRQ, | 
					
						
							|  |  |  | 		.end    = SMC_IRQ, | 
					
						
							|  |  |  | 		.flags  = IORESOURCE_IRQ, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static struct platform_device smc91x_eth_device = { | 
					
						
							|  |  |  | 	.name           = "smc91x", | 
					
						
							|  |  |  | 	.id             = 0, | 
					
						
							|  |  |  | 	.dev = { | 
					
						
							|  |  |  | 		.dma_mask               = NULL,         /* don't use dma */ | 
					
						
							|  |  |  | 		.coherent_dma_mask      = 0xffffffff, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	.num_resources  = ARRAY_SIZE(smc91x_eth_resources), | 
					
						
							|  |  |  | 	.resource       = smc91x_eth_resources, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static struct platform_device *se7780_devices[] __initdata = { | 
					
						
							|  |  |  | 	&heartbeat_device, | 
					
						
							|  |  |  | 	&smc91x_eth_device, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static int __init se7780_devices_setup(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return platform_add_devices(se7780_devices, | 
					
						
							|  |  |  | 		ARRAY_SIZE(se7780_devices)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | device_initcall(se7780_devices_setup); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define GPIO_PHCR        0xFFEA000E
 | 
					
						
							|  |  |  | #define GPIO_PMSELR      0xFFEA0080
 | 
					
						
							|  |  |  | #define GPIO_PECR        0xFFEA0008
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static void __init se7780_setup(char **cmdline_p) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	/* "SH-Linux" on LED Display */ | 
					
						
							| 
									
										
										
										
											2010-01-26 12:58:40 +09:00
										 |  |  | 	__raw_writew( 'S' , PA_LED_DISP + (DISP_SEL0_ADDR << 1) ); | 
					
						
							|  |  |  | 	__raw_writew( 'H' , PA_LED_DISP + (DISP_SEL1_ADDR << 1) ); | 
					
						
							|  |  |  | 	__raw_writew( '-' , PA_LED_DISP + (DISP_SEL2_ADDR << 1) ); | 
					
						
							|  |  |  | 	__raw_writew( 'L' , PA_LED_DISP + (DISP_SEL3_ADDR << 1) ); | 
					
						
							|  |  |  | 	__raw_writew( 'i' , PA_LED_DISP + (DISP_SEL4_ADDR << 1) ); | 
					
						
							|  |  |  | 	__raw_writew( 'n' , PA_LED_DISP + (DISP_SEL5_ADDR << 1) ); | 
					
						
							|  |  |  | 	__raw_writew( 'u' , PA_LED_DISP + (DISP_SEL6_ADDR << 1) ); | 
					
						
							|  |  |  | 	__raw_writew( 'x' , PA_LED_DISP + (DISP_SEL7_ADDR << 1) ); | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	printk(KERN_INFO "Hitachi UL Solutions Engine 7780SE03 support.\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/*
 | 
					
						
							|  |  |  | 	 * PCI REQ/GNT setting | 
					
						
							|  |  |  | 	 *   REQ0/GNT0 -> USB | 
					
						
							|  |  |  | 	 *   REQ1/GNT1 -> PC Card | 
					
						
							|  |  |  | 	 *   REQ2/GNT2 -> Serial ATA | 
					
						
							|  |  |  | 	 *   REQ3/GNT3 -> PCI slot | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2010-01-26 12:58:40 +09:00
										 |  |  | 	__raw_writew(0x0213, FPGA_REQSEL); | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* GPIO setting */ | 
					
						
							| 
									
										
										
										
											2010-01-26 12:58:40 +09:00
										 |  |  | 	__raw_writew(0x0000, GPIO_PECR); | 
					
						
							|  |  |  | 	__raw_writew(__raw_readw(GPIO_PHCR)&0xfff3, GPIO_PHCR); | 
					
						
							|  |  |  | 	__raw_writew(0x0c00, GPIO_PMSELR); | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* iVDR Power ON */ | 
					
						
							| 
									
										
										
										
											2010-01-26 12:58:40 +09:00
										 |  |  | 	__raw_writew(0x0001, FPGA_IVDRPW); | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * The Machine Vector | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2007-05-15 15:19:34 +09:00
										 |  |  | static struct sh_machine_vector mv_se7780 __initmv = { | 
					
						
							| 
									
										
										
										
											2007-03-29 00:07:35 +09:00
										 |  |  | 	.mv_name                = "Solution Engine 7780" , | 
					
						
							|  |  |  | 	.mv_setup               = se7780_setup , | 
					
						
							|  |  |  | 	.mv_nr_irqs		= 111 , | 
					
						
							|  |  |  | 	.mv_init_irq		= init_se7780_IRQ, | 
					
						
							|  |  |  | }; |