2 * Copyright (C) 2012-2015 Panasonic Corporation
3 * Copyright (C) 2015-2016 Socionext Inc.
4 * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
6 * SPDX-License-Identifier: GPL-2.0+
14 #include "micro-support-card.h"
17 DECLARE_GLOBAL_DATA_PTR;
19 static void uniphier_setup_xirq(void)
21 const void *fdt = gd->fdt_blob;
22 int soc_node, aidet_node;
24 unsigned long aidet_base;
27 soc_node = fdt_path_offset(fdt, "/soc");
31 aidet_node = fdt_subnode_offset_namelen(fdt, soc_node, "aidet", 5);
35 val = fdt_getprop(fdt, aidet_node, "reg", NULL);
39 aidet_base = fdt32_to_cpu(*val);
41 tmp = readl(aidet_base + 8); /* AIDET DETCONFR2 */
42 tmp |= 0x00ff0000; /* Set XIRQ0-7 low active */
43 writel(tmp, aidet_base + 8);
45 tmp = readl(0x55000090); /* IRQCTL */
47 writel(tmp, 0x55000090);
54 switch (uniphier_get_soc_type()) {
55 #if defined(CONFIG_ARCH_UNIPHIER_SLD3)
56 case SOC_UNIPHIER_SLD3:
57 uniphier_sld3_pin_init();
59 uniphier_ld4_clk_init();
62 #if defined(CONFIG_ARCH_UNIPHIER_LD4)
63 case SOC_UNIPHIER_LD4:
64 uniphier_ld4_pin_init();
66 uniphier_ld4_clk_init();
69 #if defined(CONFIG_ARCH_UNIPHIER_PRO4)
70 case SOC_UNIPHIER_PRO4:
71 uniphier_pro4_pin_init();
73 uniphier_pro4_clk_init();
76 #if defined(CONFIG_ARCH_UNIPHIER_SLD8)
77 case SOC_UNIPHIER_SLD8:
78 uniphier_sld8_pin_init();
80 uniphier_ld4_clk_init();
83 #if defined(CONFIG_ARCH_UNIPHIER_PRO5)
84 case SOC_UNIPHIER_PRO5:
85 uniphier_pro5_pin_init();
87 uniphier_pro5_clk_init();
90 #if defined(CONFIG_ARCH_UNIPHIER_PXS2)
91 case SOC_UNIPHIER_PXS2:
92 uniphier_pxs2_pin_init();
94 uniphier_pxs2_clk_init();
97 #if defined(CONFIG_ARCH_UNIPHIER_LD6B)
98 case SOC_UNIPHIER_LD6B:
99 uniphier_ld6b_pin_init();
101 uniphier_pxs2_clk_init();
104 #if defined(CONFIG_ARCH_UNIPHIER_LD11)
105 case SOC_UNIPHIER_LD11:
106 uniphier_ld20_pin_init();
108 uniphier_ld11_clk_init();
111 #if defined(CONFIG_ARCH_UNIPHIER_LD20)
112 case SOC_UNIPHIER_LD20:
113 uniphier_ld20_pin_init();
115 uniphier_ld20_clk_init();
123 uniphier_setup_xirq();
127 support_card_late_init();
132 uniphier_smp_kick_all_cpus();