⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpc834x_mds.c

📁 linux内核源码
💻 C
字号:
/* * arch/powerpc/platforms/83xx/mpc834x_mds.c * * MPC834x MDS board specific routines * * Maintainer: Kumar Gala <galak@kernel.crashing.org> * * This program is free software; you can redistribute  it and/or modify it * under  the terms of  the GNU General  Public License as published by the * Free Software Foundation;  either version 2 of the  License, or (at your * option) any later version. */#include <linux/stddef.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/errno.h>#include <linux/reboot.h>#include <linux/pci.h>#include <linux/kdev_t.h>#include <linux/major.h>#include <linux/console.h>#include <linux/delay.h>#include <linux/seq_file.h>#include <linux/root_dev.h>#include <asm/system.h>#include <asm/atomic.h>#include <asm/time.h>#include <asm/io.h>#include <asm/machdep.h>#include <asm/ipic.h>#include <asm/irq.h>#include <asm/prom.h>#include <asm/udbg.h>#include <sysdev/fsl_soc.h>#include "mpc83xx.h"#define BCSR5_INT_USB		0x02static int mpc834xemds_usb_cfg(void){	struct device_node *np;	void __iomem *bcsr_regs = NULL;	u8 bcsr5;	mpc834x_usb_cfg();	/* Map BCSR area */	np = of_find_node_by_name(NULL, "bcsr");	if (np) {		struct resource res;		of_address_to_resource(np, 0, &res);		bcsr_regs = ioremap(res.start, res.end - res.start + 1);		of_node_put(np);	}	if (!bcsr_regs)		return -1;	/*	 * if Processor Board is plugged into PIB board,	 * force to use the PHY on Processor Board	 */	bcsr5 = in_8(bcsr_regs + 5);	if (!(bcsr5 & BCSR5_INT_USB))		out_8(bcsr_regs + 5, (bcsr5 | BCSR5_INT_USB));	iounmap(bcsr_regs);	return 0;}/* ************************************************************************ * * Setup the architecture * */static void __init mpc834x_mds_setup_arch(void){#ifdef CONFIG_PCI	struct device_node *np;#endif	if (ppc_md.progress)		ppc_md.progress("mpc834x_mds_setup_arch()", 0);#ifdef CONFIG_PCI	for_each_compatible_node(np, "pci", "fsl,mpc8349-pci")		mpc83xx_add_bridge(np);#endif	mpc834xemds_usb_cfg();}static void __init mpc834x_mds_init_IRQ(void){	struct device_node *np;	np = of_find_node_by_type(NULL, "ipic");	if (!np)		return;	ipic_init(np, 0);	/* Initialize the default interrupt mapping priorities,	 * in case the boot rom changed something on us.	 */	ipic_set_default_priority();}/* * Called very early, MMU is off, device-tree isn't unflattened */static int __init mpc834x_mds_probe(void){        unsigned long root = of_get_flat_dt_root();        return of_flat_dt_is_compatible(root, "MPC834xMDS");}define_machine(mpc834x_mds) {	.name			= "MPC834x MDS",	.probe			= mpc834x_mds_probe,	.setup_arch		= mpc834x_mds_setup_arch,	.init_IRQ		= mpc834x_mds_init_IRQ,	.get_irq		= ipic_get_irq,	.restart		= mpc83xx_restart,	.time_init		= mpc83xx_time_init,	.calibrate_decr		= generic_calibrate_decr,	.progress		= udbg_progress,};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -