/* * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2022 starfivetech.com * * Authors: * Minda Chen */ #include #include #include #include #include #include #include static int fdt_dw_i2c_init(const void *fdt, int nodeoff, const struct fdt_match *match) { int rc; struct dw_i2c_adapter *adapter; u64 addr; adapter = sbi_zalloc(sizeof(*adapter)); if (!adapter) return SBI_ENOMEM; rc = fdt_get_node_addr_size(fdt, nodeoff, 0, &addr, NULL); if (rc) { sbi_free(adapter); return rc; } adapter->addr = addr; rc = dw_i2c_init(&adapter->adapter, nodeoff); if (rc) { sbi_free(adapter); return rc; } return 0; } static const struct fdt_match fdt_dw_i2c_match[] = { { .compatible = "snps,designware-i2c" }, { .compatible = "starfive,jh7110-i2c" }, { }, }; const struct fdt_driver fdt_i2c_adapter_dw = { .match_table = fdt_dw_i2c_match, .init = fdt_dw_i2c_init, };