common: Drop image.h from common header
[platform/kernel/u-boot.git] / board / mscc / luton / luton.c
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Copyright (c) 2018 Microsemi Corporation
4  */
5
6 #include <common.h>
7 #include <image.h>
8 #include <init.h>
9 #include <asm/io.h>
10 #include <led.h>
11 #include <miiphy.h>
12
13 enum {
14         BOARD_TYPE_PCB090 = 0xAABBCD00,
15         BOARD_TYPE_PCB091,
16 };
17
18 void board_debug_uart_init(void)
19 {
20         /* too early for the pinctrl driver, so configure the UART pins here */
21         mscc_gpio_set_alternate(30, 1);
22         mscc_gpio_set_alternate(31, 1);
23 }
24
25 int board_early_init_r(void)
26 {
27         /* Prepare SPI controller to be used in master mode */
28         writel(0, BASE_CFG + ICPU_SW_MODE);
29
30         /* Address of boot parameters */
31         gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE;
32
33         /* LED setup */
34         if (IS_ENABLED(CONFIG_LED))
35                 led_default_state();
36
37         return 0;
38 }
39
40 int board_phy_config(struct phy_device *phydev)
41 {
42         phy_write(phydev, 0, 31, 0x10);
43         phy_write(phydev, 0, 18, 0x80A0);
44         while (phy_read(phydev, 0, 18) & 0x8000)
45                 ;
46         phy_write(phydev, 0, 31, 0);
47         return 0;
48 }
49
50 static void do_board_detect(void)
51 {
52         u32 chipid = (readl(BASE_DEVCPU_GCB + CHIP_ID) >> 12) & 0xFFFF;
53
54         if (chipid == 0x7428 || chipid == 0x7424)
55                 gd->board_type = BOARD_TYPE_PCB091;    // Lu10
56         else
57                 gd->board_type = BOARD_TYPE_PCB090;    // Lu26
58 }
59
60 #if defined(CONFIG_MULTI_DTB_FIT)
61 int board_fit_config_name_match(const char *name)
62 {
63         if (gd->board_type == BOARD_TYPE_PCB090 &&
64             strcmp(name, "luton_pcb090") == 0)
65                 return 0;
66
67         if (gd->board_type == BOARD_TYPE_PCB091 &&
68             strcmp(name, "luton_pcb091") == 0)
69                 return 0;
70
71         return -1;
72 }
73 #endif
74
75 #if defined(CONFIG_DTB_RESELECT)
76 int embedded_dtb_select(void)
77 {
78         do_board_detect();
79         fdtdec_setup();
80
81         return 0;
82 }
83 #endif