static int __init mpc85xx_publish_devices(void) { if (machine_is(mpc8568_mds)) simple_gpiochip_init("fsl,mpc8568mds-bcsr-gpio"); if (machine_is(mpc8569_mds)) simple_gpiochip_init("fsl,mpc8569mds-bcsr-gpio"); return mpc85xx_common_publish_devices(); }
static int __init mpc836x_usb_cfg(void) { u8 __iomem *bcsr; struct device_node *np; const char *mode; int ret = 0; np = of_find_compatible_node(NULL, NULL, "fsl,mpc8360mds-bcsr"); if (!np) return -ENODEV; bcsr = of_iomap(np, 0); of_node_put(np); if (!bcsr) return -ENOMEM; np = of_find_compatible_node(NULL, NULL, "fsl,mpc8323-qe-usb"); if (!np) { ret = -ENODEV; goto err; } #define BCSR8_TSEC1M_MASK (0x3 << 6) #define BCSR8_TSEC1M_RGMII (0x0 << 6) #define BCSR8_TSEC2M_MASK (0x3 << 4) #define BCSR8_TSEC2M_RGMII (0x0 << 4) /* * Default is GMII (2), but we should set it to RGMII (0) if we use * USB (Eth PHY is in RGMII mode anyway). */ clrsetbits_8(&bcsr[8], BCSR8_TSEC1M_MASK | BCSR8_TSEC2M_MASK, BCSR8_TSEC1M_RGMII | BCSR8_TSEC2M_RGMII); #define BCSR13_USBMASK 0x0f #define BCSR13_nUSBEN 0x08 /* 1 - Disable, 0 - Enable */ #define BCSR13_USBSPEED 0x04 /* 1 - Full, 0 - Low */ #define BCSR13_USBMODE 0x02 /* 1 - Host, 0 - Function */ #define BCSR13_nUSBVCC 0x01 /* 1 - gets VBUS, 0 - supplies VBUS */ clrsetbits_8(&bcsr[13], BCSR13_USBMASK, BCSR13_USBSPEED); mode = of_get_property(np, "mode", NULL); if (mode && !strcmp(mode, "peripheral")) { setbits8(&bcsr[13], BCSR13_nUSBVCC); qe_usb_clock_set(QE_CLK21, 48000000); } else { setbits8(&bcsr[13], BCSR13_USBMODE); /* * The BCSR GPIOs are used to control power and * speed of the USB transceiver. This is needed for * the USB Host only. */ simple_gpiochip_init("fsl,mpc8360mds-bcsr-gpio"); } of_node_put(np); err: iounmap(bcsr); return ret; }
static int __init mpc836x_usb_cfg(void) { u8 __iomem *bcsr; struct device_node *np; const char *mode; int ret = 0; np = of_find_compatible_node(NULL, NULL, "fsl,mpc8360mds-bcsr"); if (!np) return -ENODEV; bcsr = of_iomap(np, 0); of_node_put(np); if (!bcsr) return -ENOMEM; np = of_find_compatible_node(NULL, NULL, "fsl,mpc8323-qe-usb"); if (!np) { ret = -ENODEV; goto err; } #define BCSR8_TSEC1M_MASK (0x3 << 6) #define BCSR8_TSEC1M_RGMII (0x0 << 6) #define BCSR8_TSEC2M_MASK (0x3 << 4) #define BCSR8_TSEC2M_RGMII (0x0 << 4) /* */ clrsetbits_8(&bcsr[8], BCSR8_TSEC1M_MASK | BCSR8_TSEC2M_MASK, BCSR8_TSEC1M_RGMII | BCSR8_TSEC2M_RGMII); #define BCSR13_USBMASK 0x0f #define BCSR13_nUSBEN 0x08 /* */ #define BCSR13_USBSPEED 0x04 /* */ #define BCSR13_USBMODE 0x02 /* */ #define BCSR13_nUSBVCC 0x01 /* */ clrsetbits_8(&bcsr[13], BCSR13_USBMASK, BCSR13_USBSPEED); mode = of_get_property(np, "mode", NULL); if (mode && !strcmp(mode, "peripheral")) { setbits8(&bcsr[13], BCSR13_nUSBVCC); qe_usb_clock_set(QE_CLK21, 48000000); } else { setbits8(&bcsr[13], BCSR13_USBMODE); /* */ simple_gpiochip_init("fsl,mpc8360mds-bcsr-gpio"); } of_node_put(np); err: iounmap(bcsr); return ret; }