diff options
Diffstat (limited to 'include/linux/serdev.h')
| -rw-r--r-- | include/linux/serdev.h | 29 | 
1 files changed, 18 insertions, 11 deletions
diff --git a/include/linux/serdev.h b/include/linux/serdev.h index f5f97fa25e8a..3fab88ba265e 100644 --- a/include/linux/serdev.h +++ b/include/linux/serdev.h @@ -27,7 +27,7 @@ struct serdev_device;   *			not sleep.   */  struct serdev_device_ops { -	int (*receive_buf)(struct serdev_device *, const unsigned char *, size_t); +	ssize_t (*receive_buf)(struct serdev_device *, const u8 *, size_t);  	void (*write_wakeup)(struct serdev_device *);  }; @@ -82,7 +82,7 @@ enum serdev_parity {   * serdev controller structures   */  struct serdev_controller_ops { -	int (*write_buf)(struct serdev_controller *, const unsigned char *, size_t); +	ssize_t (*write_buf)(struct serdev_controller *, const u8 *, size_t);  	void (*write_flush)(struct serdev_controller *);  	int (*write_room)(struct serdev_controller *);  	int (*open)(struct serdev_controller *); @@ -99,12 +99,14 @@ struct serdev_controller_ops {  /**   * struct serdev_controller - interface to the serdev controller   * @dev:	Driver model representation of the device. + * @host:	Serial port hardware controller device   * @nr:		number identifier for this controller/bus.   * @serdev:	Pointer to slave device for this controller.   * @ops:	Controller operations.   */  struct serdev_controller {  	struct device		dev; +	struct device		*host;  	unsigned int		nr;  	struct serdev_device	*serdev;  	const struct serdev_controller_ops *ops; @@ -167,7 +169,9 @@ struct serdev_device *serdev_device_alloc(struct serdev_controller *);  int serdev_device_add(struct serdev_device *);  void serdev_device_remove(struct serdev_device *); -struct serdev_controller *serdev_controller_alloc(struct device *, size_t); +struct serdev_controller *serdev_controller_alloc(struct device *host, +						  struct device *parent, +						  size_t size);  int serdev_controller_add(struct serdev_controller *);  void serdev_controller_remove(struct serdev_controller *); @@ -181,9 +185,9 @@ static inline void serdev_controller_write_wakeup(struct serdev_controller *ctrl  	serdev->ops->write_wakeup(serdev);  } -static inline int serdev_controller_receive_buf(struct serdev_controller *ctrl, -					      const unsigned char *data, -					      size_t count) +static inline ssize_t serdev_controller_receive_buf(struct serdev_controller *ctrl, +						    const u8 *data, +						    size_t count)  {  	struct serdev_device *serdev = ctrl->serdev; @@ -200,13 +204,13 @@ void serdev_device_close(struct serdev_device *);  int devm_serdev_device_open(struct device *, struct serdev_device *);  unsigned int serdev_device_set_baudrate(struct serdev_device *, unsigned int);  void serdev_device_set_flow_control(struct serdev_device *, bool); -int serdev_device_write_buf(struct serdev_device *, const unsigned char *, size_t); +int serdev_device_write_buf(struct serdev_device *, const u8 *, size_t);  void serdev_device_wait_until_sent(struct serdev_device *, long);  int serdev_device_get_tiocm(struct serdev_device *);  int serdev_device_set_tiocm(struct serdev_device *, int, int);  int serdev_device_break_ctl(struct serdev_device *serdev, int break_state);  void serdev_device_write_wakeup(struct serdev_device *); -int serdev_device_write(struct serdev_device *, const unsigned char *, size_t, long); +ssize_t serdev_device_write(struct serdev_device *, const u8 *, size_t, long);  void serdev_device_write_flush(struct serdev_device *);  int serdev_device_write_room(struct serdev_device *); @@ -244,7 +248,7 @@ static inline unsigned int serdev_device_set_baudrate(struct serdev_device *sdev  }  static inline void serdev_device_set_flow_control(struct serdev_device *sdev, bool enable) {}  static inline int serdev_device_write_buf(struct serdev_device *serdev, -					  const unsigned char *buf, +					  const u8 *buf,  					  size_t count)  {  	return -ENODEV; @@ -262,8 +266,9 @@ static inline int serdev_device_break_ctl(struct serdev_device *serdev, int brea  {  	return -EOPNOTSUPP;  } -static inline int serdev_device_write(struct serdev_device *sdev, const unsigned char *buf, -				      size_t count, unsigned long timeout) +static inline ssize_t serdev_device_write(struct serdev_device *sdev, +					  const u8 *buf, size_t count, +					  unsigned long timeout)  {  	return -ENODEV;  } @@ -311,11 +316,13 @@ struct tty_driver;  #ifdef CONFIG_SERIAL_DEV_CTRL_TTYPORT  struct device *serdev_tty_port_register(struct tty_port *port, +					struct device *host,  					struct device *parent,  					struct tty_driver *drv, int idx);  int serdev_tty_port_unregister(struct tty_port *port);  #else  static inline struct device *serdev_tty_port_register(struct tty_port *port, +					   struct device *host,  					   struct device *parent,  					   struct tty_driver *drv, int idx)  {  |