Blame view

include/misc.h 4.77 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
4395e06eb   Thomas Chou   dm: implement a M...
2
3
  /*
   * Copyright (C) 2015 Thomas Chou <thomas@wytron.com.tw>
4395e06eb   Thomas Chou   dm: implement a M...
4
5
6
7
   */
  
  #ifndef _MISC_H_
  #define _MISC_H_
3958bffeb   Mario Six   misc: docs: Fix c...
8
9
  /**
   * misc_read() - Read the device to buffer, optional.
4395e06eb   Thomas Chou   dm: implement a M...
10
11
12
13
   * @dev: the device
   * @offset: offset to read the device
   * @buf: pointer to data buffer
   * @size: data size in bytes to read the device
3958bffeb   Mario Six   misc: docs: Fix c...
14
   *
8729b1ae2   Simon Glass   misc: Update read...
15
   * Return: number of bytes read if OK (may be 0 if EOF), -ve on error
4395e06eb   Thomas Chou   dm: implement a M...
16
17
   */
  int misc_read(struct udevice *dev, int offset, void *buf, int size);
3958bffeb   Mario Six   misc: docs: Fix c...
18
19
20
  
  /**
   * misc_write() - Write buffer to the device, optional.
4395e06eb   Thomas Chou   dm: implement a M...
21
22
23
24
   * @dev: the device
   * @offset: offset to write the device
   * @buf: pointer to data buffer
   * @size: data size in bytes to write the device
3958bffeb   Mario Six   misc: docs: Fix c...
25
   *
8729b1ae2   Simon Glass   misc: Update read...
26
   * Return: number of bytes written if OK (may be < @size), -ve on error
4395e06eb   Thomas Chou   dm: implement a M...
27
28
   */
  int misc_write(struct udevice *dev, int offset, void *buf, int size);
3958bffeb   Mario Six   misc: docs: Fix c...
29
30
31
  
  /**
   * misc_ioctl() - Assert command to the device, optional.
4395e06eb   Thomas Chou   dm: implement a M...
32
33
   * @dev: the device
   * @request: command to be sent to the device
f5abb4099   Robert P. J. Day   include: Correct ...
34
   * @buf: pointer to buffer related to the request
3958bffeb   Mario Six   misc: docs: Fix c...
35
36
   *
   * Return: 0 if OK, -ve on error
4395e06eb   Thomas Chou   dm: implement a M...
37
38
   */
  int misc_ioctl(struct udevice *dev, unsigned long request, void *buf);
3958bffeb   Mario Six   misc: docs: Fix c...
39
40
41
42
43
44
45
46
47
  /**
   * misc_call() - Send a message to the device and wait for a response.
   * @dev: the device.
   * @msgid: the message ID/number to send.
   * @tx_msg: the request/transmit message payload.
   * @tx_size: the size of the buffer pointed at by tx_msg.
   * @rx_msg: the buffer to receive the response message payload. May be NULL if
   *          the caller only cares about the error code.
   * @rx_size: the size of the buffer pointed at by rx_msg.
b647f5542   Stephen Warren   misc: add "call" ...
48
49
50
51
52
53
54
   *
   * The caller provides the message type/ID and payload to be sent.
   * The callee constructs any message header required, transmits it to the
   * target, waits for a response, checks any error code in the response,
   * strips any message header from the response, and returns the error code
   * (or a parsed version of it) and the response message payload.
   *
3958bffeb   Mario Six   misc: docs: Fix c...
55
   * Return: the response message size if OK, -ve on error
b647f5542   Stephen Warren   misc: add "call" ...
56
57
58
   */
  int misc_call(struct udevice *dev, int msgid, void *tx_msg, int tx_size,
  	      void *rx_msg, int rx_size);
