18bc9c9e2SClément Léger // SPDX-License-Identifier: BSD-2-Clause 28bc9c9e2SClément Léger /* 38bc9c9e2SClément Léger * Copyright 2023 Microchip 48bc9c9e2SClément Léger */ 58bc9c9e2SClément Léger 68bc9c9e2SClément Léger #include <drivers/i2c.h> 78bc9c9e2SClément Léger #include <kernel/dt.h> 88bc9c9e2SClément Léger #include <kernel/dt_driver.h> 98bc9c9e2SClément Léger #include <libfdt.h> 108bc9c9e2SClément Léger #include <malloc.h> 118bc9c9e2SClément Léger #include <tee_api_defines_extensions.h> 128bc9c9e2SClément Léger #include <tee_api_types.h> 138bc9c9e2SClément Léger #include <trace.h> 148bc9c9e2SClément Léger #include <types_ext.h> 158bc9c9e2SClément Léger 168bc9c9e2SClément Léger struct i2c_dev *i2c_create_dev(struct i2c_ctrl *i2c_ctrl, const void *fdt, 178bc9c9e2SClément Léger int node) 188bc9c9e2SClément Léger { 198bc9c9e2SClément Léger struct i2c_dev *i2c_dev = NULL; 20*11e45789SEtienne Carriere paddr_t addr = fdt_reg_base_address(fdt, node); 218bc9c9e2SClément Léger 228bc9c9e2SClément Léger if (addr == DT_INFO_INVALID_REG) 238bc9c9e2SClément Léger return NULL; 248bc9c9e2SClément Léger 258bc9c9e2SClément Léger i2c_dev = calloc(1, sizeof(struct i2c_dev)); 268bc9c9e2SClément Léger if (!i2c_dev) 278bc9c9e2SClément Léger return NULL; 288bc9c9e2SClément Léger 298bc9c9e2SClément Léger i2c_dev->addr = addr; 308bc9c9e2SClément Léger i2c_dev->ctrl = i2c_ctrl; 318bc9c9e2SClément Léger 328bc9c9e2SClément Léger return i2c_dev; 338bc9c9e2SClément Léger } 34