162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci Broadcom B43legacy wireless driver 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci Copyright (c) 2005 Martin Langer <martin-langer@gmx.de>, 762306a36Sopenharmony_ci Copyright (c) 2005 Stefano Brivio <stefano.brivio@polimi.it> 862306a36Sopenharmony_ci Copyright (c) 2005, 2006 Michael Buesch <m@bues.ch> 962306a36Sopenharmony_ci Copyright (c) 2005 Danny van Dyk <kugelfang@gentoo.org> 1062306a36Sopenharmony_ci Copyright (c) 2005 Andreas Jaggi <andreas.jaggi@waterwave.ch> 1162306a36Sopenharmony_ci Copyright (c) 2007 Larry Finger <Larry.Finger@lwfinger.net> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci Some parts of the code in this file are derived from the ipw2200 1462306a36Sopenharmony_ci driver Copyright(c) 2003 - 2004 Intel Corporation. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci*/ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#ifndef B43legacy_MAIN_H_ 2062306a36Sopenharmony_ci#define B43legacy_MAIN_H_ 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#include "b43legacy.h" 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#define P4D_BYT3S(magic, nr_bytes) u8 __p4dding##magic[nr_bytes] 2662306a36Sopenharmony_ci#define P4D_BYTES(line, nr_bytes) P4D_BYT3S(line, nr_bytes) 2762306a36Sopenharmony_ci/* Magic helper macro to pad structures. Ignore those above. It's magic. */ 2862306a36Sopenharmony_ci#define PAD_BYTES(nr_bytes) P4D_BYTES(__LINE__ , (nr_bytes)) 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci/* Lightweight function to convert a frequency (in Mhz) to a channel number. */ 3262306a36Sopenharmony_cistatic inline 3362306a36Sopenharmony_ciu8 b43legacy_freq_to_channel_bg(int freq) 3462306a36Sopenharmony_ci{ 3562306a36Sopenharmony_ci u8 channel; 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci if (freq == 2484) 3862306a36Sopenharmony_ci channel = 14; 3962306a36Sopenharmony_ci else 4062306a36Sopenharmony_ci channel = (freq - 2407) / 5; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci return channel; 4362306a36Sopenharmony_ci} 4462306a36Sopenharmony_cistatic inline 4562306a36Sopenharmony_ciu8 b43legacy_freq_to_channel(struct b43legacy_wldev *dev, 4662306a36Sopenharmony_ci int freq) 4762306a36Sopenharmony_ci{ 4862306a36Sopenharmony_ci return b43legacy_freq_to_channel_bg(freq); 4962306a36Sopenharmony_ci} 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci/* Lightweight function to convert a channel number to a frequency (in Mhz). */ 5262306a36Sopenharmony_cistatic inline 5362306a36Sopenharmony_ciint b43legacy_channel_to_freq_bg(u8 channel) 5462306a36Sopenharmony_ci{ 5562306a36Sopenharmony_ci int freq; 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci if (channel == 14) 5862306a36Sopenharmony_ci freq = 2484; 5962306a36Sopenharmony_ci else 6062306a36Sopenharmony_ci freq = 2407 + (5 * channel); 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci return freq; 6362306a36Sopenharmony_ci} 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_cistatic inline 6662306a36Sopenharmony_ciint b43legacy_channel_to_freq(struct b43legacy_wldev *dev, 6762306a36Sopenharmony_ci u8 channel) 6862306a36Sopenharmony_ci{ 6962306a36Sopenharmony_ci return b43legacy_channel_to_freq_bg(channel); 7062306a36Sopenharmony_ci} 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cistatic inline 7362306a36Sopenharmony_ciint b43legacy_is_cck_rate(int rate) 7462306a36Sopenharmony_ci{ 7562306a36Sopenharmony_ci return (rate == B43legacy_CCK_RATE_1MB || 7662306a36Sopenharmony_ci rate == B43legacy_CCK_RATE_2MB || 7762306a36Sopenharmony_ci rate == B43legacy_CCK_RATE_5MB || 7862306a36Sopenharmony_ci rate == B43legacy_CCK_RATE_11MB); 7962306a36Sopenharmony_ci} 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_cistatic inline 8262306a36Sopenharmony_ciint b43legacy_is_ofdm_rate(int rate) 8362306a36Sopenharmony_ci{ 8462306a36Sopenharmony_ci return !b43legacy_is_cck_rate(rate); 8562306a36Sopenharmony_ci} 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_civoid b43legacy_tsf_read(struct b43legacy_wldev *dev, u64 *tsf); 8862306a36Sopenharmony_civoid b43legacy_tsf_write(struct b43legacy_wldev *dev, u64 tsf); 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ciu32 b43legacy_shm_read32(struct b43legacy_wldev *dev, 9162306a36Sopenharmony_ci u16 routing, u16 offset); 9262306a36Sopenharmony_ciu16 b43legacy_shm_read16(struct b43legacy_wldev *dev, 9362306a36Sopenharmony_ci u16 routing, u16 offset); 9462306a36Sopenharmony_civoid b43legacy_shm_write32(struct b43legacy_wldev *dev, 9562306a36Sopenharmony_ci u16 routing, u16 offset, 9662306a36Sopenharmony_ci u32 value); 9762306a36Sopenharmony_civoid b43legacy_shm_write16(struct b43legacy_wldev *dev, 9862306a36Sopenharmony_ci u16 routing, u16 offset, 9962306a36Sopenharmony_ci u16 value); 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ciu32 b43legacy_hf_read(struct b43legacy_wldev *dev); 10262306a36Sopenharmony_civoid b43legacy_hf_write(struct b43legacy_wldev *dev, u32 value); 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_civoid b43legacy_dummy_transmission(struct b43legacy_wldev *dev); 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_civoid b43legacy_wireless_core_reset(struct b43legacy_wldev *dev, u32 flags); 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_civoid b43legacy_mac_suspend(struct b43legacy_wldev *dev); 10962306a36Sopenharmony_civoid b43legacy_mac_enable(struct b43legacy_wldev *dev); 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_civoid b43legacy_controller_restart(struct b43legacy_wldev *dev, 11262306a36Sopenharmony_ci const char *reason); 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci#endif /* B43legacy_MAIN_H_ */ 115