#ifdef TEGRA_12X_OR_HIGHER_CONFIG
-int nvhost_vi_init(struct platform_device *dev) {return 0; }
-
-void nvhost_vi_deinit(struct platform_device *dev) {}
-
-int nvhost_vi_finalize_poweron(struct platform_device *dev)
+int nvhost_vi_init(struct platform_device *dev)
{
int ret = 0;
- struct vi *tegra_vi;
- tegra_vi = (struct vi *)nvhost_get_private_data(dev);
+ struct vi *tegra_vi = nvhost_get_private_data(dev);
tegra_vi->reg = regulator_get(&dev->dev, "avdd_dsi_csi");
if (IS_ERR(tegra_vi->reg)) {
if (tegra_vi->reg == ERR_PTR(-ENODEV)) {
ret = -ENODEV;
dev_info(&dev->dev,
- "%s: no regulator device\n",
- __func__);
+ "%s: no regulator device\n",
+ __func__);
} else {
dev_err(&dev->dev,
- "%s: couldn't get regulator\n",
- __func__);
+ "%s: couldn't get regulator\n",
+ __func__);
}
tegra_vi->reg = NULL;
- goto fail;
+ return ret;
+ }
+
+ return 0;
+}
+
+void nvhost_vi_deinit(struct platform_device *dev)
+{
+ struct vi *tegra_vi = nvhost_get_private_data(dev);
+
+ if (tegra_vi->reg) {
+ regulator_put(tegra_vi->reg);
+ tegra_vi->reg = NULL;
}
+}
+
+int nvhost_vi_finalize_poweron(struct platform_device *dev)
+{
+ int ret = 0;
+ struct vi *tegra_vi;
+ tegra_vi = (struct vi *)nvhost_get_private_data(dev);
if (tegra_vi->reg) {
ret = regulator_enable(tegra_vi->reg);
if (ret) {
dev_err(&dev->dev,
- "%s: enable csi regulator failed.\n",
- __func__);
+ "%s: enable csi regulator failed.\n",
+ __func__);
goto fail;
}
}
__func__);
goto fail;
}
- regulator_put(tegra_vi->reg);
- tegra_vi->reg = NULL;
}
fail:
return ret;
dev_info(&dev->dev, "%s: ++\n", __func__);
nvhost_client_device_release(dev);
+ pdata->aperture[0] = NULL;
#ifdef CONFIG_TEGRA_CAMERA
err = tegra_camera_unregister(tegra_vi->camera);
return err;
#endif
-#ifdef CONFIG_PM_RUNTIME
- pm_runtime_put(&dev->dev);
- pm_runtime_disable(&dev->dev);
-#else
- nvhost_module_disable_clk(&dev->dev);
+#ifdef CONFIG_PM_GENERIC_DOMAINS
+ tegra_pd_remove_device(&dev->dev);
#endif
+
/* Remove I2C Devices according to settings from board file */
if (i2c_ctrl && i2c_ctrl->remove_devices)
i2c_ctrl->remove_devices(dev);