1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 2784548efSMasahiro Yamada /* 3784548efSMasahiro Yamada * Copyright (C) 2016-2017 Socionext Inc. 4784548efSMasahiro Yamada * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 5784548efSMasahiro Yamada */ 6784548efSMasahiro Yamada 7784548efSMasahiro Yamada #include <common.h> 8784548efSMasahiro Yamada #include <spl.h> 9784548efSMasahiro Yamada #include <linux/io.h> 10784548efSMasahiro Yamada #include <linux/kernel.h> 11784548efSMasahiro Yamada 12784548efSMasahiro Yamada #include "boot-device.h" 13784548efSMasahiro Yamada 14784548efSMasahiro Yamada const struct uniphier_boot_device uniphier_ld11_boot_device_table[] = { 15784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 4)"}, 16784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 4)"}, 17784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 5)"}, 18784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"}, 19784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 256KB, Addr 5)"}, 20784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"}, 21784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 512KB, Addr 5)"}, 22784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 512KB, Addr 5)"}, 23784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 128KB, Addr 4)"}, 24784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 4)"}, 25784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 128KB, Addr 5)"}, 26784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"}, 27784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 256KB, Addr 5)"}, 28784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 256KB, Addr 5)"}, 29784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 512KB, Addr 5)"}, 30784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 512KB, Addr 5)"}, 31784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, ONFI, Addr 4)"}, 32784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI, Addr 4)"}, 33784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, ONFI, Addr 5)"}, 34784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, ONFI, Addr 5)"}, 35784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, ONFI Addr 4)"}, 36784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI Addr 4)"}, 37784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, ONFI Addr 5)"}, 38784548efSMasahiro Yamada {BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, ONFI Addr 5)"}, 39784548efSMasahiro Yamada {BOOT_DEVICE_MMC1, "eMMC (Legacy, 4bit, 1.8V, Training Off)"}, 40784548efSMasahiro Yamada {BOOT_DEVICE_MMC1, "eMMC (Legacy, 4bit, 1.8V, Training On)"}, 41784548efSMasahiro Yamada {BOOT_DEVICE_MMC1, "eMMC (Legacy, 8bit, 1.8V, Training Off)"}, 42784548efSMasahiro Yamada {BOOT_DEVICE_MMC1, "eMMC (Legacy, 8bit, 1.8V, Training On)"}, 43784548efSMasahiro Yamada {BOOT_DEVICE_MMC1, "eMMC (High Speed SDR, 8bit, 1.8V, Training Off)"}, 44784548efSMasahiro Yamada {BOOT_DEVICE_MMC1, "eMMC (High Speed SDR, 8bit, 1.8V, Training On)"}, 45784548efSMasahiro Yamada {BOOT_DEVICE_MMC1, "eMMC (Legacy, 4bit, 1.8V, Training Off)"}, 46784548efSMasahiro Yamada {BOOT_DEVICE_NOR, "NOR (XECS1)"}, 47784548efSMasahiro Yamada }; 48784548efSMasahiro Yamada 49784548efSMasahiro Yamada const unsigned uniphier_ld11_boot_device_count = 50784548efSMasahiro Yamada ARRAY_SIZE(uniphier_ld11_boot_device_table); 51784548efSMasahiro Yamada 52784548efSMasahiro Yamada int uniphier_ld11_boot_device_is_usb(u32 pinmon) 53784548efSMasahiro Yamada { 54784548efSMasahiro Yamada return !!(~pinmon & 0x00000080); 55784548efSMasahiro Yamada } 56784548efSMasahiro Yamada 57784548efSMasahiro Yamada int uniphier_ld20_boot_device_is_usb(u32 pinmon) 58784548efSMasahiro Yamada { 59784548efSMasahiro Yamada return !!(~pinmon & 0x00000780); 60784548efSMasahiro Yamada } 61784548efSMasahiro Yamada 62784548efSMasahiro Yamada unsigned int uniphier_ld11_boot_device_fixup(unsigned int mode) 63784548efSMasahiro Yamada { 64784548efSMasahiro Yamada if (mode == BOOT_DEVICE_MMC1 || mode == BOOT_DEVICE_USB) 65784548efSMasahiro Yamada mode = BOOT_DEVICE_BOARD; 66784548efSMasahiro Yamada 67784548efSMasahiro Yamada return mode; 68784548efSMasahiro Yamada } 69