[PATCH 2/3] staging: brcm80211: making device object accessible from wlc and phy
Roland Vossen
rvossen at broadcom.com
Fri Apr 1 08:35:20 UTC 2011
Next commits will replace WL_ERROR with dev_err and friends. Because
these functions require a linux device object, device object pointers
have been added to three data structures.
Signed-off-by: Roland Vossen <rvossen at broadcom.com>
Reviewed-by: Arend van Spriel <arend at broadcom.com>
---
.../staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c | 4 +++-
.../staging/brcm80211/brcmsmac/phy/wlc_phy_hal.h | 2 +-
.../staging/brcm80211/brcmsmac/phy/wlc_phy_int.h | 1 +
drivers/staging/brcm80211/brcmsmac/wl_mac80211.c | 4 +++-
drivers/staging/brcm80211/brcmsmac/wl_mac80211.h | 1 +
drivers/staging/brcm80211/brcmsmac/wlc_bmac.c | 3 ++-
drivers/staging/brcm80211/brcmsmac/wlc_main.c | 4 +++-
drivers/staging/brcm80211/brcmsmac/wlc_main.h | 1 +
drivers/staging/brcm80211/brcmsmac/wlc_pub.h | 2 +-
9 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c
index 2631382..b2aff08 100644
--- a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c
+++ b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_cmn.c
@@ -586,7 +586,8 @@ void wlc_phy_shared_detach(shared_phy_t *phy_sh)
}
}
-wlc_phy_t *wlc_phy_attach(shared_phy_t *sh, void *regs, int bandtype, char *vars)
+wlc_phy_t *wlc_phy_attach(shared_phy_t *sh, void *regs, int bandtype,
+ char *vars, struct device *dev)
{
phy_info_t *pi;
u32 sflags = 0;
@@ -616,6 +617,7 @@ wlc_phy_t *wlc_phy_attach(shared_phy_t *sh, void *regs, int bandtype, char *vars
if (pi == NULL) {
return NULL;
}
+ pi->dev = dev;
pi->regs = (d11regs_t *) regs;
pi->sh = sh;
pi->phy_init_por = true;
diff --git a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_hal.h b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_hal.h
index 8882ab4..d839ca9 100644
--- a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_hal.h
+++ b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_hal.h
@@ -149,7 +149,7 @@ typedef struct shared_phy_params {
extern shared_phy_t *wlc_phy_shared_attach(shared_phy_params_t *shp);
extern void wlc_phy_shared_detach(shared_phy_t *phy_sh);
extern wlc_phy_t *wlc_phy_attach(shared_phy_t *sh, void *regs, int bandtype,
- char *vars);
+ char *vars, struct device *dev);
extern void wlc_phy_detach(wlc_phy_t *ppi);
extern bool wlc_phy_get_phyversion(wlc_phy_t *pih, u16 *phytype,
diff --git a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h
index 6e12a95..479a9b0 100644
--- a/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h
+++ b/drivers/staging/brcm80211/brcmsmac/phy/wlc_phy_int.h
@@ -936,6 +936,7 @@ struct phy_info {
u8 phycal_tempdelta;
u32 mcs20_po;
u32 mcs40_po;
+ struct device *dev;
};
typedef s32 fixed;
diff --git a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
index 723f280..bf18cfc 100644
--- a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
+++ b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
@@ -745,6 +745,7 @@ static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
hw = pci_get_drvdata(btparam); /* btparam == pdev */
wl = hw->priv;
ASSERT(wl);
+ wl->dev = &hw->wiphy->dev;
atomic_set(&wl->callbacks, 0);
@@ -784,7 +785,8 @@ static struct wl_info *wl_attach(u16 vendor, u16 device, unsigned long regs,
/* common load-time initialization */
wl->wlc = wlc_attach((void *)wl, vendor, device, unit, wl->piomode,
- wl->regsva, wl->bcm_bustype, btparam, &err);
+ wl->regsva, wl->bcm_bustype, btparam, &err,
+ &hw->wiphy->dev);
wl_release_fw(wl);
if (!wl->wlc) {
WL_ERROR("%s: wlc_attach() failed with code %d\n",
diff --git a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.h b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.h
index f3198cc..6b0d4e0 100644
--- a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.h
+++ b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.h
@@ -72,6 +72,7 @@ struct wl_info {
/* ping-pong stats counters updated by Linux watchdog */
struct net_device_stats stats_watchdog[2];
struct wl_firmware fw;
+ struct device *dev; /* linux device object */
};
#define WL_LOCK(wl) spin_lock_bh(&(wl)->lock)
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c b/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c
index eead5dc..46b81e9 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_bmac.c
@@ -857,7 +857,8 @@ int wlc_bmac_attach(struct wlc_info *wlc, u16 vendor, u16 device, uint unit,
/* Get a phy for this band */
wlc_hw->band->pi = wlc_phy_attach(wlc_hw->phy_sh,
- (void *)regs, wlc_bmac_bandtype(wlc_hw), vars);
+ (void *)regs, wlc_bmac_bandtype(wlc_hw), vars,
+ wlc->dev);
if (wlc_hw->band->pi == NULL) {
WL_ERROR("wl%d: wlc_bmac_attach: wlc_phy_attach failed\n",
unit);
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_main.c b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
index cf7b51a..b0f58f7 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_main.c
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_main.c
@@ -1676,7 +1676,8 @@ struct wlc_pub *wlc_pub(void *wlc)
* The common driver entry routine. Error codes should be unique
*/
void *wlc_attach(void *wl, u16 vendor, u16 device, uint unit, bool piomode,
- void *regsva, uint bustype, void *btparam, uint *perr)
+ void *regsva, uint bustype, void *btparam, uint *perr,
+ struct device *dev)
{
struct wlc_info *wlc;
uint err = 0;
@@ -1721,6 +1722,7 @@ void *wlc_attach(void *wl, u16 vendor, u16 device, uint unit, bool piomode,
wlc = (struct wlc_info *) wlc_attach_malloc(unit, &err, device);
if (wlc == NULL)
goto fail;
+ wlc->dev = dev;
pub = wlc->pub;
#if defined(BCMDBG)
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_main.h b/drivers/staging/brcm80211/brcmsmac/wlc_main.h
index 94dec68..77a5f07 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_main.h
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_main.h
@@ -757,6 +757,7 @@ struct wlc_info {
*/
bool pr80838_war;
uint hwrxoff;
+ struct device *dev; /* Linux device object */
};
/* antsel module specific state */
diff --git a/drivers/staging/brcm80211/brcmsmac/wlc_pub.h b/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
index 8812eca..0863c10 100644
--- a/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
+++ b/drivers/staging/brcm80211/brcmsmac/wlc_pub.h
@@ -481,7 +481,7 @@ extern const u8 wme_fifo2ac[];
/* common functions for every port */
extern void *wlc_attach(void *wl, u16 vendor, u16 device, uint unit,
bool piomode, void *regsva, uint bustype, void *btparam,
- uint *perr);
+ uint *perr, struct device *dev);
extern uint wlc_detach(struct wlc_info *wlc);
extern int wlc_up(struct wlc_info *wlc);
extern uint wlc_down(struct wlc_info *wlc);
--
1.7.1
More information about the devel
mailing list