summaryrefslogtreecommitdiff
path: root/drivers/media/platform/soc_camera/tegra_camera/vi2.c
diff options
context:
space:
mode:
authorBryan Wu <pengw@nvidia.com>2014-02-21 10:45:03 -0800
committerBryan Wu <pengw@nvidia.com>2014-03-04 14:54:16 -0800
commit4ca388fb943d17c7f7e8992fba04aac38714fdb2 (patch)
treee0c54f0e60cce08dedd99aa39536f480f01f34b1 /drivers/media/platform/soc_camera/tegra_camera/vi2.c
parent6207687cdae17f932b5c2a67935ed586b283461b (diff)
driver: vi: tegra_camera: correct pdev->id for DT
DT will initialize the pdev->id as -1 for both vi.0 and vi.1. This will cause several subtle issues since checking pdev->id is used a in VI and Tegra V4L2 camera drivers. Set the pdev->id as the right value during probing for DT case. Then no change is need for others Bug 1463966 Change-Id: I8adf124c4d3489e9c06abbecb6d3587437954c50 Signed-off-by: Bryan Wu <pengw@nvidia.com> Reviewed-on: http://git-master/r/373000 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Jihoon Bang <jbang@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/media/platform/soc_camera/tegra_camera/vi2.c')
-rw-r--r--drivers/media/platform/soc_camera/tegra_camera/vi2.c25
1 files changed, 9 insertions, 16 deletions
diff --git a/drivers/media/platform/soc_camera/tegra_camera/vi2.c b/drivers/media/platform/soc_camera/tegra_camera/vi2.c
index f58c03bff8a5..60bdaa4dabc7 100644
--- a/drivers/media/platform/soc_camera/tegra_camera/vi2.c
+++ b/drivers/media/platform/soc_camera/tegra_camera/vi2.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2013-2014, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -329,20 +329,10 @@ static struct tegra_camera_clk vi2_clks1[] = {
static int vi2_clks_init(struct tegra_camera_dev *cam)
{
struct platform_device *pdev = cam->ndev;
- char devname[MAX_DEVID_LENGTH];
- const char *pdev_name;
struct tegra_camera_clk *clks;
- int i, dev_id, ret;
-
- pdev_name = dev_name(&pdev->dev);
- ret = sscanf(pdev_name, "vi.%1d", &dev_id);
- if (ret != 1) {
- dev_err(&pdev->dev, "Read dev_id failed!\n");
- return -ENODEV;
- }
- snprintf(devname, MAX_DEVID_LENGTH, "tegra_%s", pdev_name);
+ int i;
- switch (dev_id) {
+ switch (pdev->id) {
case 0:
cam->num_clks = ARRAY_SIZE(vi2_clks0);
cam->clks = vi2_clks0;
@@ -352,16 +342,19 @@ static int vi2_clks_init(struct tegra_camera_dev *cam)
cam->clks = vi2_clks1;
break;
default:
- dev_err(&pdev->dev, "Wrong device ID %d\n", dev_id);
+ dev_err(&pdev->dev, "Wrong device ID %d\n", pdev->id);
return -ENODEV;
}
for (i = 0; i < cam->num_clks; i++) {
clks = &cam->clks[i];
- if (clks->use_devname)
+ if (clks->use_devname) {
+ char devname[MAX_DEVID_LENGTH];
+ snprintf(devname, MAX_DEVID_LENGTH,
+ "tegra_%s", dev_name(&pdev->dev));
clks->clk = clk_get_sys(devname, clks->name);
- else
+ } else
clks->clk = clk_get(&pdev->dev, clks->name);
if (IS_ERR_OR_NULL(clks->clk)) {
dev_err(&pdev->dev, "Failed to get clock %s.\n",