hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/clk/sprd/common.c
....@@ -17,7 +17,6 @@
1717 .reg_bits = 32,
1818 .reg_stride = 4,
1919 .val_bits = 32,
20
- .max_register = 0xffff,
2120 .fast_io = true,
2221 };
2322
....@@ -43,6 +42,8 @@
4342 struct device *dev = &pdev->dev;
4443 struct device_node *node = dev->of_node, *np;
4544 struct regmap *regmap;
45
+ struct resource *res;
46
+ struct regmap_config reg_config = sprdclk_regmap_config;
4647
4748 if (of_find_property(node, "sprd,syscon", NULL)) {
4849 regmap = syscon_regmap_lookup_by_phandle(node, "sprd,syscon");
....@@ -59,12 +60,14 @@
5960 return PTR_ERR(regmap);
6061 }
6162 } else {
62
- base = devm_platform_ioremap_resource(pdev, 0);
63
+ base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
6364 if (IS_ERR(base))
6465 return PTR_ERR(base);
6566
67
+ reg_config.max_register = resource_size(res) - reg_config.reg_stride;
68
+
6669 regmap = devm_regmap_init_mmio(&pdev->dev, base,
67
- &sprdclk_regmap_config);
70
+ &reg_config);
6871 if (IS_ERR(regmap)) {
6972 pr_err("failed to init regmap\n");
7073 return PTR_ERR(regmap);