• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/s390/char/

Lines Matching defs:raw

144 static void raw3215_mk_read_req(struct raw3215_info *raw)
150 req = raw->queued_read;
155 req->info = raw;
156 raw->queued_read = req;
163 ccw->cda = (__u32) __pa(raw->inbuf);
172 static void raw3215_mk_write_req(struct raw3215_info *raw)
178 if (raw->count <= raw->written)
181 req = raw->queued_write;
186 req->info = raw;
187 raw->queued_write = req;
189 raw->written -= req->len;
193 req->start = (raw->head - raw->count + raw->written) &
202 while (lines < RAW3215_MAX_NEWLINE && ix != raw->head) {
203 if (raw->buffer[ix] == 0x15)
211 raw->written += len;
214 req->delayable = (ix == raw->head) && (len < RAW3215_MIN_WRITE);
223 (__u32) __pa(raw->buffer + ix);
248 static void raw3215_start_io(struct raw3215_info *raw)
253 req = raw->queued_read;
255 !(raw->flags & (RAW3215_WORKING | RAW3215_THROTTLED))) {
257 raw->queued_read = NULL;
258 res = ccw_device_start(raw->cdev, req->ccws,
262 raw->queued_read = req;
264 raw->flags |= RAW3215_WORKING;
267 req = raw->queued_write;
269 !(raw->flags & (RAW3215_WORKING | RAW3215_STOPPED))) {
271 raw->queued_write = NULL;
272 res = ccw_device_start(raw->cdev, req->ccws,
276 raw->queued_write = req;
278 raw->flags |= RAW3215_WORKING;
288 struct raw3215_info *raw = (struct raw3215_info *) __data;
291 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
292 if (raw->flags & RAW3215_TIMER_RUNS) {
293 del_timer(&raw->timer);
294 raw->flags &= ~RAW3215_TIMER_RUNS;
295 if (!(raw->flags & RAW3215_FROZEN)) {
296 raw3215_mk_write_req(raw);
297 raw3215_start_io(raw);
300 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
309 static inline void raw3215_try_io(struct raw3215_info *raw)
311 if (!(raw->flags & RAW3215_ACTIVE) || (raw->flags & RAW3215_FROZEN))
313 if (raw->queued_read != NULL)
314 raw3215_start_io(raw);
315 else if (raw->queued_write != NULL) {
316 if ((raw->queued_write->delayable == 0) ||
317 (raw->flags & RAW3215_FLUSHING)) {
319 raw3215_start_io(raw);
320 if (raw->flags & RAW3215_TIMER_RUNS) {
321 del_timer(&raw->timer);
322 raw->flags &= ~RAW3215_TIMER_RUNS;
324 } else if (!(raw->flags & RAW3215_TIMER_RUNS)) {
326 init_timer(&raw->timer);
327 raw->timer.expires = RAW3215_TIMEOUT + jiffies;
328 raw->timer.data = (unsigned long) raw;
329 raw->timer.function = raw3215_timeout;
330 add_timer(&raw->timer);
331 raw->flags |= RAW3215_TIMER_RUNS;
339 static void raw3215_next_io(struct raw3215_info *raw)
343 raw3215_mk_write_req(raw);
344 raw3215_try_io(raw);
345 tty = raw->tty;
347 RAW3215_BUFFER_SIZE - raw->count >= RAW3215_MIN_SPACE) {
358 struct raw3215_info *raw;
364 raw = dev_get_drvdata(&cdev->dev);
369 raw3215_next_io(raw);
378 raw3215_mk_read_req(raw);
379 raw3215_next_io(raw);
384 if ((raw = req->info) == NULL)
394 if ((raw = req->info) == NULL)
396 if (req->type == RAW3215_READ && raw->tty != NULL) {
399 tty = raw->tty;
401 EBCASC(raw->inbuf, count);
402 cchar = ctrlchar_handle(raw->inbuf, count, tty);
409 tty_flip_buffer_push(raw->tty);
414 (strncmp(raw->inbuf+count-2, "\252n", 2) &&
415 strncmp(raw->inbuf+count-2, "^n", 2)) ) {
417 raw->inbuf[count] = '\n';
421 tty_insert_flip_string(tty, raw->inbuf, count);
422 tty_flip_buffer_push(raw->tty);
426 raw->count -= req->len;
427 raw->written -= req->len;
429 raw->flags &= ~RAW3215_WORKING;
432 if (waitqueue_active(&raw->empty_wait) &&
433 raw->queued_write == NULL &&
434 raw->queued_read == NULL) {
435 wake_up_interruptible(&raw->empty_wait);
437 raw3215_next_io(raw);
443 raw->count -= req->len;
444 raw->written -= req->len;
446 raw->flags &= ~RAW3215_WORKING;
449 raw3215_next_io(raw);
457 static void raw3215_drop_line(struct raw3215_info *raw)
462 BUG_ON(raw->written != 0);
463 ix = (raw->head - raw->count) & (RAW3215_BUFFER_SIZE - 1);
464 while (raw->count > 0) {
465 ch = raw->buffer[ix];
467 raw->count--;
471 raw->head = ix;
479 static void raw3215_make_room(struct raw3215_info *raw, unsigned int length)
481 while (RAW3215_BUFFER_SIZE - raw->count < length) {
485 if (raw->flags & RAW3215_FROZEN) {
486 raw3215_drop_line(raw);
490 raw->flags |= RAW3215_FLUSHING;
491 raw3215_mk_write_req(raw);
492 raw3215_try_io(raw);
493 raw->flags &= ~RAW3215_FLUSHING;
498 if (RAW3215_BUFFER_SIZE - raw->count >= length)
501 spin_unlock(get_ccwdev_lock(raw->cdev));
503 spin_lock(get_ccwdev_lock(raw->cdev));
510 static void raw3215_write(struct raw3215_info *raw, const char *str,
517 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
522 raw3215_make_room(raw, count);
527 min(RAW3215_BUFFER_SIZE - raw->count,
528 RAW3215_BUFFER_SIZE - raw->head));
531 memcpy(raw->buffer + raw->head, str, c);
532 ASCEBC(raw->buffer + raw->head, c);
533 raw->head = (raw->head + c) & (RAW3215_BUFFER_SIZE - 1);
534 raw->count += c;
535 raw->line_pos += c;
539 if (!(raw->flags & RAW3215_WORKING)) {
540 raw3215_mk_write_req(raw);
542 raw3215_try_io(raw);
544 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
551 static void raw3215_putchar(struct raw3215_info *raw, unsigned char ch)
556 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
558 length = TAB_STOP_SIZE - (raw->line_pos%TAB_STOP_SIZE);
559 raw->line_pos += length;
563 raw->line_pos = 0;
566 raw->line_pos++;
568 raw3215_make_room(raw, length);
571 raw->buffer[raw->head] = (char) _ascebc[(int) ch];
572 raw->head = (raw->head + 1) & (RAW3215_BUFFER_SIZE - 1);
573 raw->count++;
575 if (!(raw->flags & RAW3215_WORKING)) {
576 raw3215_mk_write_req(raw);
578 raw3215_try_io(raw);
580 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
587 static void raw3215_flush_buffer(struct raw3215_info *raw)
591 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
592 if (raw->count > 0) {
593 raw->flags |= RAW3215_FLUSHING;
594 raw3215_try_io(raw);
595 raw->flags &= ~RAW3215_FLUSHING;
597 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
603 static int raw3215_startup(struct raw3215_info *raw)
607 if (raw->flags & RAW3215_ACTIVE)
609 raw->line_pos = 0;
610 raw->flags |= RAW3215_ACTIVE;
611 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
612 raw3215_try_io(raw);
613 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
621 static void raw3215_shutdown(struct raw3215_info *raw)
626 if (!(raw->flags & RAW3215_ACTIVE) || (raw->flags & RAW3215_FIXED))
629 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
630 if ((raw->flags & RAW3215_WORKING) ||
631 raw->queued_write != NULL ||
632 raw->queued_read != NULL) {
633 raw->flags |= RAW3215_CLOSING;
634 add_wait_queue(&raw->empty_wait, &wait);
636 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
638 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
639 remove_wait_queue(&raw->empty_wait, &wait);
641 raw->flags &= ~(RAW3215_ACTIVE | RAW3215_CLOSING);
643 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
648 struct raw3215_info *raw;
654 raw = kmalloc(sizeof(struct raw3215_info) +
656 if (raw == NULL)
662 raw3215[line] = raw;
668 kfree(raw);
672 raw->cdev = cdev;
673 raw->inbuf = (char *) raw + sizeof(struct raw3215_info);
674 memset(raw, 0, sizeof(struct raw3215_info));
675 raw->buffer = kmalloc(RAW3215_BUFFER_SIZE,
677 if (raw->buffer == NULL) {
681 kfree(raw);
684 init_waitqueue_head(&raw->empty_wait);
686 dev_set_drvdata(&cdev->dev, raw);
694 struct raw3215_info *raw;
697 raw = dev_get_drvdata(&cdev->dev);
698 if (raw) {
700 kfree(raw->buffer);
701 kfree(raw);
707 struct raw3215_info *raw;
709 raw = dev_get_drvdata(&cdev->dev);
710 if (!raw)
713 return raw3215_startup(raw);
718 struct raw3215_info *raw;
720 raw = dev_get_drvdata(&cdev->dev);
721 if (!raw)
724 raw3215_shutdown(raw);
731 struct raw3215_info *raw;
735 raw = dev_get_drvdata(&cdev->dev);
736 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
737 raw3215_make_room(raw, RAW3215_BUFFER_SIZE);
738 raw->flags |= RAW3215_FROZEN;
739 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
745 struct raw3215_info *raw;
749 raw = dev_get_drvdata(&cdev->dev);
750 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
751 raw->flags &= ~RAW3215_FROZEN;
752 raw->flags |= RAW3215_FLUSHING;
753 raw3215_try_io(raw);
754 raw->flags &= ~RAW3215_FLUSHING;
755 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
784 struct raw3215_info *raw;
789 raw = raw3215[0]; /* console 3215 is the first one */
794 raw3215_write(raw, str, i);
798 raw3215_putchar(raw, *str);
817 struct raw3215_info *raw;
820 raw = raw3215[0]; /* console 3215 is the first one */
821 if (raw->flags & RAW3215_FROZEN)
826 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
827 raw3215_make_room(raw, RAW3215_BUFFER_SIZE);
828 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
864 struct raw3215_info *raw;
891 raw3215[0] = raw = (struct raw3215_info *)
893 raw->buffer = kzalloc(RAW3215_BUFFER_SIZE, GFP_KERNEL | GFP_DMA);
894 raw->inbuf = kzalloc(RAW3215_INBUF_SIZE, GFP_KERNEL | GFP_DMA);
895 raw->cdev = cdev;
896 dev_set_drvdata(&cdev->dev, raw);
899 raw->flags |= RAW3215_FIXED;
900 init_waitqueue_head(&raw->empty_wait);
903 if (raw3215_startup(raw) != 0) {
904 kfree(raw->inbuf);
905 kfree(raw->buffer);
906 kfree(raw);
925 struct raw3215_info *raw;
932 raw = raw3215[line];
933 if (raw == NULL)
936 tty->driver_data = raw;
937 raw->tty = tty;
943 retval = raw3215_startup(raw);
958 struct raw3215_info *raw;
960 raw = (struct raw3215_info *) tty->driver_data;
961 if (raw == NULL || tty->count > 1)
965 raw3215_shutdown(raw);
967 raw->tty = NULL;
975 struct raw3215_info *raw;
977 raw = (struct raw3215_info *) tty->driver_data;
980 if ((RAW3215_BUFFER_SIZE - raw->count - TAB_STOP_SIZE) >= 0)
981 return RAW3215_BUFFER_SIZE - raw->count - TAB_STOP_SIZE;
992 struct raw3215_info *raw;
996 raw = (struct raw3215_info *) tty->driver_data;
997 raw3215_write(raw, buf, count);
1006 struct raw3215_info *raw;
1010 raw = (struct raw3215_info *) tty->driver_data;
1011 raw3215_putchar(raw, ch);
1024 struct raw3215_info *raw;
1026 raw = (struct raw3215_info *) tty->driver_data;
1027 return raw->count;
1032 struct raw3215_info *raw;
1034 raw = (struct raw3215_info *) tty->driver_data;
1035 raw3215_flush_buffer(raw);
1044 struct raw3215_info *raw;
1046 raw = (struct raw3215_info *) tty->driver_data;
1047 raw->flags |= RAW3215_THROTTLED;
1055 struct raw3215_info *raw;
1058 raw = (struct raw3215_info *) tty->driver_data;
1059 if (raw->flags & RAW3215_THROTTLED) {
1060 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
1061 raw->flags &= ~RAW3215_THROTTLED;
1062 raw3215_try_io(raw);
1063 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);
1072 struct raw3215_info *raw;
1074 raw = (struct raw3215_info *) tty->driver_data;
1075 raw->flags |= RAW3215_STOPPED;
1083 struct raw3215_info *raw;
1086 raw = (struct raw3215_info *) tty->driver_data;
1087 if (raw->flags & RAW3215_STOPPED) {
1088 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
1089 raw->flags &= ~RAW3215_STOPPED;
1090 raw3215_try_io(raw);
1091 spin_unlock_irqrestore(get_ccwdev_lock(raw->cdev), flags);