summaryrefslogtreecommitdiff
path: root/sys/rump/dev/lib/libucom/ucom_at_usb.c
blob: 7051bdb2c2a838fa72eff5559fe4ec712e01d229 (plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*	$NetBSD: ucom_at_usb.c,v 1.5 2010/03/08 10:24:37 pooka Exp $	*/

#include <sys/param.h>
#include <sys/types.h>
#include <sys/conf.h>
#include <sys/device.h>
#include <sys/kmem.h>
#include <sys/stat.h>

#include "ioconf.c"

#include "rump_private.h"
#include "rump_dev_private.h"
#include "rump_vfs_private.h"

#define FLAWLESSCALL(call)						\
do {									\
	int att_error;							\
	if ((att_error = call) != 0)					\
		panic("\"%s\" failed", #call);				\
} while (/*CONSTCOND*/0)

void tty_init(void);

RUMP_COMPONENT(RUMP_COMPONENT_DEV)
{
	extern struct cdevsw ucom_cdevsw;
	devmajor_t cmaj, bmaj;

	FLAWLESSCALL(config_cfdata_attach(cfdata_ucom, 0));

	FLAWLESSCALL(config_cfdriver_attach(&uplcom_cd));
	FLAWLESSCALL(config_cfattach_attach("uplcom", &uplcom_ca));

	FLAWLESSCALL(config_cfdriver_attach(&u3ginit_cd));
	FLAWLESSCALL(config_cfattach_attach("u3ginit", &u3ginit_ca));

	FLAWLESSCALL(config_cfdriver_attach(&u3g_cd));
	FLAWLESSCALL(config_cfattach_attach("u3g", &u3g_ca));

	FLAWLESSCALL(config_cfdriver_attach(&ucom_cd));
	FLAWLESSCALL(config_cfattach_attach("ucom", &ucom_ca));

	bmaj = cmaj = -1;
	FLAWLESSCALL(devsw_attach("ucom", NULL, &bmaj, &ucom_cdevsw, &cmaj));

	FLAWLESSCALL(rump_vfs_makedevnodes(S_IFCHR, "/dev/ttyU", '0',
	    cmaj, 0, 2));
	FLAWLESSCALL(rump_vfs_makedevnodes(S_IFCHR, "/dev/dtyU", '0',
	    cmaj, 0x80000, 2));

	tty_init();
}