Files
android/drivers/reset/sti/reset-syscfg.h
T
threeeye bc1d038eac REVVL 6 Pro kernel bring-up: full working tree snapshot (2026-09-12)
Squashed backup commit (no shallow-clone history issues) of
xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2 branch, upstream
commit 9eece662e) plus all fixes applied to get everpal_defconfig building
clean against a modern (GCC 15.2.0) toolchain -- see the previous commit
message on the lineage-23.2 branch (also in this repo history is not
available here since this is a squashed snapshot; full incremental history
lives in the local DL380 checkout and the upstream GitHub remote).

Upstream: https://github.com/xiaomi-mt6833-dev/kernel_xiaomi_mt6833 (lineage-23.2)
2026-09-12 13:36:46 +00:00

70 lines
2.3 KiB
C

/*
* Copyright (C) 2013 STMicroelectronics (R&D) Limited
* Author: Stephen Gallimore <stephen.gallimore@st.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*/
#ifndef __STI_RESET_SYSCFG_H
#define __STI_RESET_SYSCFG_H
#include <linux/device.h>
#include <linux/regmap.h>
#include <linux/reset-controller.h>
/**
* Reset channel description for a system configuration register based
* reset controller.
*
* @compatible: Compatible string of the syscon regmap containing this
* channel's control and ack (status) bits.
* @reset: Regmap field description of the channel's reset bit.
* @ack: Regmap field description of the channel's acknowledge bit.
*/
struct syscfg_reset_channel_data {
const char *compatible;
struct reg_field reset;
struct reg_field ack;
};
#define _SYSCFG_RST_CH(_c, _rr, _rb, _ar, _ab) \
{ .compatible = _c, \
.reset = REG_FIELD(_rr, _rb, _rb), \
.ack = REG_FIELD(_ar, _ab, _ab), }
#define _SYSCFG_RST_CH_NO_ACK(_c, _rr, _rb) \
{ .compatible = _c, \
.reset = REG_FIELD(_rr, _rb, _rb), }
/**
* Description of a system configuration register based reset controller.
*
* @wait_for_ack: The controller will wait for reset assert and de-assert to
* be "ack'd" in a channel's ack field.
* @active_low: Are the resets in this controller active low, i.e. clearing
* the reset bit puts the hardware into reset.
* @nr_channels: The number of reset channels in this controller.
* @channels: An array of reset channel descriptions.
*/
struct syscfg_reset_controller_data {
bool wait_for_ack;
bool active_low;
int nr_channels;
const struct syscfg_reset_channel_data *channels;
};
/**
* syscfg_reset_probe(): platform device probe function used by syscfg
* reset controller drivers. This registers a reset
* controller configured by the OF match data for
* the compatible device which should be of type
* "struct syscfg_reset_controller_data".
*
* @pdev: platform device
*/
int syscfg_reset_probe(struct platform_device *pdev);
#endif /* __STI_RESET_SYSCFG_H */