mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-22 20:58:22 +00:00
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
2 changed files with 37 additions and 0 deletions
|
@ -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…
Add table
Reference in a new issue