18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * Broadcom 43xx PCI-SSB bridge module
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * This technically is a separate PCI driver module, but
58c2ecf20Sopenharmony_ci * because of its small size we include it in the SSB core
68c2ecf20Sopenharmony_ci * instead of creating a standalone module.
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * Copyright 2007  Michael Buesch <m@bues.ch>
98c2ecf20Sopenharmony_ci *
108c2ecf20Sopenharmony_ci * Licensed under the GNU/GPL. See COPYING for details.
118c2ecf20Sopenharmony_ci */
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#include "ssb_private.h"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#include <linux/pci.h>
168c2ecf20Sopenharmony_ci#include <linux/module.h>
178c2ecf20Sopenharmony_ci#include <linux/ssb/ssb.h>
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_cistatic const struct pci_device_id b43_pci_bridge_tbl[] = {
218c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4301) },
228c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4306) },
238c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4307) },
248c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4311) },
258c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4312) },
268c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4315) },
278c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4318) },
288c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BCM_GVC,  0x4318) },
298c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4319) },
308c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4320) },
318c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4321) },
328c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4322) },
338c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 43222) },
348c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4324) },
358c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4325) },
368c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4328) },
378c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4329) },
388c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x432b) },
398c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x432c) },
408c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4350) },
418c2ecf20Sopenharmony_ci	{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4351) },
428c2ecf20Sopenharmony_ci	{ 0, },
438c2ecf20Sopenharmony_ci};
448c2ecf20Sopenharmony_ciMODULE_DEVICE_TABLE(pci, b43_pci_bridge_tbl);
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_cistatic struct pci_driver b43_pci_bridge_driver = {
478c2ecf20Sopenharmony_ci	.name = "b43-pci-bridge",
488c2ecf20Sopenharmony_ci	.id_table = b43_pci_bridge_tbl,
498c2ecf20Sopenharmony_ci};
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ciint __init b43_pci_ssb_bridge_init(void)
538c2ecf20Sopenharmony_ci{
548c2ecf20Sopenharmony_ci	return ssb_pcihost_register(&b43_pci_bridge_driver);
558c2ecf20Sopenharmony_ci}
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_civoid __exit b43_pci_ssb_bridge_exit(void)
588c2ecf20Sopenharmony_ci{
598c2ecf20Sopenharmony_ci	ssb_pcihost_unregister(&b43_pci_bridge_driver);
608c2ecf20Sopenharmony_ci}
61