cregit-Linux how code gets into the kernel

Release 4.11 arch/arm/mach-exynos/common.h

/*
 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
 *              http://www.samsung.com
 *
 * Common Header for EXYNOS machines
 *
 * 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 __ARCH_ARM_MACH_EXYNOS_COMMON_H

#define __ARCH_ARM_MACH_EXYNOS_COMMON_H

#include <linux/platform_data/cpuidle-exynos.h>


#define EXYNOS3250_SOC_ID	0xE3472000

#define EXYNOS3_SOC_MASK	0xFFFFF000


#define EXYNOS4210_CPU_ID	0x43210000

#define EXYNOS4212_CPU_ID	0x43220000

#define EXYNOS4412_CPU_ID	0xE4412200

#define EXYNOS4_CPU_MASK	0xFFFE0000


#define EXYNOS5250_SOC_ID	0x43520000

#define EXYNOS5410_SOC_ID	0xE5410000

#define EXYNOS5420_SOC_ID	0xE5420000

#define EXYNOS5440_SOC_ID	0xE5440000

#define EXYNOS5800_SOC_ID	0xE5422000

#define EXYNOS5_SOC_MASK	0xFFFFF000

extern unsigned long samsung_cpu_id;


#define IS_SAMSUNG_CPU(name, id, mask)		\
static inline int is_samsung_##name(void)       \
{                                               \
        return ((samsung_cpu_id & mask) == (id & mask));        \
}

IS_SAMSUNG_CPU(exynos3250, EXYNOS3250_SOC_ID, EXYNOS3_SOC_MASK)
IS_SAMSUNG_CPU(exynos4210, EXYNOS4210_CPU_ID, EXYNOS4_CPU_MASK)
IS_SAMSUNG_CPU(exynos4212, EXYNOS4212_CPU_ID, EXYNOS4_CPU_MASK)
IS_SAMSUNG_CPU(exynos4412, EXYNOS4412_CPU_ID, EXYNOS4_CPU_MASK)
IS_SAMSUNG_CPU(exynos5250, EXYNOS5250_SOC_ID, EXYNOS5_SOC_MASK)
IS_SAMSUNG_CPU(exynos5410, EXYNOS5410_SOC_ID, EXYNOS5_SOC_MASK)
IS_SAMSUNG_CPU(exynos5420, EXYNOS5420_SOC_ID, EXYNOS5_SOC_MASK)
IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_SOC_ID, EXYNOS5_SOC_MASK)
IS_SAMSUNG_CPU(exynos5800, EXYNOS5800_SOC_ID, EXYNOS5_SOC_MASK)

#if defined(CONFIG_SOC_EXYNOS3250)

# define soc_is_exynos3250()	is_samsung_exynos3250()
#else
# define soc_is_exynos3250()	0
#endif

#if defined(CONFIG_CPU_EXYNOS4210)

# define soc_is_exynos4210()	is_samsung_exynos4210()
#else
# define soc_is_exynos4210()	0
#endif

#if defined(CONFIG_SOC_EXYNOS4212)

# define soc_is_exynos4212()	is_samsung_exynos4212()
#else
# define soc_is_exynos4212()	0
#endif

#if defined(CONFIG_SOC_EXYNOS4412)

# define soc_is_exynos4412()	is_samsung_exynos4412()
#else
# define soc_is_exynos4412()	0
#endif


#define EXYNOS4210_REV_0	(0x0)

#define EXYNOS4210_REV_1_0	(0x10)

#define EXYNOS4210_REV_1_1	(0x11)

#if defined(CONFIG_SOC_EXYNOS5250)

# define soc_is_exynos5250()	is_samsung_exynos5250()
#else
# define soc_is_exynos5250()	0
#endif

#if defined(CONFIG_SOC_EXYNOS5410)

# define soc_is_exynos5410()	is_samsung_exynos5410()
#else
# define soc_is_exynos5410()	0
#endif

#if defined(CONFIG_SOC_EXYNOS5420)

# define soc_is_exynos5420()	is_samsung_exynos5420()
#else
# define soc_is_exynos5420()	0
#endif

#if defined(CONFIG_SOC_EXYNOS5440)

# define soc_is_exynos5440()	is_samsung_exynos5440()
#else
# define soc_is_exynos5440()	0
#endif

#if defined(CONFIG_SOC_EXYNOS5800)

# define soc_is_exynos5800()	is_samsung_exynos5800()
#else
# define soc_is_exynos5800()	0
#endif


#define soc_is_exynos4() (soc_is_exynos4210() || soc_is_exynos4212() || \
                          soc_is_exynos4412())

#define soc_is_exynos5() (soc_is_exynos5250() || soc_is_exynos5410() || \
                          soc_is_exynos5420() || soc_is_exynos5800())

extern u32 cp15_save_diag;
extern u32 cp15_save_power;

extern void __iomem *sysram_ns_base_addr;
extern void __iomem *sysram_base_addr;
extern void __iomem *pmu_base_addr;
void exynos_sysram_init(void);

enum {
	
FW_DO_IDLE_SLEEP,
	
FW_DO_IDLE_AFTR,
};

void exynos_firmware_init(void);

/* CPU BOOT mode flag for Exynos3250 SoC bootloader */

