main.c (c13aca79ff3c4af5fd31a5b2743a90eba6e36a26) | main.c (b8b6069cf2087545fe53ec920e8353133e9a70bf) |
---|---|
1/* 2 * Sonics Silicon Backplane 3 * Subsystem core 4 * 5 * Copyright 2005, Broadcom Corporation 6 * Copyright 2006, 2007, Michael Buesch <m@bues.ch> 7 * 8 * Licensed under the GNU/GPL. See COPYING for details. --- 242 unchanged lines hidden (view full) --- 251 if (SSB_WARN_ON(!sdev->dev || !sdev->dev->driver)) 252 continue; 253 sdrv = drv_to_ssb_drv(sdev->dev->driver); 254 if (SSB_WARN_ON(!sdrv || !sdrv->probe)) 255 continue; 256 257 err = sdrv->probe(sdev, &sdev->id); 258 if (err) { | 1/* 2 * Sonics Silicon Backplane 3 * Subsystem core 4 * 5 * Copyright 2005, Broadcom Corporation 6 * Copyright 2006, 2007, Michael Buesch <m@bues.ch> 7 * 8 * Licensed under the GNU/GPL. See COPYING for details. --- 242 unchanged lines hidden (view full) --- 251 if (SSB_WARN_ON(!sdev->dev || !sdev->dev->driver)) 252 continue; 253 sdrv = drv_to_ssb_drv(sdev->dev->driver); 254 if (SSB_WARN_ON(!sdrv || !sdrv->probe)) 255 continue; 256 257 err = sdrv->probe(sdev, &sdev->id); 258 if (err) { |
259 ssb_err("Failed to thaw device %s\n", | 259 dev_err(sdev->dev, 260 "Failed to thaw device %s\n", |
260 dev_name(sdev->dev)); 261 result = err; 262 } 263 ssb_device_put(sdev); 264 } 265 266 return result; 267} --- 158 unchanged lines hidden (view full) --- 426} 427 428void ssb_bus_unregister(struct ssb_bus *bus) 429{ 430 int err; 431 432 err = ssb_gpio_unregister(bus); 433 if (err == -EBUSY) | 261 dev_name(sdev->dev)); 262 result = err; 263 } 264 ssb_device_put(sdev); 265 } 266 267 return result; 268} --- 158 unchanged lines hidden (view full) --- 427} 428 429void ssb_bus_unregister(struct ssb_bus *bus) 430{ 431 int err; 432 433 err = ssb_gpio_unregister(bus); 434 if (err == -EBUSY) |
434 ssb_dbg("Some GPIOs are still in use\n"); | 435 pr_debug("Some GPIOs are still in use\n"); |
435 else if (err) | 436 else if (err) |
436 ssb_dbg("Can not unregister GPIO driver: %i\n", err); | 437 pr_debug("Can not unregister GPIO driver: %i\n", err); |
437 438 ssb_buses_lock(); 439 ssb_devices_unregister(bus); 440 list_del(&bus->list); 441 ssb_buses_unlock(); 442 443 ssb_pcmcia_exit(bus); 444 ssb_pci_exit(bus); --- 68 unchanged lines hidden (view full) --- 513 dev->dma_mask = &dev->coherent_dma_mask; 514 sdev->dma_dev = dev; 515 break; 516 } 517 518 sdev->dev = dev; 519 err = device_register(dev); 520 if (err) { | 438 439 ssb_buses_lock(); 440 ssb_devices_unregister(bus); 441 list_del(&bus->list); 442 ssb_buses_unlock(); 443 444 ssb_pcmcia_exit(bus); 445 ssb_pci_exit(bus); --- 68 unchanged lines hidden (view full) --- 514 dev->dma_mask = &dev->coherent_dma_mask; 515 sdev->dma_dev = dev; 516 break; 517 } 518 519 sdev->dev = dev; 520 err = device_register(dev); 521 if (err) { |
521 ssb_err("Could not register %s\n", dev_name(dev)); | 522 pr_err("Could not register %s\n", dev_name(dev)); |
522 /* Set dev to NULL to not unregister 523 * dev on error unwinding. */ 524 sdev->dev = NULL; 525 put_device(dev); 526 goto error; 527 } 528 dev_idx++; 529 } --- 41 unchanged lines hidden (view full) --- 571 if (err) 572 goto error; 573 ssb_pcicore_init(&bus->pcicore); 574 if (bus->bustype == SSB_BUSTYPE_SSB) 575 ssb_watchdog_register(bus); 576 577 err = ssb_gpio_init(bus); 578 if (err == -ENOTSUPP) | 523 /* Set dev to NULL to not unregister 524 * dev on error unwinding. */ 525 sdev->dev = NULL; 526 put_device(dev); 527 goto error; 528 } 529 dev_idx++; 530 } --- 41 unchanged lines hidden (view full) --- 572 if (err) 573 goto error; 574 ssb_pcicore_init(&bus->pcicore); 575 if (bus->bustype == SSB_BUSTYPE_SSB) 576 ssb_watchdog_register(bus); 577 578 err = ssb_gpio_init(bus); 579 if (err == -ENOTSUPP) |
579 ssb_dbg("GPIO driver not activated\n"); | 580 pr_debug("GPIO driver not activated\n"); |
580 else if (err) | 581 else if (err) |
581 ssb_dbg("Error registering GPIO driver: %i\n", err); | 582 pr_debug("Error registering GPIO driver: %i\n", err); |
582 583 ssb_bus_may_powerdown(bus); 584 585 err = ssb_devices_register(bus); 586error: 587 if (err) { 588 drop_them_all = 1; 589 list_del(&bus->list); --- 112 unchanged lines hidden (view full) --- 702 int err; 703 704 bus->bustype = SSB_BUSTYPE_PCI; 705 bus->host_pci = host_pci; 706 bus->ops = &ssb_pci_ops; 707 708 err = ssb_bus_register(bus, ssb_pci_get_invariants, 0); 709 if (!err) { | 583 584 ssb_bus_may_powerdown(bus); 585 586 err = ssb_devices_register(bus); 587error: 588 if (err) { 589 drop_them_all = 1; 590 list_del(&bus->list); --- 112 unchanged lines hidden (view full) --- 703 int err; 704 705 bus->bustype = SSB_BUSTYPE_PCI; 706 bus->host_pci = host_pci; 707 bus->ops = &ssb_pci_ops; 708 709 err = ssb_bus_register(bus, ssb_pci_get_invariants, 0); 710 if (!err) { |
710 ssb_info("Sonics Silicon Backplane found on PCI device %s\n", | 711 dev_info(&host_pci->dev, 712 "Sonics Silicon Backplane found on PCI device %s\n", |
711 dev_name(&host_pci->dev)); 712 } else { | 713 dev_name(&host_pci->dev)); 714 } else { |
713 ssb_err("Failed to register PCI version of SSB with error %d\n", | 715 dev_err(&host_pci->dev, 716 "Failed to register PCI version of SSB with error %d\n", |
714 err); 715 } 716 717 return err; 718} 719#endif /* CONFIG_SSB_PCIHOST */ 720 721#ifdef CONFIG_SSB_PCMCIAHOST --- 4 unchanged lines hidden (view full) --- 726 int err; 727 728 bus->bustype = SSB_BUSTYPE_PCMCIA; 729 bus->host_pcmcia = pcmcia_dev; 730 bus->ops = &ssb_pcmcia_ops; 731 732 err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr); 733 if (!err) { | 717 err); 718 } 719 720 return err; 721} 722#endif /* CONFIG_SSB_PCIHOST */ 723 724#ifdef CONFIG_SSB_PCMCIAHOST --- 4 unchanged lines hidden (view full) --- 729 int err; 730 731 bus->bustype = SSB_BUSTYPE_PCMCIA; 732 bus->host_pcmcia = pcmcia_dev; 733 bus->ops = &ssb_pcmcia_ops; 734 735 err = ssb_bus_register(bus, ssb_pcmcia_get_invariants, baseaddr); 736 if (!err) { |
734 ssb_info("Sonics Silicon Backplane found on PCMCIA device %s\n", | 737 dev_info(&pcmcia_dev->dev, 738 "Sonics Silicon Backplane found on PCMCIA device %s\n", |
735 pcmcia_dev->devname); 736 } 737 738 return err; 739} 740#endif /* CONFIG_SSB_PCMCIAHOST */ 741 742#ifdef CONFIG_SSB_SDIOHOST --- 4 unchanged lines hidden (view full) --- 747 748 bus->bustype = SSB_BUSTYPE_SDIO; 749 bus->host_sdio = func; 750 bus->ops = &ssb_sdio_ops; 751 bus->quirks = quirks; 752 753 err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0); 754 if (!err) { | 739 pcmcia_dev->devname); 740 } 741 742 return err; 743} 744#endif /* CONFIG_SSB_PCMCIAHOST */ 745 746#ifdef CONFIG_SSB_SDIOHOST --- 4 unchanged lines hidden (view full) --- 751 752 bus->bustype = SSB_BUSTYPE_SDIO; 753 bus->host_sdio = func; 754 bus->ops = &ssb_sdio_ops; 755 bus->quirks = quirks; 756 757 err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0); 758 if (!err) { |
755 ssb_info("Sonics Silicon Backplane found on SDIO device %s\n", | 759 dev_info(&func->dev, 760 "Sonics Silicon Backplane found on SDIO device %s\n", |
756 sdio_func_id(func)); 757 } 758 759 return err; 760} 761EXPORT_SYMBOL(ssb_bus_sdiobus_register); 762#endif /* CONFIG_SSB_PCMCIAHOST */ 763 764#ifdef CONFIG_SSB_HOST_SOC 765int ssb_bus_host_soc_register(struct ssb_bus *bus, unsigned long baseaddr) 766{ 767 int err; 768 769 bus->bustype = SSB_BUSTYPE_SSB; 770 bus->ops = &ssb_host_soc_ops; 771 772 err = ssb_bus_register(bus, ssb_host_soc_get_invariants, baseaddr); 773 if (!err) { | 761 sdio_func_id(func)); 762 } 763 764 return err; 765} 766EXPORT_SYMBOL(ssb_bus_sdiobus_register); 767#endif /* CONFIG_SSB_PCMCIAHOST */ 768 769#ifdef CONFIG_SSB_HOST_SOC 770int ssb_bus_host_soc_register(struct ssb_bus *bus, unsigned long baseaddr) 771{ 772 int err; 773 774 bus->bustype = SSB_BUSTYPE_SSB; 775 bus->ops = &ssb_host_soc_ops; 776 777 err = ssb_bus_register(bus, ssb_host_soc_get_invariants, baseaddr); 778 if (!err) { |
774 ssb_info("Sonics Silicon Backplane found at address 0x%08lX\n", 775 baseaddr); | 779 pr_info("Sonics Silicon Backplane found at address 0x%08lX\n", 780 baseaddr); |
776 } 777 778 return err; 779} 780#endif 781 782int __ssb_driver_register(struct ssb_driver *drv, struct module *owner) 783{ --- 268 unchanged lines hidden (view full) --- 1052 if ((val & bitmask) == bitmask) 1053 return 0; 1054 } else { 1055 if (!(val & bitmask)) 1056 return 0; 1057 } 1058 udelay(10); 1059 } | 781 } 782 783 return err; 784} 785#endif 786 787int __ssb_driver_register(struct ssb_driver *drv, struct module *owner) 788{ --- 268 unchanged lines hidden (view full) --- 1057 if ((val & bitmask) == bitmask) 1058 return 0; 1059 } else { 1060 if (!(val & bitmask)) 1061 return 0; 1062 } 1063 udelay(10); 1064 } |
1060 printk(KERN_ERR PFX "Timeout waiting for bitmask %08X on " 1061 "register %04X to %s.\n", 1062 bitmask, reg, (set ? "set" : "clear")); | 1065 dev_err(dev->dev, 1066 "Timeout waiting for bitmask %08X on register %04X to %s\n", 1067 bitmask, reg, set ? "set" : "clear"); |
1063 1064 return -ETIMEDOUT; 1065} 1066 1067void ssb_device_disable(struct ssb_device *dev, u32 core_specific_flags) 1068{ 1069 u32 reject, val; 1070 --- 93 unchanged lines hidden (view full) --- 1164 if (err) 1165 goto error; 1166out: 1167#ifdef CONFIG_SSB_DEBUG 1168 bus->powered_up = 0; 1169#endif 1170 return err; 1171error: | 1068 1069 return -ETIMEDOUT; 1070} 1071 1072void ssb_device_disable(struct ssb_device *dev, u32 core_specific_flags) 1073{ 1074 u32 reject, val; 1075 --- 93 unchanged lines hidden (view full) --- 1169 if (err) 1170 goto error; 1171out: 1172#ifdef CONFIG_SSB_DEBUG 1173 bus->powered_up = 0; 1174#endif 1175 return err; 1176error: |
1172 ssb_err("Bus powerdown failed\n"); | 1177 pr_err("Bus powerdown failed\n"); |
1173 goto out; 1174} 1175EXPORT_SYMBOL(ssb_bus_may_powerdown); 1176 1177int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl) 1178{ 1179 int err; 1180 enum ssb_clkmode mode; --- 6 unchanged lines hidden (view full) --- 1187 bus->powered_up = 1; 1188#endif 1189 1190 mode = dynamic_pctl ? SSB_CLKMODE_DYNAMIC : SSB_CLKMODE_FAST; 1191 ssb_chipco_set_clockmode(&bus->chipco, mode); 1192 1193 return 0; 1194error: | 1178 goto out; 1179} 1180EXPORT_SYMBOL(ssb_bus_may_powerdown); 1181 1182int ssb_bus_powerup(struct ssb_bus *bus, bool dynamic_pctl) 1183{ 1184 int err; 1185 enum ssb_clkmode mode; --- 6 unchanged lines hidden (view full) --- 1192 bus->powered_up = 1; 1193#endif 1194 1195 mode = dynamic_pctl ? SSB_CLKMODE_DYNAMIC : SSB_CLKMODE_FAST; 1196 ssb_chipco_set_clockmode(&bus->chipco, mode); 1197 1198 return 0; 1199error: |
1195 ssb_err("Bus powerup failed\n"); | 1200 pr_err("Bus powerup failed\n"); |
1196 return err; 1197} 1198EXPORT_SYMBOL(ssb_bus_powerup); 1199 1200static void ssb_broadcast_value(struct ssb_device *dev, 1201 u32 address, u32 data) 1202{ 1203#ifdef CONFIG_SSB_DRIVER_PCICORE --- 91 unchanged lines hidden (view full) --- 1295 ssb_buses_unlock(); 1296 if (err) { 1297 bus_unregister(&ssb_bustype); 1298 goto out; 1299 } 1300 1301 err = b43_pci_ssb_bridge_init(); 1302 if (err) { | 1201 return err; 1202} 1203EXPORT_SYMBOL(ssb_bus_powerup); 1204 1205static void ssb_broadcast_value(struct ssb_device *dev, 1206 u32 address, u32 data) 1207{ 1208#ifdef CONFIG_SSB_DRIVER_PCICORE --- 91 unchanged lines hidden (view full) --- 1300 ssb_buses_unlock(); 1301 if (err) { 1302 bus_unregister(&ssb_bustype); 1303 goto out; 1304 } 1305 1306 err = b43_pci_ssb_bridge_init(); 1307 if (err) { |
1303 ssb_err("Broadcom 43xx PCI-SSB-bridge initialization failed\n"); | 1308 pr_err("Broadcom 43xx PCI-SSB-bridge initialization failed\n"); |
1304 /* don't fail SSB init because of this */ 1305 err = 0; 1306 } 1307 err = ssb_host_pcmcia_init(); 1308 if (err) { | 1309 /* don't fail SSB init because of this */ 1310 err = 0; 1311 } 1312 err = ssb_host_pcmcia_init(); 1313 if (err) { |
1309 ssb_err("PCMCIA host initialization failed\n"); | 1314 pr_err("PCMCIA host initialization failed\n"); |
1310 /* don't fail SSB init because of this */ 1311 err = 0; 1312 } 1313 err = ssb_gige_init(); 1314 if (err) { | 1315 /* don't fail SSB init because of this */ 1316 err = 0; 1317 } 1318 err = ssb_gige_init(); 1319 if (err) { |
1315 ssb_err("SSB Broadcom Gigabit Ethernet driver initialization failed\n"); | 1320 pr_err("SSB Broadcom Gigabit Ethernet driver initialization failed\n"); |
1316 /* don't fail SSB init because of this */ 1317 err = 0; 1318 } 1319out: 1320 return err; 1321} 1322/* ssb must be initialized after PCI but before the ssb drivers. 1323 * That means we must use some initcall between subsys_initcall 1324 * and device_initcall. */ 1325fs_initcall(ssb_modinit); 1326 1327static void __exit ssb_modexit(void) 1328{ 1329 ssb_gige_exit(); 1330 ssb_host_pcmcia_exit(); 1331 b43_pci_ssb_bridge_exit(); 1332 bus_unregister(&ssb_bustype); 1333} 1334module_exit(ssb_modexit) | 1321 /* don't fail SSB init because of this */ 1322 err = 0; 1323 } 1324out: 1325 return err; 1326} 1327/* ssb must be initialized after PCI but before the ssb drivers. 1328 * That means we must use some initcall between subsys_initcall 1329 * and device_initcall. */ 1330fs_initcall(ssb_modinit); 1331 1332static void __exit ssb_modexit(void) 1333{ 1334 ssb_gige_exit(); 1335 ssb_host_pcmcia_exit(); 1336 b43_pci_ssb_bridge_exit(); 1337 bus_unregister(&ssb_bustype); 1338} 1339module_exit(ssb_modexit) |