File Index
Files and directories
Sign in
FILE

thead,th1520-aon.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/firmware/thead/thead,th1520-aon.h C
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 * Copyright (C) 2021 Alibaba Group Holding Limited.
  4 */
  5
  6#ifndef _THEAD_AON_H
  7#define _THEAD_AON_H
  8
  9#include <linux/device.h>
 10#include <linux/types.h>
 11
 12#define AON_RPC_MSG_MAGIC (0xef)
 13#define TH1520_AON_RPC_VERSION 2
 14#define TH1520_AON_RPC_MSG_NUM 7
 15
 16struct th1520_aon_chan;
 17
 18enum th1520_aon_rpc_svc {
 19	TH1520_AON_RPC_SVC_UNKNOWN = 0,
 20	TH1520_AON_RPC_SVC_PM = 1,
 21	TH1520_AON_RPC_SVC_MISC = 2,
 22	TH1520_AON_RPC_SVC_AVFS = 3,
 23	TH1520_AON_RPC_SVC_SYS = 4,
 24	TH1520_AON_RPC_SVC_WDG = 5,
 25	TH1520_AON_RPC_SVC_LPM = 6,
 26	TH1520_AON_RPC_SVC_MAX = 0x3F,
 27};
 28
 29enum th1520_aon_misc_func {
 30	TH1520_AON_MISC_FUNC_UNKNOWN = 0,
 31	TH1520_AON_MISC_FUNC_SET_CONTROL = 1,
 32	TH1520_AON_MISC_FUNC_GET_CONTROL = 2,
 33	TH1520_AON_MISC_FUNC_REGDUMP_CFG = 3,
 34};
 35
 36enum th1520_aon_wdg_func {
 37	TH1520_AON_WDG_FUNC_UNKNOWN = 0,
 38	TH1520_AON_WDG_FUNC_START = 1,
 39	TH1520_AON_WDG_FUNC_STOP = 2,
 40	TH1520_AON_WDG_FUNC_PING = 3,
 41	TH1520_AON_WDG_FUNC_TIMEOUTSET = 4,
 42	TH1520_AON_WDG_FUNC_RESTART = 5,
 43	TH1520_AON_WDG_FUNC_GET_STATE = 6,
 44	TH1520_AON_WDG_FUNC_POWER_OFF = 7,
 45	TH1520_AON_WDG_FUNC_AON_WDT_ON = 8,
 46	TH1520_AON_WDG_FUNC_AON_WDT_OFF = 9,
 47};
 48
 49enum th1520_aon_sys_func {
 50	TH1520_AON_SYS_FUNC_UNKNOWN = 0,
 51	TH1520_AON_SYS_FUNC_AON_RESERVE_MEM = 1,
 52};
 53
 54enum th1520_aon_lpm_func {
 55	TH1520_AON_LPM_FUNC_UNKNOWN = 0,
 56	TH1520_AON_LPM_FUNC_REQUIRE_STR = 1,
 57	TH1520_AON_LPM_FUNC_RESUME_STR = 2,
 58	TH1520_AON_LPM_FUNC_REQUIRE_STD = 3,
 59	TH1520_AON_LPM_FUNC_CPUHP = 4,
 60	TH1520_AON_LPM_FUNC_REGDUMP_CFG = 5,
 61};
 62
 63enum th1520_aon_pm_func {
 64	TH1520_AON_PM_FUNC_UNKNOWN = 0,
 65	TH1520_AON_PM_FUNC_SET_RESOURCE_REGULATOR = 1,
 66	TH1520_AON_PM_FUNC_GET_RESOURCE_REGULATOR = 2,
 67	TH1520_AON_PM_FUNC_SET_RESOURCE_POWER_MODE = 3,
 68	TH1520_AON_PM_FUNC_PWR_SET = 4,
 69	TH1520_AON_PM_FUNC_PWR_GET = 5,
 70	TH1520_AON_PM_FUNC_CHECK_FAULT = 6,
 71	TH1520_AON_PM_FUNC_GET_TEMPERATURE = 7,
 72};
 73
 74struct th1520_aon_rpc_msg_hdr {
 75	u8 ver; /* version of msg hdr */
 76	u8 size; /*  msg size ,uinit in bytes,the size includes rpc msg header self */
 77	u8 svc; /* rpc main service id */
 78	u8 func; /* rpc sub func id of specific service, sent by caller */
 79} __packed __aligned(1);
 80
 81struct th1520_aon_rpc_ack_common {
 82	struct th1520_aon_rpc_msg_hdr hdr;
 83	u8 err_code;
 84} __packed __aligned(1);
 85
 86#define RPC_SVC_MSG_TYPE_DATA 0
 87#define RPC_SVC_MSG_TYPE_ACK 1
 88#define RPC_SVC_MSG_NEED_ACK 0
 89#define RPC_SVC_MSG_NO_NEED_ACK 1
 90
 91#define RPC_GET_VER(MESG) ((MESG)->ver)
 92#define RPC_SET_VER(MESG, VER) ((MESG)->ver = (VER))
 93#define RPC_GET_SVC_ID(MESG) ((MESG)->svc & 0x3F)
 94#define RPC_SET_SVC_ID(MESG, ID) ((MESG)->svc |= 0x3F & (ID))
 95#define RPC_GET_SVC_FLAG_MSG_TYPE(MESG) (((MESG)->svc & 0x80) >> 7)
 96#define RPC_SET_SVC_FLAG_MSG_TYPE(MESG, TYPE) ((MESG)->svc |= (TYPE) << 7)
 97#define RPC_GET_SVC_FLAG_ACK_TYPE(MESG) (((MESG)->svc & 0x40) >> 6)
 98#define RPC_SET_SVC_FLAG_ACK_TYPE(MESG, ACK) ((MESG)->svc |= (ACK) << 6)
 99
100/*
101 * Defines for SC PM Power Mode
102 */
103#define TH1520_AON_PM_PW_MODE_OFF 0 /* Power off */
104#define TH1520_AON_PM_PW_MODE_STBY 1 /* Power in standby */
105#define TH1520_AON_PM_PW_MODE_LP 2 /* Power in low-power */
106#define TH1520_AON_PM_PW_MODE_ON 3 /* Power on */
107
108/*
109 * Defines for AON power islands
110 */
111#define TH1520_AON_AUDIO_PD 0
112#define TH1520_AON_VDEC_PD 1
113#define TH1520_AON_NPU_PD 2
114#define TH1520_AON_VENC_PD 3
115#define TH1520_AON_GPU_PD 4
116#define TH1520_AON_DSP0_PD 5
117#define TH1520_AON_DSP1_PD 6
118
119struct th1520_aon_chan *th1520_aon_init(struct device *dev);
120void th1520_aon_deinit(struct th1520_aon_chan *aon_chan);
121
122int th1520_aon_call_rpc(struct th1520_aon_chan *aon_chan, void *msg);
123int th1520_aon_power_update(struct th1520_aon_chan *aon_chan, u16 rsrc,
124			    bool power_on);
125
126#endif /* _THEAD_AON_H */
~/ Read-only file preview.