forked from torvalds/linux
-
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.
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/gi…
…t/linville/wireless-next-2.6 into for-davem Conflicts: drivers/net/wireless/iwlwifi/iwl-agn-tx.c net/mac80211/sta_info.h
- Loading branch information
Showing
213 changed files
with
19,165 additions
and
2,154 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 |
---|---|---|
@@ -0,0 +1,31 @@ | ||
What: /sys/bus/bcma/devices/.../manuf | ||
Date: May 2011 | ||
KernelVersion: 2.6.40 | ||
Contact: Rafał Miłecki <[email protected]> | ||
Description: | ||
Each BCMA core has it's manufacturer id. See | ||
include/linux/bcma/bcma.h for possible values. | ||
|
||
What: /sys/bus/bcma/devices/.../id | ||
Date: May 2011 | ||
KernelVersion: 2.6.40 | ||
Contact: Rafał Miłecki <[email protected]> | ||
Description: | ||
There are a few types of BCMA cores, they can be identified by | ||
id field. | ||
|
||
What: /sys/bus/bcma/devices/.../rev | ||
Date: May 2011 | ||
KernelVersion: 2.6.40 | ||
Contact: Rafał Miłecki <[email protected]> | ||
Description: | ||
BCMA cores of the same type can still slightly differ depending | ||
on their revision. Use it for detailed programming. | ||
|
||
What: /sys/bus/bcma/devices/.../class | ||
Date: May 2011 | ||
KernelVersion: 2.6.40 | ||
Contact: Rafał Miłecki <[email protected]> | ||
Description: | ||
Each BCMA core is identified by few fields, including class it | ||
belongs to. See include/linux/bcma/bcma.h for possible values. |
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 |
---|---|---|
|
@@ -5812,6 +5812,13 @@ S: Maintained | |
F: drivers/ssb/ | ||
F: include/linux/ssb/ | ||
|
||
BROADCOM SPECIFIC AMBA DRIVER (BCMA) | ||
M: Rafał Miłecki <[email protected]> | ||
L: [email protected] | ||
S: Maintained | ||
F: drivers/bcma/ | ||
F: include/linux/bcma/ | ||
|
||
SONY VAIO CONTROL DEVICE DRIVER | ||
M: Mattia Dongili <[email protected]> | ||
L: [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,33 @@ | ||
config BCMA_POSSIBLE | ||
bool | ||
depends on HAS_IOMEM && HAS_DMA | ||
default y | ||
|
||
menu "Broadcom specific AMBA" | ||
depends on BCMA_POSSIBLE | ||
|
||
config BCMA | ||
tristate "BCMA support" | ||
depends on BCMA_POSSIBLE | ||
help | ||
Bus driver for Broadcom specific Advanced Microcontroller Bus | ||
Architecture. | ||
|
||
config BCMA_HOST_PCI_POSSIBLE | ||
bool | ||
depends on BCMA && PCI = y | ||
default y | ||
|
||
config BCMA_HOST_PCI | ||
bool "Support for BCMA on PCI-host bus" | ||
depends on BCMA_HOST_PCI_POSSIBLE | ||
|
||
config BCMA_DEBUG | ||
bool "BCMA debugging" | ||
depends on BCMA | ||
help | ||
This turns on additional debugging messages. | ||
|
||
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,7 @@ | ||
bcma-y += main.o scan.o core.o | ||
bcma-y += driver_chipcommon.o driver_chipcommon_pmu.o | ||
bcma-y += driver_pci.o | ||
bcma-$(CONFIG_BCMA_HOST_PCI) += host_pci.o | ||
obj-$(CONFIG_BCMA) += bcma.o | ||
|
||
ccflags-$(CONFIG_BCMA_DEBUG) := -DDEBUG |
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,19 @@ | ||
Broadcom introduced new bus as replacement for older SSB. It is based on AMBA, | ||
however from programming point of view there is nothing AMBA specific we use. | ||
|
||
Standard AMBA drivers are platform specific, have hardcoded addresses and use | ||
AMBA standard fields like CID and PID. | ||
|
||
In case of Broadcom's cards every device consists of: | ||
1) Broadcom specific AMBA device. It is put on AMBA bus, but can not be treated | ||
as standard AMBA device. Reading it's CID or PID can cause machine lockup. | ||
2) AMBA standard devices called ports or wrappers. They have CIDs (AMBA_CID) | ||
and PIDs (0x103BB369), but we do not use that info for anything. One of that | ||
devices is used for managing Broadcom specific core. | ||
|
||
Addresses of AMBA devices are not hardcoded in driver and have to be read from | ||
EPROM. | ||
|
||
In this situation we decided to introduce separated bus. It can contain up to | ||
16 devices identified by Broadcom specific fields: manufacturer, id, revision | ||
and class. |
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,3 @@ | ||
- Interrupts | ||
- Defines for PCI core driver | ||
- Create kernel Documentation (use info from README) |
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,28 @@ | ||
#ifndef LINUX_BCMA_PRIVATE_H_ | ||
#define LINUX_BCMA_PRIVATE_H_ | ||
|
||
#ifndef pr_fmt | ||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | ||
#endif | ||
|
||
#include <linux/bcma/bcma.h> | ||
#include <linux/delay.h> | ||
|
||
#define BCMA_CORE_SIZE 0x1000 | ||
|
||
struct bcma_bus; | ||
|
||
/* main.c */ | ||
extern int bcma_bus_register(struct bcma_bus *bus); | ||
extern void bcma_bus_unregister(struct bcma_bus *bus); | ||
|
||
/* scan.c */ | ||
int bcma_bus_scan(struct bcma_bus *bus); | ||
|
||
#ifdef CONFIG_BCMA_HOST_PCI | ||
/* host_pci.c */ | ||
extern int __init bcma_host_pci_init(void); | ||
extern void __exit bcma_host_pci_exit(void); | ||
#endif /* CONFIG_BCMA_HOST_PCI */ | ||
|
||
#endif |
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,51 @@ | ||
/* | ||
* Broadcom specific AMBA | ||
* Core ops | ||
* | ||
* Licensed under the GNU/GPL. See COPYING for details. | ||
*/ | ||
|
||
#include "bcma_private.h" | ||
#include <linux/bcma/bcma.h> | ||
|
||
bool bcma_core_is_enabled(struct bcma_device *core) | ||
{ | ||
if ((bcma_aread32(core, BCMA_IOCTL) & (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC)) | ||
!= BCMA_IOCTL_CLK) | ||
return false; | ||
if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) | ||
return false; | ||
return true; | ||
} | ||
EXPORT_SYMBOL_GPL(bcma_core_is_enabled); | ||
|
||
static void bcma_core_disable(struct bcma_device *core, u32 flags) | ||
{ | ||
if (bcma_aread32(core, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) | ||
return; | ||
|
||
bcma_awrite32(core, BCMA_IOCTL, flags); | ||
bcma_aread32(core, BCMA_IOCTL); | ||
udelay(10); | ||
|
||
bcma_awrite32(core, BCMA_RESET_CTL, BCMA_RESET_CTL_RESET); | ||
udelay(1); | ||
} | ||
|
||
int bcma_core_enable(struct bcma_device *core, u32 flags) | ||
{ | ||
bcma_core_disable(core, flags); | ||
|
||
bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | BCMA_IOCTL_FGC | flags)); | ||
bcma_aread32(core, BCMA_IOCTL); | ||
|
||
bcma_awrite32(core, BCMA_RESET_CTL, 0); | ||
udelay(1); | ||
|
||
bcma_awrite32(core, BCMA_IOCTL, (BCMA_IOCTL_CLK | flags)); | ||
bcma_aread32(core, BCMA_IOCTL); | ||
udelay(1); | ||
|
||
return 0; | ||
} | ||
EXPORT_SYMBOL_GPL(bcma_core_enable); |
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,89 @@ | ||
/* | ||
* Broadcom specific AMBA | ||
* ChipCommon core driver | ||
* | ||
* Copyright 2005, Broadcom Corporation | ||
* Copyright 2006, 2007, Michael Buesch <[email protected]> | ||
* | ||
* Licensed under the GNU/GPL. See COPYING for details. | ||
*/ | ||
|
||
#include "bcma_private.h" | ||
#include <linux/bcma/bcma.h> | ||
|
||
static inline u32 bcma_cc_write32_masked(struct bcma_drv_cc *cc, u16 offset, | ||
u32 mask, u32 value) | ||
{ | ||
value &= mask; | ||
value |= bcma_cc_read32(cc, offset) & ~mask; | ||
bcma_cc_write32(cc, offset, value); | ||
|
||
return value; | ||
} | ||
|
||
void bcma_core_chipcommon_init(struct bcma_drv_cc *cc) | ||
{ | ||
if (cc->core->id.rev >= 11) | ||
cc->status = bcma_cc_read32(cc, BCMA_CC_CHIPSTAT); | ||
cc->capabilities = bcma_cc_read32(cc, BCMA_CC_CAP); | ||
if (cc->core->id.rev >= 35) | ||
cc->capabilities_ext = bcma_cc_read32(cc, BCMA_CC_CAP_EXT); | ||
|
||
if (cc->core->id.rev >= 20) { | ||
bcma_cc_write32(cc, BCMA_CC_GPIOPULLUP, 0); | ||
bcma_cc_write32(cc, BCMA_CC_GPIOPULLDOWN, 0); | ||
} | ||
|
||
if (cc->capabilities & BCMA_CC_CAP_PMU) | ||
bcma_pmu_init(cc); | ||
if (cc->capabilities & BCMA_CC_CAP_PCTL) | ||
pr_err("Power control not implemented!\n"); | ||
} | ||
|
||
/* Set chip watchdog reset timer to fire in 'ticks' backplane cycles */ | ||
void bcma_chipco_watchdog_timer_set(struct bcma_drv_cc *cc, u32 ticks) | ||
{ | ||
/* instant NMI */ | ||
bcma_cc_write32(cc, BCMA_CC_WATCHDOG, ticks); | ||
} | ||
|
||
void bcma_chipco_irq_mask(struct bcma_drv_cc *cc, u32 mask, u32 value) | ||
{ | ||
bcma_cc_write32_masked(cc, BCMA_CC_IRQMASK, mask, value); | ||
} | ||
|
||
u32 bcma_chipco_irq_status(struct bcma_drv_cc *cc, u32 mask) | ||
{ | ||
return bcma_cc_read32(cc, BCMA_CC_IRQSTAT) & mask; | ||
} | ||
|
||
u32 bcma_chipco_gpio_in(struct bcma_drv_cc *cc, u32 mask) | ||
{ | ||
return bcma_cc_read32(cc, BCMA_CC_GPIOIN) & mask; | ||
} | ||
|
||
u32 bcma_chipco_gpio_out(struct bcma_drv_cc *cc, u32 mask, u32 value) | ||
{ | ||
return bcma_cc_write32_masked(cc, BCMA_CC_GPIOOUT, mask, value); | ||
} | ||
|
||
u32 bcma_chipco_gpio_outen(struct bcma_drv_cc *cc, u32 mask, u32 value) | ||
{ | ||
return bcma_cc_write32_masked(cc, BCMA_CC_GPIOOUTEN, mask, value); | ||
} | ||
|
||
u32 bcma_chipco_gpio_control(struct bcma_drv_cc *cc, u32 mask, u32 value) | ||
{ | ||
return bcma_cc_write32_masked(cc, BCMA_CC_GPIOCTL, mask, value); | ||
} | ||
EXPORT_SYMBOL_GPL(bcma_chipco_gpio_control); | ||
|
||
u32 bcma_chipco_gpio_intmask(struct bcma_drv_cc *cc, u32 mask, u32 value) | ||
{ | ||
return bcma_cc_write32_masked(cc, BCMA_CC_GPIOIRQ, mask, value); | ||
} | ||
|
||
u32 bcma_chipco_gpio_polarity(struct bcma_drv_cc *cc, u32 mask, u32 value) | ||
{ | ||
return bcma_cc_write32_masked(cc, BCMA_CC_GPIOPOL, mask, value); | ||
} |
Oops, something went wrong.