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>
lime2-spi
Mario Six 6 years ago committed by Anatolij Gustschin
parent 3958bffeb3
commit 440bc11f2e
  1. 10
      drivers/misc/misc-uclass.c
  2. 27
      include/misc.h

@ -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);
}
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) = {
.id = UCLASS_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);
/**
* 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
*
* 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,
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_ */

Loading…
Cancel
Save