// SPDX-License-Identifier: GPL-2.0+
/*
 * Copyright (c) 2021 Nuvoton Technology Corp.
 */

#include <cpu_func.h>
#include <asm/armv7.h>
#include <asm/io.h>
#include <asm/arch/gcr.h>

int print_cpuinfo(void)
{
	struct npcm_gcr *gcr = (struct npcm_gcr *)NPCM_GCR_BA;
	unsigned int id, mdlr;

	mdlr = readl(&gcr->mdlr);

	printf("CPU: ");

	switch (mdlr) {
	case POLEG_NPCM750:
		printf("NPCM750 ");
		break;
	case POLEG_NPCM730:
		printf("NPCM730 ");
		break;
	case POLEG_NPCM710:
		printf("NPCM710 ");
		break;
	default:
		printf("NPCM7XX ");
		break;
	}

	id = readl(&gcr->pdid);
	switch (id) {
	case POLEG_Z1:
		printf("Z1 is no supported! @ ");
		break;
	case POLEG_A1:
		printf("A1 @ ");
		break;
	default:
		printf("Unknown\n");
		break;
	}

	return 0;
}

void s_init(void)
{
	/* Invalidate L2 cache in lowlevel_init */
	v7_outer_cache_inval_all();
}

void enable_caches(void)
{
	dcache_enable();
}

void disable_caches(void)
{
	dcache_disable();
}
