Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
0437c421
Commit
0437c421
authored
Jun 08, 2017
by
danh-arm
Committed by
GitHub
Jun 08, 2017
Browse files
Merge pull request #970 from vingu-linaro/enable-pmf-rt-instr-hikey
Enable pmf rt instr hikey
parents
5747ecab
9f505cc2
Changes
3
Hide whitespace changes
Inline
Side-by-side
plat/hisilicon/hikey/hisi_sip_svc.c
0 → 100644
View file @
0437c421
/*
* Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <hisi_sip_svc.h>
#include <debug.h>
#include <pmf.h>
#include <runtime_svc.h>
#include <stdint.h>
#include <uuid.h>
/* Hisi SiP Service UUID */
DEFINE_SVC_UUID
(
hisi_sip_svc_uid
,
0xe599df74
,
0x7682
,
0x40aa
,
0x9f
,
0xf8
,
0xc0
,
0x85
,
0x52
,
0xbc
,
0x39
,
0x3f
);
static
int
hisi_sip_setup
(
void
)
{
if
(
pmf_setup
()
!=
0
)
return
1
;
return
0
;
}
/*
* This function handles Hisi defined SiP Calls
*/
static
uintptr_t
hisi_sip_handler
(
unsigned
int
smc_fid
,
u_register_t
x1
,
u_register_t
x2
,
u_register_t
x3
,
u_register_t
x4
,
void
*
cookie
,
void
*
handle
,
u_register_t
flags
)
{
int
call_count
=
0
;
/*
* Dispatch PMF calls to PMF SMC handler and return its return
* value
*/
if
(
is_pmf_fid
(
smc_fid
))
{
return
pmf_smc_handler
(
smc_fid
,
x1
,
x2
,
x3
,
x4
,
cookie
,
handle
,
flags
);
}
switch
(
smc_fid
)
{
case
HISI_SIP_SVC_CALL_COUNT
:
/* PMF calls */
call_count
+=
PMF_NUM_SMC_CALLS
;
/* State switch call */
call_count
+=
1
;
SMC_RET1
(
handle
,
call_count
);
case
HISI_SIP_SVC_UID
:
/* Return UID to the caller */
SMC_UUID_RET
(
handle
,
hisi_sip_svc_uid
);
case
HISI_SIP_SVC_VERSION
:
/* Return the version of current implementation */
SMC_RET2
(
handle
,
HISI_SIP_SVC_VERSION_MAJOR
,
HISI_SIP_SVC_VERSION_MINOR
);
default:
WARN
(
"Unimplemented HISI SiP Service Call: 0x%x
\n
"
,
smc_fid
);
SMC_RET1
(
handle
,
SMC_UNK
);
}
}
/* Define a runtime service descriptor for fast SMC calls */
DECLARE_RT_SVC
(
hisi_sip_svc
,
OEN_SIP_START
,
OEN_SIP_END
,
SMC_TYPE_FAST
,
hisi_sip_setup
,
hisi_sip_handler
);
plat/hisilicon/hikey/include/hisi_sip_svc.h
0 → 100644
View file @
0437c421
/*
* Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef __HISI_SIP_SVC_H__
#define __HISI_SIP_SVC_H__
/* SMC function IDs for SiP Service queries */
#define HISI_SIP_SVC_CALL_COUNT 0x8200ff00
#define HISI_SIP_SVC_UID 0x8200ff01
/* 0x8200ff02 is reserved */
#define HISI_SIP_SVC_VERSION 0x8200ff03
/* HISI SiP Service Calls version numbers */
#define HISI_SIP_SVC_VERSION_MAJOR 0x0
#define HISI_SIP_SVC_VERSION_MINOR 0x1
#endif
/* __ARM_SIP_SVC_H__ */
plat/hisilicon/hikey/platform.mk
View file @
0437c421
...
...
@@ -77,3 +77,8 @@ BL31_SOURCES += drivers/arm/cci/cci.c \
plat/hisilicon/hikey/hisi_pwrc.c
\
plat/hisilicon/hikey/hisi_pwrc_sram.S
\
${HIKEY_GIC_SOURCES}
ifeq
(${ENABLE_PMF}, 1)
BL31_SOURCES
+=
plat/hisilicon/hikey/hisi_sip_svc.c
\
lib/pmf/pmf_smc.c
endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment