2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-22 20:23:57 +08:00

i2c: nvidia-gpu: Switch to use i2c_new_ccgx_ucsi()

Instead of open coded variant switch to use i2c_new_ccgx_ucsi().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
This commit is contained in:
Andy Shevchenko 2022-01-05 16:19:32 +02:00 committed by Wolfram Sang
parent 4ebf4987c0
commit 2079563d6f
2 changed files with 7 additions and 20 deletions

View File

@ -253,6 +253,7 @@ config I2C_NFORCE2_S4985
config I2C_NVIDIA_GPU config I2C_NVIDIA_GPU
tristate "NVIDIA GPU I2C controller" tristate "NVIDIA GPU I2C controller"
depends on PCI depends on PCI
select I2C_CCGX_UCSI
help help
If you say yes to this option, support will be included for the If you say yes to this option, support will be included for the
NVIDIA GPU I2C controller which is used to communicate with the GPU's NVIDIA GPU I2C controller which is used to communicate with the GPU's

View File

@ -17,6 +17,8 @@
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include "i2c-ccgx-ucsi.h"
/* I2C definitions */ /* I2C definitions */
#define I2C_MST_CNTL 0x00 #define I2C_MST_CNTL 0x00
#define I2C_MST_CNTL_GEN_START BIT(0) #define I2C_MST_CNTL_GEN_START BIT(0)
@ -266,23 +268,6 @@ static const struct software_node ccgx_node = {
.properties = ccgx_props, .properties = ccgx_props,
}; };
static int gpu_populate_client(struct gpu_i2c_dev *i2cd, int irq)
{
i2cd->gpu_ccgx_ucsi = devm_kzalloc(i2cd->dev,
sizeof(*i2cd->gpu_ccgx_ucsi),
GFP_KERNEL);
if (!i2cd->gpu_ccgx_ucsi)
return -ENOMEM;
strlcpy(i2cd->gpu_ccgx_ucsi->type, "ccgx-ucsi",
sizeof(i2cd->gpu_ccgx_ucsi->type));
i2cd->gpu_ccgx_ucsi->addr = 0x8;
i2cd->gpu_ccgx_ucsi->irq = irq;
i2cd->gpu_ccgx_ucsi->swnode = &ccgx_node;
i2cd->ccgx_client = i2c_new_client_device(&i2cd->adapter, i2cd->gpu_ccgx_ucsi);
return PTR_ERR_OR_ZERO(i2cd->ccgx_client);
}
static int gpu_i2c_probe(struct pci_dev *pdev, const struct pci_device_id *id) static int gpu_i2c_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ {
struct gpu_i2c_dev *i2cd; struct gpu_i2c_dev *i2cd;
@ -328,9 +313,10 @@ static int gpu_i2c_probe(struct pci_dev *pdev, const struct pci_device_id *id)
if (status < 0) if (status < 0)
goto free_irq_vectors; goto free_irq_vectors;
status = gpu_populate_client(i2cd, pdev->irq); i2cd->ccgx_client = i2c_new_ccgx_ucsi(&i2cd->adapter, pdev->irq, &ccgx_node);
if (status < 0) { if (IS_ERR(i2cd->ccgx_client)) {
dev_err(&pdev->dev, "gpu_populate_client failed %d\n", status); status = dev_err_probe(&pdev->dev, PTR_ERR(i2cd->ccgx_client),
"register UCSI failed\n");
goto del_adapter; goto del_adapter;
} }