dbg("%s:\n", __FUNCTION__); 
static void interrupt_event_handler(struct controller *ctrl){	int loop = 0;	int change = 1;	u8 hp_slot;	u8 getstatus;	struct slot *p_slot;	dbg("%s:\n", __FUNCTION__);	while (change) {		change = 0;		for (loop = 0; loop < 10; loop++) {			if (ctrl->event_queue[loop].event_type != 0) {				dbg("%s:loop %x event_type %x\n", __FUNCTION__, loop, 					ctrl->event_queue[loop].event_type);				hp_slot = ctrl->event_queue[loop].hp_slot;				p_slot = shpchp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset);				dbg("%s: hp_slot %d, p_slot %p\n",						__FUNCTION__, hp_slot, p_slot);				if (ctrl->event_queue[loop].event_type == INT_BUTTON_CANCEL) {					dbg("%s: button cancel\n", __FUNCTION__);					del_timer(&p_slot->task_event);					switch (p_slot->state) {					case BLINKINGOFF_STATE:						/* Wait for exclusive access to hardware */						down(&ctrl->crit_sect);						p_slot->hpc_ops->green_led_on(p_slot);						/* Wait for the command to complete */						wait_for_ctrl_irq (ctrl);						p_slot->hpc_ops->set_attention_status(p_slot, 0);						/* Wait for the command to complete */						wait_for_ctrl_irq (ctrl);						/* Done with exclusive hardware access */						up(&ctrl->crit_sect);						break;					case BLINKINGON_STATE:						/* Wait for exclusive access to hardware */						down(&ctrl->crit_sect);						p_slot->hpc_ops->green_led_off(p_slot);						/* Wait for the command to complete */						wait_for_ctrl_irq (ctrl);						p_slot->hpc_ops->set_attention_status(p_slot, 0);						/* Wait for the command to complete */						wait_for_ctrl_irq (ctrl);						/* Done with exclusive hardware access */						up(&ctrl->crit_sect);						break;					default:						warn("Not a valid state\n");						return;					}					info(msg_button_cancel, p_slot->number);					p_slot->state = STATIC_STATE;				} else if (ctrl->event_queue[loop].event_type == INT_BUTTON_PRESS) {					/* Button Pressed (No action on 1st press...) */					dbg("%s: Button pressed\n", __FUNCTION__);					p_slot->hpc_ops->get_power_status(p_slot, &getstatus);					if (getstatus) {						/* slot is on */						dbg("%s: slot is on\n", __FUNCTION__);						p_slot->state = BLINKINGOFF_STATE;						info(msg_button_off, p_slot->number);					} else {						/* slot is off */						dbg("%s: slot is off\n", __FUNCTION__);						p_slot->state = BLINKINGON_STATE;						info(msg_button_on, p_slot->number);					}					/* Wait for exclusive access to hardware */					down(&ctrl->crit_sect);					/* blink green LED and turn off amber */					p_slot->hpc_ops->green_led_blink(p_slot);					/* Wait for the command to complete */					wait_for_ctrl_irq (ctrl);										p_slot->hpc_ops->set_attention_status(p_slot, 0);					/* Wait for the command to complete */					wait_for_ctrl_irq (ctrl);					/* Done with exclusive hardware access */					up(&ctrl->crit_sect);					init_timer(&p_slot->task_event);					p_slot->task_event.expires = jiffies + 5 * HZ;   /* 5 second delay */					p_slot->task_event.function = (void (*)(unsigned long)) pushbutton_helper_thread;					p_slot->task_event.data = (unsigned long) p_slot;					dbg("%s: add_timer p_slot = %p\n", __FUNCTION__,(void *) p_slot);					add_timer(&p_slot->task_event);				} else if (ctrl->event_queue[loop].event_type == INT_POWER_FAULT) {					/***********POWER FAULT********************/					dbg("%s: power fault\n", __FUNCTION__);					/* Wait for exclusive access to hardware */					down(&ctrl->crit_sect);					p_slot->hpc_ops->set_attention_status(p_slot, 1);					/* Wait for the command to complete */					wait_for_ctrl_irq (ctrl);										p_slot->hpc_ops->green_led_off(p_slot);					/* Wait for the command to complete */					wait_for_ctrl_irq (ctrl);					/* Done with exclusive hardware access */					up(&ctrl->crit_sect);				} else {					/* refresh notification */					if (p_slot)						update_slot_info(p_slot);				}				ctrl->event_queue[loop].event_type = 0;				change = 1;			}		}		/* End of FOR loop */	}	return;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7c8942f993dc069db0e0327a343bbec8a6e96074/shpchp_ctrl.c/clean/drivers/pci/hotplug/shpchp_ctrl.c