1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __QCOM_SMD_RPM_H__
3 #define __QCOM_SMD_RPM_H__
4 
5 #include <linux/types.h>
6 
7 struct qcom_smd_rpm;
8 
9 #define QCOM_SMD_RPM_ACTIVE_STATE	0
10 #define QCOM_SMD_RPM_SLEEP_STATE	1
11 #define QCOM_SMD_RPM_STATE_NUM		2
12 
13 /*
14  * Constants used for addressing resources in the RPM.
15  */
16 #define QCOM_SMD_RPM_BBYB	0x62796262
17 #define QCOM_SMD_RPM_BOBB	0x62626f62
18 #define QCOM_SMD_RPM_BOOST	0x61747362
19 #define QCOM_SMD_RPM_BUS_CLK	0x316b6c63
20 #define QCOM_SMD_RPM_BUS_MASTER	0x73616d62
21 #define QCOM_SMD_RPM_BUS_SLAVE	0x766c7362
22 #define QCOM_SMD_RPM_CLK_BUF_A	0x616B6C63
23 #define QCOM_SMD_RPM_LDOA	0x616f646c
24 #define QCOM_SMD_RPM_LDOB	0x626F646C
25 #define QCOM_SMD_RPM_LDOE	0x656f646c
26 #define QCOM_SMD_RPM_RWCX	0x78637772
27 #define QCOM_SMD_RPM_RWMX	0x786d7772
28 #define QCOM_SMD_RPM_RWLC	0x636c7772
29 #define QCOM_SMD_RPM_RWLM	0x6d6c7772
30 #define QCOM_SMD_RPM_MEM_CLK	0x326b6c63
31 #define QCOM_SMD_RPM_MISC_CLK	0x306b6c63
32 #define QCOM_SMD_RPM_NCPA	0x6170636E
33 #define QCOM_SMD_RPM_NCPB	0x6270636E
34 #define QCOM_SMD_RPM_OCMEM_PWR	0x706d636f
35 #define QCOM_SMD_RPM_QPIC_CLK	0x63697071
36 #define QCOM_SMD_RPM_QUP_CLK	0x707571
37 #define QCOM_SMD_RPM_SMPA	0x61706d73
38 #define QCOM_SMD_RPM_SMPB	0x62706d73
39 #define QCOM_SMD_RPM_SMPE	0x65706d73
40 #define QCOM_SMD_RPM_SPDM	0x63707362
41 #define QCOM_SMD_RPM_VSA	0x00617376
42 #define QCOM_SMD_RPM_MMAXI_CLK	0x69786d6d
43 #define QCOM_SMD_RPM_IPA_CLK	0x617069
44 #define QCOM_SMD_RPM_CE_CLK	0x6563
45 #define QCOM_SMD_RPM_AGGR_CLK	0x72676761
46 #define QCOM_SMD_RPM_HWKM_CLK	0x6d6b7768
47 #define QCOM_SMD_RPM_PKA_CLK	0x616b70
48 #define QCOM_SMD_RPM_MCFG_CLK	0x6766636d
49 
50 #define QCOM_RPM_KEY_SOFTWARE_ENABLE			0x6e657773
51 #define QCOM_RPM_KEY_PIN_CTRL_CLK_BUFFER_ENABLE_KEY	0x62636370
52 #define QCOM_RPM_SMD_KEY_RATE				0x007a484b
53 #define QCOM_RPM_SMD_KEY_ENABLE				0x62616e45
54 #define QCOM_RPM_SMD_KEY_STATE				0x54415453
55 #define QCOM_RPM_SCALING_ENABLE_ID			0x2
56 
57 struct clk_smd_rpm_req {
58 	__le32 key;
59 	__le32 nbytes;
60 	__le32 value;
61 };
62 
63 int qcom_rpm_smd_write(struct qcom_smd_rpm *rpm,
64 		       int state,
65 		       u32 resource_type, u32 resource_id,
66 		       void *buf, size_t count);
67 
68 #endif
69