static acpi_status aml_nfw_handler()

in hp/common/aml_nfw.c [112:138]


static acpi_status aml_nfw_handler(u32 function, acpi_physical_address address,
	u32 bit_width, u64 *value, void *handler_context,
	void *region_context)
{
	struct ia64_nfw_context *context = handler_context;
	u8 *offset = (u8 *) context + address;

	if (bit_width !=  8 && bit_width != 16 &&
	    bit_width != 32 && bit_width != 64)
		return AE_BAD_PARAMETER;

	if (address + (bit_width >> 3) > sizeof(struct ia64_nfw_context))
		return AE_BAD_PARAMETER;

	switch (function) {
	case ACPI_READ:
		if (address == offsetof(struct ia64_nfw_context, ret))
			aml_nfw_execute(context);
		aml_nfw_read_arg(offset, bit_width, value);
		break;
	case ACPI_WRITE:
		aml_nfw_write_arg(offset, bit_width, value);
		break;
	}

	return AE_OK;
}