Blame view

include/misc.h 3.55 KB
4395e06eb   Thomas Chou   dm: implement a M...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  /*
   * Copyright (C) 2015 Thomas Chou <thomas@wytron.com.tw>
   *
   * SPDX-License-Identifier:	GPL-2.0+
   */
  
  #ifndef _MISC_H_
  #define _MISC_H_
  
  /*
   * Read the device to buffer, optional.
   *
   * @dev: the device
   * @offset: offset to read the device
   * @buf: pointer to data buffer
   * @size: data size in bytes to read the device
   * @return: 0 if OK, -ve on error
   */
  int misc_read(struct udevice *dev, int offset, void *buf, int size);
  /*
   * Write buffer to the device, optional.
   *
   * @dev: the device
   * @offset: offset to write the device
   * @buf: pointer to data buffer
   * @size: data size in bytes to write the device
   * @return: 0 if OK, -ve on error
   */
  int misc_write(struct udevice *dev, int offset, void *buf, int size);
  /*
   * Assert command to the device, optional.
   *
   * @dev: the device
   * @request: command to be sent to the device
f5abb4099   Robert P. J. Day   include: Correct ...
35
   * @buf: pointer to buffer related to the request
4395e06eb   Thomas Chou   dm: implement a M...
36
37
38
39
40
   * @return: 0 if OK, -ve on error
   */
  int misc_ioctl(struct udevice *dev, unsigned long request, void *buf);
  
  /*
b647f5542   Stephen Warren   misc: add "call" ...
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
   * Send a message to the device and wait for a response.
   *
   * 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.
   *
   * @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.
   * @return the response message size if OK, -ve on error
   */
  int misc_call(struct udevice *dev, int msgid, void *tx_msg, int tx_size,
  	      void *rx_msg, int rx_size);
  
  /*
4395e06eb   Thomas Chou   dm: implement a M...
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
   * struct misc_ops - Driver model Misc operations
   *
   * The uclass interface is implemented by all miscellaneous devices which
   * use driver model.
   */
  struct misc_ops {
  	/*
  	 * Read the device to buffer, optional.
  	 *
  	 * @dev: the device
  	 * @offset: offset to read the device
  	 * @buf: pointer to data buffer
  	 * @size: data size in bytes to read the device
  	 * @return: 0 if OK, -ve on error
  	 */
  	int (*read)(struct udevice *dev, int offset, void *buf, int size);
  	/*
  	 * Write buffer to the device, optional.
  	 *
  	 * @dev: the device
  	 * @offset: offset to write the device
  	 * @buf: pointer to data buffer
  	 * @size: data size in bytes to write the device
  	 * @return: 0 if OK, -ve on error
  	 */
  	int (*write)(struct udevice *dev, int offset, const void *buf,
  		     int size);
  	/*
  	 * Assert command to the device, optional.
  	 *
  	 * @dev: the device
  	 * @request: command to be sent to the device
f5abb4099   Robert P. J. Day   include: Correct ...
94
  	 * @buf: pointer to buffer related to the request
4395e06eb   Thomas Chou   dm: implement a M...
95
96
97
  	 * @return: 0 if OK, -ve on error
  	 */
  	int (*ioctl)(struct udevice *dev, unsigned long request, void *buf);
b647f5542   Stephen Warren   misc: add "call" ...
98
99
100
101
102
103
104
105
106
107
108
109
110
111
  	/*
  	 * 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
  	 * @return the response message size if OK, -ve on error
  	 */
  	int (*call)(struct udevice *dev, int msgid, void *tx_msg, int tx_size,
  		    void *rx_msg, int rx_size);
4395e06eb   Thomas Chou   dm: implement a M...
112
113
114
  };
  
  #endif	/* _MISC_H_ */