上电时序

不同sensor对上电时序要求不同,例如Sony Camera。在sensor厂家提供的数据手册中,一般会有上电时序图,只需要按顺序配置即可。以IMX219为例,其中imx219_power_on()即是用来给sensor上电的,如下。
static int imx219_power_on(struct device *dev)
{
        struct v4l2_subdev *sd = dev_get_drvdata(dev);
        struct imx219 *imx219 = to_imx219(sd);
        int ret;

        ret = regulator_bulk_enable(IMX219_NUM_SUPPLIES, imx219->supplies);
        if (ret) {
                dev_err(dev, "%s: failed to enable regulators\n",
                        __func__);
                return ret;
        }

        ret = clk_prepare_enable(imx219->xclk);
        if (ret) {
                dev_err(dev, "%s: failed to enable clock\n", __func__);
                goto reg_off;
        }

        gpiod_set_value_cansleep(imx219->reset_gpio, 1);
        usleep_range(IMX219_XCLR_MIN_DELAY_US,
                        IMX219_XCLR_MIN_DELAY_US + IMX219_XCLR_DELAY_RANGE_US);

        return 0;

reg_off:
        regulator_bulk_disable(IMX219_NUM_SUPPLIES, imx219->supplies);

        return ret;
}
IMX219的上电时序简要说明如下:
  • 各路的vdd上电。
  • 首先提供xclk。
  • 紧接着reset pin使能。