189c1e2daSStephen Warren /* 289c1e2daSStephen Warren * Copyright (c) 2016, NVIDIA CORPORATION. 389c1e2daSStephen Warren * 489c1e2daSStephen Warren * SPDX-License-Identifier: GPL-2.0 589c1e2daSStephen Warren */ 689c1e2daSStephen Warren 789c1e2daSStephen Warren #ifndef _RESET_UCLASS_H 889c1e2daSStephen Warren #define _RESET_UCLASS_H 989c1e2daSStephen Warren 1089c1e2daSStephen Warren /* See reset.h for background documentation. */ 1189c1e2daSStephen Warren 1289c1e2daSStephen Warren #include <reset.h> 1389c1e2daSStephen Warren 14*40a475e8SSimon Glass struct ofnode_phandle_args; 1589c1e2daSStephen Warren struct udevice; 1689c1e2daSStephen Warren 1789c1e2daSStephen Warren /** 1889c1e2daSStephen Warren * struct reset_ops - The functions that a reset controller driver must 1989c1e2daSStephen Warren * implement. 2089c1e2daSStephen Warren */ 2189c1e2daSStephen Warren struct reset_ops { 2289c1e2daSStephen Warren /** 2389c1e2daSStephen Warren * of_xlate - Translate a client's device-tree (OF) reset specifier. 2489c1e2daSStephen Warren * 2589c1e2daSStephen Warren * The reset core calls this function as the first step in implementing 2689c1e2daSStephen Warren * a client's reset_get_by_*() call. 2789c1e2daSStephen Warren * 2889c1e2daSStephen Warren * If this function pointer is set to NULL, the reset core will use a 2989c1e2daSStephen Warren * default implementation, which assumes #reset-cells = <1>, and that 3089c1e2daSStephen Warren * the DT cell contains a simple integer reset signal ID. 3189c1e2daSStephen Warren * 3289c1e2daSStephen Warren * At present, the reset API solely supports device-tree. If this 3389c1e2daSStephen Warren * changes, other xxx_xlate() functions may be added to support those 3489c1e2daSStephen Warren * other mechanisms. 3589c1e2daSStephen Warren * 3689c1e2daSStephen Warren * @reset_ctl: The reset control struct to hold the translation result. 3789c1e2daSStephen Warren * @args: The reset specifier values from device tree. 3889c1e2daSStephen Warren * @return 0 if OK, or a negative error code. 3989c1e2daSStephen Warren */ 4089c1e2daSStephen Warren int (*of_xlate)(struct reset_ctl *reset_ctl, 41*40a475e8SSimon Glass struct ofnode_phandle_args *args); 4289c1e2daSStephen Warren /** 4389c1e2daSStephen Warren * request - Request a translated reset control. 4489c1e2daSStephen Warren * 4589c1e2daSStephen Warren * The reset core calls this function as the second step in 4689c1e2daSStephen Warren * implementing a client's reset_get_by_*() call, following a 4789c1e2daSStephen Warren * successful xxx_xlate() call. 4889c1e2daSStephen Warren * 4989c1e2daSStephen Warren * @reset_ctl: The reset control struct to request; this has been 5089c1e2daSStephen Warren * filled in by a previoux xxx_xlate() function call. 5189c1e2daSStephen Warren * @return 0 if OK, or a negative error code. 5289c1e2daSStephen Warren */ 5389c1e2daSStephen Warren int (*request)(struct reset_ctl *reset_ctl); 5489c1e2daSStephen Warren /** 5589c1e2daSStephen Warren * free - Free a previously requested reset control. 5689c1e2daSStephen Warren * 5789c1e2daSStephen Warren * This is the implementation of the client reset_free() API. 5889c1e2daSStephen Warren * 5989c1e2daSStephen Warren * @reset_ctl: The reset control to free. 6089c1e2daSStephen Warren * @return 0 if OK, or a negative error code. 6189c1e2daSStephen Warren */ 6289c1e2daSStephen Warren int (*free)(struct reset_ctl *reset_ctl); 6389c1e2daSStephen Warren /** 6489c1e2daSStephen Warren * rst_assert - Assert a reset signal. 6589c1e2daSStephen Warren * 6689c1e2daSStephen Warren * Note: This function is named rst_assert not assert to avoid 6789c1e2daSStephen Warren * conflicting with global macro assert(). 6889c1e2daSStephen Warren * 6989c1e2daSStephen Warren * @reset_ctl: The reset signal to assert. 7089c1e2daSStephen Warren * @return 0 if OK, or a negative error code. 7189c1e2daSStephen Warren */ 7289c1e2daSStephen Warren int (*rst_assert)(struct reset_ctl *reset_ctl); 7389c1e2daSStephen Warren /** 7489c1e2daSStephen Warren * rst_deassert - Deassert a reset signal. 7589c1e2daSStephen Warren * 7689c1e2daSStephen Warren * @reset_ctl: The reset signal to deassert. 7789c1e2daSStephen Warren * @return 0 if OK, or a negative error code. 7889c1e2daSStephen Warren */ 7989c1e2daSStephen Warren int (*rst_deassert)(struct reset_ctl *reset_ctl); 8089c1e2daSStephen Warren }; 8189c1e2daSStephen Warren 8289c1e2daSStephen Warren #endif 83