mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-18 16:44:27 +08:00
a0ebf66267
The Exynos Power Management Unit (PMU) drivers contain quite large static arrays of register values necessary for given Exynos SoC to enter low power mode. All this data is useless for ARMv8 SoC like Exynos5433, because the image will not be shared between ARMv7 and ARMv8. Add additional Kconfig symbol for selecting the SoC-specific driver addons thus skipping the useless data in the final image (this is similar approach to chosen for Exynos clock controller drivers): - exynos-pmu driver will be compiled on both architectures ARMv7 and ARMv8, - additional driver_data for ARMv7 SoCs will not be built on ARMv8 and a macro will return NULL for them in of_device_id - this should be safe as these compatibles cannot match on ARMv7 and driver anyway handles NULL driver_data, - on ARMv8 compile only exynos-pmu driver which exposes the syscon-regmap for PMU address space. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
/*
|
|
* Copyright (c) 2015 Samsung Electronics Co., Ltd.
|
|
* http://www.samsung.com
|
|
*
|
|
* Header for EXYNOS PMU Driver support
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __EXYNOS_PMU_H
|
|
#define __EXYNOS_PMU_H
|
|
|
|
#include <linux/io.h>
|
|
|
|
#define PMU_TABLE_END (-1U)
|
|
|
|
struct exynos_pmu_conf {
|
|
unsigned int offset;
|
|
u8 val[NUM_SYS_POWERDOWN];
|
|
};
|
|
|
|
struct exynos_pmu_data {
|
|
const struct exynos_pmu_conf *pmu_config;
|
|
const struct exynos_pmu_conf *pmu_config_extra;
|
|
|
|
void (*pmu_init)(void);
|
|
void (*powerdown_conf)(enum sys_powerdown);
|
|
void (*powerdown_conf_extra)(enum sys_powerdown);
|
|
};
|
|
|
|
extern void __iomem *pmu_base_addr;
|
|
|
|
#ifdef CONFIG_EXYNOS_PMU_ARM_DRIVERS
|
|
/* list of all exported SoC specific data */
|
|
extern const struct exynos_pmu_data exynos3250_pmu_data;
|
|
extern const struct exynos_pmu_data exynos4210_pmu_data;
|
|
extern const struct exynos_pmu_data exynos4212_pmu_data;
|
|
extern const struct exynos_pmu_data exynos4412_pmu_data;
|
|
extern const struct exynos_pmu_data exynos5250_pmu_data;
|
|
extern const struct exynos_pmu_data exynos5420_pmu_data;
|
|
#endif
|
|
|
|
extern void pmu_raw_writel(u32 val, u32 offset);
|
|
extern u32 pmu_raw_readl(u32 offset);
|
|
#endif /* __EXYNOS_PMU_H */
|