mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-28 13:34:38 +08:00
2cb8a39b67
The amount of time required between asserting and deasserting the reset signal can vary depending on the involved hardware component. Sometimes 1 us might not be enough and a larger delay is necessary to conform to the specifications. Usually this is worked around in the consuming drivers, by replacing reset_control_reset() with a sequence of reset_control_assert(), waiting for a custom delay, followed by reset_control_deassert(). However, in some cases the driver making use of the reset is generic and can be used with different reset controllers. In this case the reset time requirement is better handled directly by the reset controller driver. Make this possible by adding an "udelay" field to the qcom_reset_map that allows setting a different reset delay (in microseconds). Signed-off-by: Stephan Gerhold <stephan.gerhold@kernkonzept.com> Signed-off-by: Bjorn Andersson <andersson@kernel.org> Link: https://lore.kernel.org/r/20220706134132.3623415-4-stephan.gerhold@kernkonzept.com
31 lines
590 B
C
31 lines
590 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2013, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __QCOM_CLK_RESET_H__
|
|
#define __QCOM_CLK_RESET_H__
|
|
|
|
#include <linux/reset-controller.h>
|
|
|
|
struct qcom_reset_map {
|
|
unsigned int reg;
|
|
u8 bit;
|
|
u8 udelay;
|
|
};
|
|
|
|
struct regmap;
|
|
|
|
struct qcom_reset_controller {
|
|
const struct qcom_reset_map *reset_map;
|
|
struct regmap *regmap;
|
|
struct reset_controller_dev rcdev;
|
|
};
|
|
|
|
#define to_qcom_reset_controller(r) \
|
|
container_of(r, struct qcom_reset_controller, rcdev);
|
|
|
|
extern const struct reset_control_ops qcom_reset_ops;
|
|
|
|
#endif
|