acpi_status		status = AE_OK; u32			value; struct acpi_ec		*ec = (struct acpi_ec *) data;  if (!ec) return ACPI_INTERRUPT_NOT_HANDLED;  acpi_disable_gpe(NULL, ec->gpe_bit, ACPI_ISR);  value = acpi_ec_read_status(ec);  if((value & ACPI_EC_FLAG_IBF) && !(value & ACPI_EC_FLAG_BURST) && (atomic_read(&ec->leaving_burst) == 0)) { /* * the embedded controller disables * burst mode for any reason other * than the burst disable command * to process critical event. */ atomic_set(&ec->leaving_burst , 2); /* block current pending transaction and retry */ wake_up(&ec->wait); }else { if ((ec->expect_event == ACPI_EC_EVENT_OBF && (value & ACPI_EC_FLAG_OBF)) || (ec->expect_event == ACPI_EC_EVENT_IBE && !(value & ACPI_EC_FLAG_IBF))) { ec->expect_event = 0; wake_up(&ec->wait); return ACPI_INTERRUPT_HANDLED; } }  if (value & ACPI_EC_FLAG_SCI){ atomic_add(1, &ec->pending_gpe) ; status = acpi_os_queue_for_execution(OSD_PRIORITY_GPE, acpi_ec_gpe_query, ec); return status == AE_OK ? ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED; } acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_ISR); return status == AE_OK ? ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED; 
if (acpi_ec_polling_mode) return acpi_ec_gpe_polling_handler(data); else return acpi_ec_gpe_burst_handler(data); 
acpi_ec_gpe_handler (	void			*data){	acpi_status		status = AE_OK;	u32			value;	struct acpi_ec		*ec = (struct acpi_ec *) data;	if (!ec)		return ACPI_INTERRUPT_NOT_HANDLED;	acpi_disable_gpe(NULL, ec->gpe_bit, ACPI_ISR);	value = acpi_ec_read_status(ec);	if((value & ACPI_EC_FLAG_IBF) &&		!(value & ACPI_EC_FLAG_BURST) &&			(atomic_read(&ec->leaving_burst) == 0)) { 	/*	 * the embedded controller disables 	 * burst mode for any reason other 	 * than the burst disable command	 * to process critical event.	 */		atomic_set(&ec->leaving_burst , 2); /* block current pending transaction					and retry */		wake_up(&ec->wait);	}else {		if ((ec->expect_event == ACPI_EC_EVENT_OBF &&				(value & ACPI_EC_FLAG_OBF)) ||	    			(ec->expect_event == ACPI_EC_EVENT_IBE &&				!(value & ACPI_EC_FLAG_IBF))) {			ec->expect_event = 0;			wake_up(&ec->wait);			return ACPI_INTERRUPT_HANDLED;		}	}	if (value & ACPI_EC_FLAG_SCI){		atomic_add(1, &ec->pending_gpe) ;		status = acpi_os_queue_for_execution(OSD_PRIORITY_GPE,						acpi_ec_gpe_query, ec);		return status == AE_OK ?		ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED;	} 	acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_ISR);	return status == AE_OK ?		ACPI_INTERRUPT_HANDLED : ACPI_INTERRUPT_NOT_HANDLED;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/45bea1555f5bf0cd5871b208b4b02d188f106861/ec.c/buggy/drivers/acpi/ec.c