Lines Matching full:region

4  * Module Name: evregion - Operation Region support
40 * an installed default region handler.
82 * PARAMETERS: region_obj - Internal region object
85 * region_offset - Where in the region to read or write
92 * DESCRIPTION: Dispatch an address space or operation region access to
95 * NOTE: During early initialization, we always install the default region
97 * region address spaces are always available as per the ACPI specification.
127 /* Ensure that there is a handler associated with this region */ in acpi_ev_address_space_dispatch()
129 handler_desc = region_obj->region.handler; in acpi_ev_address_space_dispatch()
132 "No handler for Region [%4.4s] (%p) [%s]", in acpi_ev_address_space_dispatch()
133 acpi_ut_get_node_name(region_obj->region.node), in acpi_ev_address_space_dispatch()
135 acpi_ut_get_region_name(region_obj->region. in acpi_ev_address_space_dispatch()
146 * It may be the case that the region has never been initialized. in acpi_ev_address_space_dispatch()
149 if (!(region_obj->region.flags & AOPOBJ_SETUP_COMPLETE)) { in acpi_ev_address_space_dispatch()
151 /* This region has not been initialized yet, do it */ in acpi_ev_address_space_dispatch()
159 "No init routine for region(%p) [%s]", in acpi_ev_address_space_dispatch()
161 acpi_ut_get_region_name(region_obj->region. in acpi_ev_address_space_dispatch()
166 if (region_obj->region.space_id == ACPI_ADR_SPACE_PLATFORM_COMM) { in acpi_ev_address_space_dispatch()
172 ctx->length = (u16)region_obj->region.length; in acpi_ev_address_space_dispatch()
173 ctx->subspace_id = (u8)region_obj->region.address; in acpi_ev_address_space_dispatch()
176 if (region_obj->region.space_id == in acpi_ev_address_space_dispatch()
181 ctx->length = region_obj->region.length; in acpi_ev_address_space_dispatch()
182 ctx->offset = region_obj->region.address; in acpi_ev_address_space_dispatch()
186 * We must exit the interpreter because the region setup will in acpi_ev_address_space_dispatch()
188 * for this region) in acpi_ev_address_space_dispatch()
199 /* Check for failure of the Region Setup */ in acpi_ev_address_space_dispatch()
203 "During region initialization: [%s]", in acpi_ev_address_space_dispatch()
205 region. in acpi_ev_address_space_dispatch()
210 /* Region initialization may have been completed by region_setup */ in acpi_ev_address_space_dispatch()
212 if (!(region_obj->region.flags & AOPOBJ_SETUP_COMPLETE)) { in acpi_ev_address_space_dispatch()
213 region_obj->region.flags |= AOPOBJ_SETUP_COMPLETE; in acpi_ev_address_space_dispatch()
217 * the handler for this particular region in acpi_ev_address_space_dispatch()
229 address = (region_obj->region.address + region_offset); in acpi_ev_address_space_dispatch()
233 &region_obj->region.handler->address_space, handler, in acpi_ev_address_space_dispatch()
235 acpi_ut_get_region_name(region_obj->region. in acpi_ev_address_space_dispatch()
267 if ((region_obj->region.space_id == ACPI_ADR_SPACE_GSBUS || in acpi_ev_address_space_dispatch()
268 region_obj->region.space_id == ACPI_ADR_SPACE_GPIO) && in acpi_ev_address_space_dispatch()
285 if (region_obj->region.space_id == ACPI_ADR_SPACE_GPIO) { in acpi_ev_address_space_dispatch()
302 acpi_ut_get_region_name(region_obj->region. in acpi_ev_address_space_dispatch()
309 if ((region_obj->region.space_id == ACPI_ADR_SPACE_EC) && in acpi_ev_address_space_dispatch()
333 * PARAMETERS: region_obj - Region Object
334 * acpi_ns_is_locked - Namespace Region Already Locked?
338 * DESCRIPTION: Break the association between the handler and the region
364 /* Get the address handler from the region object */ in acpi_ev_detach_region()
366 handler_obj = region_obj->region.handler; in acpi_ev_detach_region()
369 /* This region has no handler, all done */ in acpi_ev_detach_region()
374 /* Find this region in the handler's list */ in acpi_ev_detach_region()
382 /* Is this the correct Region? */ in acpi_ev_detach_region()
386 "Removing Region %p from address handler %p\n", in acpi_ev_detach_region()
391 *last_obj_ptr = obj_desc->region.next; in acpi_ev_detach_region()
392 obj_desc->region.next = NULL; /* Must clear field */ in acpi_ev_detach_region()
402 /* Now stop region accesses by executing the _REG method */ in acpi_ev_detach_region()
409 "from region _REG, [%s]", in acpi_ev_detach_region()
411 (region_obj->region.space_id))); in acpi_ev_detach_region()
423 * If the region has been activated, call the setup handler with in acpi_ev_detach_region()
426 if (region_obj->region.flags & AOPOBJ_SETUP_COMPLETE) { in acpi_ev_detach_region()
446 "from region handler - deactivate, [%s]", in acpi_ev_detach_region()
448 (region_obj->region. in acpi_ev_detach_region()
452 region_obj->region.flags &= in acpi_ev_detach_region()
457 * Remove handler reference in the region in acpi_ev_detach_region()
459 * NOTE: this doesn't mean that the region goes away, the region in acpi_ev_detach_region()
462 * If the region is on the handler's list, this must be the in acpi_ev_detach_region()
463 * region's handler in acpi_ev_detach_region()
465 region_obj->region.handler = NULL; in acpi_ev_detach_region()
473 last_obj_ptr = &obj_desc->region.next; in acpi_ev_detach_region()
474 obj_desc = obj_desc->region.next; in acpi_ev_detach_region()
480 "Circular handler list in region object %p", in acpi_ev_detach_region()
486 /* If we get here, the region was not in the handler's region list */ in acpi_ev_detach_region()
489 "Cannot remove region %p from address handler %p\n", in acpi_ev_detach_region()
500 * region_obj - Region Object
501 * acpi_ns_is_locked - Namespace Region Already Locked?
505 * DESCRIPTION: Create the association between the handler and the region
518 /* Install the region's handler */ in acpi_ev_attach_region()
520 if (region_obj->region.handler) { in acpi_ev_attach_region()
525 "Adding Region [%4.4s] %p to address handler %p [%s]\n", in acpi_ev_attach_region()
526 acpi_ut_get_node_name(region_obj->region.node), in acpi_ev_attach_region()
528 acpi_ut_get_region_name(region_obj->region. in acpi_ev_attach_region()
531 /* Link this region to the front of the handler's list */ in acpi_ev_attach_region()
533 region_obj->region.next = handler_obj->address_space.region_list; in acpi_ev_attach_region()
535 region_obj->region.handler = handler_obj; in acpi_ev_attach_region()
545 * PARAMETERS: region_obj - Region object
550 * DESCRIPTION: Execute _REG method for a region
569 region_obj->region.handler == NULL) { in acpi_ev_execute_reg_method()
579 * Find any "_REG" method associated with this region definition. in acpi_ev_execute_reg_method()
583 node = region_obj->region.node->parent; in acpi_ev_execute_reg_method()
590 * region definition. This will be executed when the handler is in acpi_ev_execute_reg_method()
624 * Operation region space ID Same value as region_obj->Region.space_id in acpi_ev_execute_reg_method()
631 acpi_ut_create_integer_object((u64)region_obj->region.space_id); in acpi_ev_execute_reg_method()
728 * no region. in acpi_ev_execute_reg_methods()
748 * DESCRIPTION: Run _REG method for region objects of the requested spaceID
788 /* Object is a Region */ in acpi_ev_reg_run()
790 if (obj_desc->region.space_id != info->space_id) { in acpi_ev_reg_run()
792 /* This region is for a different address space, just ignore it */ in acpi_ev_reg_run()
812 * device. This is a _REG method that has no corresponding region
817 * an actual Operation Region with the correct address space ID.
851 * Execute the _REG method only if there is no Operation Region in in acpi_ev_execute_orphan_reg_method()
861 (next_node->object->region.space_id == space_id)) { in acpi_ev_execute_orphan_reg_method()