Blame view

include/linux/wkup_m3_ipc.h 1.53 KB
cdd5de500   Dave Gerlach   soc: ti: Add wkup...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  /*
   * TI Wakeup M3 for AMx3 SoCs Power Management Routines
   *
   * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
   * Dave Gerlach <d-gerlach@ti.com>
   *
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License as
   * published by the Free Software Foundation version 2.
   *
   * This program is distributed "as is" WITHOUT ANY WARRANTY of any
   * kind, whether express or implied; without even the implied warranty
   * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   */
  
  #ifndef _LINUX_WKUP_M3_IPC_H
  #define _LINUX_WKUP_M3_IPC_H
  
  #define WKUP_M3_DEEPSLEEP	1
  #define WKUP_M3_STANDBY		2
  #define WKUP_M3_IDLE		3
  
  #include <linux/mailbox_client.h>
  
  struct wkup_m3_ipc_ops;
  
  struct wkup_m3_ipc {
  	struct rproc *rproc;
  
  	void __iomem *ipc_mem_base;
  	struct device *dev;
  
  	int mem_type;
  	unsigned long resume_addr;
  	int state;
  
  	struct completion sync_complete;
  	struct mbox_client mbox_client;
  	struct mbox_chan *mbox;
  
  	struct wkup_m3_ipc_ops *ops;
  };
  
  struct wkup_m3_ipc_ops {
  	void (*set_mem_type)(struct wkup_m3_ipc *m3_ipc, int mem_type);
  	void (*set_resume_address)(struct wkup_m3_ipc *m3_ipc, void *addr);
  	int (*prepare_low_power)(struct wkup_m3_ipc *m3_ipc, int state);
  	int (*finish_low_power)(struct wkup_m3_ipc *m3_ipc);
  	int (*request_pm_status)(struct wkup_m3_ipc *m3_ipc);
  };
  
  struct wkup_m3_ipc *wkup_m3_ipc_get(void);
  void wkup_m3_ipc_put(struct wkup_m3_ipc *m3_ipc);
  #endif /* _LINUX_WKUP_M3_IPC_H */