/* * Copyright 2022, Haiku, Inc. * Distributed under the terms of the MIT License. */ #include "ocores_i2c.h" device_manager_info* gDeviceManager; i2c_for_controller_interface* gI2c; i2c_sim_interface gOcoresI2cDriver = { .info = { .info = { .name = OCORES_I2C_DRIVER_MODULE_NAME, }, .supports_device = [](device_node* parent) { return OcoresI2c::SupportsDevice(parent); }, .register_device = [](device_node* parent) { return OcoresI2c::RegisterDevice(parent); }, .init_driver = [](device_node* node, void** driverCookie) { return OcoresI2c::InitDriver(node, *(OcoresI2c**)driverCookie); }, .uninit_driver = [](void* driverCookie) { return static_cast(driverCookie)->UninitDriver(); }, }, .set_i2c_bus = [](i2c_bus_cookie cookie, i2c_bus bus) { static_cast(cookie)->SetI2cBus(bus); }, .exec_command = [](i2c_bus_cookie cookie, i2c_op op, i2c_addr slaveAddress, const void *cmdBuffer, size_t cmdLength, void* dataBuffer, size_t dataLength) { return static_cast(cookie)->ExecCommand(op, slaveAddress, (const uint8*)cmdBuffer, cmdLength, (uint8*)dataBuffer, dataLength); }, .acquire_bus = [](i2c_bus_cookie cookie) { return static_cast(cookie)->AcquireBus(); }, .release_bus = [](i2c_bus_cookie cookie) { static_cast(cookie)->ReleaseBus(); }, }; _EXPORT module_dependency module_dependencies[] = { { B_DEVICE_MANAGER_MODULE_NAME, (module_info**)&gDeviceManager }, { I2C_FOR_CONTROLLER_MODULE_NAME, (module_info**)&gI2c }, {} }; _EXPORT module_info *modules[] = { (module_info *)&gOcoresI2cDriver, NULL };