Hi Jack, On Fri, May 12, 2023 at 06:26:35PM +0800, Jack Zhu wrote: [...] > @@ -299,6 +312,16 @@ static int csi2rx_get_resources(struct csi2rx_priv *csi2rx, > return PTR_ERR(csi2rx->p_clk); > } > > + csi2rx->sys_rst = devm_reset_control_get_optional_exclusive(&pdev->dev, > + "sys_rst"); This doesn't match the bindings documented in patch 2. Should this be "sys"? > + if (IS_ERR(csi2rx->sys_rst)) > + return PTR_ERR(csi2rx->sys_rst); > + > + csi2rx->p_rst = devm_reset_control_get_optional_exclusive(&pdev->dev, > + "p_rst"); This doesn't match the bindings documented in patch 2. Should this be "reg_bank"? > + if (IS_ERR(csi2rx->p_rst)) > + return PTR_ERR(csi2rx->p_rst); > + > csi2rx->dphy = devm_phy_optional_get(&pdev->dev, "dphy"); > if (IS_ERR(csi2rx->dphy)) { > dev_err(&pdev->dev, "Couldn't get external D-PHY\n"); > @@ -349,14 +372,21 @@ static int csi2rx_get_resources(struct csi2rx_priv *csi2rx, > } > > for (i = 0; i < csi2rx->max_streams; i++) { > - char clk_name[16]; > + char name[16]; > > - snprintf(clk_name, sizeof(clk_name), "pixel_if%u_clk", i); > - csi2rx->pixel_clk[i] = devm_clk_get(&pdev->dev, clk_name); > + snprintf(name, sizeof(name), "pixel_if%u_clk", i); > + csi2rx->pixel_clk[i] = devm_clk_get(&pdev->dev, name); > if (IS_ERR(csi2rx->pixel_clk[i])) { > - dev_err(&pdev->dev, "Couldn't get clock %s\n", clk_name); > + dev_err(&pdev->dev, "Couldn't get clock %s\n", name); > return PTR_ERR(csi2rx->pixel_clk[i]); > } > + > + snprintf(name, sizeof(name), "pixel_if%u_rst", i); This doesn't match the bindings documented in patch 2. Should this be "pixel_if%u"? regards Philipp