Commit 6b7bfd82 authored by Pankaj Dubey's avatar Pankaj Dubey Committed by Kukjin Kim

ARM: EXYNOS: Move PMU specific definitions from common.h

This patch moves PMU specific definitions into a new file
as exynos-pmu.h.
This will help in reducing dependency of common.h in pmu.c.
Signed-off-by: default avatarPankaj Dubey <pankaj.dubey@samsung.com>
Reviewed-by: default avatarTomasz Figa <t.figa@samsung.com>
Tested-by: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 14fc8b93
...@@ -139,23 +139,6 @@ extern void exynos_cpu_resume_ns(void); ...@@ -139,23 +139,6 @@ extern void exynos_cpu_resume_ns(void);
extern struct smp_operations exynos_smp_ops; extern struct smp_operations exynos_smp_ops;
/* PMU(Power Management Unit) support */
#define PMU_TABLE_END (-1U)
enum sys_powerdown {
SYS_AFTR,
SYS_LPA,
SYS_SLEEP,
NUM_SYS_POWERDOWN,
};
struct exynos_pmu_conf {
unsigned int offset;
unsigned int val[NUM_SYS_POWERDOWN];
};
extern void exynos_sys_powerdown_conf(enum sys_powerdown mode);
extern void exynos_cpu_power_down(int cpu); extern void exynos_cpu_power_down(int cpu);
extern void exynos_cpu_power_up(int cpu); extern void exynos_cpu_power_up(int cpu);
extern int exynos_cpu_power_state(int cpu); extern int exynos_cpu_power_state(int cpu);
......
/*
* Copyright (c) 2014 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
enum sys_powerdown {
SYS_AFTR,
SYS_LPA,
SYS_SLEEP,
NUM_SYS_POWERDOWN,
};
extern void exynos_sys_powerdown_conf(enum sys_powerdown mode);
#endif /* __EXYNOS_PMU_H */
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <plat/pm-common.h> #include <plat/pm-common.h>
#include "common.h" #include "common.h"
#include "exynos-pmu.h"
#include "regs-pmu.h" #include "regs-pmu.h"
#include "regs-sys.h" #include "regs-sys.h"
......
...@@ -13,9 +13,16 @@ ...@@ -13,9 +13,16 @@
#include <linux/of.h> #include <linux/of.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include "common.h" #include "exynos-pmu.h"
#include "regs-pmu.h" #include "regs-pmu.h"
#define PMU_TABLE_END (-1U)
struct exynos_pmu_conf {
unsigned int offset;
unsigned int val[NUM_SYS_POWERDOWN];
};
struct exynos_pmu_data { struct exynos_pmu_data {
const struct exynos_pmu_conf *pmu_config; const struct exynos_pmu_conf *pmu_config;
const struct exynos_pmu_conf *pmu_config_extra; const struct exynos_pmu_conf *pmu_config_extra;
...@@ -29,8 +36,19 @@ struct exynos_pmu_context { ...@@ -29,8 +36,19 @@ struct exynos_pmu_context {
const struct exynos_pmu_data *pmu_data; const struct exynos_pmu_data *pmu_data;
}; };
static void __iomem *pmu_base_addr;
static struct exynos_pmu_context *pmu_context; static struct exynos_pmu_context *pmu_context;
static inline void pmu_raw_writel(u32 val, u32 offset)
{
writel_relaxed(val, pmu_base_addr + offset);
}
static inline u32 pmu_raw_readl(u32 offset)
{
return readl_relaxed(pmu_base_addr + offset);
}
static const struct exynos_pmu_conf exynos4210_pmu_config[] = { static const struct exynos_pmu_conf exynos4210_pmu_config[] = {
/* { .offset = offset, .val = { AFTR, LPA, SLEEP } */ /* { .offset = offset, .val = { AFTR, LPA, SLEEP } */
{ S5P_ARM_CORE0_LOWPWR, { 0x0, 0x0, 0x2 } }, { S5P_ARM_CORE0_LOWPWR, { 0x0, 0x0, 0x2 } },
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "common.h" #include "common.h"
#include "regs-pmu.h" #include "regs-pmu.h"
#include "regs-sys.h" #include "regs-sys.h"
#include "exynos-pmu.h"
#define S5P_CHECK_SLEEP 0x00000BAD #define S5P_CHECK_SLEEP 0x00000BAD
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment