1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2013, The Linux Foundation. All rights reserved.
6 #include <linux/bitops.h>
7 #include <linux/export.h>
8 #include <linux/regmap.h>
9 #include <linux/reset-controller.h>
10 #include <linux/delay.h>
14 static int qcom_reset(struct reset_controller_dev
*rcdev
, unsigned long id
)
16 rcdev
->ops
->assert(rcdev
, id
);
18 rcdev
->ops
->deassert(rcdev
, id
);
23 qcom_reset_assert(struct reset_controller_dev
*rcdev
, unsigned long id
)
25 struct qcom_reset_controller
*rst
;
26 const struct qcom_reset_map
*map
;
29 rst
= to_qcom_reset_controller(rcdev
);
30 map
= &rst
->reset_map
[id
];
33 return regmap_update_bits(rst
->regmap
, map
->reg
, mask
, mask
);
37 qcom_reset_deassert(struct reset_controller_dev
*rcdev
, unsigned long id
)
39 struct qcom_reset_controller
*rst
;
40 const struct qcom_reset_map
*map
;
43 rst
= to_qcom_reset_controller(rcdev
);
44 map
= &rst
->reset_map
[id
];
47 return regmap_update_bits(rst
->regmap
, map
->reg
, mask
, 0);
50 const struct reset_control_ops qcom_reset_ops
= {
52 .assert = qcom_reset_assert
,
53 .deassert
= qcom_reset_deassert
,
55 EXPORT_SYMBOL_GPL(qcom_reset_ops
);