Skip to content

Commit

Permalink
platform/x86: intel_pmc_ipc: Convert to use platform_device_register_…
Browse files Browse the repository at this point in the history
…full

Use platform_device_register_full() instead of open-coded.

Signed-off-by: Axel Lin <[email protected]>
Signed-off-by: Darren Hart <[email protected]>
  • Loading branch information
AxelLin authored and dvhart committed Sep 28, 2016
1 parent b564353 commit ea1a76b
Showing 1 changed file with 33 additions and 77 deletions.
110 changes: 33 additions & 77 deletions drivers/platform/x86/intel_pmc_ipc.c
Original file line number Diff line number Diff line change
Expand Up @@ -522,48 +522,36 @@ static struct resource telemetry_res[] = {
static int ipc_create_punit_device(void)
{
struct platform_device *pdev;
int ret;

pdev = platform_device_alloc(PUNIT_DEVICE_NAME, -1);
if (!pdev) {
dev_err(ipcdev.dev, "Failed to alloc punit platform device\n");
return -ENOMEM;
}

pdev->dev.parent = ipcdev.dev;
ret = platform_device_add_resources(pdev, punit_res_array,
ARRAY_SIZE(punit_res_array));
if (ret) {
dev_err(ipcdev.dev, "Failed to add platform punit resources\n");
goto err;
}
const struct platform_device_info pdevinfo = {
.parent = ipcdev.dev,
.name = PUNIT_DEVICE_NAME,
.id = -1,
.res = punit_res_array,
.num_res = ARRAY_SIZE(punit_res_array),
};

pdev = platform_device_register_full(&pdevinfo);
if (IS_ERR(pdev))
return PTR_ERR(pdev);

ret = platform_device_add(pdev);
if (ret) {
dev_err(ipcdev.dev, "Failed to add punit platform device\n");
goto err;
}
ipcdev.punit_dev = pdev;

return 0;
err:
platform_device_put(pdev);
return ret;
}

static int ipc_create_tco_device(void)
{
struct platform_device *pdev;
struct resource *res;
int ret;

pdev = platform_device_alloc(TCO_DEVICE_NAME, -1);
if (!pdev) {
dev_err(ipcdev.dev, "Failed to alloc tco platform device\n");
return -ENOMEM;
}

pdev->dev.parent = ipcdev.dev;
const struct platform_device_info pdevinfo = {
.parent = ipcdev.dev,
.name = TCO_DEVICE_NAME,
.id = -1,
.res = tco_res,
.num_res = ARRAY_SIZE(tco_res),
.data = &tco_info,
.size_data = sizeof(tco_info),
};

res = tco_res + TCO_RESOURCE_ACPI_IO;
res->start = ipcdev.acpi_io_base + TCO_BASE_OFFSET;
Expand All @@ -577,45 +565,26 @@ static int ipc_create_tco_device(void)
res->start = ipcdev.gcr_base + TCO_PMC_OFFSET;
res->end = res->start + TCO_PMC_SIZE - 1;

ret = platform_device_add_resources(pdev, tco_res, ARRAY_SIZE(tco_res));
if (ret) {
dev_err(ipcdev.dev, "Failed to add tco platform resources\n");
goto err;
}

ret = platform_device_add_data(pdev, &tco_info, sizeof(tco_info));
if (ret) {
dev_err(ipcdev.dev, "Failed to add tco platform data\n");
goto err;
}
pdev = platform_device_register_full(&pdevinfo);
if (IS_ERR(pdev))
return PTR_ERR(pdev);

ret = platform_device_add(pdev);
if (ret) {
dev_err(ipcdev.dev, "Failed to add tco platform device\n");
goto err;
}
ipcdev.tco_dev = pdev;

return 0;
err:
platform_device_put(pdev);
return ret;
}

static int ipc_create_telemetry_device(void)
{
struct platform_device *pdev;
struct resource *res;
int ret;

pdev = platform_device_alloc(TELEMETRY_DEVICE_NAME, -1);
if (!pdev) {
dev_err(ipcdev.dev,
"Failed to allocate telemetry platform device\n");
return -ENOMEM;
}

pdev->dev.parent = ipcdev.dev;
const struct platform_device_info pdevinfo = {
.parent = ipcdev.dev,
.name = TELEMETRY_DEVICE_NAME,
.id = -1,
.res = telemetry_res,
.num_res = ARRAY_SIZE(telemetry_res),
};

res = telemetry_res + TELEMETRY_RESOURCE_PUNIT_SSRAM;
res->start = ipcdev.telem_punit_ssram_base;
Expand All @@ -625,26 +594,13 @@ static int ipc_create_telemetry_device(void)
res->start = ipcdev.telem_pmc_ssram_base;
res->end = res->start + ipcdev.telem_pmc_ssram_size - 1;

ret = platform_device_add_resources(pdev, telemetry_res,
ARRAY_SIZE(telemetry_res));
if (ret) {
dev_err(ipcdev.dev,
"Failed to add telemetry platform resources\n");
goto err;
}
pdev = platform_device_register_full(&pdevinfo);
if (IS_ERR(pdev))
return PTR_ERR(pdev);

ret = platform_device_add(pdev);
if (ret) {
dev_err(ipcdev.dev,
"Failed to add telemetry platform device\n");
goto err;
}
ipcdev.telemetry_dev = pdev;

return 0;
err:
platform_device_put(pdev);
return ret;
}

static int ipc_create_pmc_devices(void)
Expand Down

0 comments on commit ea1a76b

Please sign in to comment.