misc: uclass: Add enable/disable function
Add generic enable/disable function to the misc uclass. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Mario Six <mario.six@gdsys.cc>
This commit is contained in:
		
							parent
							
								
									3958bffeb3
								
							
						
					
					
						commit
						440bc11f2e
					
				|  | @ -55,6 +55,16 @@ int misc_call(struct udevice *dev, int msgid, void *tx_msg, int tx_size, | ||||||
| 	return ops->call(dev, msgid, tx_msg, tx_size, rx_msg, rx_size); | 	return ops->call(dev, msgid, tx_msg, tx_size, rx_msg, rx_size); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | int misc_set_enabled(struct udevice *dev, bool val) | ||||||
|  | { | ||||||
|  | 	const struct misc_ops *ops = device_get_ops(dev); | ||||||
|  | 
 | ||||||
|  | 	if (!ops->set_enabled) | ||||||
|  | 		return -ENOSYS; | ||||||
|  | 
 | ||||||
|  | 	return ops->set_enabled(dev, val); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| UCLASS_DRIVER(misc) = { | UCLASS_DRIVER(misc) = { | ||||||
| 	.id		= UCLASS_MISC, | 	.id		= UCLASS_MISC, | ||||||
| 	.name		= "misc", | 	.name		= "misc", | ||||||
|  |  | ||||||
|  | @ -60,6 +60,23 @@ int misc_call(struct udevice *dev, int msgid, void *tx_msg, int tx_size, | ||||||
| 	      void *rx_msg, int rx_size); | 	      void *rx_msg, int rx_size); | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  |  * misc_set_enabled() - Enable or disable a device. | ||||||
|  |  * @dev: the device to enable or disable. | ||||||
|  |  * @val: the flag that tells the driver to either enable or disable the device. | ||||||
|  |  * | ||||||
|  |  * The semantics of "disable" and "enable" should be understood here as | ||||||
|  |  * activating or deactivating the device's primary function, hence a "disabled" | ||||||
|  |  * device should be dormant, but still answer to commands and queries. | ||||||
|  |  * | ||||||
|  |  * A probed device may start in a disabled or enabled state, depending on the | ||||||
|  |  * driver and hardware. | ||||||
|  |  * | ||||||
|  |  * Return: -ve on error, 0 if the previous state was "disabled", 1 if the | ||||||
|  |  *	   previous state was "enabled" | ||||||
|  |  */ | ||||||
|  | int misc_set_enabled(struct udevice *dev, bool val); | ||||||
|  | 
 | ||||||
|  | /*
 | ||||||
|  * struct misc_ops - Driver model Misc operations |  * struct misc_ops - Driver model Misc operations | ||||||
|  * |  * | ||||||
|  * The uclass interface is implemented by all miscellaneous devices which |  * The uclass interface is implemented by all miscellaneous devices which | ||||||
|  | @ -112,6 +129,16 @@ struct misc_ops { | ||||||
| 	 */ | 	 */ | ||||||
| 	int (*call)(struct udevice *dev, int msgid, void *tx_msg, int tx_size, | 	int (*call)(struct udevice *dev, int msgid, void *tx_msg, int tx_size, | ||||||
| 		    void *rx_msg, int rx_size); | 		    void *rx_msg, int rx_size); | ||||||
|  | 	/**
 | ||||||
|  | 	 * Enable or disable a device, optional. | ||||||
|  | 	 * @dev: the device to enable. | ||||||
|  | 	 * @val: the flag that tells the driver to either enable or disable the | ||||||
|  | 	 *	 device. | ||||||
|  | 	 * | ||||||
|  | 	 * Return: -ve on error, 0 if the previous state was "disabled", 1 if | ||||||
|  | 	 *	   the previous state was "enabled" | ||||||
|  | 	 */ | ||||||
|  | 	int (*set_enabled)(struct udevice *dev, bool val); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif	/* _MISC_H_ */ | #endif	/* _MISC_H_ */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue