123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #include <stddef.h>
- #include <arch_helpers.h>
- #include <drivers/arm/cci.h>
- #include <lib/utils_def.h>
- #include "uniphier.h"
- #define UNIPHIER_CCI500_BASE 0x5FD00000
- static const int uniphier_cci_map[] = {1, 0};
- static void __uniphier_cci_init(void)
- {
- cci_init(UNIPHIER_CCI500_BASE, uniphier_cci_map,
- ARRAY_SIZE(uniphier_cci_map));
- }
- static void __uniphier_cci_enable(void)
- {
- cci_enable_snoop_dvm_reqs(MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
- }
- static void __uniphier_cci_disable(void)
- {
- cci_disable_snoop_dvm_reqs(MPIDR_AFFLVL1_VAL(read_mpidr_el1()));
- }
- struct uniphier_cci_ops {
- void (*init)(void);
- void (*enable)(void);
- void (*disable)(void);
- };
- static const struct uniphier_cci_ops uniphier_cci_ops_table[] = {
- [UNIPHIER_SOC_LD11] = {
- .init = NULL,
- .enable = NULL,
- .disable = NULL,
- },
- [UNIPHIER_SOC_LD20] = {
- .init = __uniphier_cci_init,
- .enable = __uniphier_cci_enable,
- .disable = __uniphier_cci_disable,
- },
- [UNIPHIER_SOC_PXS3] = {
- .init = NULL,
- .enable = NULL,
- .disable = NULL,
- },
- };
- static struct uniphier_cci_ops uniphier_cci_ops;
- void uniphier_cci_init(unsigned int soc)
- {
- uniphier_cci_ops = uniphier_cci_ops_table[soc];
- flush_dcache_range((uint64_t)&uniphier_cci_ops,
- sizeof(uniphier_cci_ops));
- if (uniphier_cci_ops.init)
- uniphier_cci_ops.init();
- }
- void uniphier_cci_enable(void)
- {
- if (uniphier_cci_ops.enable)
- uniphier_cci_ops.enable();
- }
- void uniphier_cci_disable(void)
- {
- if (uniphier_cci_ops.disable)
- uniphier_cci_ops.disable();
- }
|