mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 01:24:43 +00:00 
			
		
		
		
	 7b8ddb06e5
			
		
	
	
		7b8ddb06e5
		
	
	
	
	
		
			
			This completes the DMA40 support with the platform-specific configuration for U8500/DB8500. Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Acked-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Reviewed-by: Alessandro Rubini <rubini@unipv.it> Cc: STEricsson_nomadik_linux@list.st.com Acked-by: Russell King <rmk+kernel@arm.linux.org.uk> [fixed up dma40_{tx|rx}_map declaration/initialization] Signed-off-by: Dan Williams <dan.j.williams@intel.com>
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2008-2009 ST-Ericsson
 | |
|  *
 | |
|  * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify
 | |
|  * it under the terms of the GNU General Public License version 2, as
 | |
|  * published by the Free Software Foundation.
 | |
|  *
 | |
|  */
 | |
| #include <linux/types.h>
 | |
| #include <linux/init.h>
 | |
| #include <linux/device.h>
 | |
| #include <linux/amba/bus.h>
 | |
| #include <linux/irq.h>
 | |
| #include <linux/gpio.h>
 | |
| #include <linux/platform_device.h>
 | |
| #include <linux/io.h>
 | |
| 
 | |
| #include <asm/mach/map.h>
 | |
| #include <mach/hardware.h>
 | |
| #include <mach/setup.h>
 | |
| #include <mach/devices.h>
 | |
| 
 | |
| static struct platform_device *platform_devs[] __initdata = {
 | |
| 	&u8500_gpio_devs[0],
 | |
| 	&u8500_gpio_devs[1],
 | |
| 	&u8500_gpio_devs[2],
 | |
| 	&u8500_gpio_devs[3],
 | |
| 	&u8500_gpio_devs[4],
 | |
| 	&u8500_gpio_devs[5],
 | |
| 	&u8500_gpio_devs[6],
 | |
| 	&u8500_gpio_devs[7],
 | |
| 	&u8500_gpio_devs[8],
 | |
| 	&u8500_dma40_device,
 | |
| };
 | |
| 
 | |
| /* minimum static i/o mapping required to boot U8500 platforms */
 | |
| static struct map_desc u8500_io_desc[] __initdata = {
 | |
| 	__IO_DEV_DESC(U8500_PRCMU_BASE, SZ_4K),
 | |
| 	__IO_DEV_DESC(U8500_GPIO0_BASE, SZ_4K),
 | |
| 	__IO_DEV_DESC(U8500_GPIO1_BASE, SZ_4K),
 | |
| 	__IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K),
 | |
| 	__IO_DEV_DESC(U8500_GPIO3_BASE, SZ_4K),
 | |
| };
 | |
| 
 | |
| static struct map_desc u8500ed_io_desc[] __initdata = {
 | |
| 	__IO_DEV_DESC(U8500_MTU0_BASE_ED, SZ_4K),
 | |
| 	__IO_DEV_DESC(U8500_CLKRST7_BASE_ED, SZ_8K),
 | |
| };
 | |
| 
 | |
| static struct map_desc u8500v1_io_desc[] __initdata = {
 | |
| 	__IO_DEV_DESC(U8500_MTU0_BASE, SZ_4K),
 | |
| };
 | |
| 
 | |
| void __init u8500_map_io(void)
 | |
| {
 | |
| 	ux500_map_io();
 | |
| 
 | |
| 	iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc));
 | |
| 
 | |
| 	if (cpu_is_u8500ed())
 | |
| 		iotable_init(u8500ed_io_desc, ARRAY_SIZE(u8500ed_io_desc));
 | |
| 	else
 | |
| 		iotable_init(u8500v1_io_desc, ARRAY_SIZE(u8500v1_io_desc));
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * This function is called from the board init
 | |
|  */
 | |
| void __init u8500_init_devices(void)
 | |
| {
 | |
| 	ux500_init_devices();
 | |
| 
 | |
| 	if (cpu_is_u8500ed())
 | |
| 		dma40_u8500ed_fixup();
 | |
| 
 | |
| 	/* Register the platform devices */
 | |
| 	platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));
 | |
| 
 | |
| 	return ;
 | |
| }
 |