/*
 * Copyright (C) 2017 Socionext Inc.
 *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

#include <linux/io.h>
#include <linux/types.h>

#include "sg-regs.h"
#include "soc-info.h"

static unsigned int __uniphier_get_revision_field(unsigned int mask,
						  unsigned int shift)
{
	u32 revision = readl(SG_REVISION);

	return (revision >> shift) & mask;
}

unsigned int uniphier_get_soc_id(void)
{
	return __uniphier_get_revision_field(0xff, 16);
}

unsigned int uniphier_get_soc_model(void)
{
	return __uniphier_get_revision_field(0x3, 8);
}

unsigned int uniphier_get_soc_revision(void)
{
	return __uniphier_get_revision_field(0x1f, 0);
}
