aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/b43/debugfs.c31
-rw-r--r--drivers/net/wireless/b43/debugfs.h1
-rw-r--r--drivers/net/wireless/b43/main.c39
3 files changed, 39 insertions, 32 deletions
diff --git a/drivers/net/wireless/b43/debugfs.c b/drivers/net/wireless/b43/debugfs.c
index e04fc91f569e..7ed0eeeddeaa 100644
--- a/drivers/net/wireless/b43/debugfs.c
+++ b/drivers/net/wireless/b43/debugfs.c
@@ -367,34 +367,6 @@ static int mmio32write__write_file(struct b43_wldev *dev,
367 return 0; 367 return 0;
368} 368}
369 369
370/* wl->irq_lock is locked */
371static ssize_t tsf_read_file(struct b43_wldev *dev,
372 char *buf, size_t bufsize)
373{
374 ssize_t count = 0;
375 u64 tsf;
376
377 b43_tsf_read(dev, &tsf);
378 fappend("0x%08x%08x\n",
379 (unsigned int)((tsf & 0xFFFFFFFF00000000ULL) >> 32),
380 (unsigned int)(tsf & 0xFFFFFFFFULL));
381
382 return count;
383}
384
385/* wl->irq_lock is locked */
386static int tsf_write_file(struct b43_wldev *dev,
387 const char *buf, size_t count)
388{
389 u64 tsf;
390
391 if (sscanf(buf, "%llu", (unsigned long long *)(&tsf)) != 1)
392 return -EINVAL;
393 b43_tsf_write(dev, tsf);
394
395 return 0;
396}
397
398static ssize_t txstat_read_file(struct b43_wldev *dev, 370static ssize_t txstat_read_file(struct b43_wldev *dev,
399 char *buf, size_t bufsize) 371 char *buf, size_t bufsize)
400{ 372{
@@ -691,7 +663,6 @@ B43_DEBUGFS_FOPS(mmio16read, mmio16read__read_file, mmio16read__write_file, 1);
691B43_DEBUGFS_FOPS(mmio16write, NULL, mmio16write__write_file, 1); 663B43_DEBUGFS_FOPS(mmio16write, NULL, mmio16write__write_file, 1);
692B43_DEBUGFS_FOPS(mmio32read, mmio32read__read_file, mmio32read__write_file, 1); 664B43_DEBUGFS_FOPS(mmio32read, mmio32read__read_file, mmio32read__write_file, 1);
693B43_DEBUGFS_FOPS(mmio32write, NULL, mmio32write__write_file, 1); 665B43_DEBUGFS_FOPS(mmio32write, NULL, mmio32write__write_file, 1);
694B43_DEBUGFS_FOPS(tsf, tsf_read_file, tsf_write_file, 1);
695B43_DEBUGFS_FOPS(txstat, txstat_read_file, NULL, 0); 666B43_DEBUGFS_FOPS(txstat, txstat_read_file, NULL, 0);
696B43_DEBUGFS_FOPS(restart, NULL, restart_write_file, 1); 667B43_DEBUGFS_FOPS(restart, NULL, restart_write_file, 1);
697B43_DEBUGFS_FOPS(loctls, loctls_read_file, NULL, 0); 668B43_DEBUGFS_FOPS(loctls, loctls_read_file, NULL, 0);
@@ -805,7 +776,6 @@ void b43_debugfs_add_device(struct b43_wldev *dev)
805 ADD_FILE(mmio16write, 0200); 776 ADD_FILE(mmio16write, 0200);
806 ADD_FILE(mmio32read, 0600); 777 ADD_FILE(mmio32read, 0600);
807 ADD_FILE(mmio32write, 0200); 778 ADD_FILE(mmio32write, 0200);
808 ADD_FILE(tsf, 0600);
809 ADD_FILE(txstat, 0400); 779 ADD_FILE(txstat, 0400);
810 ADD_FILE(restart, 0200); 780 ADD_FILE(restart, 0200);
811 ADD_FILE(loctls, 0400); 781 ADD_FILE(loctls, 0400);
@@ -834,7 +804,6 @@ void b43_debugfs_remove_device(struct b43_wldev *dev)
834 debugfs_remove(e->file_mmio16write.dentry); 804 debugfs_remove(e->file_mmio16write.dentry);
835 debugfs_remove(e->file_mmio32read.dentry); 805 debugfs_remove(e->file_mmio32read.dentry);
836 debugfs_remove(e->file_mmio32write.dentry); 806 debugfs_remove(e->file_mmio32write.dentry);
837 debugfs_remove(e->file_tsf.dentry);
838 debugfs_remove(e->file_txstat.dentry); 807 debugfs_remove(e->file_txstat.dentry);
839 debugfs_remove(e->file_restart.dentry); 808 debugfs_remove(e->file_restart.dentry);
840 debugfs_remove(e->file_loctls.dentry); 809 debugfs_remove(e->file_loctls.dentry);
diff --git a/drivers/net/wireless/b43/debugfs.h b/drivers/net/wireless/b43/debugfs.h
index 7886cbe2d1d1..91a2f2918a2e 100644
--- a/drivers/net/wireless/b43/debugfs.h
+++ b/drivers/net/wireless/b43/debugfs.h
@@ -46,7 +46,6 @@ struct b43_dfsentry {
46 struct b43_dfs_file file_mmio16write; 46 struct b43_dfs_file file_mmio16write;
47 struct b43_dfs_file file_mmio32read; 47 struct b43_dfs_file file_mmio32read;
48 struct b43_dfs_file file_mmio32write; 48 struct b43_dfs_file file_mmio32write;
49 struct b43_dfs_file file_tsf;
50 struct b43_dfs_file file_txstat; 49 struct b43_dfs_file file_txstat;
51 struct b43_dfs_file file_txpower_g; 50 struct b43_dfs_file file_txpower_g;
52 struct b43_dfs_file file_restart; 51 struct b43_dfs_file file_restart;
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index cbb3d45f6fc9..e41c10fd31d3 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -3245,6 +3245,43 @@ static int b43_op_get_stats(struct ieee80211_hw *hw,
3245 return 0; 3245 return 0;
3246} 3246}
3247 3247
3248static u64 b43_op_get_tsf(struct ieee80211_hw *hw)
3249{
3250 struct b43_wl *wl = hw_to_b43_wl(hw);
3251 struct b43_wldev *dev;
3252 u64 tsf;
3253
3254 mutex_lock(&wl->mutex);
3255 spin_lock_irq(&wl->irq_lock);
3256 dev = wl->current_dev;
3257
3258 if (dev && (b43_status(dev) >= B43_STAT_INITIALIZED))
3259 b43_tsf_read(dev, &tsf);
3260 else
3261 tsf = 0;
3262
3263 spin_unlock_irq(&wl->irq_lock);
3264 mutex_unlock(&wl->mutex);
3265
3266 return tsf;
3267}
3268
3269static void b43_op_set_tsf(struct ieee80211_hw *hw, u64 tsf)
3270{
3271 struct b43_wl *wl = hw_to_b43_wl(hw);
3272 struct b43_wldev *dev;
3273
3274 mutex_lock(&wl->mutex);
3275 spin_lock_irq(&wl->irq_lock);
3276 dev = wl->current_dev;
3277
3278 if (dev && (b43_status(dev) >= B43_STAT_INITIALIZED))
3279 b43_tsf_write(dev, tsf);
3280
3281 spin_unlock_irq(&wl->irq_lock);
3282 mutex_unlock(&wl->mutex);
3283}
3284
3248static void b43_put_phy_into_reset(struct b43_wldev *dev) 3285static void b43_put_phy_into_reset(struct b43_wldev *dev)
3249{ 3286{
3250 struct ssb_device *sdev = dev->dev; 3287 struct ssb_device *sdev = dev->dev;
@@ -4364,6 +4401,8 @@ static const struct ieee80211_ops b43_hw_ops = {
4364 .set_key = b43_op_set_key, 4401 .set_key = b43_op_set_key,
4365 .get_stats = b43_op_get_stats, 4402 .get_stats = b43_op_get_stats,
4366 .get_tx_stats = b43_op_get_tx_stats, 4403 .get_tx_stats = b43_op_get_tx_stats,
4404 .get_tsf = b43_op_get_tsf,
4405 .set_tsf = b43_op_set_tsf,
4367 .start = b43_op_start, 4406 .start = b43_op_start,
4368 .stop = b43_op_stop, 4407 .stop = b43_op_stop,
4369 .set_tim = b43_op_beacon_set_tim, 4408 .set_tim = b43_op_beacon_set_tim,