| 
									
										
										
										
											2015-03-25 15:39:50 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * 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. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2014 Imagination Technologies Ltd. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #ifndef __ASM_CDMM_H
 | 
					
						
							|  |  |  | #define __ASM_CDMM_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/device.h>
 | 
					
						
							|  |  |  | #include <linux/mod_devicetable.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * struct mips_cdmm_device - Represents a single device on a CDMM bus. | 
					
						
							|  |  |  |  * @dev:	Driver model device object. | 
					
						
							|  |  |  |  * @cpu:	CPU which can access this device. | 
					
						
							|  |  |  |  * @res:	MMIO resource. | 
					
						
							|  |  |  |  * @type:	Device type identifier. | 
					
						
							|  |  |  |  * @rev:	Device revision number. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct mips_cdmm_device { | 
					
						
							|  |  |  | 	struct device		dev; | 
					
						
							|  |  |  | 	unsigned int		cpu; | 
					
						
							|  |  |  | 	struct resource		res; | 
					
						
							|  |  |  | 	unsigned int		type; | 
					
						
							|  |  |  | 	unsigned int		rev; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * struct mips_cdmm_driver - Represents a driver for a CDMM device. | 
					
						
							|  |  |  |  * @drv:	Driver model driver object. | 
					
						
							|  |  |  |  * @probe	Callback for probing newly discovered devices. | 
					
						
							|  |  |  |  * @remove:	Callback to remove the device. | 
					
						
							|  |  |  |  * @shutdown:	Callback on system shutdown. | 
					
						
							|  |  |  |  * @cpu_down:	Callback when the parent CPU is going down. | 
					
						
							|  |  |  |  *		Any CPU pinned threads/timers should be disabled. | 
					
						
							|  |  |  |  * @cpu_up:	Callback when the parent CPU is coming back up again. | 
					
						
							|  |  |  |  *		CPU pinned threads/timers can be restarted. | 
					
						
							|  |  |  |  * @id_table:	Table for CDMM IDs to match against. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | struct mips_cdmm_driver { | 
					
						
							|  |  |  | 	struct device_driver	drv; | 
					
						
							|  |  |  | 	int			(*probe)(struct mips_cdmm_device *); | 
					
						
							|  |  |  | 	int			(*remove)(struct mips_cdmm_device *); | 
					
						
							|  |  |  | 	void			(*shutdown)(struct mips_cdmm_device *); | 
					
						
							|  |  |  | 	int			(*cpu_down)(struct mips_cdmm_device *); | 
					
						
							|  |  |  | 	int			(*cpu_up)(struct mips_cdmm_device *); | 
					
						
							|  |  |  | 	const struct mips_cdmm_device_id *id_table; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |  * mips_cdmm_phys_base() - Choose a physical base address for CDMM region. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Picking a suitable physical address at which to map the CDMM region is | 
					
						
							|  |  |  |  * platform specific, so this weak function can be defined by platform code to | 
					
						
							|  |  |  |  * pick a suitable value if none is configured by the bootloader. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This address must be 32kB aligned, and the region occupies a maximum of 32kB | 
					
						
							|  |  |  |  * of physical address space which must not be used for anything else. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Returns:	Physical base address for CDMM region, or 0 on failure. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | phys_addr_t __weak mips_cdmm_phys_base(void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern struct bus_type mips_cdmm_bustype; | 
					
						
							|  |  |  | void __iomem *mips_cdmm_early_probe(unsigned int dev_type); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define to_mips_cdmm_device(d)	container_of(d, struct mips_cdmm_device, dev)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define mips_cdmm_get_drvdata(d)	dev_get_drvdata(&d->dev)
 | 
					
						
							|  |  |  | #define mips_cdmm_set_drvdata(d, p)	dev_set_drvdata(&d->dev, p)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | int mips_cdmm_driver_register(struct mips_cdmm_driver *); | 
					
						
							|  |  |  | void mips_cdmm_driver_unregister(struct mips_cdmm_driver *); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * module_mips_cdmm_driver() - Helper macro for drivers that don't do | 
					
						
							|  |  |  |  * anything special in module init/exit.  This eliminates a lot of | 
					
						
							|  |  |  |  * boilerplate.  Each module may only use this macro once, and | 
					
						
							|  |  |  |  * calling it replaces module_init() and module_exit() | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define module_mips_cdmm_driver(__mips_cdmm_driver) \
 | 
					
						
							|  |  |  | 	module_driver(__mips_cdmm_driver, mips_cdmm_driver_register, \ | 
					
						
							|  |  |  | 			mips_cdmm_driver_unregister) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-29 11:14:13 +00:00
										 |  |  | /* drivers/tty/mips_ejtag_fdc.c */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_MIPS_EJTAG_FDC_EARLYCON
 | 
					
						
							|  |  |  | int setup_early_fdc_console(void); | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | static inline int setup_early_fdc_console(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	return -ENODEV; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-03-25 15:39:50 +00:00
										 |  |  | #endif /* __ASM_CDMM_H */
 |