Message ID | 20250315220936.2477-1-bryan.odonoghue@linaro.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | media: i2c: ov02c10: Get the OF clock rate | expand |
On 15/03/2025 22:09, Bryan O'Donoghue wrote: > Add support to get the mclk rate specified in dts. > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > --- > drivers/media/i2c/ov02c10.c | 24 +++++++++++++++--------- > 1 file changed, 15 insertions(+), 9 deletions(-) > > diff --git a/drivers/media/i2c/ov02c10.c b/drivers/media/i2c/ov02c10.c > index 094651228763..236623b26da0 100644 > --- a/drivers/media/i2c/ov02c10.c > +++ b/drivers/media/i2c/ov02c10.c > @@ -647,11 +647,6 @@ static int ov02c10_get_pm_resources(struct device *dev) > if (ov02c10->reset) > fsleep(1000); > > - ov02c10->img_clk = devm_clk_get_optional(dev, NULL); > - if (IS_ERR(ov02c10->img_clk)) > - return dev_err_probe(dev, PTR_ERR(ov02c10->img_clk), > - "failed to get imaging clock\n"); > - > for (i = 0; i < ARRAY_SIZE(ov02c10_supply_names); i++) > ov02c10->supplies[i].supply = ov02c10_supply_names[i]; > > @@ -840,11 +835,22 @@ static int ov02c10_check_hwcfg(struct device *dev, struct ov02c10 *ov02c10) > return dev_err_probe(dev, -EPROBE_DEFER, > "waiting for fwnode graph endpoint\n"); > > - ret = fwnode_property_read_u32(fwnode, "clock-frequency", &mclk); > - if (ret) { > + ov02c10->img_clk = devm_clk_get_optional(dev, NULL); > + if (IS_ERR(ov02c10->img_clk)) { > fwnode_handle_put(ep); > - return dev_err_probe(dev, ret, > - "reading clock-frequency property\n"); > + return dev_err_probe(dev, PTR_ERR(ov02c10->img_clk), > + "failed to get imaging clock\n"); > + } > + > + if (ov02c10->img_clk) { > + mclk = clk_get_rate(ov02c10->img_clk); > + } else { > + ret = fwnode_property_read_u32(fwnode, "clock-frequency", &mclk); > + if (ret) { > + fwnode_handle_put(ep); > + return dev_err_probe(dev, ret, > + "reading clock-frequency property\n"); > + } > } > > if (mclk != OV02C10_MCLK) { I completely forgot to include this logic. We need this one get get the clock frequency from dts. Thanks to kuruczgy[m] on #aarch64-laptops for testing. --- bod
diff --git a/drivers/media/i2c/ov02c10.c b/drivers/media/i2c/ov02c10.c index 094651228763..236623b26da0 100644 --- a/drivers/media/i2c/ov02c10.c +++ b/drivers/media/i2c/ov02c10.c @@ -647,11 +647,6 @@ static int ov02c10_get_pm_resources(struct device *dev) if (ov02c10->reset) fsleep(1000); - ov02c10->img_clk = devm_clk_get_optional(dev, NULL); - if (IS_ERR(ov02c10->img_clk)) - return dev_err_probe(dev, PTR_ERR(ov02c10->img_clk), - "failed to get imaging clock\n"); - for (i = 0; i < ARRAY_SIZE(ov02c10_supply_names); i++) ov02c10->supplies[i].supply = ov02c10_supply_names[i]; @@ -840,11 +835,22 @@ static int ov02c10_check_hwcfg(struct device *dev, struct ov02c10 *ov02c10) return dev_err_probe(dev, -EPROBE_DEFER, "waiting for fwnode graph endpoint\n"); - ret = fwnode_property_read_u32(fwnode, "clock-frequency", &mclk); - if (ret) { + ov02c10->img_clk = devm_clk_get_optional(dev, NULL); + if (IS_ERR(ov02c10->img_clk)) { fwnode_handle_put(ep); - return dev_err_probe(dev, ret, - "reading clock-frequency property\n"); + return dev_err_probe(dev, PTR_ERR(ov02c10->img_clk), + "failed to get imaging clock\n"); + } + + if (ov02c10->img_clk) { + mclk = clk_get_rate(ov02c10->img_clk); + } else { + ret = fwnode_property_read_u32(fwnode, "clock-frequency", &mclk); + if (ret) { + fwnode_handle_put(ep); + return dev_err_probe(dev, ret, + "reading clock-frequency property\n"); + } } if (mclk != OV02C10_MCLK) {
Add support to get the mclk rate specified in dts. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> --- drivers/media/i2c/ov02c10.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-)