162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Instantiate UCSI device for Cypress CCGx Type-C controller. 462306a36Sopenharmony_ci * Derived from i2c-designware-pcidrv.c and i2c-nvidia-gpu.c. 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/i2c.h> 862306a36Sopenharmony_ci#include <linux/export.h> 962306a36Sopenharmony_ci#include <linux/module.h> 1062306a36Sopenharmony_ci#include <linux/string.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include "i2c-ccgx-ucsi.h" 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cistruct software_node; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cistruct i2c_client *i2c_new_ccgx_ucsi(struct i2c_adapter *adapter, int irq, 1762306a36Sopenharmony_ci const struct software_node *swnode) 1862306a36Sopenharmony_ci{ 1962306a36Sopenharmony_ci struct i2c_board_info info = {}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci strscpy(info.type, "ccgx-ucsi", sizeof(info.type)); 2262306a36Sopenharmony_ci info.addr = 0x08; 2362306a36Sopenharmony_ci info.irq = irq; 2462306a36Sopenharmony_ci info.swnode = swnode; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci return i2c_new_client_device(adapter, &info); 2762306a36Sopenharmony_ci} 2862306a36Sopenharmony_ciEXPORT_SYMBOL_GPL(i2c_new_ccgx_ucsi); 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 31