#define C2_STATE	(1 << 3)
/*
 * Magic values for bootloader indicating chosen low power mode.
 * See also Documentation/arm/Samsung/Bootloader-interface.txt
 */

#define EXYNOS_SLEEP_MAGIC	0x00000bad

#define EXYNOS_AFTR_MAGIC	0xfcba0d10

void exynos_set_boot_flag(unsigned int cpu, unsigned int mode);
void exynos_clear_boot_flag(unsigned int cpu, unsigned int mode);

extern u32 exynos_get_eint_wake_mask(void);

#ifdef CONFIG_PM_SLEEP
extern void __init exynos_pm_init(void);
#else

static inline void exynos_pm_init(void) {}

Contributors

PersonTokensPropCommitsCommitProp
Tomasz Figa8100.00%1100.00%
Total8100.00%1100.00%

#endif extern void exynos_cpu_resume(void); extern void exynos_cpu_resume_ns(void); extern const struct smp_operations exynos_smp_ops; extern void exynos_cpu_power_down(int cpu); extern void exynos_cpu_power_up(int cpu); extern int exynos_cpu_power_state(int cpu); extern void exynos_cluster_power_down(int cluster); extern void exynos_cluster_power_up(int cluster); extern int exynos_cluster_power_state(int cluster); extern void exynos_cpu_save_register(void); extern void exynos_cpu_restore_register(void); extern void exynos_pm_central_suspend(void); extern int exynos_pm_central_resume(void); extern void exynos_enter_aftr(void); extern struct cpuidle_exynos_data cpuidle_coupled_exynos_data; extern void exynos_set_delayed_reset_assertion(bool enable); extern unsigned int samsung_rev(void); extern void exynos_core_restart(u32 core_id); extern int exynos_set_boot_addr(u32 core_id, unsigned long boot_addr); extern int exynos_get_boot_addr(u32 core_id, unsigned long *boot_addr);
static inline void pmu_raw_writel(u32 val, u32 offset) { writel_relaxed(val, pmu_base_addr + offset); }

Contributors

PersonTokensPropCommitsCommitProp
Pankaj Dubey2195.45%150.00%
Ben Dooks14.55%150.00%
Total22100.00%2100.00%


static inline u32 pmu_raw_readl(u32 offset) { return readl_relaxed(pmu_base_addr + offset); }

Contributors

PersonTokensPropCommitsCommitProp
Pankaj Dubey1794.44%150.00%
Ben Dooks15.56%150.00%
Total18100.00%2100.00%

#endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Sachin Kamat25137.92%26.67%
Bartlomiej Zolnierkiewicz10315.56%516.67%
Tomasz Figa578.61%413.33%
Pankaj Dubey446.65%26.67%
Chanwoo Choi365.44%13.33%
Tarek Dakhran334.98%13.33%
Arun Kumar K324.83%13.33%
Leela Krishna Amudala243.63%13.33%
Abhilash Kesavan243.63%13.33%
Krzysztof Kozlowski162.42%26.67%
Daniel Lezcano131.96%26.67%
Kukjin Kim101.51%13.33%
Olof Johansson81.21%26.67%
Marc Zyngier50.76%13.33%
Ben Dooks20.30%13.33%
Thomas Abraham20.30%13.33%
Masahiro Yamada10.15%13.33%
Changhwan Youn10.15%13.33%
Total662100.00%30100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.