Thu Oct 1 21:46:31 2009 UTC ()
Checkpoint some work-in-progress for USB support in rump (currently
with limited scsi@umass support). However, not useful for anything
before I get the ugen-to-rump usb host controller cleaned up and
checkpointed.
(pooka)
diff -r0 -r1.1 src/sys/rump/dev/wip/Makefile.inc
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/Makefile
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/locators.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/sd_at_scsibus_at_umass.c
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/shlib_version
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/opt/atapibus.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/opt/opt_compat_freebsd.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/opt/opt_scsi.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/opt/scsibus.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libumass/opt/wd.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libusb/Makefile
diff -r0 -r1.1 src/sys/rump/dev/wip/libusb/bus_dma.c
diff -r0 -r1.1 src/sys/rump/dev/wip/libusb/locators.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libusb/shlib_version
diff -r0 -r1.1 src/sys/rump/dev/wip/libusb/opt/ohci.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libusb/opt/opt_usbverbose.h
diff -r0 -r1.1 src/sys/rump/dev/wip/libusb/opt/uhci.h
# $NetBSD: Makefile.inc,v 1.1 2009/10/01 21:46:30 pooka Exp $
#
RUMPTOP= ${.CURDIR}/../../..
CPPFLAGS+= -I${RUMPTOP}/librump/rumpdev
.include "${RUMPTOP}/Makefile.rump"
# $NetBSD: Makefile,v 1.1 2009/10/01 21:46:30 pooka Exp $
#
#
# umass. includes scsibus+sd for simplicity due to the umass code
# needing compile time knowledge of its presence. fixxxme
#
.PATH: ${.CURDIR}/../../../../dev/usb ${.CURDIR}/../../../../dev/scsipi
LIB= rumpdev_umass
SRCS= umass.c umass_isdata.c umass_quirks.c umass_scsipi.c
SRCS+= scsipiconf.c scsipi_base.c scsipi_ioctl.c scsi_base.c scsiconf.c sd.c
SRCS+= sd_at_scsibus_at_umass.c
CFLAGS+= -Wno-pointer-sign
CPPFLAGS+= -I${.CURDIR}/opt
.include <bsd.lib.mk>
.include <bsd.klinks.mk>
/* $NetBSD: locators.h,v 1.1 2009/10/01 21:46:30 pooka Exp $ */
/* locators borrowed from config. redo properly some day */
#define SCSIBUSCF_TARGET 0
#define SCSIBUSCF_TARGET_DEFAULT -1
#define SCSIBUSCF_LUN 1
#define SCSIBUSCF_LUN_DEFAULT -1
#define SCSIBUSCF_NLOCS 2
#define USBIFIFCF_PORT 0
#define USBIFIFCF_PORT_DEFAULT -1
#define USBIFIFCF_CONFIGURATION 1
#define USBIFIFCF_CONFIGURATION_DEFAULT -1
#define USBIFIFCF_INTERFACE 2
#define USBIFIFCF_INTERFACE_DEFAULT -1
#define USBIFIFCF_VENDOR 3
#define USBIFIFCF_VENDOR_DEFAULT -1
#define USBIFIFCF_PRODUCT 4
#define USBIFIFCF_PRODUCT_DEFAULT -1
#define USBIFIFCF_RELEASE 5
#define USBIFIFCF_RELEASE_DEFAULT -1
#define USBIFIFCF_NLOCS 6
#define USBDEVIFCF_PORT 0
#define USBDEVIFCF_PORT_DEFAULT -1
#define USBDEVIFCF_CONFIGURATION 1
#define USBDEVIFCF_CONFIGURATION_DEFAULT -1
#define USBDEVIFCF_INTERFACE 2
#define USBDEVIFCF_INTERFACE_DEFAULT -1
#define USBDEVIFCF_VENDOR 3
#define USBDEVIFCF_VENDOR_DEFAULT -1
#define USBDEVIFCF_PRODUCT 4
#define USBDEVIFCF_PRODUCT_DEFAULT -1
#define USBDEVIFCF_RELEASE 5
#define USBDEVIFCF_RELEASE_DEFAULT -1
#define USBDEVIFCF_NLOCS 6
#define SCSICF_CHANNEL 0
#define SCSICF_CHANNEL_DEFAULT -1
#define SCSICF_NLOCS 1
/* $NetBSD: sd_at_scsibus_at_umass.c,v 1.1 2009/10/01 21:46:30 pooka Exp $ */
#include <sys/param.h>
#include <sys/types.h>
#include <sys/conf.h>
#include <sys/device.h>
#include <sys/kmem.h>
/*
* sd @ scsibus @ umass @ usb
*
* handwritten device configuration.... 'nuf said
*/
static const struct cfiattrdata scsicf_iattrdata = {
"scsi", 1, {
{ "channel", "-1", -1 },
}
};
static const struct cfiattrdata scsibuscf_iattrdata = {
"scsibus", 0, {
{ NULL, NULL, 0},
}
};
static const struct cfiattrdata *const scsibuscf_attrs[] = {
&scsibuscf_iattrdata,
NULL,
};
CFDRIVER_DECL(scsibus, DV_DULL, scsibuscf_attrs);
CFDRIVER_DECL(sd, DV_DISK, NULL);
static const struct cfiattrdata uroothub_iattrdata = {
"usbroothubif", 0, {
{ NULL, NULL, 0 },
}
};
static const struct cfiattrdata *const usb_attrs[] = {
&uroothub_iattrdata,
NULL,
};
CFDRIVER_DECL(usb, DV_DULL, usb_attrs);
static const struct cfiattrdata usbdevif_iattrdata = {
"usbdevif", 0, {
{ NULL, NULL, 0 },
}
};
static const struct cfiattrdata usbifif_iattrdata = {
"usbifif", 0, {
{ NULL, NULL, 0 },
}
};
static const struct cfiattrdata *const uhub_attrs[] = {
&usbdevif_iattrdata,
&usbifif_iattrdata,
NULL,
};
CFDRIVER_DECL(uhub, DV_DULL, uhub_attrs);
static const struct cfiattrdata *const umass_attrs[] = {
&scsicf_iattrdata,
NULL,
};
CFDRIVER_DECL(umass, DV_DULL, umass_attrs);
struct cfparent rumpusbhc_pspec = {
"usbus",
"rumpusbhc",
DVUNIT_ANY
};
struct cfdata usb_cfdata[] = {
{ "usb", "usb", 0, FSTATE_STAR, NULL, 0, &rumpusbhc_pspec },
};
struct cfparent usb_pspec = {
"usbroothubif",
"usb",
DVUNIT_ANY
};
struct cfdata uhub_cfdata[] = {
{ "uhub", "uroothub", 0, FSTATE_STAR, NULL, 0, &usb_pspec },
};
struct cfparent usbifif_pspec = {
"usbifif",
"uhub",
DVUNIT_ANY
};
struct cfparent scsi_pspec = {
"scsi",
NULL,
0
};
struct cfdata umass_cfdata[] = {
{ "umass", "umass", 0, FSTATE_STAR, NULL, 0, &usbifif_pspec },
};
int scsiloc[] = {-1,-1,-1,-1,-1,-1};
struct cfdata scsibus_cfdata[] = {
{ "scsibus", "scsibus", 0, FSTATE_STAR, scsiloc, 0, &scsi_pspec },
};
struct cfparent scsibus_pspec = {
"scsibus",
"scsibus",
DVUNIT_ANY
};
struct cfdata sd_cfdata[] = {
{ "sd", "sd", 0, FSTATE_STAR, NULL, 0, &scsibus_pspec },
};
#include "rump_dev_private.h"
#define FLAWLESSCALL(call) \
do { \
int att_error; \
if ((att_error = call) != 0) \
panic("\"%s\" failed", #call); \
} while (/*CONSTCOND*/0)
void
rump_device_configuration(void)
{
extern struct cfattach usb_ca, uhub_ca, uroothub_ca, umass_ca;
extern struct cfattach scsibus_ca, sd_ca;
FLAWLESSCALL(config_cfdriver_attach(&usb_cd));
FLAWLESSCALL(config_cfattach_attach("usb", &usb_ca));
FLAWLESSCALL(config_cfdata_attach(usb_cfdata, 0));
FLAWLESSCALL(config_cfdriver_attach(&uhub_cd));
FLAWLESSCALL(config_cfattach_attach("uhub", &uhub_ca));
FLAWLESSCALL(config_cfdata_attach(uhub_cfdata, 0));
FLAWLESSCALL(config_cfdriver_attach(&umass_cd));
FLAWLESSCALL(config_cfattach_attach("umass", &umass_ca));
FLAWLESSCALL(config_cfdata_attach(umass_cfdata, 0));
FLAWLESSCALL(config_cfdriver_attach(&scsibus_cd));
FLAWLESSCALL(config_cfattach_attach("scsibus", &scsibus_ca));
FLAWLESSCALL(config_cfdata_attach(scsibus_cfdata, 0));
FLAWLESSCALL(config_cfdriver_attach(&sd_cd));
FLAWLESSCALL(config_cfattach_attach("sd", &sd_ca));
FLAWLESSCALL(config_cfdata_attach(sd_cfdata, 0));
FLAWLESSCALL(config_cfattach_attach("uhub", &uroothub_ca));
}
# $NetBSD: shlib_version,v 1.1 2009/10/01 21:46:30 pooka Exp $
#
major=0
minor=0
/* $NetBSD: atapibus.h,v 1.1 2009/10/01 21:46:30 pooka Exp $ */
/* $NetBSD: opt_compat_freebsd.h,v 1.1 2009/10/01 21:46:30 pooka Exp $ */
/* $NetBSD: opt_scsi.h,v 1.1 2009/10/01 21:46:31 pooka Exp $ */
/* $NetBSD: scsibus.h,v 1.1 2009/10/01 21:46:31 pooka Exp $ */
#define NSCSIBUS 1
/* $NetBSD: wd.h,v 1.1 2009/10/01 21:46:31 pooka Exp $ */
# $NetBSD: Makefile,v 1.1 2009/10/01 21:46:31 pooka Exp $
#
.PATH: ${.CURDIR}/../../../../dev/usb
LIB= rumpdev_usb
# sys/kern
SRCS= usb.c usbdi.c usbdi_util.c usb_mem.c usb_subr.c usb_quirks.c uhub.c
# XXX: doesn't belong here by a longshot, but it's the easy choice for now
SRCS+= bus_dma.c
CFLAGS+= -Wno-pointer-sign
CPPFLAGS+= -I${.CURDIR}/opt
.include <bsd.lib.mk>
.include <bsd.klinks.mk>
/* $NetBSD: bus_dma.c,v 1.1 2009/10/01 21:46:31 pooka Exp $ */
#include <sys/param.h>
#include <sys/types.h>
#include <sys/conf.h>
#include <sys/device.h>
#include <sys/kmem.h>
#include <machine/bus.h>
/*
* bus dma "implementation" for rump. needs "a little" more work
*/
int
bus_dmamap_create(bus_dma_tag_t tag, bus_size_t sz, int flag, bus_size_t bsz,
bus_size_t bsz2, int i, bus_dmamap_t *ptr)
{
return 0;
}
void
bus_dmamap_destroy(bus_dma_tag_t tag, bus_dmamap_t map)
{
panic("unimplemented %s", __func__);
}
int
bus_dmamap_load(bus_dma_tag_t t, bus_dmamap_t a, void *b, bus_size_t c,
struct proc *d, int e)
{
return 0;
}
void
bus_dmamap_unload(bus_dma_tag_t a, bus_dmamap_t b)
{
panic("unimplemented %s", __func__);
}
void
bus_dmamap_sync(bus_dma_tag_t a, bus_dmamap_t b, bus_addr_t c,
bus_size_t d, int e)
{
panic("unimplemented %s", __func__);
}
int
bus_dmamem_alloc(bus_dma_tag_t tag, bus_size_t size, bus_size_t align,
bus_size_t boundary, bus_dma_segment_t *segs, int nsegs,
int *rsegs, int flags)
{
*rsegs = nsegs;
return 0;
}
void
bus_dmamem_free(bus_dma_tag_t a, bus_dma_segment_t *b, int c)
{
panic("unimplemented %s", __func__);
}
int
bus_dmamem_map(bus_dma_tag_t tag, bus_dma_segment_t *segs, int nsegs,
size_t size, void **kvap, int flags)
{
KASSERT(nsegs == 1);
*kvap = kmem_alloc(size, KM_SLEEP);
return 0;
}
void
bus_dmamem_unmap(bus_dma_tag_t a, void *kva, size_t b)
{
panic("unimplemented %s", __func__);
}
/* $NetBSD: locators.h,v 1.1 2009/10/01 21:46:31 pooka Exp $ */
/* locators borrowed from config. redo properly some day */
#define SCSIBUSCF_TARGET 0
#define SCSIBUSCF_TARGET_DEFAULT -1
#define SCSIBUSCF_LUN 1
#define SCSIBUSCF_LUN_DEFAULT -1
#define SCSIBUSCF_NLOCS 2
#define USBIFIFCF_PORT 0
#define USBIFIFCF_PORT_DEFAULT -1
#define USBIFIFCF_CONFIGURATION 1
#define USBIFIFCF_CONFIGURATION_DEFAULT -1
#define USBIFIFCF_INTERFACE 2
#define USBIFIFCF_INTERFACE_DEFAULT -1
#define USBIFIFCF_VENDOR 3
#define USBIFIFCF_VENDOR_DEFAULT -1
#define USBIFIFCF_PRODUCT 4
#define USBIFIFCF_PRODUCT_DEFAULT -1
#define USBIFIFCF_RELEASE 5
#define USBIFIFCF_RELEASE_DEFAULT -1
#define USBIFIFCF_NLOCS 6
#define USBDEVIFCF_PORT 0
#define USBDEVIFCF_PORT_DEFAULT -1
#define USBDEVIFCF_CONFIGURATION 1
#define USBDEVIFCF_CONFIGURATION_DEFAULT -1
#define USBDEVIFCF_INTERFACE 2
#define USBDEVIFCF_INTERFACE_DEFAULT -1
#define USBDEVIFCF_VENDOR 3
#define USBDEVIFCF_VENDOR_DEFAULT -1
#define USBDEVIFCF_PRODUCT 4
#define USBDEVIFCF_PRODUCT_DEFAULT -1
#define USBDEVIFCF_RELEASE 5
#define USBDEVIFCF_RELEASE_DEFAULT -1
#define USBDEVIFCF_NLOCS 6
#define SCSICF_CHANNEL 0
#define SCSICF_CHANNEL_DEFAULT -1
#define SCSICF_NLOCS 1
# $NetBSD: shlib_version,v 1.1 2009/10/01 21:46:31 pooka Exp $
#
major=0
minor=0
/* $NetBSD: ohci.h,v 1.1 2009/10/01 21:46:31 pooka Exp $ */
/* $NetBSD: opt_usbverbose.h,v 1.1 2009/10/01 21:46:31 pooka Exp $ */
/* $NetBSD: uhci.h,v 1.1 2009/10/01 21:46:31 pooka Exp $ */