/* * Copyright (c) 2016, NVIDIA CORPORATION. * * SPDX-License-Identifier: GPL-2.0 */ #ifndef _RESET_UCLASS_H #define _RESET_UCLASS_H /* See reset.h for background documentation. */ #include struct udevice; /** * struct reset_ops - The functions that a reset controller driver must * implement. */ struct reset_ops { /** * of_xlate - Translate a client's device-tree (OF) reset specifier. * * The reset core calls this function as the first step in implementing * a client's reset_get_by_*() call. * * If this function pointer is set to NULL, the reset core will use a * default implementation, which assumes #reset-cells = <1>, and that * the DT cell contains a simple integer reset signal ID. * * At present, the reset API solely supports device-tree. If this * changes, other xxx_xlate() functions may be added to support those * other mechanisms. * * @reset_ctl: The reset control struct to hold the translation result. * @args: The reset specifier values from device tree. * @return 0 if OK, or a negative error code. */ int (*of_xlate)(struct reset_ctl *reset_ctl, struct fdtdec_phandle_args *args); /** * request - Request a translated reset control. * * The reset core calls this function as the second step in * implementing a client's reset_get_by_*() call, following a * successful xxx_xlate() call. * * @reset_ctl: The reset control struct to request; this has been * filled in by a previoux xxx_xlate() function call. * @return 0 if OK, or a negative error code. */ int (*request)(struct reset_ctl *reset_ctl); /** * free - Free a previously requested reset control. * * This is the implementation of the client reset_free() API. * * @reset_ctl: The reset control to free. * @return 0 if OK, or a negative error code. */ int (*free)(struct reset_ctl *reset_ctl); /** * rst_assert - Assert a reset signal. * * Note: This function is named rst_assert not assert to avoid * conflicting with global macro assert(). * * @reset_ctl: The reset signal to assert. * @return 0 if OK, or a negative error code. */ int (*rst_assert)(struct reset_ctl *reset_ctl); /** * rst_deassert - Deassert a reset signal. * * @reset_ctl: The reset signal to deassert. * @return 0 if OK, or a negative error code. */ int (*rst_deassert)(struct reset_ctl *reset_ctl); }; #endif