-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[SSB]: add Sonics Silicon Backplane bus support
SSB is an SoC bus used in a number of embedded devices. The most well-known of these devices is probably the Linksys WRT54G, but there are others as well. The bus is also used internally on the BCM43xx and BCM44xx devices from Broadcom. This patch also includes support for SSB ID tables in modules, so that SSB drivers can be loaded automatically. Signed-off-by: Michael Buesch <[email protected]> Signed-off-by: John W. Linville <[email protected]> Signed-off-by: David S. Miller <[email protected]>
- Loading branch information
Michael Buesch
authored and
David S. Miller
committed
Oct 10, 2007
1 parent
5ee3afb
commit 61e115a
Showing
24 changed files
with
5,892 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3446,6 +3446,12 @@ M: [email protected] | |
L: [email protected] | ||
S: Maintained | ||
|
||
SONICS SILICON BACKPLANE DRIVER (SSB) | ||
P: Michael Buesch | ||
M: [email protected] | ||
L: [email protected] | ||
S: Maintained | ||
|
||
SONY VAIO CONTROL DEVICE DRIVER | ||
P: Mattia Dongili | ||
M: [email protected] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
menu "Sonics Silicon Backplane" | ||
|
||
config SSB_POSSIBLE | ||
bool | ||
depends on HAS_IOMEM | ||
default y | ||
|
||
config SSB | ||
tristate "Sonics Silicon Backplane support" | ||
depends on SSB_POSSIBLE | ||
help | ||
Support for the Sonics Silicon Backplane bus. | ||
You only need to enable this option, if you are | ||
configuring a kernel for an embedded system with | ||
this bus. | ||
It will be auto-selected if needed in other | ||
environments. | ||
|
||
The module will be called ssb. | ||
|
||
If unsure, say N. | ||
|
||
config SSB_PCIHOST_POSSIBLE | ||
bool | ||
depends on SSB && PCI | ||
default y | ||
|
||
config SSB_PCIHOST | ||
bool "Support for SSB on PCI-bus host" | ||
depends on SSB_PCIHOST_POSSIBLE | ||
default y | ||
help | ||
Support for a Sonics Silicon Backplane on top | ||
of a PCI device. | ||
|
||
If unsure, say Y | ||
|
||
config SSB_PCMCIAHOST_POSSIBLE | ||
bool | ||
depends on SSB && PCMCIA && EXPERIMENTAL | ||
default y | ||
|
||
config SSB_PCMCIAHOST | ||
bool "Support for SSB on PCMCIA-bus host (EXPERIMENTAL)" | ||
depends on SSB_PCMCIAHOST_POSSIBLE | ||
help | ||
Support for a Sonics Silicon Backplane on top | ||
of a PCMCIA device. | ||
|
||
If unsure, say N | ||
|
||
config SSB_SILENT | ||
bool "No SSB kernel messages" | ||
depends on SSB && EMBEDDED | ||
help | ||
This option turns off all Sonics Silicon Backplane printks. | ||
Note that you won't be able to identify problems, once | ||
messages are turned off. | ||
This might only be desired for production kernels on | ||
embedded devices to reduce the kernel size. | ||
|
||
Say N | ||
|
||
config SSB_DEBUG | ||
bool "SSB debugging" | ||
depends on SSB && !SSB_SILENT | ||
help | ||
This turns on additional runtime checks and debugging | ||
messages. Turn this on for SSB troubleshooting. | ||
|
||
If unsure, say N | ||
|
||
config SSB_SERIAL | ||
bool | ||
depends on SSB | ||
# ChipCommon and ExtIf serial support routines. | ||
|
||
config SSB_DRIVER_PCICORE_POSSIBLE | ||
bool | ||
depends on SSB_PCIHOST | ||
default y | ||
|
||
config SSB_DRIVER_PCICORE | ||
bool "SSB PCI core driver" | ||
depends on SSB_DRIVER_PCICORE_POSSIBLE | ||
help | ||
Driver for the Sonics Silicon Backplane attached | ||
Broadcom PCI core. | ||
|
||
If unsure, say Y | ||
|
||
config SSB_PCICORE_HOSTMODE | ||
bool "Hostmode support for SSB PCI core (EXPERIMENTAL)" | ||
depends on SSB_DRIVER_PCICORE && SSB_DRIVER_MIPS && EXPERIMENTAL | ||
help | ||
PCIcore hostmode operation (external PCI bus). | ||
|
||
config SSB_DRIVER_MIPS | ||
bool "SSB Broadcom MIPS core driver (EXPERIMENTAL)" | ||
depends on SSB && MIPS && EXPERIMENTAL | ||
select SSB_SERIAL | ||
help | ||
Driver for the Sonics Silicon Backplane attached | ||
Broadcom MIPS core. | ||
|
||
If unsure, say N | ||
|
||
config SSB_DRIVER_EXTIF | ||
bool "SSB Broadcom EXTIF core driver (EXPERIMENTAL)" | ||
depends on SSB_DRIVER_MIPS && EXPERIMENTAL | ||
help | ||
Driver for the Sonics Silicon Backplane attached | ||
Broadcom EXTIF core. | ||
|
||
If unsure, say N | ||
|
||
endmenu |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# core | ||
ssb-y += main.o scan.o | ||
|
||
# host support | ||
ssb-$(CONFIG_SSB_PCIHOST) += pci.o pcihost_wrapper.o | ||
ssb-$(CONFIG_SSB_PCMCIAHOST) += pcmcia.o | ||
|
||
# built-in drivers | ||
ssb-y += driver_chipcommon.o | ||
ssb-$(CONFIG_SSB_DRIVER_MIPS) += driver_mipscore.o | ||
ssb-$(CONFIG_SSB_DRIVER_EXTIF) += driver_extif.o | ||
ssb-$(CONFIG_SSB_DRIVER_PCICORE) += driver_pcicore.o | ||
|
||
# b43 pci-ssb-bridge driver | ||
# Not strictly a part of SSB, but kept here for convenience | ||
ssb-$(CONFIG_SSB_PCIHOST) += b43_pci_bridge.o | ||
|
||
obj-$(CONFIG_SSB) += ssb.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* Broadcom 43xx PCI-SSB bridge module | ||
* | ||
* This technically is a seperate PCI driver module, but | ||
* because of its small size we include it in the SSB core | ||
* instead of creating a standalone module. | ||
* | ||
* Copyright 2007 Michael Buesch <[email protected]> | ||
* | ||
* Licensed under the GNU/GPL. See COPYING for details. | ||
*/ | ||
|
||
#include <linux/pci.h> | ||
#include <linux/ssb/ssb.h> | ||
|
||
|
||
static const struct pci_device_id b43_pci_bridge_tbl[] = { | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4301) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4307) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4311) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4312) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4318) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4319) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4320) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4321) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4324) }, | ||
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4325) }, | ||
{ 0, }, | ||
}; | ||
MODULE_DEVICE_TABLE(pci, b43_pci_bridge_tbl); | ||
|
||
static struct pci_driver b43_pci_bridge_driver = { | ||
.name = "b43-pci-bridge", | ||
.id_table = b43_pci_bridge_tbl, | ||
}; | ||
|
||
|
||
int __init b43_pci_ssb_bridge_init(void) | ||
{ | ||
return ssb_pcihost_register(&b43_pci_bridge_driver); | ||
} | ||
|
||
void __exit b43_pci_ssb_bridge_exit(void) | ||
{ | ||
ssb_pcihost_unregister(&b43_pci_bridge_driver); | ||
} |
Oops, something went wrong.