Commit d623ee26 authored by Jerome Brunet's avatar Jerome Brunet Committed by Philipp Zabel
Browse files

reset: amlogic: add reset status support



Add a callback to check the status of the level reset, as done in
the reset driver of the audio clock controller.

This is done keep the functionality when the audio reset controller
get migrated to meson-reset.

Reviewed-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Link: https://lore.kernel.org/r/20240910-meson-rst-aux-v5-6-60be62635d3e@baylibre.com


Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
parent 83dde3e5
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -68,6 +68,22 @@ static int meson_reset_level(struct reset_controller_dev *rcdev,
				  BIT(bit), assert ? BIT(bit) : 0);
}

static int meson_reset_status(struct reset_controller_dev *rcdev,
			      unsigned long id)
{
	struct meson_reset *data =
		container_of(rcdev, struct meson_reset, rcdev);
	unsigned int val, offset, bit;

	meson_reset_offset_and_bit(data, id, &offset, &bit);
	offset += data->param->level_offset;

	regmap_read(data->map, offset, &val);
	val = !!(BIT(bit) & val);

	return val ^ data->param->level_low_reset;
}

static int meson_reset_assert(struct reset_controller_dev *rcdev,
			      unsigned long id)
{
@@ -84,6 +100,7 @@ static const struct reset_control_ops meson_reset_ops = {
	.reset		= meson_reset_reset,
	.assert		= meson_reset_assert,
	.deassert	= meson_reset_deassert,
	.status		= meson_reset_status,
};

static const struct meson_reset_param meson8b_param = {