static int tegra_camera_open(struct inode *inode, struct file *file) { struct miscdevice *miscdev = file->private_data; struct tegra_camera_dev *dev = container_of(miscdev, struct tegra_camera_dev, misc_dev); int ret = 0; dev_info(dev->dev, "%s\n", __func__); if (atomic_xchg(&dev->in_use, 1)) return -EBUSY; file->private_data = dev; mutex_lock(&dev->tegra_camera_lock); tegra_camera_enable_avp(dev); /* turn on CSI regulator */ ret = tegra_camera_power_on(dev); if (ret) goto open_exit; /* set EMC request */ ret = tegra_camera_enable_emc(dev); if (ret) goto open_exit; /* enable camera HW clock */ ret = tegra_camera_enable_clk(dev); if (ret) goto open_exit; camera_hook = true; open_exit: mutex_unlock(&dev->tegra_camera_lock); return ret; }
static int tegra_camera_open(struct inode *inode, struct file *file) { struct miscdevice *miscdev = file->private_data; struct tegra_camera_dev *dev = container_of(miscdev, struct tegra_camera_dev, misc_dev); dev_info(dev->dev, "%s\n", __func__); file->private_data = dev; tegra_camera_enable_avp(dev); tegra_camera_enable_emc(dev); tegra_camera_power_on(dev); return 0; }