root/drivers/reset/spacemit/reset-spacemit-common.h
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * SpacemiT reset controller driver - common definitions
 */

#ifndef _RESET_SPACEMIT_COMMON_H_
#define _RESET_SPACEMIT_COMMON_H_

#include <linux/auxiliary_bus.h>
#include <linux/regmap.h>
#include <linux/reset-controller.h>
#include <linux/types.h>

struct ccu_reset_data {
        u32 offset;
        u32 assert_mask;
        u32 deassert_mask;
};

struct ccu_reset_controller_data {
        const struct ccu_reset_data *reset_data;        /* array */
        size_t count;
};

struct ccu_reset_controller {
        struct reset_controller_dev rcdev;
        const struct ccu_reset_controller_data *data;
        struct regmap *regmap;
};

#define RESET_DATA(_offset, _assert_mask, _deassert_mask)       \
        {                                                       \
                .offset         = (_offset),                    \
                .assert_mask    = (_assert_mask),               \
                .deassert_mask  = (_deassert_mask),             \
        }

/* Common probe function */
int spacemit_reset_probe(struct auxiliary_device *adev,
                         const struct auxiliary_device_id *id);

#endif /* _RESET_SPACEMIT_COMMON_H_ */