162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2015 Samsung Electronics Co., Ltd.
462306a36Sopenharmony_ci *		http://www.samsung.com
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Header for Exynos PMU Driver support
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#ifndef __EXYNOS_PMU_H
1062306a36Sopenharmony_ci#define __EXYNOS_PMU_H
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <linux/io.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define PMU_TABLE_END	(-1U)
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistruct exynos_pmu_conf {
1762306a36Sopenharmony_ci	unsigned int offset;
1862306a36Sopenharmony_ci	u8 val[NUM_SYS_POWERDOWN];
1962306a36Sopenharmony_ci};
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistruct exynos_pmu_data {
2262306a36Sopenharmony_ci	const struct exynos_pmu_conf *pmu_config;
2362306a36Sopenharmony_ci	const struct exynos_pmu_conf *pmu_config_extra;
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	void (*pmu_init)(void);
2662306a36Sopenharmony_ci	void (*powerdown_conf)(enum sys_powerdown);
2762306a36Sopenharmony_ci	void (*powerdown_conf_extra)(enum sys_powerdown);
2862306a36Sopenharmony_ci};
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciextern void __iomem *pmu_base_addr;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS
3362306a36Sopenharmony_ci/* list of all exported SoC specific data */
3462306a36Sopenharmony_ciextern const struct exynos_pmu_data exynos3250_pmu_data;
3562306a36Sopenharmony_ciextern const struct exynos_pmu_data exynos4210_pmu_data;
3662306a36Sopenharmony_ciextern const struct exynos_pmu_data exynos4212_pmu_data;
3762306a36Sopenharmony_ciextern const struct exynos_pmu_data exynos4412_pmu_data;
3862306a36Sopenharmony_ciextern const struct exynos_pmu_data exynos5250_pmu_data;
3962306a36Sopenharmony_ciextern const struct exynos_pmu_data exynos5420_pmu_data;
4062306a36Sopenharmony_ci#endif
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciextern void pmu_raw_writel(u32 val, u32 offset);
4362306a36Sopenharmony_ciextern u32 pmu_raw_readl(u32 offset);
4462306a36Sopenharmony_ci#endif /* __EXYNOS_PMU_H */
45