| 
									
										
										
										
											2010-05-03 08:03:52 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (C) ST-Ericsson SA 2010 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson | 
					
						
							|  |  |  |  * License terms: GNU General Public License (GPL) version 2 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/kernel.h>
 | 
					
						
							|  |  |  | #include <linux/platform_device.h>
 | 
					
						
							|  |  |  | #include <linux/interrupt.h>
 | 
					
						
							|  |  |  | #include <linux/io.h>
 | 
					
						
							| 
									
										
										
										
											2010-05-03 08:25:52 +01:00
										 |  |  | #include <linux/gpio.h>
 | 
					
						
							| 
									
										
										
										
											2010-05-03 08:03:52 +01:00
										 |  |  | #include <linux/amba/bus.h>
 | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:59 +02:00
										 |  |  | #include <linux/amba/pl022.h>
 | 
					
						
							| 
									
										
										
										
											2012-10-18 14:20:16 +02:00
										 |  |  | #include <linux/platform_data/dma-ste-dma40.h>
 | 
					
						
							| 
									
										
										
										
											2013-02-07 10:17:31 +01:00
										 |  |  | #include <linux/mfd/dbx500-prcmu.h>
 | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-21 22:51:12 +01:00
										 |  |  | #include "setup.h"
 | 
					
						
							| 
									
										
										
										
											2013-03-21 22:51:08 +01:00
										 |  |  | #include "irqs.h"
 | 
					
						
							| 
									
										
										
										
											2010-05-03 08:03:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-19 15:41:55 +01:00
										 |  |  | #include "db8500-regs.h"
 | 
					
						
							| 
									
										
										
										
											2013-02-07 10:17:31 +01:00
										 |  |  | #include "devices-db8500.h"
 | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | #include "ste-dma40-db8500.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static struct resource dma40_resources[] = { | 
					
						
							|  |  |  | 	[0] = { | 
					
						
							|  |  |  | 		.start = U8500_DMA_BASE, | 
					
						
							| 
									
										
										
										
											2010-06-20 21:26:14 +00:00
										 |  |  | 		.end   = U8500_DMA_BASE + SZ_4K - 1, | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | 		.flags = IORESOURCE_MEM, | 
					
						
							| 
									
										
										
										
											2010-06-20 21:26:14 +00:00
										 |  |  | 		.name  = "base", | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | 	}, | 
					
						
							|  |  |  | 	[1] = { | 
					
						
							|  |  |  | 		.start = U8500_DMA_LCPA_BASE, | 
					
						
							| 
									
										
										
										
											2010-06-20 21:26:14 +00:00
										 |  |  | 		.end   = U8500_DMA_LCPA_BASE + 2 * SZ_1K - 1, | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | 		.flags = IORESOURCE_MEM, | 
					
						
							| 
									
										
										
										
											2010-06-20 21:26:14 +00:00
										 |  |  | 		.name  = "lcpa", | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | 	}, | 
					
						
							|  |  |  | 	[2] = { | 
					
						
							| 
									
										
										
										
											2010-07-26 11:09:27 +01:00
										 |  |  | 		.start = IRQ_DB8500_DMA, | 
					
						
							|  |  |  | 		.end   = IRQ_DB8500_DMA, | 
					
						
							| 
									
										
										
										
											2010-06-20 21:26:14 +00:00
										 |  |  | 		.flags = IORESOURCE_IRQ, | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-05-03 15:32:13 +01:00
										 |  |  | struct stedma40_platform_data dma40_plat_data = { | 
					
						
							| 
									
										
										
										
											2010-06-20 21:26:45 +00:00
										 |  |  | 	.disabled_channels = {-1}, | 
					
						
							| 
									
										
										
										
											2010-05-27 15:21:26 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct platform_device u8500_dma40_device = { | 
					
						
							|  |  |  | 	.dev = { | 
					
						
							|  |  |  | 		.platform_data = &dma40_plat_data, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	.name = "dma40", | 
					
						
							|  |  |  | 	.id = 0, | 
					
						
							|  |  |  | 	.num_resources = ARRAY_SIZE(dma40_resources), | 
					
						
							|  |  |  | 	.resource = dma40_resources | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-29 19:43:09 -07:00
										 |  |  | struct resource keypad_resources[] = { | 
					
						
							|  |  |  | 	[0] = { | 
					
						
							|  |  |  | 		.start = U8500_SKE_BASE, | 
					
						
							|  |  |  | 		.end = U8500_SKE_BASE + SZ_4K - 1, | 
					
						
							|  |  |  | 		.flags = IORESOURCE_MEM, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	[1] = { | 
					
						
							|  |  |  | 		.start = IRQ_DB8500_KB, | 
					
						
							|  |  |  | 		.end = IRQ_DB8500_KB, | 
					
						
							|  |  |  | 		.flags = IORESOURCE_IRQ, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-03 20:35:36 +05:30
										 |  |  | struct platform_device u8500_ske_keypad_device = { | 
					
						
							| 
									
										
										
										
											2010-09-29 19:43:09 -07:00
										 |  |  | 	.name = "nmk-ske-keypad", | 
					
						
							|  |  |  | 	.id = -1, | 
					
						
							|  |  |  | 	.num_resources = ARRAY_SIZE(keypad_resources), | 
					
						
							|  |  |  | 	.resource = keypad_resources, | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2013-02-07 10:17:31 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | struct prcmu_pdata db8500_prcmu_pdata = { | 
					
						
							|  |  |  | 	.ab_platdata	= &ab8500_platdata, | 
					
						
							| 
									
										
										
										
											2013-03-21 22:51:07 +01:00
										 |  |  | 	.ab_irq		= IRQ_DB8500_AB8500, | 
					
						
							|  |  |  | 	.irq_base	= IRQ_PRCMU_BASE, | 
					
						
							| 
									
										
										
										
											2013-02-07 10:17:31 +01:00
										 |  |  | 	.version_offset	= DB8500_PRCMU_FW_VERSION_OFFSET, | 
					
						
							|  |  |  | 	.legacy_offset	= DB8500_PRCMU_LEGACY_OFFSET, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static struct resource db8500_prcmu_res[] = { | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		.name  = "prcmu", | 
					
						
							|  |  |  | 		.start = U8500_PRCMU_BASE, | 
					
						
							|  |  |  | 		.end   = U8500_PRCMU_BASE + SZ_8K - 1, | 
					
						
							|  |  |  | 		.flags = IORESOURCE_MEM, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		.name  = "prcmu-tcdm", | 
					
						
							|  |  |  | 		.start = U8500_PRCMU_TCDM_BASE, | 
					
						
							|  |  |  | 		.end   = U8500_PRCMU_TCDM_BASE + SZ_4K - 1, | 
					
						
							|  |  |  | 		.flags = IORESOURCE_MEM, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		.name  = "irq", | 
					
						
							|  |  |  | 		.start = IRQ_DB8500_PRCMU1, | 
					
						
							|  |  |  | 		.end   = IRQ_DB8500_PRCMU1, | 
					
						
							|  |  |  | 		.flags = IORESOURCE_IRQ, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		.name  = "prcmu-tcpm", | 
					
						
							|  |  |  | 		.start = U8500_PRCMU_TCPM_BASE, | 
					
						
							| 
									
										
										
										
											2013-04-02 14:21:48 +01:00
										 |  |  | 		.end   = U8500_PRCMU_TCPM_BASE + SZ_32K - 1, | 
					
						
							| 
									
										
										
										
											2013-02-07 10:17:31 +01:00
										 |  |  | 		.flags = IORESOURCE_MEM, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct platform_device db8500_prcmu_device = { | 
					
						
							|  |  |  | 	.name			= "db8500-prcmu", | 
					
						
							|  |  |  | 	.resource		= db8500_prcmu_res, | 
					
						
							|  |  |  | 	.num_resources		= ARRAY_SIZE(db8500_prcmu_res), | 
					
						
							|  |  |  | 	.dev = { | 
					
						
							|  |  |  | 		.platform_data = &db8500_prcmu_pdata, | 
					
						
							|  |  |  | 	}, | 
					
						
							|  |  |  | }; |