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