if (i2o_iop_reset(c)) return -ENODEV; 
rc = i2o_iop_reset(c); if (rc) return rc; 
static int i2o_iop_activate(struct i2o_controller *c){	struct pci_dev *i960 = NULL;	i2o_status_block *sb = c->status_block.virt;	int rc;	if (c->promise) {		/* Beat up the hardware first of all */		i960 =		    pci_find_slot(c->pdev->bus->number,				  PCI_DEVFN(PCI_SLOT(c->pdev->devfn), 0));		if (i960)			pci_write_config_word(i960, 0x42, 0);		/* Follow this sequence precisely or the controller		   ceases to perform useful functions until reboot */		if ((rc = i2o_iop_send_nop(c)))			return rc;		if ((rc = i2o_iop_reset(c)))			return rc;	}	/* In INIT state, Wait Inbound Q to initialize (in i2o_status_get) */	/* In READY state, Get status */	rc = i2o_status_get(c);	if (rc) {		printk(KERN_INFO "%s: Unable to obtain status, "		       "attempting a reset.\n", c->name);		if (i2o_iop_reset(c))			return rc;	}	if (sb->i2o_version > I2OVER15) {		printk(KERN_ERR "%s: Not running version 1.5 of the I2O "		       "Specification.\n", c->name);		return -ENODEV;	}	switch (sb->iop_state) {	case ADAPTER_STATE_FAULTED:		printk(KERN_CRIT "%s: hardware fault\n", c->name);		return -ENODEV;	case ADAPTER_STATE_READY:	case ADAPTER_STATE_OPERATIONAL:	case ADAPTER_STATE_HOLD:	case ADAPTER_STATE_FAILED:		pr_debug("%s: already running, trying to reset...\n", c->name);		if (i2o_iop_reset(c))			return -ENODEV;	}	rc = i2o_iop_init_outbound_queue(c);	if (rc)		return rc;	if (c->promise) {		if ((rc = i2o_iop_send_nop(c)))			return rc;		if ((rc = i2o_status_get(c)))			return rc;		if (i960)			pci_write_config_word(i960, 0x42, 0x3FF);	}	/* In HOLD state */	rc = i2o_hrt_get(c);	return rc;};
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f10378fff658f61307496e0ae00095041725cf07/iop.c/buggy/drivers/message/i2o/iop.c