xref: /linux/arch/powerpc/platforms/86xx/common.c (revision a1c613ae4c322ddd58d5a8539dbfba2a0380a8c0)
1ad1d7d7cSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only
24f9d6e95SAlessio Igor Bogani /*
34f9d6e95SAlessio Igor Bogani  * Routines common to most mpc86xx-based boards.
44f9d6e95SAlessio Igor Bogani  */
54f9d6e95SAlessio Igor Bogani 
6*81d7cac4SRob Herring #include <linux/init.h>
7*81d7cac4SRob Herring #include <linux/mod_devicetable.h>
84f9d6e95SAlessio Igor Bogani #include <linux/of_platform.h>
9*81d7cac4SRob Herring #include <asm/reg.h>
104f9d6e95SAlessio Igor Bogani #include <asm/synch.h>
114f9d6e95SAlessio Igor Bogani 
124f9d6e95SAlessio Igor Bogani #include "mpc86xx.h"
134f9d6e95SAlessio Igor Bogani 
144f9d6e95SAlessio Igor Bogani static const struct of_device_id mpc86xx_common_ids[] __initconst = {
154f9d6e95SAlessio Igor Bogani 	{ .type = "soc", },
164f9d6e95SAlessio Igor Bogani 	{ .compatible = "soc", },
174f9d6e95SAlessio Igor Bogani 	{ .compatible = "simple-bus", },
184f9d6e95SAlessio Igor Bogani 	{ .name = "localbus", },
194f9d6e95SAlessio Igor Bogani 	{ .compatible = "gianfar", },
204f9d6e95SAlessio Igor Bogani 	{ .compatible = "fsl,mpc8641-pcie", },
214f9d6e95SAlessio Igor Bogani 	{},
224f9d6e95SAlessio Igor Bogani };
234f9d6e95SAlessio Igor Bogani 
mpc86xx_common_publish_devices(void)244f9d6e95SAlessio Igor Bogani int __init mpc86xx_common_publish_devices(void)
254f9d6e95SAlessio Igor Bogani {
264f9d6e95SAlessio Igor Bogani 	return of_platform_bus_probe(NULL, mpc86xx_common_ids, NULL);
274f9d6e95SAlessio Igor Bogani }
284f9d6e95SAlessio Igor Bogani 
mpc86xx_time_init(void)294f9d6e95SAlessio Igor Bogani long __init mpc86xx_time_init(void)
304f9d6e95SAlessio Igor Bogani {
314f9d6e95SAlessio Igor Bogani 	unsigned int temp;
324f9d6e95SAlessio Igor Bogani 
334f9d6e95SAlessio Igor Bogani 	/* Set the time base to zero */
344f9d6e95SAlessio Igor Bogani 	mtspr(SPRN_TBWL, 0);
354f9d6e95SAlessio Igor Bogani 	mtspr(SPRN_TBWU, 0);
364f9d6e95SAlessio Igor Bogani 
374f9d6e95SAlessio Igor Bogani 	temp = mfspr(SPRN_HID0);
384f9d6e95SAlessio Igor Bogani 	temp |= HID0_TBEN;
394f9d6e95SAlessio Igor Bogani 	mtspr(SPRN_HID0, temp);
404f9d6e95SAlessio Igor Bogani 	isync();
414f9d6e95SAlessio Igor Bogani 
424f9d6e95SAlessio Igor Bogani 	return 0;
434f9d6e95SAlessio Igor Bogani }
44