1e27d6c7dSMasahiro Yamada /* 2e27d6c7dSMasahiro Yamada * Copyright (C) 2017 Socionext Inc. 3e27d6c7dSMasahiro Yamada * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 4e27d6c7dSMasahiro Yamada * 5e27d6c7dSMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 6e27d6c7dSMasahiro Yamada */ 7e27d6c7dSMasahiro Yamada 8e27d6c7dSMasahiro Yamada #include <linux/io.h> 9e27d6c7dSMasahiro Yamada #include <linux/types.h> 10e27d6c7dSMasahiro Yamada 11e27d6c7dSMasahiro Yamada #include "sg-regs.h" 12e27d6c7dSMasahiro Yamada #include "soc-info.h" 13e27d6c7dSMasahiro Yamada __uniphier_get_revision_field(unsigned int mask,unsigned int shift)14e27d6c7dSMasahiro Yamadastatic unsigned int __uniphier_get_revision_field(unsigned int mask, 15e27d6c7dSMasahiro Yamada unsigned int shift) 16e27d6c7dSMasahiro Yamada { 17e27d6c7dSMasahiro Yamada u32 revision = readl(SG_REVISION); 18e27d6c7dSMasahiro Yamada 19e27d6c7dSMasahiro Yamada return (revision >> shift) & mask; 20e27d6c7dSMasahiro Yamada } 21e27d6c7dSMasahiro Yamada uniphier_get_soc_id(void)22e27d6c7dSMasahiro Yamadaunsigned int uniphier_get_soc_id(void) 23e27d6c7dSMasahiro Yamada { 24e27d6c7dSMasahiro Yamada return __uniphier_get_revision_field(0xff, 16); 25e27d6c7dSMasahiro Yamada } 26e27d6c7dSMasahiro Yamada uniphier_get_soc_model(void)27e27d6c7dSMasahiro Yamadaunsigned int uniphier_get_soc_model(void) 28e27d6c7dSMasahiro Yamada { 29*c5bd411fSMasahiro Yamada return __uniphier_get_revision_field(0x7, 8); 30e27d6c7dSMasahiro Yamada } 31e27d6c7dSMasahiro Yamada uniphier_get_soc_revision(void)32e27d6c7dSMasahiro Yamadaunsigned int uniphier_get_soc_revision(void) 33e27d6c7dSMasahiro Yamada { 34e27d6c7dSMasahiro Yamada return __uniphier_get_revision_field(0x1f, 0); 35e27d6c7dSMasahiro Yamada } 36