sbbc.c revision bf30efa4af94cd71664f6c1be0e6e950b1d7a0f4
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
#ifdef DEBUG
#if defined(SBBC_TRACE)
int sbbctrace_count;
static void *sbbcsoft_statep;
&sbbc_ops,
_init(void)
int error;
return (error);
return (error);
_fini(void)
int error;
return (error);
int instance;
switch (cmd) {
case DDI_ATTACH:
case DDI_RESUME:
if (!(sbbcsoftp =
instance);
return (DDI_FAILURE);
return (DDI_FAILURE);
return (DDI_SUCCESS);
return (DDI_FAILURE);
instance);
return (DDI_FAILURE);
instance);
return (DDI_FAILURE);
return (DDI_FAILURE);
return (DDI_FAILURE);
instance);
goto failed;
(uint32_t *)
(uint32_t *)
instance);
(uint32_t *)
instance);
goto remlock;
goto remlock;
return (DDI_SUCCESS);
return (DDI_FAILURE);
int instance;
switch (cmd) {
case DDI_DETACH:
case DDI_SUSPEND:
if (!(sbbcsoftp =
(void *)sbbcsoftp);
return (DDI_FAILURE);
return (DDI_FAILURE);
return (DDI_SUCCESS);
return (DDI_FAILURE);
(void *)sbbcsoftp);
return (DDI_FAILURE);
return (DDI_SUCCESS);
int rnumber, i, n;
int instance;
return (DDI_FAILURE);
case DDI_MT_REGSPEC:
case DDI_MT_RNUMBER:
return (DDI_ME_RNUMBER_RANGE);
n = i / sizeof (sbbc_child_regspec_t);
return (DDI_ME_RNUMBER_RANGE);
return (DDI_ME_INVAL);
if (len)
return (rval);
return (rval);
switch (intr_op) {
case DDI_INTROP_GETCAP:
case DDI_INTROP_ALLOC:
case DDI_INTROP_FREE:
case DDI_INTROP_GETPRI:
case DDI_INTROP_ADDISR:
case DDI_INTROP_REMISR:
case DDI_INTROP_ENABLE:
case DDI_INTROP_DISABLE:
case DDI_INTROP_NINTRS:
case DDI_INTROP_NAVAIL:
DDI_INTR_TYPE_FIXED : 0;
return (ret);
return (DDI_FAILURE);
for (i = 0; i < MAX_SBBC_DEVICES; i++) {
return (rval);
return (DDI_FAILURE);
for (i = 0; i < MAX_SBBC_DEVICES; i++) {
if (i >= MAX_SBBC_DEVICES) {
return (DDI_FAILURE);
return (rval);
return (rval);
int instance, i;
return (DDI_FAILURE);
for (i = 0; i < MAX_SBBC_DEVICES; i++) {
if (i >= MAX_SBBC_DEVICES) {
return (DDI_FAILURE);
return (ret);
return (ret);
switch (op) {
case DDI_CTLOPS_INITCHILD: {
case DDI_CTLOPS_UNINITCHILD: {
case DDI_CTLOPS_REPORTDEV:
return (DDI_SUCCESS);
case DDI_CTLOPS_REGSIZE:
return (DDI_FAILURE);
n = i / sizeof (sbbc_child_regspec_t);
return (DDI_FAILURE);
return (DDI_SUCCESS);
case DDI_CTLOPS_NREGS:
return (DDI_FAILURE);
return (DDI_SUCCESS);
addr_offset));
if (b == nrange) {
return (DDI_ME_REGSPEC_RANGE);
return (rval);
return (DDI_ME_REGSPEC_RANGE);
if (!nrange) {
return (DDI_FAILURE);
return (DDI_SUCCESS);
#ifdef DEBUG
#ifdef DEBUG
#ifdef DEBUG
switch (infocmd) {
case DDI_INFO_DEVT2DEVINFO:
case DDI_INFO_DEVT2INSTANCE:
return (ret);
int instance;
return (EPERM);
if (instance < 0)
return (ENXIO);
instance);
return (ENXIO);
return (EBUSY);
int instance;
if (instance < 0)
return (ENXIO);
instance);
int *rvalp)
return (ENXIO);
switch (cmd) {
case SBBC_SBBCREG_WR:
return (ENXIO);
(void *)arg);
return (EFAULT);
return (EINVAL);
case SBBC_SBBCREG_RD:
return (ENXIO);
(void *)arg);
return (EFAULT);
return (EINVAL);
(void *)arg);
return (EFAULT);
return (ENOTTY);
return (DDI_SUCCESS);
return (DDI_SUCCESS);
return (DDI_FAILURE);
return (DDI_SUCCESS);
return (DDI_SUCCESS);
static uint_t
int i, rval;
for (i = 0; i < MAX_SBBC_DEVICES; i++) {
return (rval);
return (DDI_INTR_UNCLAIMED);
#ifdef DEBUG
char *s = NULL;
switch (flag) {
case SBBC_DBG_ATTACH:
case SBBC_DBG_DETACH:
case SBBC_DBG_CTLOPS:
case SBBC_DBG_INITCHILD:
case SBBC_DBG_UNINITCHILD:
case SBBC_DBG_BUSMAP:
case SBBC_DBG_INTR:
case SBBC_DBG_INTROPS:
case SBBC_DBG_PCICONF:
case SBBC_DBG_MAPRANGES:
case SBBC_DBG_PROPERTIES:
case SBBC_DBG_OPEN:
case SBBC_DBG_CLOSE:
case SBBC_DBG_IOCTL: