Lines Matching +full:dev +full:- +full:handle
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
40 #include <contrib/dev/acpica/include/acpi.h>
41 #include <contrib/dev/acpica/include/accommon.h>
42 #include <contrib/dev/acpica/include/amlcode.h>
43 #include <dev/acpica/acpivar.h>
45 #include <dev/spibus/spibusvar.h>
65 ACPI_HANDLE handle; member
71 return (res->Type == ACPI_RESOURCE_TYPE_SERIAL_BUS && in acpi_resource_is_spi_serialbus()
72 res->Data.CommonSerialBus.Type == ACPI_RESOURCE_SERIAL_TYPE_SPI); in acpi_resource_is_spi_serialbus()
80 ACPI_HANDLE handle; in acpi_spibus_get_acpi_res_cb() local
84 res->Data.SpiSerialBus.ResourceSource.StringPtr, &handle); in acpi_spibus_get_acpi_res_cb()
87 memcpy(sb, &res->Data.SpiSerialBus, in acpi_spibus_get_acpi_res_cb()
93 sb->ResourceSource_Handle = handle; in acpi_spibus_get_acpi_res_cb()
95 } else if (res->Type == ACPI_RESOURCE_TYPE_END_TAG) in acpi_spibus_get_acpi_res_cb()
102 acpi_spibus_dump_res(device_t dev, ACPI_SPIBUS_RESOURCE_SPI_SERIALBUS *sb) in acpi_spibus_dump_res() argument
104 device_printf(dev, "found ACPI child\n"); in acpi_spibus_dump_res()
105 printf(" DeviceSelection: 0x%04hx\n", sb->DeviceSelection); in acpi_spibus_dump_res()
106 printf(" ConnectionSpeed: %uHz\n", sb->ConnectionSpeed); in acpi_spibus_dump_res()
108 sb->WireMode == ACPI_SPI_4WIRE_MODE ? in acpi_spibus_dump_res()
111 sb->DevicePolarity == ACPI_SPI_ACTIVE_LOW ? in acpi_spibus_dump_res()
113 printf(" DataBitLength: %uBit\n", sb->DataBitLength); in acpi_spibus_dump_res()
115 sb->ClockPhase == ACPI_SPI_FIRST_PHASE ? in acpi_spibus_dump_res()
118 sb->ClockPolarity == ACPI_SPI_START_LOW ? in acpi_spibus_dump_res()
121 sb->SlaveMode == ACPI_CONTROLLER_INITIATED ? in acpi_spibus_dump_res()
123 printf(" ConnectionSharing: %s\n", sb->ConnectionSharing == 0 ? in acpi_spibus_dump_res()
128 acpi_spibus_get_acpi_res(device_t spibus, ACPI_HANDLE dev, in acpi_spibus_get_acpi_res() argument
138 if (ACPI_FAILURE(AcpiWalkResources(dev, "_CRS", in acpi_spibus_get_acpi_res()
154 res->cs = sb.DeviceSelection - 1; in acpi_spibus_get_acpi_res()
156 res->cs = sb.DeviceSelection; in acpi_spibus_get_acpi_res()
157 res->mode = in acpi_spibus_get_acpi_res()
160 res->clock = sb.ConnectionSpeed; in acpi_spibus_get_acpi_res()
167 acpi_spibus_get_apple_res(device_t spibus, ACPI_HANDLE dev, in acpi_spibus_get_apple_res() argument
170 /* a0b5b7c6-1318-441c-b0c9-fe695eaf949b */ in acpi_spibus_get_apple_res()
182 if (ACPI_FAILURE(AcpiGetParent(dev, &parent))) in acpi_spibus_get_apple_res()
186 if (ACPI_FAILURE(acpi_EvaluateDSMTyped(dev, apple_guid, in acpi_spibus_get_apple_res()
191 if (pkg->Package.Count % 2 != 0) { in acpi_spibus_get_apple_res()
193 pkg->Package.Count); in acpi_spibus_get_apple_res()
201 for (comp = pkg->Package.Elements; in acpi_spibus_get_apple_res()
202 comp < pkg->Package.Elements + pkg->Package.Count; in acpi_spibus_get_apple_res()
220 ivar->clock = 1000000000 / val; in acpi_spibus_get_apple_res()
223 ivar->mode |= SPIBUS_MODE_CPOL; in acpi_spibus_get_apple_res()
226 ivar->mode |= SPIBUS_MODE_CPHA; in acpi_spibus_get_apple_res()
228 ivar->cs_delay = val; in acpi_spibus_get_apple_res()
239 acpi_spibus_delete_acpi_child(ACPI_HANDLE handle) in acpi_spibus_delete_acpi_child() argument
244 acpi_child = acpi_get_device(handle); in acpi_spibus_delete_acpi_child()
261 acpi_spibus_add_child(device_t dev, u_int order, const char *name, int unit) in acpi_spibus_add_child() argument
264 dev, order, name, unit, sizeof(struct acpi_spibus_ivar))); in acpi_spibus_add_child()
268 acpi_spibus_enumerate_child(ACPI_HANDLE handle, UINT32 level, in acpi_spibus_enumerate_child() argument
283 if (!ACPI_FAILURE(acpi_GetInteger(handle, "_STA", &sta)) && in acpi_spibus_enumerate_child()
287 if (!acpi_has_hid(handle)) in acpi_spibus_enumerate_child()
291 if (acpi_spibus_get_acpi_res(spibus, handle, &res) == 0) in acpi_spibus_enumerate_child()
295 acpi_spibus_get_apple_res(spibus, handle, &res) == 0) in acpi_spibus_enumerate_child()
302 if (acpi_spibus_delete_acpi_child(handle) != 0) in acpi_spibus_enumerate_child()
305 child = BUS_ADD_CHILD(spibus, 0, NULL, -1); in acpi_spibus_enumerate_child()
315 acpi_set_handle(child, handle); in acpi_spibus_enumerate_child()
316 acpi_parse_resources(child, handle, &acpi_res_parse_set, NULL); in acpi_spibus_enumerate_child()
319 * Update ACPI-CA to use the IIC enumerated device_t for this handle. in acpi_spibus_enumerate_child()
321 status = AcpiAttachData(handle, acpi_fake_objhandler, child); in acpi_spibus_enumerate_child()
323 printf("WARNING: Unable to attach object data to %s - %s\n", in acpi_spibus_enumerate_child()
324 acpi_name(handle), AcpiFormatException(status)); in acpi_spibus_enumerate_child()
330 acpi_spibus_enumerate_children(device_t dev) in acpi_spibus_enumerate_children() argument
333 ACPI_UINT32_MAX, acpi_spibus_enumerate_child, NULL, dev, NULL)); in acpi_spibus_enumerate_children()
337 acpi_spibus_set_power_children(device_t dev, int state, bool all_children) in acpi_spibus_set_power_children() argument
342 if (device_get_children(dev, &devlist, &numdevs) != 0) in acpi_spibus_set_power_children()
353 acpi_spibus_probe(device_t dev) in acpi_spibus_probe() argument
355 ACPI_HANDLE handle; in acpi_spibus_probe() local
361 controller = device_get_parent(dev); in acpi_spibus_probe()
365 handle = acpi_get_handle(controller); in acpi_spibus_probe()
366 if (handle == NULL) in acpi_spibus_probe()
369 device_set_desc(dev, "SPI bus (ACPI-hinted)"); in acpi_spibus_probe()
374 acpi_spibus_attach(device_t dev) in acpi_spibus_attach() argument
385 if (ACPI_FAILURE(acpi_spibus_enumerate_children(dev))) in acpi_spibus_attach()
386 device_printf(dev, "children enumeration failed\n"); in acpi_spibus_attach()
388 acpi_spibus_set_power_children(dev, ACPI_STATE_D0, true); in acpi_spibus_attach()
389 return (spibus_attach(dev)); in acpi_spibus_attach()
393 acpi_spibus_detach(device_t dev) in acpi_spibus_detach() argument
395 acpi_spibus_set_power_children(dev, ACPI_STATE_D3, false); in acpi_spibus_detach()
397 return (bus_generic_detach(dev)); in acpi_spibus_detach()
401 acpi_spibus_suspend(device_t dev) in acpi_spibus_suspend() argument
403 acpi_spibus_set_power_children(dev, ACPI_STATE_D3, false); in acpi_spibus_suspend()
405 return (bus_generic_suspend(dev)); in acpi_spibus_suspend()
409 acpi_spibus_resume(device_t dev) in acpi_spibus_resume() argument
411 acpi_spibus_set_power_children(dev, ACPI_STATE_D0, false); in acpi_spibus_resume()
413 return (bus_generic_resume(dev)); in acpi_spibus_resume()
419 acpi_spibus_alloc_resource(device_t dev, device_t child, int type, int *rid, in acpi_spibus_alloc_resource() argument
426 if (device_get_parent(child) != dev) in acpi_spibus_alloc_resource()
427 return (BUS_ALLOC_RESOURCE(device_get_parent(dev), child, in acpi_spibus_alloc_resource()
430 rl = BUS_GET_RESOURCE_LIST(dev, child); in acpi_spibus_alloc_resource()
434 res = resource_list_alloc(rl, dev, child, type, rid, in acpi_spibus_alloc_resource()
459 acpi_spibus_driver_added(device_t dev, driver_t *driver) in acpi_spibus_driver_added() argument
464 DEVICE_IDENTIFY(driver, dev); in acpi_spibus_driver_added()
465 if (device_get_children(dev, &devlist, &numdevs) != 0) in acpi_spibus_driver_added()
484 if (acpi_get_device(devi->handle) == child) in acpi_spibus_child_deleted()
485 AcpiDetachData(devi->handle, acpi_fake_objhandler); in acpi_spibus_child_deleted()
495 *res = (uintptr_t)devi->handle; in acpi_spibus_read_ivar()
511 if (devi->handle != NULL) in acpi_spibus_write_ivar()
513 devi->handle = (ACPI_HANDLE)val; in acpi_spibus_write_ivar()
535 if (devi->handle != NULL) in acpi_spibus_child_location()
536 sbuf_printf(sb, " handle=%s", acpi_name(devi->handle)); in acpi_spibus_child_location()
548 devi->handle == NULL ? ENOTSUP : acpi_pnpinfo(devi->handle, sb)); in acpi_spibus_child_pnpinfo()