hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/clk/qcom/reset.c
....@@ -13,8 +13,11 @@
1313
1414 static int qcom_reset(struct reset_controller_dev *rcdev, unsigned long id)
1515 {
16
+ struct qcom_reset_controller *rst = to_qcom_reset_controller(rcdev);
17
+
1618 rcdev->ops->assert(rcdev, id);
17
- udelay(1);
19
+ fsleep(rst->reset_map[id].udelay ?: 1); /* use 1 us as default */
20
+
1821 rcdev->ops->deassert(rcdev, id);
1922 return 0;
2023 }
....@@ -28,7 +31,7 @@
2831
2932 rst = to_qcom_reset_controller(rcdev);
3033 map = &rst->reset_map[id];
31
- mask = BIT(map->bit);
34
+ mask = map->bitmask ? map->bitmask : BIT(map->bit);
3235
3336 return regmap_update_bits(rst->regmap, map->reg, mask, mask);
3437 }
....@@ -42,7 +45,7 @@
4245
4346 rst = to_qcom_reset_controller(rcdev);
4447 map = &rst->reset_map[id];
45
- mask = BIT(map->bit);
48
+ mask = map->bitmask ? map->bitmask : BIT(map->bit);
4649
4750 return regmap_update_bits(rst->regmap, map->reg, mask, 0);
4851 }