Blame view

include/reset-uclass.h 2.37 KB
89c1e2da7   Stephen Warren   Add a reset drive...
1
2
3
4
5
6
7
8
9
10
11
12
  /*
   * 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 <reset.h>
40a475e84   Simon Glass   dm: reset: Update...
13
  struct ofnode_phandle_args;
89c1e2da7   Stephen Warren   Add a reset drive...
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  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,
40a475e84   Simon Glass   dm: reset: Update...
40
  			struct ofnode_phandle_args *args);
89c1e2da7   Stephen Warren   Add a reset drive...
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
  	/**
  	 * 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