• Home
  • Raw
  • Download

Lines Matching refs:ser

87 static inline void update_tty_status(struct ser_device *ser)  in update_tty_status()  argument
89 ser->tty_status = in update_tty_status()
90 ser->tty->stopped << 5 | in update_tty_status()
91 ser->tty->flow_stopped << 3 | in update_tty_status()
92 ser->tty->packet << 2 | in update_tty_status()
93 ser->tty->port->low_latency << 1; in update_tty_status()
95 static inline void debugfs_init(struct ser_device *ser, struct tty_struct *tty) in debugfs_init() argument
97 ser->debugfs_tty_dir = in debugfs_init()
99 if (!IS_ERR(ser->debugfs_tty_dir)) { in debugfs_init()
101 ser->debugfs_tty_dir, in debugfs_init()
102 &ser->tx_blob); in debugfs_init()
105 ser->debugfs_tty_dir, in debugfs_init()
106 &ser->rx_blob); in debugfs_init()
109 ser->debugfs_tty_dir, in debugfs_init()
110 (u32 *)&ser->state); in debugfs_init()
113 ser->debugfs_tty_dir, in debugfs_init()
114 &ser->tty_status); in debugfs_init()
117 ser->tx_blob.data = ser->tx_data; in debugfs_init()
118 ser->tx_blob.size = 0; in debugfs_init()
119 ser->rx_blob.data = ser->rx_data; in debugfs_init()
120 ser->rx_blob.size = 0; in debugfs_init()
123 static inline void debugfs_deinit(struct ser_device *ser) in debugfs_deinit() argument
125 debugfs_remove_recursive(ser->debugfs_tty_dir); in debugfs_deinit()
128 static inline void debugfs_rx(struct ser_device *ser, const u8 *data, int size) in debugfs_rx() argument
130 if (size > sizeof(ser->rx_data)) in debugfs_rx()
131 size = sizeof(ser->rx_data); in debugfs_rx()
132 memcpy(ser->rx_data, data, size); in debugfs_rx()
133 ser->rx_blob.data = ser->rx_data; in debugfs_rx()
134 ser->rx_blob.size = size; in debugfs_rx()
137 static inline void debugfs_tx(struct ser_device *ser, const u8 *data, int size) in debugfs_tx() argument
139 if (size > sizeof(ser->tx_data)) in debugfs_tx()
140 size = sizeof(ser->tx_data); in debugfs_tx()
141 memcpy(ser->tx_data, data, size); in debugfs_tx()
142 ser->tx_blob.data = ser->tx_data; in debugfs_tx()
143 ser->tx_blob.size = size; in debugfs_tx()
146 static inline void debugfs_init(struct ser_device *ser, struct tty_struct *tty) in debugfs_init() argument
150 static inline void debugfs_deinit(struct ser_device *ser) in debugfs_deinit() argument
154 static inline void update_tty_status(struct ser_device *ser) in update_tty_status() argument
158 static inline void debugfs_rx(struct ser_device *ser, const u8 *data, int size) in debugfs_rx() argument
162 static inline void debugfs_tx(struct ser_device *ser, const u8 *data, int size) in debugfs_tx() argument
172 struct ser_device *ser; in ldisc_receive() local
176 ser = tty->disc_data; in ldisc_receive()
188 if (!ser->common.use_stx && !ser->tx_started) { in ldisc_receive()
189 dev_info(&ser->dev->dev, in ldisc_receive()
195 BUG_ON(ser->dev == NULL); in ldisc_receive()
198 skb = netdev_alloc_skb(ser->dev, count+1); in ldisc_receive()
206 skb->dev = ser->dev; in ldisc_receive()
207 debugfs_rx(ser, data, count); in ldisc_receive()
211 ser->dev->stats.rx_packets++; in ldisc_receive()
212 ser->dev->stats.rx_bytes += count; in ldisc_receive()
214 ++ser->dev->stats.rx_dropped; in ldisc_receive()
215 update_tty_status(ser); in ldisc_receive()
218 static int handle_tx(struct ser_device *ser) in handle_tx() argument
224 tty = ser->tty; in handle_tx()
225 ser->tx_started = true; in handle_tx()
228 if (test_and_set_bit(CAIF_SENDING, &ser->state)) in handle_tx()
232 while ((skb = skb_peek(&ser->head)) != NULL) { in handle_tx()
247 update_tty_status(ser); in handle_tx()
252 ser->dev->stats.tx_packets++; in handle_tx()
253 ser->dev->stats.tx_bytes += tty_wr; in handle_tx()
261 struct sk_buff *tmp = skb_dequeue(&ser->head); in handle_tx()
270 if (ser->head.qlen <= SEND_QUEUE_LOW && in handle_tx()
271 test_and_clear_bit(CAIF_FLOW_OFF_SENT, &ser->state) && in handle_tx()
272 ser->common.flowctrl != NULL) in handle_tx()
273 ser->common.flowctrl(ser->dev, ON); in handle_tx()
274 clear_bit(CAIF_SENDING, &ser->state); in handle_tx()
277 clear_bit(CAIF_SENDING, &ser->state); in handle_tx()
283 struct ser_device *ser; in caif_xmit() local
286 ser = netdev_priv(dev); in caif_xmit()
289 if (ser->head.qlen > SEND_QUEUE_HIGH && in caif_xmit()
290 !test_and_set_bit(CAIF_FLOW_OFF_SENT, &ser->state) && in caif_xmit()
291 ser->common.flowctrl != NULL) in caif_xmit()
293 ser->common.flowctrl(ser->dev, OFF); in caif_xmit()
295 skb_queue_tail(&ser->head, skb); in caif_xmit()
296 return handle_tx(ser); in caif_xmit()
302 struct ser_device *ser; in ldisc_tx_wakeup() local
304 ser = tty->disc_data; in ldisc_tx_wakeup()
305 BUG_ON(ser == NULL); in ldisc_tx_wakeup()
306 WARN_ON(ser->tty != tty); in ldisc_tx_wakeup()
307 handle_tx(ser); in ldisc_tx_wakeup()
313 struct ser_device *ser; in ldisc_open() local
325 dev = alloc_netdev(sizeof(*ser), name, caifdev_setup); in ldisc_open()
329 ser = netdev_priv(dev); in ldisc_open()
330 ser->tty = tty_kref_get(tty); in ldisc_open()
331 ser->dev = dev; in ldisc_open()
332 debugfs_init(ser, tty); in ldisc_open()
334 tty->disc_data = ser; in ldisc_open()
344 list_add(&ser->node, &ser_list); in ldisc_open()
347 update_tty_status(ser); in ldisc_open()
353 struct ser_device *ser = tty->disc_data; in ldisc_close() local
360 dev_close(ser->dev); in ldisc_close()
361 unregister_netdevice(ser->dev); in ldisc_close()
362 list_del(&ser->node); in ldisc_close()
363 debugfs_deinit(ser); in ldisc_close()
364 tty_kref_put(ser->tty); in ldisc_close()
441 struct ser_device *ser = NULL; in caif_ser_exit() local
446 ser = list_entry(node, struct ser_device, node); in caif_ser_exit()
447 dev_close(ser->dev); in caif_ser_exit()
448 unregister_netdevice(ser->dev); in caif_ser_exit()