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
a760613f
Commit
a760613f
authored
Sep 14, 2016
by
davidcunado-arm
Committed by
GitHub
Sep 14, 2016
Browse files
Merge pull request #663 from leon-chen-mtk/mt6795_2
mediatek: Support for Mediatek MT6795 SoC
parents
d9738fbc
c1ff80b1
Changes
25
Hide whitespace changes
Inline
Side-by-side
plat/mediatek/mt6795/plat_topology.c
0 → 100644
View file @
a760613f
/*
* Copyright (c) 2016, 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 <platform_def.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
PLATFORM_SYSTEM_COUNT
;
if
(
aff_lvl
==
MPIDR_AFFLVL1
)
return
PLATFORM_CLUSTER_COUNT
;
return
mpidr
&
0x100
?
PLATFORM_CLUSTER1_CORE_COUNT
:
PLATFORM_CLUSTER0_CORE_COUNT
;
}
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/mt6795/platform.mk
0 → 100644
View file @
a760613f
#
# Copyright (c) 2016, 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}
# Add OEM customized codes
OEMS
:=
true
MTK_SIP_KERNEL_BOOT_ENABLE
:=
1
ifneq
(${OEMS},none)
OEMS_INCLUDES
:=
-I
${MTK_PLAT}
/common/custom/
OEMS_SOURCES
:=
${MTK_PLAT}
/common/custom/oem_svc.c
endif
PLAT_INCLUDES
:=
-I
${MTK_PLAT}
/common/
\
-I
${MTK_PLAT}
/common/drivers/uart
\
-I
${MTK_PLAT_SOC}
/
\
-I
${MTK_PLAT_SOC}
/drivers/timer/
\
-I
${MTK_PLAT_SOC}
/include/
\
-Iinclude
/plat/arm/common/
\
-Iinclude
/common/tbbr/
\
${OEMS_INCLUDES}
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/delay_timer/generic_delay_timer.c
\
drivers/arm/gic/common/gic_common.c
\
drivers/arm/gic/v2/gicv2_main.c
\
drivers/arm/gic/v2/gicv2_helpers.c
\
plat/common/plat_gicv2.c
\
drivers/console/console.S
\
drivers/delay_timer/delay_timer.c
\
lib/cpus/aarch64/cortex_a53.S
\
plat/common/aarch64/platform_mp_stack.S
\
${MTK_PLAT_SOC}
/bl31_plat_setup.c
\
${MTK_PLAT_SOC}
/plat_mt_gic.c
\
${MTK_PLAT}
/common/mtk_sip_svc.c
\
${MTK_PLAT}
/common/mtk_plat_common.c
\
${MTK_PLAT}
/common/drivers/uart/8250_console.S
\
${MTK_PLAT_SOC}
/aarch64/plat_helpers.S
\
${MTK_PLAT_SOC}
/drivers/timer/mt_cpuxgpt.c
\
${MTK_PLAT_SOC}
/plat_sip_svc.c
\
${MTK_PLAT_SOC}
/plat_delay_timer.c
\
${MTK_PLAT_SOC}
/plat_pm.c
\
${MTK_PLAT_SOC}
/plat_topology.c
\
${MTK_PLAT_SOC}
/power_tracer.c
\
${MTK_PLAT_SOC}
/scu.c
\
${OEMS_SOURCES}
# 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
$(eval
$(call
add_define,MTK_SIP_KERNEL_BOOT_ENABLE))
plat/mediatek/mt6795/power_tracer.c
0 → 100644
View file @
a760613f
/*
* Copyright (c) 2016, 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/mt6795/scu.c
0 → 100644
View file @
a760613f
/*
* Copyright (c) 2016, 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
)
&
mt6795_mcucfg
->
mp1_miscdbg
,
MP1_ACINACTM
);
else
mmio_setbits_32
((
uintptr_t
)
&
mt6795_mcucfg
->
mp0_axi_config
,
MP0_ACINACTM
);
}
void
enable_scu
(
unsigned
long
mpidr
)
{
if
(
mpidr
&
MPIDR_CLUSTER_MASK
)
mmio_clrbits_32
((
uintptr_t
)
&
mt6795_mcucfg
->
mp1_miscdbg
,
MP1_ACINACTM
);
else
mmio_clrbits_32
((
uintptr_t
)
&
mt6795_mcucfg
->
mp0_axi_config
,
MP0_ACINACTM
);
}
plat/mediatek/mt8173/platform.mk
View file @
a760613f
...
...
@@ -32,13 +32,13 @@ MTK_PLAT := plat/mediatek
MTK_PLAT_SOC
:=
${MTK_PLAT}
/
${PLAT}
PLAT_INCLUDES
:=
-I
${MTK_PLAT}
/common/
\
-I
${MTK_PLAT}
/common/drivers/uart/
\
-I
${MTK_PLAT_SOC}
/drivers/crypt/
\
-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/xlat_tables/xlat_tables_common.c
\
...
...
@@ -58,6 +58,7 @@ BL31_SOURCES += drivers/arm/cci/cci.c \
lib/cpus/aarch64/cortex_a57.S
\
lib/cpus/aarch64/cortex_a72.S
\
plat/common/aarch64/platform_mp_stack.S
\
${MTK_PLAT}
/common/drivers/uart/8250_console.S
\
${MTK_PLAT}
/common/mtk_plat_common.c
\
${MTK_PLAT}
/common/mtk_sip_svc.c
\
${MTK_PLAT_SOC}
/aarch64/plat_helpers.S
\
...
...
@@ -72,7 +73,6 @@ BL31_SOURCES += drivers/arm/cci/cci.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_mt_gic.c
\
${MTK_PLAT_SOC}
/plat_pm.c
\
${MTK_PLAT_SOC}
/plat_sip_calls.c
\
...
...
Prev
1
2
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