Commit 88b0c212 authored by Tommaso Merciai's avatar Tommaso Merciai Committed by Mauro Carvalho Chehab
Browse files

media: ov5693: add support for acpi clock-frequency prop



Add support for ACPI-based platforms that specify the clock frequency by
using the "clock-frequency" property instead of specifying a clock
provider reference

Signed-off-by: default avatarTommaso Merciai <tommaso.merciai@amarulasolutions.com>
Reviewed-by: default avatarJacopo Mondi <jacopo@jmondi.org>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 8a47d09e
Loading
Loading
Loading
Loading
+17 −5
Original line number Diff line number Diff line
@@ -1408,13 +1408,25 @@ static int ov5693_probe(struct i2c_client *client)

	v4l2_i2c_subdev_init(&ov5693->sd, client, &ov5693_ops);

	ov5693->xvclk = devm_clk_get(&client->dev, "xvclk");
	if (IS_ERR(ov5693->xvclk)) {
		dev_err(&client->dev, "Error getting clock\n");
		return PTR_ERR(ov5693->xvclk);
	}
	ov5693->xvclk = devm_clk_get_optional(&client->dev, "xvclk");
	if (IS_ERR(ov5693->xvclk))
		return dev_err_probe(&client->dev, PTR_ERR(ov5693->xvclk),
				     "failed to get xvclk: %ld\n",
				     PTR_ERR(ov5693->xvclk));

	if (ov5693->xvclk) {
		xvclk_rate = clk_get_rate(ov5693->xvclk);
	} else {
		ret = fwnode_property_read_u32(dev_fwnode(&client->dev),
				     "clock-frequency",
				     &xvclk_rate);

		if (ret) {
			dev_err(&client->dev, "can't get clock frequency");
			return ret;
		}
	}

	if (xvclk_rate != OV5693_XVCLK_FREQ)
		dev_warn(&client->dev, "Found clk freq %u, expected %u\n",
			 xvclk_rate, OV5693_XVCLK_FREQ);