18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * MPC85xx RDB Board Setup 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright 2009,2012-2013 Freescale Semiconductor Inc. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/stddef.h> 98c2ecf20Sopenharmony_ci#include <linux/kernel.h> 108c2ecf20Sopenharmony_ci#include <linux/pci.h> 118c2ecf20Sopenharmony_ci#include <linux/kdev_t.h> 128c2ecf20Sopenharmony_ci#include <linux/delay.h> 138c2ecf20Sopenharmony_ci#include <linux/seq_file.h> 148c2ecf20Sopenharmony_ci#include <linux/interrupt.h> 158c2ecf20Sopenharmony_ci#include <linux/of_platform.h> 168c2ecf20Sopenharmony_ci#include <linux/fsl/guts.h> 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#include <asm/time.h> 198c2ecf20Sopenharmony_ci#include <asm/machdep.h> 208c2ecf20Sopenharmony_ci#include <asm/pci-bridge.h> 218c2ecf20Sopenharmony_ci#include <mm/mmu_decl.h> 228c2ecf20Sopenharmony_ci#include <asm/prom.h> 238c2ecf20Sopenharmony_ci#include <asm/udbg.h> 248c2ecf20Sopenharmony_ci#include <asm/mpic.h> 258c2ecf20Sopenharmony_ci#include <soc/fsl/qe/qe.h> 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci#include <sysdev/fsl_soc.h> 288c2ecf20Sopenharmony_ci#include <sysdev/fsl_pci.h> 298c2ecf20Sopenharmony_ci#include "smp.h" 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci#include "mpc85xx.h" 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci#undef DEBUG 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci#ifdef DEBUG 368c2ecf20Sopenharmony_ci#define DBG(fmt, args...) printk(KERN_ERR "%s: " fmt, __func__, ## args) 378c2ecf20Sopenharmony_ci#else 388c2ecf20Sopenharmony_ci#define DBG(fmt, args...) 398c2ecf20Sopenharmony_ci#endif 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_civoid __init mpc85xx_rdb_pic_init(void) 438c2ecf20Sopenharmony_ci{ 448c2ecf20Sopenharmony_ci struct mpic *mpic; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci if (of_machine_is_compatible("fsl,MPC85XXRDB-CAMP")) { 478c2ecf20Sopenharmony_ci mpic = mpic_alloc(NULL, 0, MPIC_NO_RESET | 488c2ecf20Sopenharmony_ci MPIC_BIG_ENDIAN | 498c2ecf20Sopenharmony_ci MPIC_SINGLE_DEST_CPU, 508c2ecf20Sopenharmony_ci 0, 256, " OpenPIC "); 518c2ecf20Sopenharmony_ci } else { 528c2ecf20Sopenharmony_ci mpic = mpic_alloc(NULL, 0, 538c2ecf20Sopenharmony_ci MPIC_BIG_ENDIAN | 548c2ecf20Sopenharmony_ci MPIC_SINGLE_DEST_CPU, 558c2ecf20Sopenharmony_ci 0, 256, " OpenPIC "); 568c2ecf20Sopenharmony_ci } 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci BUG_ON(mpic == NULL); 598c2ecf20Sopenharmony_ci mpic_init(mpic); 608c2ecf20Sopenharmony_ci} 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci/* 638c2ecf20Sopenharmony_ci * Setup the architecture 648c2ecf20Sopenharmony_ci */ 658c2ecf20Sopenharmony_cistatic void __init mpc85xx_rdb_setup_arch(void) 668c2ecf20Sopenharmony_ci{ 678c2ecf20Sopenharmony_ci if (ppc_md.progress) 688c2ecf20Sopenharmony_ci ppc_md.progress("mpc85xx_rdb_setup_arch()", 0); 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci mpc85xx_smp_init(); 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ci fsl_pci_assign_primary(); 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci#ifdef CONFIG_QUICC_ENGINE 758c2ecf20Sopenharmony_ci mpc85xx_qe_par_io_init(); 768c2ecf20Sopenharmony_ci#if defined(CONFIG_UCC_GETH) || defined(CONFIG_SERIAL_QE) 778c2ecf20Sopenharmony_ci if (machine_is(p1025_rdb)) { 788c2ecf20Sopenharmony_ci struct device_node *np; 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci struct ccsr_guts __iomem *guts; 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci np = of_find_node_by_name(NULL, "global-utilities"); 838c2ecf20Sopenharmony_ci if (np) { 848c2ecf20Sopenharmony_ci guts = of_iomap(np, 0); 858c2ecf20Sopenharmony_ci if (!guts) { 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci pr_err("mpc85xx-rdb: could not map global utilities register\n"); 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci } else { 908c2ecf20Sopenharmony_ci /* P1025 has pins muxed for QE and other functions. To 918c2ecf20Sopenharmony_ci * enable QE UEC mode, we need to set bit QE0 for UCC1 928c2ecf20Sopenharmony_ci * in Eth mode, QE0 and QE3 for UCC5 in Eth mode, QE9 938c2ecf20Sopenharmony_ci * and QE12 for QE MII management singals in PMUXCR 948c2ecf20Sopenharmony_ci * register. 958c2ecf20Sopenharmony_ci */ 968c2ecf20Sopenharmony_ci setbits32(&guts->pmuxcr, MPC85xx_PMUXCR_QE(0) | 978c2ecf20Sopenharmony_ci MPC85xx_PMUXCR_QE(3) | 988c2ecf20Sopenharmony_ci MPC85xx_PMUXCR_QE(9) | 998c2ecf20Sopenharmony_ci MPC85xx_PMUXCR_QE(12)); 1008c2ecf20Sopenharmony_ci iounmap(guts); 1018c2ecf20Sopenharmony_ci } 1028c2ecf20Sopenharmony_ci of_node_put(np); 1038c2ecf20Sopenharmony_ci } 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci } 1068c2ecf20Sopenharmony_ci#endif 1078c2ecf20Sopenharmony_ci#endif /* CONFIG_QUICC_ENGINE */ 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci printk(KERN_INFO "MPC85xx RDB board from Freescale Semiconductor\n"); 1108c2ecf20Sopenharmony_ci} 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_cimachine_arch_initcall(p2020_rdb, mpc85xx_common_publish_devices); 1138c2ecf20Sopenharmony_cimachine_arch_initcall(p2020_rdb_pc, mpc85xx_common_publish_devices); 1148c2ecf20Sopenharmony_cimachine_arch_initcall(p1020_mbg_pc, mpc85xx_common_publish_devices); 1158c2ecf20Sopenharmony_cimachine_arch_initcall(p1020_rdb, mpc85xx_common_publish_devices); 1168c2ecf20Sopenharmony_cimachine_arch_initcall(p1020_rdb_pc, mpc85xx_common_publish_devices); 1178c2ecf20Sopenharmony_cimachine_arch_initcall(p1020_rdb_pd, mpc85xx_common_publish_devices); 1188c2ecf20Sopenharmony_cimachine_arch_initcall(p1020_utm_pc, mpc85xx_common_publish_devices); 1198c2ecf20Sopenharmony_cimachine_arch_initcall(p1021_rdb_pc, mpc85xx_common_publish_devices); 1208c2ecf20Sopenharmony_cimachine_arch_initcall(p1025_rdb, mpc85xx_common_publish_devices); 1218c2ecf20Sopenharmony_cimachine_arch_initcall(p1024_rdb, mpc85xx_common_publish_devices); 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ci/* 1248c2ecf20Sopenharmony_ci * Called very early, device-tree isn't unflattened 1258c2ecf20Sopenharmony_ci */ 1268c2ecf20Sopenharmony_cistatic int __init p2020_rdb_probe(void) 1278c2ecf20Sopenharmony_ci{ 1288c2ecf20Sopenharmony_ci if (of_machine_is_compatible("fsl,P2020RDB")) 1298c2ecf20Sopenharmony_ci return 1; 1308c2ecf20Sopenharmony_ci return 0; 1318c2ecf20Sopenharmony_ci} 1328c2ecf20Sopenharmony_ci 1338c2ecf20Sopenharmony_cistatic int __init p1020_rdb_probe(void) 1348c2ecf20Sopenharmony_ci{ 1358c2ecf20Sopenharmony_ci if (of_machine_is_compatible("fsl,P1020RDB")) 1368c2ecf20Sopenharmony_ci return 1; 1378c2ecf20Sopenharmony_ci return 0; 1388c2ecf20Sopenharmony_ci} 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_cistatic int __init p1020_rdb_pc_probe(void) 1418c2ecf20Sopenharmony_ci{ 1428c2ecf20Sopenharmony_ci return of_machine_is_compatible("fsl,P1020RDB-PC"); 1438c2ecf20Sopenharmony_ci} 1448c2ecf20Sopenharmony_ci 1458c2ecf20Sopenharmony_cistatic int __init p1020_rdb_pd_probe(void) 1468c2ecf20Sopenharmony_ci{ 1478c2ecf20Sopenharmony_ci return of_machine_is_compatible("fsl,P1020RDB-PD"); 1488c2ecf20Sopenharmony_ci} 1498c2ecf20Sopenharmony_ci 1508c2ecf20Sopenharmony_cistatic int __init p1021_rdb_pc_probe(void) 1518c2ecf20Sopenharmony_ci{ 1528c2ecf20Sopenharmony_ci if (of_machine_is_compatible("fsl,P1021RDB-PC")) 1538c2ecf20Sopenharmony_ci return 1; 1548c2ecf20Sopenharmony_ci return 0; 1558c2ecf20Sopenharmony_ci} 1568c2ecf20Sopenharmony_ci 1578c2ecf20Sopenharmony_cistatic int __init p2020_rdb_pc_probe(void) 1588c2ecf20Sopenharmony_ci{ 1598c2ecf20Sopenharmony_ci if (of_machine_is_compatible("fsl,P2020RDB-PC")) 1608c2ecf20Sopenharmony_ci return 1; 1618c2ecf20Sopenharmony_ci return 0; 1628c2ecf20Sopenharmony_ci} 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_cistatic int __init p1025_rdb_probe(void) 1658c2ecf20Sopenharmony_ci{ 1668c2ecf20Sopenharmony_ci return of_machine_is_compatible("fsl,P1025RDB"); 1678c2ecf20Sopenharmony_ci} 1688c2ecf20Sopenharmony_ci 1698c2ecf20Sopenharmony_cistatic int __init p1020_mbg_pc_probe(void) 1708c2ecf20Sopenharmony_ci{ 1718c2ecf20Sopenharmony_ci return of_machine_is_compatible("fsl,P1020MBG-PC"); 1728c2ecf20Sopenharmony_ci} 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_cistatic int __init p1020_utm_pc_probe(void) 1758c2ecf20Sopenharmony_ci{ 1768c2ecf20Sopenharmony_ci return of_machine_is_compatible("fsl,P1020UTM-PC"); 1778c2ecf20Sopenharmony_ci} 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_cistatic int __init p1024_rdb_probe(void) 1808c2ecf20Sopenharmony_ci{ 1818c2ecf20Sopenharmony_ci return of_machine_is_compatible("fsl,P1024RDB"); 1828c2ecf20Sopenharmony_ci} 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_cidefine_machine(p2020_rdb) { 1858c2ecf20Sopenharmony_ci .name = "P2020 RDB", 1868c2ecf20Sopenharmony_ci .probe = p2020_rdb_probe, 1878c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 1888c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 1898c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 1908c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 1918c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 1928c2ecf20Sopenharmony_ci#endif 1938c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 1948c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 1958c2ecf20Sopenharmony_ci .progress = udbg_progress, 1968c2ecf20Sopenharmony_ci}; 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_cidefine_machine(p1020_rdb) { 1998c2ecf20Sopenharmony_ci .name = "P1020 RDB", 2008c2ecf20Sopenharmony_ci .probe = p1020_rdb_probe, 2018c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 2028c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 2038c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 2048c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 2058c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 2068c2ecf20Sopenharmony_ci#endif 2078c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 2088c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 2098c2ecf20Sopenharmony_ci .progress = udbg_progress, 2108c2ecf20Sopenharmony_ci}; 2118c2ecf20Sopenharmony_ci 2128c2ecf20Sopenharmony_cidefine_machine(p1021_rdb_pc) { 2138c2ecf20Sopenharmony_ci .name = "P1021 RDB-PC", 2148c2ecf20Sopenharmony_ci .probe = p1021_rdb_pc_probe, 2158c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 2168c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 2178c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 2188c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 2198c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 2208c2ecf20Sopenharmony_ci#endif 2218c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 2228c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 2238c2ecf20Sopenharmony_ci .progress = udbg_progress, 2248c2ecf20Sopenharmony_ci}; 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_cidefine_machine(p2020_rdb_pc) { 2278c2ecf20Sopenharmony_ci .name = "P2020RDB-PC", 2288c2ecf20Sopenharmony_ci .probe = p2020_rdb_pc_probe, 2298c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 2308c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 2318c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 2328c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 2338c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 2348c2ecf20Sopenharmony_ci#endif 2358c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 2368c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 2378c2ecf20Sopenharmony_ci .progress = udbg_progress, 2388c2ecf20Sopenharmony_ci}; 2398c2ecf20Sopenharmony_ci 2408c2ecf20Sopenharmony_cidefine_machine(p1025_rdb) { 2418c2ecf20Sopenharmony_ci .name = "P1025 RDB", 2428c2ecf20Sopenharmony_ci .probe = p1025_rdb_probe, 2438c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 2448c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 2458c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 2468c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 2478c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 2488c2ecf20Sopenharmony_ci#endif 2498c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 2508c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 2518c2ecf20Sopenharmony_ci .progress = udbg_progress, 2528c2ecf20Sopenharmony_ci}; 2538c2ecf20Sopenharmony_ci 2548c2ecf20Sopenharmony_cidefine_machine(p1020_mbg_pc) { 2558c2ecf20Sopenharmony_ci .name = "P1020 MBG-PC", 2568c2ecf20Sopenharmony_ci .probe = p1020_mbg_pc_probe, 2578c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 2588c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 2598c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 2608c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 2618c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 2628c2ecf20Sopenharmony_ci#endif 2638c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 2648c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 2658c2ecf20Sopenharmony_ci .progress = udbg_progress, 2668c2ecf20Sopenharmony_ci}; 2678c2ecf20Sopenharmony_ci 2688c2ecf20Sopenharmony_cidefine_machine(p1020_utm_pc) { 2698c2ecf20Sopenharmony_ci .name = "P1020 UTM-PC", 2708c2ecf20Sopenharmony_ci .probe = p1020_utm_pc_probe, 2718c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 2728c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 2738c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 2748c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 2758c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 2768c2ecf20Sopenharmony_ci#endif 2778c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 2788c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 2798c2ecf20Sopenharmony_ci .progress = udbg_progress, 2808c2ecf20Sopenharmony_ci}; 2818c2ecf20Sopenharmony_ci 2828c2ecf20Sopenharmony_cidefine_machine(p1020_rdb_pc) { 2838c2ecf20Sopenharmony_ci .name = "P1020RDB-PC", 2848c2ecf20Sopenharmony_ci .probe = p1020_rdb_pc_probe, 2858c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 2868c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 2878c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 2888c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 2898c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 2908c2ecf20Sopenharmony_ci#endif 2918c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 2928c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 2938c2ecf20Sopenharmony_ci .progress = udbg_progress, 2948c2ecf20Sopenharmony_ci}; 2958c2ecf20Sopenharmony_ci 2968c2ecf20Sopenharmony_cidefine_machine(p1020_rdb_pd) { 2978c2ecf20Sopenharmony_ci .name = "P1020RDB-PD", 2988c2ecf20Sopenharmony_ci .probe = p1020_rdb_pd_probe, 2998c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 3008c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 3018c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 3028c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 3038c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 3048c2ecf20Sopenharmony_ci#endif 3058c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 3068c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 3078c2ecf20Sopenharmony_ci .progress = udbg_progress, 3088c2ecf20Sopenharmony_ci}; 3098c2ecf20Sopenharmony_ci 3108c2ecf20Sopenharmony_cidefine_machine(p1024_rdb) { 3118c2ecf20Sopenharmony_ci .name = "P1024 RDB", 3128c2ecf20Sopenharmony_ci .probe = p1024_rdb_probe, 3138c2ecf20Sopenharmony_ci .setup_arch = mpc85xx_rdb_setup_arch, 3148c2ecf20Sopenharmony_ci .init_IRQ = mpc85xx_rdb_pic_init, 3158c2ecf20Sopenharmony_ci#ifdef CONFIG_PCI 3168c2ecf20Sopenharmony_ci .pcibios_fixup_bus = fsl_pcibios_fixup_bus, 3178c2ecf20Sopenharmony_ci .pcibios_fixup_phb = fsl_pcibios_fixup_phb, 3188c2ecf20Sopenharmony_ci#endif 3198c2ecf20Sopenharmony_ci .get_irq = mpic_get_irq, 3208c2ecf20Sopenharmony_ci .calibrate_decr = generic_calibrate_decr, 3218c2ecf20Sopenharmony_ci .progress = udbg_progress, 3228c2ecf20Sopenharmony_ci}; 323