ulpt_at_usb.c revision 1.2
11.2Spooka/* $NetBSD: ulpt_at_usb.c,v 1.2 2010/03/01 13:12:20 pooka Exp $ */ 21.1Spooka 31.1Spooka/* 41.1Spooka * MACHINE GENERATED: DO NOT EDIT 51.1Spooka * 61.1Spooka * ioconf.c, from "TESTI_ulpt" 71.1Spooka */ 81.1Spooka 91.1Spooka#include <sys/param.h> 101.1Spooka#include <sys/conf.h> 111.1Spooka#include <sys/device.h> 121.1Spooka#include <sys/mount.h> 131.1Spooka#include <sys/stat.h> 141.1Spooka 151.1Spookastatic const struct cfiattrdata gpibdevcf_iattrdata = { 161.1Spooka "gpibdev", 1, 171.1Spooka { 181.1Spooka { "address", "-1", -1 }, 191.1Spooka } 201.1Spooka}; 211.1Spookastatic const struct cfiattrdata acpibuscf_iattrdata = { 221.1Spooka "acpibus", 0, { 231.1Spooka { NULL, NULL, 0 }, 241.1Spooka } 251.1Spooka}; 261.1Spookastatic const struct cfiattrdata caccf_iattrdata = { 271.1Spooka "cac", 1, 281.1Spooka { 291.1Spooka { "unit", "-1", -1 }, 301.1Spooka } 311.1Spooka}; 321.1Spookastatic const struct cfiattrdata spicf_iattrdata = { 331.1Spooka "spi", 1, 341.1Spooka { 351.1Spooka { "slave", "NULL", 0 }, 361.1Spooka } 371.1Spooka}; 381.1Spookastatic const struct cfiattrdata radiodevcf_iattrdata = { 391.1Spooka "radiodev", 0, { 401.1Spooka { NULL, NULL, 0 }, 411.1Spooka } 421.1Spooka}; 431.1Spookastatic const struct cfiattrdata mlxcf_iattrdata = { 441.1Spooka "mlx", 1, 451.1Spooka { 461.1Spooka { "unit", "-1", -1 }, 471.1Spooka } 481.1Spooka}; 491.1Spookastatic const struct cfiattrdata ucombuscf_iattrdata = { 501.1Spooka "ucombus", 1, 511.1Spooka { 521.1Spooka { "portno", "-1", -1 }, 531.1Spooka } 541.1Spooka}; 551.1Spookastatic const struct cfiattrdata videobuscf_iattrdata = { 561.1Spooka "videobus", 0, { 571.1Spooka { NULL, NULL, 0 }, 581.1Spooka } 591.1Spooka}; 601.1Spookastatic const struct cfiattrdata isabuscf_iattrdata = { 611.1Spooka "isabus", 0, { 621.1Spooka { NULL, NULL, 0 }, 631.1Spooka } 641.1Spooka}; 651.1Spookastatic const struct cfiattrdata i2cbuscf_iattrdata = { 661.1Spooka "i2cbus", 0, { 671.1Spooka { NULL, NULL, 0 }, 681.1Spooka } 691.1Spooka}; 701.1Spookastatic const struct cfiattrdata ata_hlcf_iattrdata = { 711.1Spooka "ata_hl", 1, 721.1Spooka { 731.1Spooka { "drive", "-1", -1 }, 741.1Spooka } 751.1Spooka}; 761.1Spookastatic const struct cfiattrdata depcacf_iattrdata = { 771.1Spooka "depca", 0, { 781.1Spooka { NULL, NULL, 0 }, 791.1Spooka } 801.1Spooka}; 811.1Spookastatic const struct cfiattrdata ppbuscf_iattrdata = { 821.1Spooka "ppbus", 0, { 831.1Spooka { NULL, NULL, 0 }, 841.1Spooka } 851.1Spooka}; 861.1Spookastatic const struct cfiattrdata eisabuscf_iattrdata = { 871.1Spooka "eisabus", 0, { 881.1Spooka { NULL, NULL, 0 }, 891.1Spooka } 901.1Spooka}; 911.1Spookastatic const struct cfiattrdata atapicf_iattrdata = { 921.1Spooka "atapi", 0, { 931.1Spooka { NULL, NULL, 0 }, 941.1Spooka } 951.1Spooka}; 961.1Spookastatic const struct cfiattrdata usbroothubifcf_iattrdata = { 971.1Spooka "usbroothubif", 0, { 981.1Spooka { NULL, NULL, 0 }, 991.1Spooka } 1001.1Spooka}; 1011.1Spookastatic const struct cfiattrdata altmemdevcf_iattrdata = { 1021.1Spooka "altmemdev", 0, { 1031.1Spooka { NULL, NULL, 0 }, 1041.1Spooka } 1051.1Spooka}; 1061.1Spookastatic const struct cfiattrdata tcbuscf_iattrdata = { 1071.1Spooka "tcbus", 0, { 1081.1Spooka { NULL, NULL, 0 }, 1091.1Spooka } 1101.1Spooka}; 1111.1Spookastatic const struct cfiattrdata onewirebuscf_iattrdata = { 1121.1Spooka "onewirebus", 0, { 1131.1Spooka { NULL, NULL, 0 }, 1141.1Spooka } 1151.1Spooka}; 1161.1Spookastatic const struct cfiattrdata gpiocf_iattrdata = { 1171.1Spooka "gpio", 2, 1181.1Spooka { 1191.1Spooka { "offset", "-1", -1 }, 1201.1Spooka { "mask", "0", 0 }, 1211.1Spooka } 1221.1Spooka}; 1231.1Spookastatic const struct cfiattrdata cbbuscf_iattrdata = { 1241.1Spooka "cbbus", 0, { 1251.1Spooka { NULL, NULL, 0 }, 1261.1Spooka } 1271.1Spooka}; 1281.1Spookastatic const struct cfiattrdata gpiobuscf_iattrdata = { 1291.1Spooka "gpiobus", 0, { 1301.1Spooka { NULL, NULL, 0 }, 1311.1Spooka } 1321.1Spooka}; 1331.1Spookastatic const struct cfiattrdata drmcf_iattrdata = { 1341.1Spooka "drm", 0, { 1351.1Spooka { NULL, NULL, 0 }, 1361.1Spooka } 1371.1Spooka}; 1381.1Spookastatic const struct cfiattrdata pckbportcf_iattrdata = { 1391.1Spooka "pckbport", 1, 1401.1Spooka { 1411.1Spooka { "slot", "-1", -1 }, 1421.1Spooka } 1431.1Spooka}; 1441.1Spookastatic const struct cfiattrdata irbuscf_iattrdata = { 1451.1Spooka "irbus", 0, { 1461.1Spooka { NULL, NULL, 0 }, 1471.1Spooka } 1481.1Spooka}; 1491.1Spookastatic const struct cfiattrdata aaccf_iattrdata = { 1501.1Spooka "aac", 1, 1511.1Spooka { 1521.1Spooka { "unit", "-1", -1 }, 1531.1Spooka } 1541.1Spooka}; 1551.1Spookastatic const struct cfiattrdata pcibuscf_iattrdata = { 1561.1Spooka "pcibus", 1, 1571.1Spooka { 1581.1Spooka { "bus", "-1", -1 }, 1591.1Spooka } 1601.1Spooka}; 1611.1Spookastatic const struct cfiattrdata usbififcf_iattrdata = { 1621.1Spooka "usbifif", 6, 1631.1Spooka { 1641.1Spooka { "port", "-1", -1 }, 1651.1Spooka { "configuration", "-1", -1 }, 1661.1Spooka { "interface", "-1", -1 }, 1671.1Spooka { "vendor", "-1", -1 }, 1681.1Spooka { "product", "-1", -1 }, 1691.1Spooka { "release", "-1", -1 }, 1701.1Spooka } 1711.1Spooka}; 1721.1Spookastatic const struct cfiattrdata upccf_iattrdata = { 1731.1Spooka "upc", 1, 1741.1Spooka { 1751.1Spooka { "offset", "-1", -1 }, 1761.1Spooka } 1771.1Spooka}; 1781.1Spookastatic const struct cfiattrdata iiccf_iattrdata = { 1791.1Spooka "iic", 2, 1801.1Spooka { 1811.1Spooka { "addr", "-1", -1 }, 1821.1Spooka { "size", "-1", -1 }, 1831.1Spooka } 1841.1Spooka}; 1851.1Spookastatic const struct cfiattrdata onewirecf_iattrdata = { 1861.1Spooka "onewire", 0, { 1871.1Spooka { NULL, NULL, 0 }, 1881.1Spooka } 1891.1Spooka}; 1901.1Spookastatic const struct cfiattrdata mcabuscf_iattrdata = { 1911.1Spooka "mcabus", 0, { 1921.1Spooka { NULL, NULL, 0 }, 1931.1Spooka } 1941.1Spooka}; 1951.1Spookastatic const struct cfiattrdata wsdisplaydevcf_iattrdata = { 1961.1Spooka "wsdisplaydev", 1, 1971.1Spooka { 1981.1Spooka { "kbdmux", "1", 1 }, 1991.1Spooka } 2001.1Spooka}; 2011.1Spookastatic const struct cfiattrdata miicf_iattrdata = { 2021.1Spooka "mii", 1, 2031.1Spooka { 2041.1Spooka { "phy", "-1", -1 }, 2051.1Spooka } 2061.1Spooka}; 2071.1Spookastatic const struct cfiattrdata cpcbuscf_iattrdata = { 2081.1Spooka "cpcbus", 2, 2091.1Spooka { 2101.1Spooka { "addr", "NULL", 0 }, 2111.1Spooka { "irq", "-1", -1 }, 2121.1Spooka } 2131.1Spooka}; 2141.1Spookastatic const struct cfiattrdata parportcf_iattrdata = { 2151.1Spooka "parport", 0, { 2161.1Spooka { NULL, NULL, 0 }, 2171.1Spooka } 2181.1Spooka}; 2191.1Spookastatic const struct cfiattrdata dbcoolcf_iattrdata = { 2201.1Spooka "dbcool", 0, { 2211.1Spooka { NULL, NULL, 0 }, 2221.1Spooka } 2231.1Spooka}; 2241.1Spookastatic const struct cfiattrdata usbdevifcf_iattrdata = { 2251.1Spooka "usbdevif", 6, 2261.1Spooka { 2271.1Spooka { "port", "-1", -1 }, 2281.1Spooka { "configuration", "-1", -1 }, 2291.1Spooka { "interface", "-1", -1 }, 2301.1Spooka { "vendor", "-1", -1 }, 2311.1Spooka { "product", "-1", -1 }, 2321.1Spooka { "release", "-1", -1 }, 2331.1Spooka } 2341.1Spooka}; 2351.1Spookastatic const struct cfiattrdata wskbddevcf_iattrdata = { 2361.1Spooka "wskbddev", 2, 2371.1Spooka { 2381.1Spooka { "console", "-1", -1 }, 2391.1Spooka { "mux", "1", 1 }, 2401.1Spooka } 2411.1Spooka}; 2421.1Spookastatic const struct cfiattrdata audiobuscf_iattrdata = { 2431.1Spooka "audiobus", 0, { 2441.1Spooka { NULL, NULL, 0 }, 2451.1Spooka } 2461.1Spooka}; 2471.1Spookastatic const struct cfiattrdata btbuscf_iattrdata = { 2481.1Spooka "btbus", 0, { 2491.1Spooka { NULL, NULL, 0 }, 2501.1Spooka } 2511.1Spooka}; 2521.1Spookastatic const struct cfiattrdata midibuscf_iattrdata = { 2531.1Spooka "midibus", 0, { 2541.1Spooka { NULL, NULL, 0 }, 2551.1Spooka } 2561.1Spooka}; 2571.1Spookastatic const struct cfiattrdata vmebuscf_iattrdata = { 2581.1Spooka "vmebus", 0, { 2591.1Spooka { NULL, NULL, 0 }, 2601.1Spooka } 2611.1Spooka}; 2621.1Spookastatic const struct cfiattrdata wsemuldisplaydevcf_iattrdata = { 2631.1Spooka "wsemuldisplaydev", 2, 2641.1Spooka { 2651.1Spooka { "console", "-1", -1 }, 2661.1Spooka { "kbdmux", "1", 1 }, 2671.1Spooka } 2681.1Spooka}; 2691.1Spookastatic const struct cfiattrdata uhidbuscf_iattrdata = { 2701.1Spooka "uhidbus", 1, 2711.1Spooka { 2721.1Spooka { "reportid", "-1", -1 }, 2731.1Spooka } 2741.1Spooka}; 2751.1Spookastatic const struct cfiattrdata icpcf_iattrdata = { 2761.1Spooka "icp", 1, 2771.1Spooka { 2781.1Spooka { "unit", "-1", -1 }, 2791.1Spooka } 2801.1Spooka}; 2811.1Spookastatic const struct cfiattrdata sdmmcbuscf_iattrdata = { 2821.1Spooka "sdmmcbus", 0, { 2831.1Spooka { NULL, NULL, 0 }, 2841.1Spooka } 2851.1Spooka}; 2861.1Spookastatic const struct cfiattrdata comcf_iattrdata = { 2871.1Spooka "com", 0, { 2881.1Spooka { NULL, NULL, 0 }, 2891.1Spooka } 2901.1Spooka}; 2911.1Spookastatic const struct cfiattrdata spiflashbuscf_iattrdata = { 2921.1Spooka "spiflashbus", 0, { 2931.1Spooka { NULL, NULL, 0 }, 2941.1Spooka } 2951.1Spooka}; 2961.1Spookastatic const struct cfiattrdata fwbuscf_iattrdata = { 2971.1Spooka "fwbus", 0, { 2981.1Spooka { NULL, NULL, 0 }, 2991.1Spooka } 3001.1Spooka}; 3011.1Spookastatic const struct cfiattrdata pcmciaslotcf_iattrdata = { 3021.1Spooka "pcmciaslot", 0, { 3031.1Spooka { NULL, NULL, 0 }, 3041.1Spooka } 3051.1Spooka}; 3061.1Spookastatic const struct cfiattrdata usbuscf_iattrdata = { 3071.1Spooka "usbus", 0, { 3081.1Spooka { NULL, NULL, 0 }, 3091.1Spooka } 3101.1Spooka}; 3111.1Spookastatic const struct cfiattrdata wsmousedevcf_iattrdata = { 3121.1Spooka "wsmousedev", 1, 3131.1Spooka { 3141.1Spooka { "mux", "0", 0 }, 3151.1Spooka } 3161.1Spooka}; 3171.1Spookastatic const struct cfiattrdata scsicf_iattrdata = { 3181.1Spooka "scsi", 1, 3191.1Spooka { 3201.1Spooka { "channel", "-1", -1 }, 3211.1Spooka } 3221.1Spooka}; 3231.1Spookastatic const struct cfiattrdata atacf_iattrdata = { 3241.1Spooka "ata", 1, 3251.1Spooka { 3261.1Spooka { "channel", "-1", -1 }, 3271.1Spooka } 3281.1Spooka}; 3291.1Spookastatic const struct cfiattrdata spibuscf_iattrdata = { 3301.1Spooka "spibus", 0, { 3311.1Spooka { NULL, NULL, 0 }, 3321.1Spooka } 3331.1Spooka}; 3341.1Spookastatic const struct cfiattrdata pcmciabuscf_iattrdata = { 3351.1Spooka "pcmciabus", 2, 3361.1Spooka { 3371.1Spooka { "controller", "-1", -1 }, 3381.1Spooka { "socket", "-1", -1 }, 3391.1Spooka } 3401.1Spooka}; 3411.1Spooka 3421.1Spookastatic const struct cfiattrdata * const usb_attrs[] = { &usbroothubifcf_iattrdata, NULL }; 3431.1SpookaCFDRIVER_DECL(usb, DV_DULL, usb_attrs); 3441.1Spooka 3451.1Spookastatic const struct cfiattrdata * const uhub_attrs[] = { &usbififcf_iattrdata, &usbdevifcf_iattrdata, NULL }; 3461.1SpookaCFDRIVER_DECL(uhub, DV_DULL, uhub_attrs); 3471.1Spooka 3481.1SpookaCFDRIVER_DECL(ulpt, DV_DULL, NULL); 3491.1Spooka 3501.1Spooka 3511.1Spookaextern struct cfattach usb_ca; 3521.1Spookaextern struct cfattach uroothub_ca; 3531.1Spookaextern struct cfattach ulpt_ca; 3541.1Spooka 3551.1Spooka/* locators */ 3561.1Spookastatic int loc[6] = { 3571.1Spooka -1, -1, -1, -1, -1, -1, 3581.1Spooka}; 3591.1Spooka 3601.1Spookastatic const struct cfparent pspec1 = { 3611.1Spooka "usbus", "rumpusbhc", DVUNIT_ANY 3621.1Spooka}; 3631.1Spookastatic const struct cfparent pspec2 = { 3641.1Spooka "usbroothubif", "usb", DVUNIT_ANY 3651.1Spooka}; 3661.1Spookastatic const struct cfparent pspec3 = { 3671.1Spooka "usbifif", "uhub", DVUNIT_ANY 3681.1Spooka}; 3691.1Spooka 3701.1Spooka#define NORM FSTATE_NOTFOUND 3711.1Spooka#define STAR FSTATE_STAR 3721.1Spooka 3731.1Spookastruct cfdata cfdata_ulpt[] = { 3741.1Spooka /* driver attachment unit state loc flags pspec */ 3751.1Spooka/* 0: usb* at rumpusbhc? */ 3761.1Spooka { "usb", "usb", 0, STAR, loc, 0, &pspec1 }, 3771.1Spooka/* 1: uhub* at usb? */ 3781.1Spooka { "uhub", "uroothub", 0, STAR, loc, 0, &pspec2 }, 3791.1Spooka/* 2: ulpt* at uhub? port -1 configuration -1 interface -1 vendor -1 product -1 release -1 */ 3801.1Spooka { "ulpt", "ulpt", 0, STAR, loc+ 0, 0, &pspec3 }, 3811.1Spooka { NULL, NULL, 0, 0, NULL, 0, NULL } 3821.1Spooka}; 3831.1Spooka 3841.2Spooka#include "rump_private.h" 3851.1Spooka#include "rump_dev_private.h" 3861.1Spooka#include "rump_vfs_private.h" 3871.1Spooka 3881.1Spooka#define FLAWLESSCALL(call) \ 3891.1Spookado { \ 3901.1Spooka int att_error; \ 3911.1Spooka if ((att_error = call) != 0) \ 3921.1Spooka panic("\"%s\" failed", #call); \ 3931.1Spooka} while (/*CONSTCOND*/0) 3941.1Spooka 3951.2SpookaRUMP_COMPONENT(RUMP_COMPONENT_DEV) 3961.1Spooka{ 3971.1Spooka extern struct cfattach usb_ca, uhub_ca, uroothub_ca, ulpt_ca; 3981.1Spooka extern struct cdevsw ulpt_cdevsw; 3991.1Spooka devmajor_t bmaj, cmaj; 4001.1Spooka 4011.1Spooka FLAWLESSCALL(config_cfdata_attach(cfdata_ulpt, 0)); 4021.1Spooka 4031.1Spooka FLAWLESSCALL(config_cfdriver_attach(&usb_cd)); 4041.1Spooka FLAWLESSCALL(config_cfattach_attach("usb", &usb_ca)); 4051.1Spooka 4061.1Spooka FLAWLESSCALL(config_cfdriver_attach(&uhub_cd)); 4071.1Spooka FLAWLESSCALL(config_cfattach_attach("uhub", &uhub_ca)); 4081.1Spooka 4091.1Spooka FLAWLESSCALL(config_cfdriver_attach(&ulpt_cd)); 4101.1Spooka FLAWLESSCALL(config_cfattach_attach("ulpt", &ulpt_ca)); 4111.1Spooka 4121.1Spooka FLAWLESSCALL(config_cfattach_attach("uhub", &uroothub_ca)); 4131.1Spooka 4141.1Spooka bmaj = cmaj = -1; 4151.1Spooka FLAWLESSCALL(devsw_attach("ulpt", NULL, &bmaj, &ulpt_cdevsw, &cmaj)); 4161.1Spooka 4171.1Spooka FLAWLESSCALL(rump_vfs_makedevnodes(S_IFCHR, "/dev/ulpt", '0', 4181.1Spooka cmaj, 0, 1)); 4191.1Spooka} 420