0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include <linux/stddef.h>
0011 #include <linux/kernel.h>
0012 #include <linux/init.h>
0013 #include <linux/errno.h>
0014 #include <linux/reboot.h>
0015 #include <linux/pci.h>
0016 #include <linux/kdev_t.h>
0017 #include <linux/major.h>
0018 #include <linux/console.h>
0019 #include <linux/delay.h>
0020 #include <linux/seq_file.h>
0021 #include <linux/root_dev.h>
0022 #include <linux/of_address.h>
0023 #include <linux/of_platform.h>
0024
0025 #include <linux/atomic.h>
0026 #include <asm/time.h>
0027 #include <asm/io.h>
0028 #include <asm/machdep.h>
0029 #include <asm/ipic.h>
0030 #include <asm/irq.h>
0031 #include <asm/udbg.h>
0032 #include <sysdev/fsl_soc.h>
0033 #include <sysdev/fsl_pci.h>
0034
0035 #include "mpc83xx.h"
0036
0037 #define BCSR5_INT_USB 0x02
0038 static int __init mpc834xemds_usb_cfg(void)
0039 {
0040 struct device_node *np;
0041 void __iomem *bcsr_regs = NULL;
0042 u8 bcsr5;
0043
0044 mpc834x_usb_cfg();
0045
0046 np = of_find_node_by_name(NULL, "bcsr");
0047 if (np) {
0048 struct resource res;
0049
0050 of_address_to_resource(np, 0, &res);
0051 bcsr_regs = ioremap(res.start, resource_size(&res));
0052 of_node_put(np);
0053 }
0054 if (!bcsr_regs)
0055 return -1;
0056
0057
0058
0059
0060
0061 bcsr5 = in_8(bcsr_regs + 5);
0062 if (!(bcsr5 & BCSR5_INT_USB))
0063 out_8(bcsr_regs + 5, (bcsr5 | BCSR5_INT_USB));
0064 iounmap(bcsr_regs);
0065 return 0;
0066 }
0067
0068
0069
0070
0071
0072
0073 static void __init mpc834x_mds_setup_arch(void)
0074 {
0075 mpc83xx_setup_arch();
0076
0077 mpc834xemds_usb_cfg();
0078 }
0079
0080 machine_device_initcall(mpc834x_mds, mpc83xx_declare_of_platform_devices);
0081
0082
0083
0084
0085 static int __init mpc834x_mds_probe(void)
0086 {
0087 return of_machine_is_compatible("MPC834xMDS");
0088 }
0089
0090 define_machine(mpc834x_mds) {
0091 .name = "MPC834x MDS",
0092 .probe = mpc834x_mds_probe,
0093 .setup_arch = mpc834x_mds_setup_arch,
0094 .discover_phbs = mpc83xx_setup_pci,
0095 .init_IRQ = mpc83xx_ipic_init_IRQ,
0096 .get_irq = ipic_get_irq,
0097 .restart = mpc83xx_restart,
0098 .time_init = mpc83xx_time_init,
0099 .calibrate_decr = generic_calibrate_decr,
0100 .progress = udbg_progress,
0101 };