@@ -827,13 +827,19 @@ static int sun6i_csi_resource_request(struct sun6i_csi_device *csi_dev,
if (IS_ERR(io_base))
return PTR_ERR(io_base);
- csi_dev->regmap = devm_regmap_init_mmio_clk(&pdev->dev, "bus", io_base,
- &sun6i_csi_regmap_config);
+ csi_dev->regmap = devm_regmap_init_mmio(&pdev->dev, io_base,
+ &sun6i_csi_regmap_config);
if (IS_ERR(csi_dev->regmap)) {
dev_err(&pdev->dev, "Failed to init register map\n");
return PTR_ERR(csi_dev->regmap);
}
+ csi_dev->clk_bus = devm_clk_get(&pdev->dev, "bus");
+ if (IS_ERR(csi_dev->clk_bus)) {
+ dev_err(&pdev->dev, "Unable to acquire bus clock\n");
+ return PTR_ERR(csi_dev->clk_bus);
+ }
+
csi_dev->clk_mod = devm_clk_get(&pdev->dev, "mod");
if (IS_ERR(csi_dev->clk_mod)) {
dev_err(&pdev->dev, "Unable to acquire csi clock\n");
@@ -51,6 +51,7 @@ struct sun6i_csi_device {
struct sun6i_video video;
struct regmap *regmap;
+ struct clk *clk_bus;
struct clk *clk_mod;
struct clk *clk_ram;
struct reset_control *reset;
Since the bus clock alone is not enough to get access to the registers, don't pass it to regmap and manage it instead just like the other clocks. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> --- drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c | 10 ++++++++-- drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-)