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 <libfdt.h> 98bc9c9e2SClément Léger #include <malloc.h> 108bc9c9e2SClément Léger #include <tee_api_defines_extensions.h> 118bc9c9e2SClément Léger #include <tee_api_types.h> 128bc9c9e2SClément Léger #include <trace.h> 138bc9c9e2SClément Léger #include <types_ext.h> 148bc9c9e2SClément Léger i2c_create_dev(struct i2c_ctrl * i2c_ctrl,const void * fdt,int node)158bc9c9e2SClément Légerstruct i2c_dev *i2c_create_dev(struct i2c_ctrl *i2c_ctrl, const void *fdt, 168bc9c9e2SClément Léger int node) 178bc9c9e2SClément Léger { 188bc9c9e2SClément Léger struct i2c_dev *i2c_dev = NULL; 19*11e45789SEtienne Carriere paddr_t addr = fdt_reg_base_address(fdt, node); 208bc9c9e2SClément Léger 218bc9c9e2SClément Léger if (addr == DT_INFO_INVALID_REG) 228bc9c9e2SClément Léger return NULL; 238bc9c9e2SClément Léger 248bc9c9e2SClément Léger i2c_dev = calloc(1, sizeof(struct i2c_dev)); 258bc9c9e2SClément Léger if (!i2c_dev) 268bc9c9e2SClément Léger return NULL; 278bc9c9e2SClément Léger 288bc9c9e2SClément Léger i2c_dev->addr = addr; 298bc9c9e2SClément Léger i2c_dev->ctrl = i2c_ctrl; 308bc9c9e2SClément Léger 318bc9c9e2SClément Léger return i2c_dev; 328bc9c9e2SClément Léger } 33