| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | /*
 | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __DEVICES_COMMON_H
 | 
					
						
							|  |  |  | #define __DEVICES_COMMON_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:26 -08:00
										 |  |  | #include <linux/platform_device.h>
 | 
					
						
							|  |  |  | #include <linux/dma-mapping.h>
 | 
					
						
							|  |  |  | #include <linux/sys_soc.h>
 | 
					
						
							| 
									
										
										
										
											2012-04-03 12:00:18 +01:00
										 |  |  | #include <linux/amba/bus.h>
 | 
					
						
							| 
									
										
										
										
											2012-06-11 22:56:26 +02:00
										 |  |  | #include <linux/platform_data/i2c-nomadik.h>
 | 
					
						
							| 
									
										
										
										
											2012-08-24 15:19:33 +02:00
										 |  |  | #include <linux/platform_data/crypto-ux500.h>
 | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | struct spi_master_cntlr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline struct amba_device * | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:21 -08:00
										 |  |  | dbx500_add_msp_spi(struct device *parent, const char *name, | 
					
						
							|  |  |  | 		   resource_size_t base, int irq, | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | 		   struct spi_master_cntlr *pdata) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-03 12:00:18 +01:00
										 |  |  | 	return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, | 
					
						
							|  |  |  | 				   pdata, 0); | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline struct amba_device * | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:21 -08:00
										 |  |  | dbx500_add_spi(struct device *parent, const char *name, resource_size_t base, | 
					
						
							|  |  |  | 	       int irq, struct spi_master_cntlr *pdata, | 
					
						
							| 
									
										
										
										
											2011-03-24 16:13:13 +01:00
										 |  |  | 	       u32 periphid) | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-03 12:00:18 +01:00
										 |  |  | 	return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, | 
					
						
							|  |  |  | 				   pdata, periphid); | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct mmci_platform_data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline struct amba_device * | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:21 -08:00
										 |  |  | dbx500_add_sdi(struct device *parent, const char *name, resource_size_t base, | 
					
						
							|  |  |  | 	       int irq, struct mmci_platform_data *pdata, u32 periphid) | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-03 12:00:18 +01:00
										 |  |  | 	return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, | 
					
						
							|  |  |  | 				   pdata, periphid); | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-14 13:57:59 +02:00
										 |  |  | struct amba_pl011_data; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | static inline struct amba_device * | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:21 -08:00
										 |  |  | dbx500_add_uart(struct device *parent, const char *name, resource_size_t base, | 
					
						
							|  |  |  | 		int irq, struct amba_pl011_data *pdata) | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-03 12:00:18 +01:00
										 |  |  | 	return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, pdata, 0); | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct nmk_i2c_controller; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-11 22:56:38 +02:00
										 |  |  | static inline struct amba_device * | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:21 -08:00
										 |  |  | dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq, | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:26 -08:00
										 |  |  | 	       struct nmk_i2c_controller *data) | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-06-11 22:56:38 +02:00
										 |  |  | 	/* Conjure a name similar to what the platform device used to have */ | 
					
						
							|  |  |  | 	char name[16]; | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:26 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-11 22:56:38 +02:00
										 |  |  | 	snprintf(name, sizeof(name), "nmk-i2c.%d", id); | 
					
						
							|  |  |  | 	return amba_apb_device_add(parent, name, base, SZ_4K, irq, 0, data, 0); | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline struct amba_device * | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:21 -08:00
										 |  |  | dbx500_add_rtc(struct device *parent, resource_size_t base, int irq) | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-04-03 12:00:18 +01:00
										 |  |  | 	return amba_apb_device_add(parent, "rtc-pl031", base, SZ_4K, irq, | 
					
						
							|  |  |  | 				0, NULL, 0); | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-05-10 10:14:06 +02:00
										 |  |  | struct cryp_platform_data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline struct platform_device * | 
					
						
							|  |  |  | dbx500_add_cryp1(struct device *parent, int id, resource_size_t base, int irq, | 
					
						
							|  |  |  | 		struct cryp_platform_data *pdata) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct resource res[] = { | 
					
						
							|  |  |  | 			DEFINE_RES_MEM(base, SZ_4K), | 
					
						
							|  |  |  | 			DEFINE_RES_IRQ(irq), | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	struct platform_device_info pdevinfo = { | 
					
						
							|  |  |  | 			.parent = parent, | 
					
						
							|  |  |  | 			.name = "cryp1", | 
					
						
							|  |  |  | 			.id = id, | 
					
						
							|  |  |  | 			.res = res, | 
					
						
							|  |  |  | 			.num_res = ARRAY_SIZE(res), | 
					
						
							|  |  |  | 			.data = pdata, | 
					
						
							|  |  |  | 			.size_data = sizeof(*pdata), | 
					
						
							|  |  |  | 			.dma_mask = DMA_BIT_MASK(32), | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return platform_device_register_full(&pdevinfo); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct hash_platform_data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline struct platform_device * | 
					
						
							|  |  |  | dbx500_add_hash1(struct device *parent, int id, resource_size_t base, | 
					
						
							|  |  |  | 		struct hash_platform_data *pdata) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	struct resource res[] = { | 
					
						
							|  |  |  | 			DEFINE_RES_MEM(base, SZ_4K), | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	struct platform_device_info pdevinfo = { | 
					
						
							|  |  |  | 			.parent = parent, | 
					
						
							|  |  |  | 			.name = "hash1", | 
					
						
							|  |  |  | 			.id = id, | 
					
						
							|  |  |  | 			.res = res, | 
					
						
							|  |  |  | 			.num_res = ARRAY_SIZE(res), | 
					
						
							|  |  |  | 			.data = pdata, | 
					
						
							|  |  |  | 			.size_data = sizeof(*pdata), | 
					
						
							|  |  |  | 			.dma_mask = DMA_BIT_MASK(32), | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return platform_device_register_full(&pdevinfo); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-08 11:07:55 +05:30
										 |  |  | struct nmk_gpio_platform_data; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-06 11:22:21 -08:00
										 |  |  | void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num, | 
					
						
							|  |  |  | 		      int irq, struct nmk_gpio_platform_data *pdata); | 
					
						
							| 
									
										
										
										
											2010-12-08 11:07:55 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-04-26 23:57:25 +02:00
										 |  |  | static inline void | 
					
						
							| 
									
										
										
										
											2012-10-25 08:46:53 +02:00
										 |  |  | dbx500_add_pinctrl(struct device *parent, const char *name, | 
					
						
							|  |  |  | 		   resource_size_t base) | 
					
						
							| 
									
										
										
										
											2012-04-26 23:57:25 +02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2012-10-25 08:46:53 +02:00
										 |  |  | 	struct resource res[] = { | 
					
						
							|  |  |  | 		DEFINE_RES_MEM(base, SZ_8K), | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2012-04-26 23:57:25 +02:00
										 |  |  | 	struct platform_device_info pdevinfo = { | 
					
						
							|  |  |  | 		.parent = parent, | 
					
						
							|  |  |  | 		.name = name, | 
					
						
							|  |  |  | 		.id = -1, | 
					
						
							| 
									
										
										
										
											2012-10-25 08:46:53 +02:00
										 |  |  | 		.res = res, | 
					
						
							|  |  |  | 		.num_res = ARRAY_SIZE(res), | 
					
						
							| 
									
										
										
										
											2012-04-26 23:57:25 +02:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	platform_device_register_full(&pdevinfo); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-29 19:46:32 +05:30
										 |  |  | #endif
 |