SoC updates for omaps for v4.19 merge window

These changes are mostly PM related changes for am335x and
 am437x to support RTC only suspend mode. Some of the clock
 and driver related chances are still pending so it's not
 yet fully functional.
 
 Also included is a change for PM debug sysfs entry to use
 DEFINE_SHOW_ATTRIBUTE.
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEkgNvrZJU/QSQYIcQG9Q+yVyrpXMFAltF9jwRHHRvbnlAYXRv
 bWlkZS5jb20ACgkQG9Q+yVyrpXND+A/+Is28Eudbo9KvOtNA6Pebk2uT2sIUcBB8
 a+j71jHALGpMKk7XpgBwsCgA+Fn7MRtERS+9MFyganXl9Ug0i3T1h725sEAQo6ok
 4dItC+BzCjOkbJuwGQB1KvmCKeouF7qjYG2Jgy54AljAHZtDW0tbgC9S6o0xvfJN
 p5zN4WMgomSoKFfoCkrzeQQblg5fUJU6BuK0zHBPVRNKSF2T1THZiUUrF1QWvmbM
 /L8/TRqpkngzZfj2dhv/Ja9WxR9MUzbeciwiiF+5j9Yu5+PcUO/OYN7P9i/nM9J3
 G/kTyCALTagVqia84Q+llitkUwlbXkC83BSAgWFVXEIbDmDALhya2KtApePkTP5j
 n9NceSuuOmKEA/4uq2jR89sTbd3UC9zYNlEu2R0qcrpSo+4N3Q4Pp9LsrN52g8M/
 bG0t53YC+vFM+GUhVTxKs2zH1amJRHlPvMqmSJQksY0o/QJFxTFOFdGh9nfhYetq
 ci3c8Ljv0MF2TuiGnG6FOOyax7pyap7oxOZfUuxwkCIhXgQs9UIcQy3e5s8if4F2
 5brWdWuvqJPWWIyv9IF0yfT5IA44LJpO+UbZLmUHcPucH1gkJSai8GFJKXttfyQx
 Mw5sn/QUQoTHCd+NSocHirr0iPg2OqHNtHJlRdqrV2gx2hT9878gIwqnWUeXyUM4
 3SzrsXUWtik=
 =Px9o
 -----END PGP SIGNATURE-----

Merge tag 'omap-for-v4.19/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/soc

SoC updates for omaps for v4.19 merge window

These changes are mostly PM related changes for am335x and
am437x to support RTC only suspend mode. Some of the clock
and driver related chances are still pending so it's not
yet fully functional.

Also included is a change for PM debug sysfs entry to use
DEFINE_SHOW_ATTRIBUTE.

* tag 'omap-for-v4.19/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP2+: sleep33/43xx: Add RTC-Mode support
  ARM: OMAP2+: sleep33/43xx: Make sleep actions configurable
  ARM: OMAP2+: reuse DEFINE_SHOW_ATTRIBUTE() macro
  ARM: hwmod: RTC: Don't assume lock/unlock will be called with irq enabled

Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
Olof Johansson 2018-07-14 14:45:14 -07:00
commit edc07c0012
8 changed files with 229 additions and 49 deletions

View file

@ -12,6 +12,29 @@
#include <linux/kbuild.h>
#include <linux/types.h>
/*
* WFI Flags for sleep code control
*
* These flags allow PM code to exclude certain operations from happening
* in the low level ASM code found in sleep33xx.S and sleep43xx.S
*
* WFI_FLAG_FLUSH_CACHE: Flush the ARM caches and disable caching. Only
* needed when MPU will lose context.
* WFI_FLAG_SELF_REFRESH: Let EMIF place DDR memory into self-refresh and
* disable EMIF.
* WFI_FLAG_SAVE_EMIF: Save context of all EMIF registers and restore in
* resume path. Only needed if PER domain loses context
* and must also have WFI_FLAG_SELF_REFRESH set.
* WFI_FLAG_WAKE_M3: Disable MPU clock or clockdomain to cause wkup_m3 to
* execute when WFI instruction executes.
* WFI_FLAG_RTC_ONLY: Configure the RTC to enter RTC+DDR mode.
*/
#define WFI_FLAG_FLUSH_CACHE BIT(0)
#define WFI_FLAG_SELF_REFRESH BIT(1)
#define WFI_FLAG_SAVE_EMIF BIT(2)
#define WFI_FLAG_WAKE_M3 BIT(3)
#define WFI_FLAG_RTC_ONLY BIT(4)
#ifndef __ASSEMBLER__
struct am33xx_pm_sram_addr {
void (*do_wfi)(void);
@ -19,12 +42,15 @@ struct am33xx_pm_sram_addr {
unsigned long *resume_offset;
unsigned long *emif_sram_table;
unsigned long *ro_sram_data;
unsigned long resume_address;
};
struct am33xx_pm_platform_data {
int (*init)(void);
int (*soc_suspend)(unsigned int state, int (*fn)(unsigned long));
int (*soc_suspend)(unsigned int state, int (*fn)(unsigned long),
unsigned long args);
struct am33xx_pm_sram_addr *(*get_sram_addrs)(void);
void __iomem *(*get_rtc_base_addr)(void);
};
struct am33xx_pm_sram_data {
@ -36,6 +62,7 @@ struct am33xx_pm_sram_data {
struct am33xx_pm_ro_sram_data {
u32 amx3_pm_sram_data_virt;
u32 amx3_pm_sram_data_phys;
void __iomem *rtc_base_virt;
} __packed __aligned(8);
#endif /* __ASSEMBLER__ */