19a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz#include <linux/tty.h>
29a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz#include <linux/sched.h>
39a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz#include "dgnc_utils.h"
49a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz#include "digi.h"
59a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz
69a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz/*
79a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz * dgnc_ms_sleep()
89a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz *
99a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz * Put the driver to sleep for x ms's
109a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz *
119a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz * Returns 0 if timed out, !0 (showing signal) if interrupted by a signal.
129a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz */
139a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowiczint dgnc_ms_sleep(ulong ms)
149a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz{
159a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	current->state = TASK_INTERRUPTIBLE;
169a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	schedule_timeout((ms * HZ) / 1000);
179a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	return signal_pending(current);
189a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz}
199a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz
209a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz/*
219a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz *      dgnc_ioctl_name() : Returns a text version of each ioctl value.
229a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz */
239a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowiczchar *dgnc_ioctl_name(int cmd)
249a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz{
259a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	switch (cmd) {
269a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz
279a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCGETA:		return "TCGETA";
289a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCGETS:		return "TCGETS";
299a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCSETA:		return "TCSETA";
309a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCSETS:		return "TCSETS";
319a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCSETAW:		return "TCSETAW";
329a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCSETSW:		return "TCSETSW";
339a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCSETAF:		return "TCSETAF";
349a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCSETSF:		return "TCSETSF";
359a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCSBRK:		return "TCSBRK";
369a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCXONC:		return "TCXONC";
379a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TCFLSH:		return "TCFLSH";
389a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCGSID:		return "TIOCGSID";
399a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz
409a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCGETD:		return "TIOCGETD";
419a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCSETD:		return "TIOCSETD";
429a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCGWINSZ:	return "TIOCGWINSZ";
439a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCSWINSZ:	return "TIOCSWINSZ";
449a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz
459a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCMGET:		return "TIOCMGET";
469a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCMSET:		return "TIOCMSET";
479a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCMBIS:		return "TIOCMBIS";
489a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCMBIC:		return "TIOCMBIC";
499a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz
509a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	/* from digi.h */
519a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_SETA:		return "DIGI_SETA";
529a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_SETAW:	return "DIGI_SETAW";
539a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_SETAF:	return "DIGI_SETAF";
549a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_SETFLOW:	return "DIGI_SETFLOW";
559a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_SETAFLOW:	return "DIGI_SETAFLOW";
569a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_GETFLOW:	return "DIGI_GETFLOW";
579a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_GETAFLOW:	return "DIGI_GETAFLOW";
589a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_GETA:		return "DIGI_GETA";
599a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_GEDELAY:	return "DIGI_GEDELAY";
609a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_SEDELAY:	return "DIGI_SEDELAY";
619a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_GETCUSTOMBAUD: return "DIGI_GETCUSTOMBAUD";
629a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case DIGI_SETCUSTOMBAUD: return "DIGI_SETCUSTOMBAUD";
639a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCMODG:		return "TIOCMODG";
649a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCMODS:		return "TIOCMODS";
659a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCSDTR:		return "TIOCSDTR";
669a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	case TIOCCDTR:		return "TIOCCDTR";
679a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz
689a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	default:		return "unknown";
699a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz	}
709a633d00d14129b5865502a0f45c160f523b446fKonrad Zapalowicz}
71