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
aaa0567c
Commit
aaa0567c
authored
Aug 11, 2015
by
danh-arm
Browse files
Merge pull request #356 from mtk09422/mt8173-support-v3
Mt8173 support v3
parents
c905376f
7d116dcc
Changes
45
Show whitespace changes
Inline
Side-by-side
plat/mediatek/mt8173/plat_sip_calls.c
0 → 100644
View file @
aaa0567c
/*
* Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of ARM nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <mmio.h>
#include <mtk_sip_svc.h>
/* Authorized secure register list */
enum
{
SREG_HDMI_COLOR_EN
=
0x14000904
};
static
const
uint32_t
authorized_sreg
[]
=
{
SREG_HDMI_COLOR_EN
};
#define authorized_sreg_cnt \
(sizeof(authorized_sreg) / sizeof(authorized_sreg[0]))
uint64_t
mt_sip_set_authorized_sreg
(
uint32_t
sreg
,
uint32_t
val
)
{
uint64_t
i
;
for
(
i
=
0
;
i
<
authorized_sreg_cnt
;
i
++
)
{
if
(
authorized_sreg
[
i
]
==
sreg
)
{
mmio_write_32
(
sreg
,
val
);
return
MTK_SIP_E_SUCCESS
;
}
}
return
MTK_SIP_E_INVALID_PARAM
;
}
plat/mediatek/mt8173/plat_topology.c
0 → 100644
View file @
aaa0567c
/*
* Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of ARM nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <arch.h>
#include <psci.h>
unsigned
int
plat_get_aff_count
(
unsigned
int
aff_lvl
,
unsigned
long
mpidr
)
{
/* Report 1 (absent) instance at levels higher that the cluster level */
if
(
aff_lvl
>
MPIDR_AFFLVL1
)
return
1
;
if
(
aff_lvl
==
MPIDR_AFFLVL1
)
return
2
;
/* We have two clusters */
return
mpidr
&
0x100
?
2
:
2
;
/* 2 cpus in cluster 1, 2 in cluster 0 */
}
unsigned
int
plat_get_aff_state
(
unsigned
int
aff_lvl
,
unsigned
long
mpidr
)
{
return
aff_lvl
<=
MPIDR_AFFLVL2
?
PSCI_AFF_PRESENT
:
PSCI_AFF_ABSENT
;
}
int
mt_setup_topology
(
void
)
{
/* [TODO] Make topology configurable via SCC */
return
0
;
}
plat/mediatek/mt8173/platform.mk
0 → 100644
View file @
aaa0567c
#
# Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# Neither the name of ARM nor the names of its contributors may be used
# to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
MTK_PLAT
:=
plat/mediatek
MTK_PLAT_SOC
:=
${MTK_PLAT}
/
${PLAT}
PLAT_INCLUDES
:=
-I
${MTK_PLAT}
/common/
\
-I
${MTK_PLAT_SOC}
/
\
-I
${MTK_PLAT_SOC}
/drivers/gpio/
\
-I
${MTK_PLAT_SOC}
/drivers/mtcmos/
\
-I
${MTK_PLAT_SOC}
/drivers/pmic/
\
-I
${MTK_PLAT_SOC}
/drivers/rtc/
\
-I
${MTK_PLAT_SOC}
/drivers/spm/
\
-I
${MTK_PLAT_SOC}
/drivers/timer/
\
-I
${MTK_PLAT_SOC}
/drivers/uart/
\
-I
${MTK_PLAT_SOC}
/include/
PLAT_BL_COMMON_SOURCES
:=
lib/aarch64/xlat_tables.c
\
plat/common/aarch64/plat_common.c
\
plat/common/plat_gic.c
BL31_SOURCES
+=
drivers/arm/cci/cci.c
\
drivers/arm/gic/arm_gic.c
\
drivers/arm/gic/gic_v2.c
\
drivers/arm/gic/gic_v3.c
\
drivers/console/console.S
\
drivers/delay_timer/delay_timer.c
\
lib/cpus/aarch64/aem_generic.S
\
lib/cpus/aarch64/cortex_a53.S
\
lib/cpus/aarch64/cortex_a57.S
\
lib/cpus/aarch64/cortex_a72.S
\
plat/common/aarch64/platform_mp_stack.S
\
${MTK_PLAT}
/common/mtk_sip_svc.c
\
${MTK_PLAT_SOC}
/aarch64/plat_helpers.S
\
${MTK_PLAT_SOC}
/aarch64/platform_common.c
\
${MTK_PLAT_SOC}
/bl31_plat_setup.c
\
${MTK_PLAT_SOC}
/drivers/gpio/gpio.c
\
${MTK_PLAT_SOC}
/drivers/mtcmos/mtcmos.c
\
${MTK_PLAT_SOC}
/drivers/pmic/pmic_wrap_init.c
\
${MTK_PLAT_SOC}
/drivers/rtc/rtc.c
\
${MTK_PLAT_SOC}
/drivers/spm/spm.c
\
${MTK_PLAT_SOC}
/drivers/spm/spm_hotplug.c
\
${MTK_PLAT_SOC}
/drivers/spm/spm_mcdi.c
\
${MTK_PLAT_SOC}
/drivers/spm/spm_suspend.c
\
${MTK_PLAT_SOC}
/drivers/timer/mt_cpuxgpt.c
\
${MTK_PLAT_SOC}
/drivers/uart/8250_console.S
\
${MTK_PLAT_SOC}
/plat_delay_timer.c
\
${MTK_PLAT_SOC}
/plat_mt_gic.c
\
${MTK_PLAT_SOC}
/plat_pm.c
\
${MTK_PLAT_SOC}
/plat_sip_calls.c
\
${MTK_PLAT_SOC}
/plat_topology.c
\
${MTK_PLAT_SOC}
/power_tracer.c
\
${MTK_PLAT_SOC}
/scu.c
# Flag used by the MTK_platform port to determine the version of ARM GIC
# architecture to use for interrupt management in EL3.
ARM_GIC_ARCH
:=
2
$(eval
$(call
add_define,ARM_GIC_ARCH))
# Enable workarounds for selected Cortex-A53 erratas.
ERRATA_A53_826319
:=
1
ERRATA_A53_836870
:=
1
# indicate the reset vector address can be programmed
PROGRAMMABLE_RESET_ADDRESS
:=
1
plat/mediatek/mt8173/power_tracer.c
0 → 100644
View file @
aaa0567c
/*
* Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of ARM nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <arch.h>
#include <debug.h>
#include <power_tracer.h>
#define trace_log(...) INFO("psci: " __VA_ARGS__)
void
trace_power_flow
(
unsigned
long
mpidr
,
unsigned
char
mode
)
{
switch
(
mode
)
{
case
CPU_UP
:
trace_log
(
"core %ld:%ld ON
\n
"
,
(
mpidr
&
MPIDR_CLUSTER_MASK
)
>>
MPIDR_AFFINITY_BITS
,
(
mpidr
&
MPIDR_CPU_MASK
));
break
;
case
CPU_DOWN
:
trace_log
(
"core %ld:%ld OFF
\n
"
,
(
mpidr
&
MPIDR_CLUSTER_MASK
)
>>
MPIDR_AFFINITY_BITS
,
(
mpidr
&
MPIDR_CPU_MASK
));
break
;
case
CPU_SUSPEND
:
trace_log
(
"core %ld:%ld SUSPEND
\n
"
,
(
mpidr
&
MPIDR_CLUSTER_MASK
)
>>
MPIDR_AFFINITY_BITS
,
(
mpidr
&
MPIDR_CPU_MASK
));
break
;
case
CLUSTER_UP
:
trace_log
(
"cluster %ld ON
\n
"
,
(
mpidr
&
MPIDR_CLUSTER_MASK
)
>>
MPIDR_AFFINITY_BITS
);
break
;
case
CLUSTER_DOWN
:
trace_log
(
"cluster %ld OFF
\n
"
,
(
mpidr
&
MPIDR_CLUSTER_MASK
)
>>
MPIDR_AFFINITY_BITS
);
break
;
case
CLUSTER_SUSPEND
:
trace_log
(
"cluster %ld SUSPEND
\n
"
,
(
mpidr
&
MPIDR_CLUSTER_MASK
)
>>
MPIDR_AFFINITY_BITS
);
break
;
default:
trace_log
(
"unknown power mode
\n
"
);
break
;
}
}
plat/mediatek/mt8173/scu.c
0 → 100644
View file @
aaa0567c
/*
* Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of ARM nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <arch.h>
#include <mcucfg.h>
#include <mmio.h>
void
disable_scu
(
unsigned
long
mpidr
)
{
if
(
mpidr
&
MPIDR_CLUSTER_MASK
)
mmio_setbits_32
((
uintptr_t
)
&
mt8173_mcucfg
->
mp1_miscdbg
,
MP1_ACINACTM
);
else
mmio_setbits_32
((
uintptr_t
)
&
mt8173_mcucfg
->
mp0_axi_config
,
MP0_ACINACTM
);
}
void
enable_scu
(
unsigned
long
mpidr
)
{
if
(
mpidr
&
MPIDR_CLUSTER_MASK
)
mmio_clrbits_32
((
uintptr_t
)
&
mt8173_mcucfg
->
mp1_miscdbg
,
MP1_ACINACTM
);
else
mmio_clrbits_32
((
uintptr_t
)
&
mt8173_mcucfg
->
mp0_axi_config
,
MP0_ACINACTM
);
}
Prev
1
2
3
Next
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