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