18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Routines common to most mpc86xx-based boards. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#include <linux/of_platform.h> 78c2ecf20Sopenharmony_ci#include <asm/synch.h> 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include "mpc86xx.h" 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistatic const struct of_device_id mpc86xx_common_ids[] __initconst = { 128c2ecf20Sopenharmony_ci { .type = "soc", }, 138c2ecf20Sopenharmony_ci { .compatible = "soc", }, 148c2ecf20Sopenharmony_ci { .compatible = "simple-bus", }, 158c2ecf20Sopenharmony_ci { .name = "localbus", }, 168c2ecf20Sopenharmony_ci { .compatible = "gianfar", }, 178c2ecf20Sopenharmony_ci { .compatible = "fsl,mpc8641-pcie", }, 188c2ecf20Sopenharmony_ci {}, 198c2ecf20Sopenharmony_ci}; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ciint __init mpc86xx_common_publish_devices(void) 228c2ecf20Sopenharmony_ci{ 238c2ecf20Sopenharmony_ci return of_platform_bus_probe(NULL, mpc86xx_common_ids, NULL); 248c2ecf20Sopenharmony_ci} 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cilong __init mpc86xx_time_init(void) 278c2ecf20Sopenharmony_ci{ 288c2ecf20Sopenharmony_ci unsigned int temp; 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci /* Set the time base to zero */ 318c2ecf20Sopenharmony_ci mtspr(SPRN_TBWL, 0); 328c2ecf20Sopenharmony_ci mtspr(SPRN_TBWU, 0); 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci temp = mfspr(SPRN_HID0); 358c2ecf20Sopenharmony_ci temp |= HID0_TBEN; 368c2ecf20Sopenharmony_ci mtspr(SPRN_HID0, temp); 378c2ecf20Sopenharmony_ci isync(); 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci return 0; 408c2ecf20Sopenharmony_ci} 41