1*d8e919c7SMasahiro Yamada /* 2*d8e919c7SMasahiro Yamada * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. 3*d8e919c7SMasahiro Yamada * 4*d8e919c7SMasahiro Yamada * SPDX-License-Identifier: BSD-3-Clause 5*d8e919c7SMasahiro Yamada */ 6*d8e919c7SMasahiro Yamada 7*d8e919c7SMasahiro Yamada #include <mmio.h> 8*d8e919c7SMasahiro Yamada 9*d8e919c7SMasahiro Yamada #include "uniphier.h" 10*d8e919c7SMasahiro Yamada 11*d8e919c7SMasahiro Yamada #define UNIPHIER_REVISION 0x5f800000 12*d8e919c7SMasahiro Yamada 13*d8e919c7SMasahiro Yamada static unsigned int uniphier_get_revision_field(unsigned int mask, 14*d8e919c7SMasahiro Yamada unsigned int shift) 15*d8e919c7SMasahiro Yamada { 16*d8e919c7SMasahiro Yamada uint32_t revision = mmio_read_32(UNIPHIER_REVISION); 17*d8e919c7SMasahiro Yamada 18*d8e919c7SMasahiro Yamada return (revision >> shift) & mask; 19*d8e919c7SMasahiro Yamada } 20*d8e919c7SMasahiro Yamada 21*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_type(void) 22*d8e919c7SMasahiro Yamada { 23*d8e919c7SMasahiro Yamada return uniphier_get_revision_field(0xff, 16); 24*d8e919c7SMasahiro Yamada } 25*d8e919c7SMasahiro Yamada 26*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_model(void) 27*d8e919c7SMasahiro Yamada { 28*d8e919c7SMasahiro Yamada return uniphier_get_revision_field(0x07, 8); 29*d8e919c7SMasahiro Yamada } 30*d8e919c7SMasahiro Yamada 31*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_revision(void) 32*d8e919c7SMasahiro Yamada { 33*d8e919c7SMasahiro Yamada return uniphier_get_revision_field(0x1f, 0); 34*d8e919c7SMasahiro Yamada } 35*d8e919c7SMasahiro Yamada 36*d8e919c7SMasahiro Yamada unsigned int uniphier_get_soc_id(void) 37*d8e919c7SMasahiro Yamada { 38*d8e919c7SMasahiro Yamada uint32_t type = uniphier_get_soc_type(); 39*d8e919c7SMasahiro Yamada 40*d8e919c7SMasahiro Yamada switch (type) { 41*d8e919c7SMasahiro Yamada case 0x31: 42*d8e919c7SMasahiro Yamada return UNIPHIER_SOC_LD11; 43*d8e919c7SMasahiro Yamada case 0x32: 44*d8e919c7SMasahiro Yamada return UNIPHIER_SOC_LD20; 45*d8e919c7SMasahiro Yamada case 0x35: 46*d8e919c7SMasahiro Yamada return UNIPHIER_SOC_PXS3; 47*d8e919c7SMasahiro Yamada default: 48*d8e919c7SMasahiro Yamada return UNIPHIER_SOC_UNKNOWN; 49*d8e919c7SMasahiro Yamada } 50*d8e919c7SMasahiro Yamada } 51