mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
bf1fa6f155
These are mostly minor cleanups and bugfixes that address harmless problems. The largest branch is a conversion of the omap platform to use GPIO descriptors throughout the tree, for any devices that are not fully converted to devicetree. The Samsung Exynos platform gains back support for the Exynos4212 chip that was previously unused and removed but is now used for the Samsung Galaxy Tab3. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmScsH8ACgkQYKtH/8kJ UicTOhAAxQB1zySNJ4vOwTnV9Mrey+b/1RvjKDwZAa3uuP6vgpPjAjqVxlRxl+TM SWal+0zzj+vrFTkTl0niT+DzMFOEnLqhBd7smN8YKmC+hD3t9g5Dos7Q/IsUVlrT SnXDmit+eSI2QXFeO1OM0LdmniLDcKydsQ8o4beKF6YaJRGYACNSmtIjB3KvWccv 3cQXoaqN5rFoQxbLiGVINVyDU3Qpie2m8RqUcVWSmva46UM2yDAUWXwFNxcP8jXp WjL+NaiH7Ea/pzPcn3895u5ybIOZSylxLGRzL1ktewJqczUKf701qVZbf6enZp99 SbEQQh4DKm4DkpQ/JdPoO9x3InORAGUQ1p0Ssa92rKuiEVSXsQUeO3BNAYGfvpy3 o3QElSp6hlDWOHk9KawHzY3lfMsvKnTckFQDZxMbvC0+tQj6cDIM/qWo74CdZ07S UxVa1C9L2Lerv6IAG3v2meI9HjBn7DInWjfOAOxj2gX/ryIrdX9lO0692n6nVYca szH3CANjwPCPrtjAE2RXPjLTK+6nmQDavcEVEiG1SoGTplLh7RZgeQXV+5iIaOLp Nc8MDddR656kPBEprgoEugGZuLjsY2IGaLj+FNGriOEBKo5jpfEFeRQ2GPKxoyWR OHeWtxcFtBc2SnfVOtdMQ/X3UZTd4vlJYbNffiL+2NSM0iMBbHs= =z6FU -----END PGP SIGNATURE----- Merge tag 'soc-arm-6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc Pull ARM SoC updates from Arnd Bergmann: "These are mostly minor cleanups and bugfixes that address harmless problems. The largest branch is a conversion of the omap platform to use GPIO descriptors throughout the tree, for any devices that are not fully converted to devicetree. The Samsung Exynos platform gains back support for the Exynos4212 chip that was previously unused and removed but is now used for the Samsung Galaxy Tab3" * tag 'soc-arm-6.5' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (24 commits) ARM: omap2: Fix copy/paste bug MAINTAINERS: Replace my email address Input: ads7846 - fix pointer cast warning Input: ads7846 - Fix usage of match data ARM: omap2: Fix checkpatch issues arm: omap1: replace printk() with pr_err macro ARM: omap: Fix checkpatch issues ARM: s3c: Switch i2c drivers back to use .probe() ARM: versatile: mark mmc_status() static ARM: spear: include "pl080.h" for pl080_get_signal() prototype ARM: sa1100: address missing prototype warnings ARM: pxa: fix missing-prototypes warnings ARM: orion5x: fix d2net gpio initialization ARM: omap2: fix missing tick_broadcast() prototype ARM: omap1: add missing include ARM: lpc32xx: add missing include ARM: imx: add missing include ARM: highbank: add missing include ARM: ep93xx: fix missing-prototype warnings ARM: davinci: fix davinci_cpufreq_init() declaration ...
174 lines
4.7 KiB
C
174 lines
4.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2011 Samsung Electronics Co., Ltd.
|
|
* http://www.samsung.com
|
|
*
|
|
* Common Header for Exynos machines
|
|
*/
|
|
|
|
#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 EXYNOS5800_SOC_ID 0xE5422000
|
|
#define EXYNOS5_SOC_MASK 0xFFFFF000
|
|
|
|
extern unsigned long exynos_cpu_id;
|
|
|
|
#define IS_SAMSUNG_CPU(name, id, mask) \
|
|
static inline int is_samsung_##name(void) \
|
|
{ \
|
|
return ((exynos_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(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_EXYNOS5800)
|
|
# define soc_is_exynos5800() is_samsung_exynos5800()
|
|
#else
|
|
# define soc_is_exynos5800() 0
|
|
#endif
|
|
|
|
extern u32 cp15_save_diag;
|
|
extern u32 cp15_save_power;
|
|
|
|
extern void __iomem *sysram_ns_base_addr;
|
|
extern void __iomem *sysram_base_addr;
|
|
extern phys_addr_t sysram_base_phys;
|
|
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/arch/arm/samsung/bootloader-interface.rst
|
|
*/
|
|
#define EXYNOS_SLEEP_MAGIC 0x00000bad
|
|
#define EXYNOS_AFTR_MAGIC 0xfcba0d10
|
|
|
|
bool __init exynos_secure_firmware_available(void);
|
|
void exynos_set_boot_flag(unsigned int cpu, unsigned int mode);
|
|
void exynos_clear_boot_flag(unsigned int cpu, unsigned int mode);
|
|
|
|
#ifdef CONFIG_PM_SLEEP
|
|
extern void __init exynos_pm_init(void);
|
|
#else
|
|
static inline void exynos_pm_init(void) {}
|
|
#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);
|
|
#ifdef CONFIG_SMP
|
|
extern void exynos_scu_enable(void);
|
|
#else
|
|
static inline void exynos_scu_enable(void) { }
|
|
#endif
|
|
|
|
extern struct cpuidle_exynos_data cpuidle_coupled_exynos_data;
|
|
|
|
extern void exynos_set_delayed_reset_assertion(bool enable);
|
|
|
|
extern unsigned int exynos_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);
|
|
}
|
|
|
|
static inline u32 pmu_raw_readl(u32 offset)
|
|
{
|
|
return readl_relaxed(pmu_base_addr + offset);
|
|
}
|
|
|
|
#endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
|