main.c (e6c463e3a3d067f5da2c79d5acdb2f626754cdb3) | main.c (24ea602e183ca20a7577ebe253323d0e5d0f9847) |
---|---|
1/* 2 * Sonics Silicon Backplane 3 * Subsystem core 4 * 5 * Copyright 2005, Broadcom Corporation 6 * Copyright 2006, 2007, Michael Buesch <mb@bu3sch.de> 7 * 8 * Licensed under the GNU/GPL. See COPYING for details. 9 */ 10 11#include "ssb_private.h" 12 13#include <linux/delay.h> 14#include <linux/io.h> 15#include <linux/ssb/ssb.h> 16#include <linux/ssb/ssb_regs.h> 17#include <linux/ssb/ssb_driver_gige.h> 18#include <linux/dma-mapping.h> 19#include <linux/pci.h> | 1/* 2 * Sonics Silicon Backplane 3 * Subsystem core 4 * 5 * Copyright 2005, Broadcom Corporation 6 * Copyright 2006, 2007, Michael Buesch <mb@bu3sch.de> 7 * 8 * Licensed under the GNU/GPL. See COPYING for details. 9 */ 10 11#include "ssb_private.h" 12 13#include <linux/delay.h> 14#include <linux/io.h> 15#include <linux/ssb/ssb.h> 16#include <linux/ssb/ssb_regs.h> 17#include <linux/ssb/ssb_driver_gige.h> 18#include <linux/dma-mapping.h> 19#include <linux/pci.h> |
20#include <linux/mmc/sdio_func.h> |
|
20 21#include <pcmcia/cs_types.h> 22#include <pcmcia/cs.h> 23#include <pcmcia/cistpl.h> 24#include <pcmcia/ds.h> 25 26 27MODULE_DESCRIPTION("Sonics Silicon Backplane driver"); --- 55 unchanged lines hidden (view full) --- 83 bus = NULL; 84found: 85 ssb_buses_unlock(); 86 87 return bus; 88} 89#endif /* CONFIG_SSB_PCMCIAHOST */ 90 | 21 22#include <pcmcia/cs_types.h> 23#include <pcmcia/cs.h> 24#include <pcmcia/cistpl.h> 25#include <pcmcia/ds.h> 26 27 28MODULE_DESCRIPTION("Sonics Silicon Backplane driver"); --- 55 unchanged lines hidden (view full) --- 84 bus = NULL; 85found: 86 ssb_buses_unlock(); 87 88 return bus; 89} 90#endif /* CONFIG_SSB_PCMCIAHOST */ 91 |
92#ifdef CONFIG_SSB_SDIOHOST 93struct ssb_bus *ssb_sdio_func_to_bus(struct sdio_func *func) 94{ 95 struct ssb_bus *bus; 96 97 ssb_buses_lock(); 98 list_for_each_entry(bus, &buses, list) { 99 if (bus->bustype == SSB_BUSTYPE_SDIO && 100 bus->host_sdio == func) 101 goto found; 102 } 103 bus = NULL; 104found: 105 ssb_buses_unlock(); 106 107 return bus; 108} 109#endif /* CONFIG_SSB_SDIOHOST */ 110 |
|
91int ssb_for_each_bus_call(unsigned long data, 92 int (*func)(struct ssb_bus *bus, unsigned long data)) 93{ 94 struct ssb_bus *bus; 95 int res; 96 97 ssb_buses_lock(); 98 list_for_each_entry(bus, &buses, list) { --- 365 unchanged lines hidden (view full) --- 464#endif 465 break; 466 case SSB_BUSTYPE_PCMCIA: 467#ifdef CONFIG_SSB_PCMCIAHOST 468 sdev->irq = bus->host_pcmcia->irq.AssignedIRQ; 469 dev->parent = &bus->host_pcmcia->dev; 470#endif 471 break; | 111int ssb_for_each_bus_call(unsigned long data, 112 int (*func)(struct ssb_bus *bus, unsigned long data)) 113{ 114 struct ssb_bus *bus; 115 int res; 116 117 ssb_buses_lock(); 118 list_for_each_entry(bus, &buses, list) { --- 365 unchanged lines hidden (view full) --- 484#endif 485 break; 486 case SSB_BUSTYPE_PCMCIA: 487#ifdef CONFIG_SSB_PCMCIAHOST 488 sdev->irq = bus->host_pcmcia->irq.AssignedIRQ; 489 dev->parent = &bus->host_pcmcia->dev; 490#endif 491 break; |
492 case SSB_BUSTYPE_SDIO: 493#ifdef CONFIG_SSB_SDIO 494 sdev->irq = bus->host_sdio->dev.irq; 495 dev->parent = &bus->host_sdio->dev; 496#endif 497 break; |
|
472 case SSB_BUSTYPE_SSB: 473 dev->dma_mask = &dev->coherent_dma_mask; 474 break; 475 } 476 477 sdev->dev = dev; 478 err = device_register(dev); 479 if (err) { --- 239 unchanged lines hidden (view full) --- 719#ifdef CONFIG_SSB_EMBEDDED 720 spin_lock_init(&bus->gpio_lock); 721#endif 722 723 /* Powerup the bus */ 724 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 1); 725 if (err) 726 goto out; | 498 case SSB_BUSTYPE_SSB: 499 dev->dma_mask = &dev->coherent_dma_mask; 500 break; 501 } 502 503 sdev->dev = dev; 504 err = device_register(dev); 505 if (err) { --- 239 unchanged lines hidden (view full) --- 745#ifdef CONFIG_SSB_EMBEDDED 746 spin_lock_init(&bus->gpio_lock); 747#endif 748 749 /* Powerup the bus */ 750 err = ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 1); 751 if (err) 752 goto out; |
753 754 /* Init SDIO-host device (if any), before the scan */ 755 err = ssb_sdio_init(bus); 756 if (err) 757 goto err_disable_xtal; 758 |
|
727 ssb_buses_lock(); 728 bus->busnumber = next_busnumber; 729 /* Scan for devices (cores) */ 730 err = ssb_bus_scan(bus, baseaddr); 731 if (err) | 759 ssb_buses_lock(); 760 bus->busnumber = next_busnumber; 761 /* Scan for devices (cores) */ 762 err = ssb_bus_scan(bus, baseaddr); 763 if (err) |
732 goto err_disable_xtal; | 764 goto err_sdio_exit; |
733 734 /* Init PCI-host device (if any) */ 735 err = ssb_pci_init(bus); 736 if (err) 737 goto err_unmap; 738 /* Init PCMCIA-host device (if any) */ 739 err = ssb_pcmcia_init(bus); 740 if (err) --- 30 unchanged lines hidden (view full) --- 771err_dequeue: 772 list_del(&bus->list); 773err_pcmcia_exit: 774 ssb_pcmcia_exit(bus); 775err_pci_exit: 776 ssb_pci_exit(bus); 777err_unmap: 778 ssb_iounmap(bus); | 765 766 /* Init PCI-host device (if any) */ 767 err = ssb_pci_init(bus); 768 if (err) 769 goto err_unmap; 770 /* Init PCMCIA-host device (if any) */ 771 err = ssb_pcmcia_init(bus); 772 if (err) --- 30 unchanged lines hidden (view full) --- 803err_dequeue: 804 list_del(&bus->list); 805err_pcmcia_exit: 806 ssb_pcmcia_exit(bus); 807err_pci_exit: 808 ssb_pci_exit(bus); 809err_unmap: 810 ssb_iounmap(bus); |
811err_sdio_exit: 812 ssb_sdio_exit(bus); |
|
779err_disable_xtal: 780 ssb_buses_unlock(); 781 ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); 782 return err; 783} 784 785#ifdef CONFIG_SSB_PCIHOST 786int ssb_bus_pcibus_register(struct ssb_bus *bus, --- 33 unchanged lines hidden (view full) --- 820 "PCMCIA device %s\n", pcmcia_dev->devname); 821 } 822 823 return err; 824} 825EXPORT_SYMBOL(ssb_bus_pcmciabus_register); 826#endif /* CONFIG_SSB_PCMCIAHOST */ 827 | 813err_disable_xtal: 814 ssb_buses_unlock(); 815 ssb_pci_xtal(bus, SSB_GPIO_XTAL | SSB_GPIO_PLL, 0); 816 return err; 817} 818 819#ifdef CONFIG_SSB_PCIHOST 820int ssb_bus_pcibus_register(struct ssb_bus *bus, --- 33 unchanged lines hidden (view full) --- 854 "PCMCIA device %s\n", pcmcia_dev->devname); 855 } 856 857 return err; 858} 859EXPORT_SYMBOL(ssb_bus_pcmciabus_register); 860#endif /* CONFIG_SSB_PCMCIAHOST */ 861 |
862#ifdef CONFIG_SSB_SDIOHOST 863int ssb_bus_sdiobus_register(struct ssb_bus *bus, struct sdio_func *func, 864 unsigned int quirks) 865{ 866 int err; 867 868 bus->bustype = SSB_BUSTYPE_SDIO; 869 bus->host_sdio = func; 870 bus->ops = &ssb_sdio_ops; 871 bus->quirks = quirks; 872 873 err = ssb_bus_register(bus, ssb_sdio_get_invariants, ~0); 874 if (!err) { 875 ssb_printk(KERN_INFO PFX "Sonics Silicon Backplane found on " 876 "SDIO device %s\n", sdio_func_id(func)); 877 } 878 879 return err; 880} 881EXPORT_SYMBOL(ssb_bus_sdiobus_register); 882#endif /* CONFIG_SSB_PCMCIAHOST */ 883 |
|
828int ssb_bus_ssbbus_register(struct ssb_bus *bus, 829 unsigned long baseaddr, 830 ssb_invariants_func_t get_invariants) 831{ 832 int err; 833 834 bus->bustype = SSB_BUSTYPE_SSB; 835 bus->ops = &ssb_ssb_ops; --- 559 unchanged lines hidden --- | 884int ssb_bus_ssbbus_register(struct ssb_bus *bus, 885 unsigned long baseaddr, 886 ssb_invariants_func_t get_invariants) 887{ 888 int err; 889 890 bus->bustype = SSB_BUSTYPE_SSB; 891 bus->ops = &ssb_ssb_ops; --- 559 unchanged lines hidden --- |