cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pm33xx.h (2305B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * TI pm33xx platform data
      4 *
      5 * Copyright (C) 2016-2018 Texas Instruments, Inc.
      6 *	Dave Gerlach <d-gerlach@ti.com>
      7 */
      8
      9#ifndef _LINUX_PLATFORM_DATA_PM33XX_H
     10#define _LINUX_PLATFORM_DATA_PM33XX_H
     11
     12#include <linux/kbuild.h>
     13#include <linux/types.h>
     14
     15/*
     16 * WFI Flags for sleep code control
     17 *
     18 * These flags allow PM code to exclude certain operations from happening
     19 * in the low level ASM code found in sleep33xx.S and sleep43xx.S
     20 *
     21 * WFI_FLAG_FLUSH_CACHE: Flush the ARM caches and disable caching. Only
     22 *			 needed when MPU will lose context.
     23 * WFI_FLAG_SELF_REFRESH: Let EMIF place DDR memory into self-refresh and
     24 *			  disable EMIF.
     25 * WFI_FLAG_SAVE_EMIF: Save context of all EMIF registers and restore in
     26 *		       resume path. Only needed if PER domain loses context
     27 *		       and must also have WFI_FLAG_SELF_REFRESH set.
     28 * WFI_FLAG_WAKE_M3: Disable MPU clock or clockdomain to cause wkup_m3 to
     29 *		     execute when WFI instruction executes.
     30 * WFI_FLAG_RTC_ONLY: Configure the RTC to enter RTC+DDR mode.
     31 */
     32#define WFI_FLAG_FLUSH_CACHE		BIT(0)
     33#define WFI_FLAG_SELF_REFRESH		BIT(1)
     34#define WFI_FLAG_SAVE_EMIF		BIT(2)
     35#define WFI_FLAG_WAKE_M3		BIT(3)
     36#define WFI_FLAG_RTC_ONLY		BIT(4)
     37
     38#ifndef __ASSEMBLER__
     39struct am33xx_pm_sram_addr {
     40	void (*do_wfi)(void);
     41	unsigned long *do_wfi_sz;
     42	unsigned long *resume_offset;
     43	unsigned long *emif_sram_table;
     44	unsigned long *ro_sram_data;
     45	unsigned long resume_address;
     46};
     47
     48struct am33xx_pm_platform_data {
     49	int     (*init)(int (*idle)(u32 wfi_flags));
     50	int     (*deinit)(void);
     51	int	(*soc_suspend)(unsigned int state, int (*fn)(unsigned long),
     52			       unsigned long args);
     53	int	(*cpu_suspend)(int (*fn)(unsigned long), unsigned long args);
     54	void    (*begin_suspend)(void);
     55	void    (*finish_suspend)(void);
     56	struct  am33xx_pm_sram_addr *(*get_sram_addrs)(void);
     57	void (*save_context)(void);
     58	void (*restore_context)(void);
     59	int (*check_off_mode_enable)(void);
     60};
     61
     62struct am33xx_pm_sram_data {
     63	u32 wfi_flags;
     64	u32 l2_aux_ctrl_val;
     65	u32 l2_prefetch_ctrl_val;
     66} __packed __aligned(8);
     67
     68struct am33xx_pm_ro_sram_data {
     69	u32 amx3_pm_sram_data_virt;
     70	u32 amx3_pm_sram_data_phys;
     71	void __iomem *rtc_base_virt;
     72} __packed __aligned(8);
     73
     74#endif /* __ASSEMBLER__ */
     75#endif /* _LINUX_PLATFORM_DATA_PM33XX_H */