3958bffeb   Mario Six   misc: docs: Fix c...
59
  /**
440bc11f2   Mario Six   misc: uclass: Add...
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
   * 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);
  
  /*
4395e06eb   Thomas Chou   dm: implement a M...
77
78
79
80
81
82
   * struct misc_ops - Driver model Misc operations
   *
   * The uclass interface is implemented by all miscellaneous devices which
   * use driver model.
   */
  struct misc_ops {
3958bffeb   Mario Six   misc: docs: Fix c...
83
  	/**
4395e06eb   Thomas Chou   dm: implement a M...
84
  	 * Read the device to buffer, optional.
4395e06eb   Thomas Chou   dm: implement a M...
85
86
87
88
  	 * @dev: the device
  	 * @offset: offset to read the device
  	 * @buf: pointer to data buffer
  	 * @size: data size in bytes to read the device
3958bffeb   Mario Six   misc: docs: Fix c...
89
  	 *
8729b1ae2   Simon Glass   misc: Update read...
90
  	 * Return: number of bytes read if OK (may be 0 if EOF), -ve on error
4395e06eb   Thomas Chou   dm: implement a M...
91
92
  	 */
  	int (*read)(struct udevice *dev, int offset, void *buf, int size);
3958bffeb   Mario Six   misc: docs: Fix c...
93
94
  
  	/**
4395e06eb   Thomas Chou   dm: implement a M...
95
  	 * Write buffer to the device, optional.
4395e06eb   Thomas Chou   dm: implement a M...
96
97
98
99
  	 * @dev: the device
  	 * @offset: offset to write the device
  	 * @buf: pointer to data buffer
  	 * @size: data size in bytes to write the device
3958bffeb   Mario Six   misc: docs: Fix c...
100
  	 *
8729b1ae2   Simon Glass   misc: Update read...
101
  	 * Return: number of bytes written if OK (may be < @size), -ve on error
4395e06eb   Thomas Chou   dm: implement a M...
102
103
104
  	 */
  	int (*write)(struct udevice *dev, int offset, const void *buf,
  		     int size);
3958bffeb   Mario Six   misc: docs: Fix c...
105
  	/**
4395e06eb   Thomas Chou   dm: implement a M...
106
  	 * Assert command to the device, optional.
4395e06eb   Thomas Chou   dm: implement a M...
107
108
  	 * @dev: the device
  	 * @request: command to be sent to the device
f5abb4099   Robert P. J. Day   include: Correct ...
109
  	 * @buf: pointer to buffer related to the request
3958bffeb   Mario Six   misc: docs: Fix c...
110
111
  	 *
  	 * Return: 0 if OK, -ve on error
4395e06eb   Thomas Chou   dm: implement a M...
112
113
  	 */
  	int (*ioctl)(struct udevice *dev, unsigned long request, void *buf);
3958bffeb   Mario Six   misc: docs: Fix c...
114
115
  
  	/**
b647f5542   Stephen Warren   misc: add "call" ...
116
  	 * Send a message to the device and wait for a response.
b647f5542   Stephen Warren   misc: add "call" ...
117
118
  	 * @dev: the device
  	 * @msgid: the message ID/number to send
3958bffeb   Mario Six   misc: docs: Fix c...
119
120
121
122
123
124
125
  	 * @tx_msg: the request/transmit message payload
  	 * @tx_size: the size of the buffer pointed at by tx_msg
  	 * @rx_msg: the buffer to receive the response message payload. May be
  	 *          NULL if the caller only cares about the error code.
  	 * @rx_size: the size of the buffer pointed at by rx_msg
  	 *
  	 * Return: the response message size if OK, -ve on error
b647f5542   Stephen Warren   misc: add "call" ...
126
127
128
  	 */
  	int (*call)(struct udevice *dev, int msgid, void *tx_msg, int tx_size,
  		    void *rx_msg, int rx_size);
440bc11f2   Mario Six   misc: uclass: Add...
129
130
131
132
133
134
135
136
137
138
  	/**
  	 * 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);
4395e06eb   Thomas Chou   dm: implement a M...
139
140
141
  };
  
  #endif	/* _MISC_H_ */