}
/* clock settings */
- clk_prepare_enable(vi->clk);
+ ret = clk_prepare_enable(vi->clk);
+ if (ret) {
+ dev_err(vi->dev, "failed to enable vi clock\n");
+ goto error_clk_enable;
+ }
+
ret = clk_set_rate(vi->clk, 0);
if (ret) {
dev_err(vi->dev, "failed to set vi clock\n");
return 0;
err_emc_enable:
- clk_disable_unprepare(vi->clk);
error_clk_set_rate:
+ clk_disable_unprepare(vi->clk);
+error_clk_enable:
tegra_powergate_partition(TEGRA_POWERGATE_VENC);
error_unpowergate:
regulator_disable(vi->reg);
static struct miscdevice tegra_camera_misc;
-static int tegra_camera_isomgr_register(struct tegra_camera_info *info)
+static int tegra_camera_isomgr_register(struct tegra_camera_info *info,
+ struct device *dev)
{
#if defined(CONFIG_TEGRA_ISOMGR)
int ret = 0;
u32 isp_bpp = 0;
u64 isp_iso_bw = 0;
u32 isp_margin_pct = 0;
- struct device_node *np = info->dev->of_node;
+ struct device_node *np = dev->of_node;
dev_dbg(info->dev, "%s++\n", __func__);
return -ENOMEM;
strcpy(info->devname, tegra_camera_misc.name);
- info->dev = &pdev->dev;
+ info->dev = tegra_camera_misc.this_device;
+
#if !defined(CONFIG_TEGRA_BWMGR)
info->emc = devm_clk_get(info->dev, "emc");
if (IS_ERR(info->emc)) {
#endif
mutex_init(&info->update_bw_lock);
/* Register Camera as isomgr client. */
- ret = tegra_camera_isomgr_register(info);
+ ret = tegra_camera_isomgr_register(info, &pdev->dev);
if (ret) {
dev_err(info->dev,
"%s: failed to register CAMERA as isomgr client\n",