struct acpi_ec		*ec, 
union acpi_ec		*ec, 
acpi_ec_query (	struct acpi_ec		*ec,	u32			*data){	int			status = 0;	u32			glk;	ACPI_FUNCTION_TRACE("acpi_ec_query");	if (!ec || !data)		return_VALUE(-EINVAL);	*data = 0;	if (ec->global_lock) {		status = acpi_acquire_global_lock(ACPI_EC_UDELAY_GLK, &glk);		if (ACPI_FAILURE(status))			return_VALUE(-ENODEV);	}	down(&ec->sem);	if(acpi_ec_enter_burst_mode(ec))		goto end;	/*	 * Query the EC to find out which _Qxx method we need to evaluate.	 * Note that successful completion of the query causes the ACPI_EC_SCI	 * bit to be cleared (and thus clearing the interrupt source).	 */	acpi_hw_low_level_write(8, ACPI_EC_COMMAND_QUERY, &ec->command_addr);	status = acpi_ec_wait(ec, ACPI_EC_EVENT_OBF);	if (status){		acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR);		goto end;	}	acpi_hw_low_level_read(8, data, &ec->data_addr);	acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR);	if (!*data)		status = -ENODATA;end:	acpi_ec_leave_burst_mode(ec);	up(&ec->sem);	if (ec->global_lock)		acpi_release_global_lock(glk);	if(atomic_read(&ec->leaving_burst) == 2){		ACPI_DEBUG_PRINT((ACPI_DB_INFO,"aborted, retry ...\n"));		acpi_enable_gpe(NULL, ec->gpe_bit, ACPI_NOT_ISR);		status = -ENODATA;	}	return_VALUE(status);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/45bea1555f5bf0cd5871b208b4b02d188f106861/ec.c/buggy/drivers/acpi/ec.c