Lines Matching refs:gpe_block
54 acpi_ev_install_gpe_block(struct acpi_gpe_block_info *gpe_block,
58 acpi_ev_create_gpe_info_blocks(struct acpi_gpe_block_info *gpe_block);
75 acpi_ev_install_gpe_block(struct acpi_gpe_block_info *gpe_block, in acpi_ev_install_gpe_block() argument
105 next_gpe_block->next = gpe_block; in acpi_ev_install_gpe_block()
106 gpe_block->previous = next_gpe_block; in acpi_ev_install_gpe_block()
108 gpe_xrupt_block->gpe_block_list_head = gpe_block; in acpi_ev_install_gpe_block()
111 gpe_block->xrupt_block = gpe_xrupt_block; in acpi_ev_install_gpe_block()
131 acpi_status acpi_ev_delete_gpe_block(struct acpi_gpe_block_info *gpe_block) in acpi_ev_delete_gpe_block() argument
146 acpi_hw_disable_gpe_block(gpe_block->xrupt_block, gpe_block, NULL); in acpi_ev_delete_gpe_block()
148 if (!gpe_block->previous && !gpe_block->next) { in acpi_ev_delete_gpe_block()
152 status = acpi_ev_delete_gpe_xrupt(gpe_block->xrupt_block); in acpi_ev_delete_gpe_block()
160 if (gpe_block->previous) { in acpi_ev_delete_gpe_block()
161 gpe_block->previous->next = gpe_block->next; in acpi_ev_delete_gpe_block()
163 gpe_block->xrupt_block->gpe_block_list_head = in acpi_ev_delete_gpe_block()
164 gpe_block->next; in acpi_ev_delete_gpe_block()
167 if (gpe_block->next) { in acpi_ev_delete_gpe_block()
168 gpe_block->next->previous = gpe_block->previous; in acpi_ev_delete_gpe_block()
173 acpi_current_gpe_count -= gpe_block->gpe_count; in acpi_ev_delete_gpe_block()
177 ACPI_FREE(gpe_block->register_info); in acpi_ev_delete_gpe_block()
178 ACPI_FREE(gpe_block->event_info); in acpi_ev_delete_gpe_block()
179 ACPI_FREE(gpe_block); in acpi_ev_delete_gpe_block()
199 acpi_ev_create_gpe_info_blocks(struct acpi_gpe_block_info *gpe_block) in acpi_ev_create_gpe_info_blocks() argument
213 gpe_register_info = ACPI_ALLOCATE_ZEROED((acpi_size) gpe_block-> in acpi_ev_create_gpe_info_blocks()
227 gpe_event_info = ACPI_ALLOCATE_ZEROED((acpi_size) gpe_block->gpe_count * in acpi_ev_create_gpe_info_blocks()
239 gpe_block->register_info = gpe_register_info; in acpi_ev_create_gpe_info_blocks()
240 gpe_block->event_info = gpe_event_info; in acpi_ev_create_gpe_info_blocks()
251 for (i = 0; i < gpe_block->register_count; i++) { in acpi_ev_create_gpe_info_blocks()
256 (gpe_block->block_base_number + in acpi_ev_create_gpe_info_blocks()
259 this_register->status_address.address = gpe_block->address + i; in acpi_ev_create_gpe_info_blocks()
262 gpe_block->address + i + gpe_block->register_count; in acpi_ev_create_gpe_info_blocks()
264 this_register->status_address.space_id = gpe_block->space_id; in acpi_ev_create_gpe_info_blocks()
265 this_register->enable_address.space_id = gpe_block->space_id; in acpi_ev_create_gpe_info_blocks()
341 struct acpi_gpe_block_info *gpe_block; in acpi_ev_create_gpe_block() local
352 gpe_block = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_gpe_block_info)); in acpi_ev_create_gpe_block()
353 if (!gpe_block) { in acpi_ev_create_gpe_block()
359 gpe_block->address = address; in acpi_ev_create_gpe_block()
360 gpe_block->space_id = space_id; in acpi_ev_create_gpe_block()
361 gpe_block->node = gpe_device; in acpi_ev_create_gpe_block()
362 gpe_block->gpe_count = (u16)(register_count * ACPI_GPE_REGISTER_WIDTH); in acpi_ev_create_gpe_block()
363 gpe_block->initialized = FALSE; in acpi_ev_create_gpe_block()
364 gpe_block->register_count = register_count; in acpi_ev_create_gpe_block()
365 gpe_block->block_base_number = gpe_block_base_number; in acpi_ev_create_gpe_block()
371 status = acpi_ev_create_gpe_info_blocks(gpe_block); in acpi_ev_create_gpe_block()
373 ACPI_FREE(gpe_block); in acpi_ev_create_gpe_block()
379 status = acpi_ev_install_gpe_block(gpe_block, interrupt_number); in acpi_ev_create_gpe_block()
381 ACPI_FREE(gpe_block->register_info); in acpi_ev_create_gpe_block()
382 ACPI_FREE(gpe_block->event_info); in acpi_ev_create_gpe_block()
383 ACPI_FREE(gpe_block); in acpi_ev_create_gpe_block()
391 walk_info.gpe_block = gpe_block; in acpi_ev_create_gpe_block()
403 (*return_gpe_block) = gpe_block; in acpi_ev_create_gpe_block()
408 (u32)gpe_block->block_base_number, in acpi_ev_create_gpe_block()
409 (u32)(gpe_block->block_base_number + in acpi_ev_create_gpe_block()
410 (gpe_block->gpe_count - 1)), in acpi_ev_create_gpe_block()
411 gpe_device->name.ascii, gpe_block->register_count, in acpi_ev_create_gpe_block()
418 acpi_current_gpe_count += gpe_block->gpe_count; in acpi_ev_create_gpe_block()
438 struct acpi_gpe_block_info *gpe_block, in acpi_ev_initialize_gpe_block() argument
454 if (!gpe_block || gpe_block->initialized) { in acpi_ev_initialize_gpe_block()
465 for (i = 0; i < gpe_block->register_count; i++) { in acpi_ev_initialize_gpe_block()
471 gpe_event_info = &gpe_block->event_info[gpe_index]; in acpi_ev_initialize_gpe_block()
492 gpe_block->block_base_number)); in acpi_ev_initialize_gpe_block()
503 gpe_enabled_count, (u32)gpe_block->block_base_number, in acpi_ev_initialize_gpe_block()
504 (u32)(gpe_block->block_base_number + in acpi_ev_initialize_gpe_block()
505 (gpe_block->gpe_count - 1)))); in acpi_ev_initialize_gpe_block()
508 gpe_block->initialized = TRUE; in acpi_ev_initialize_gpe_block()