Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Add "HANG" event and console monitoring Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Remove unnecessary set_freezable() calls Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Update to Version 4.218.238 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Fix MAC address import Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Fix wlan card removal Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Update to Version 4.218.239 Add reading mac address from platform data Add dhd_os_proto_block protection for dhd_preinit_ioctls Revert dhdsdio_clk() changes Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add SoftAP MAC address randomization Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Add 2.6.35 compatibility and fix memory leak in set_multicast_list Signed-off-by: Dmitry Shmidt <dimitrysh@android.com> Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Reduce driver loading time Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Set special OUI: 02:1A:11:FH:HH:HH for SoftAP Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Fix BUS DOWN in IOCTL Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> network: wireless: bcm4329: Add driver SETSUSPEND command Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix packet filter to only filter out non-unicast frames Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add wakelock processing in ioctl and messaging Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to 4.218.245 (combo scan) Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to Version 4.218.246 and setband fix Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add wakelock processing to WEXT requests Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Force scan when driver is loaded Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix scan timeout for abg case Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix dhd_bus_watchdog() race conditions Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix unregister_early_suspend() in dhd_detach() Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add memory barriers to wait functions Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix "setsuspend" behavior Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Increase PMU_MAX_TRANSITION_DLY to 1 sec Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Turn OFF packet filtering during DHCP session Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Disable packet filtering Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Send "HANG" message only once Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to Version 4.218.248 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix HW_OOB interrupt processing Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix interrupt enabling for level interrupt Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> Revert "net: wireless: bcm4329: Fix interrupt enabling for level interrupt" This reverts commit 261d21bbfffef6261696d0d13672d2e4f9d76f05. Revert "net: wireless: bcm4329: Fix HW_OOB interrupt processing" This reverts commit 8bd035daa820dc5612ae311262c71dc133871046. net: wireless: bcm4329: Fix HW_OOB interrupt processing Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix roaming failure case Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix roaming setting on resume Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add debug print for cscan failure Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Ignore error if scan results are empty Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Enable packet filtering during low power mode Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to Version 4.218.248.6 Fix watchdog time rescheduling, fix first scan no-return Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix interrupt enabling in case of error Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix setting HT clock race conditions Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix setting HT clock race conditions in driver start Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to Version 4.218.248-10 Add KEEP_ALIVE feature, fix 'driver rssi' processing, fix roaming processing Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Improve BT-coex for eSCO Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix race conditions for sysioc_thread Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to version 4.218.248-11 Check for 'driver start' failure, Set keep-alive feature forever Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Check for out of bounds in scan results parsing Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add check for out of bounds scan buffer Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to version 4.218.248-12 - Fix crash during Specific Scan handling - Fix potential insmod crash by increase Registration Timeout to 12 sec - Added max time restriction to PNO scan timer - New IWPRIV "AP_STA_DISASSOC" to disassoc STAs in SoftAP mode - Add new setting to SoftAP "AP_SET_CFG" to enable Hidden SSID - Fixs bugs for SoftAP AP_SET_MAC_FLTR iwpriv commnd - Add STAs rssi filed to SoftAP "AP_GET_STA_LIST" IWPRIV commnd Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix watchdog termination after 'driver stop' Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Enable KEEP_ALIVE feature Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add FW Reload event processing Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix Softap start/stop race conditions Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Set first channel passive scan to 30 ms Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to Version 4.218.248-15 - Increase default Listen Interval to 20 Beacons - Add logic to adjust SKIP_DTIM if Listen Interval < DTIM * DTIM_SKIP to avoid data lost due to fact that packet maybe not retrieved during Listen Interval and AP may toss it - Fix problem with Hidden AP setting after AP reconfigure - Add new SoftAP optional parameter as COUNTRY to pass country code to SoftAP Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Improve way to detect BT SCO connection for BT-coex Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Use non-DFS channels only for US Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add 'setdfschannels' command Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix watchdog syncronization during start/stop Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix driver 'start' retry ability Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Fix memory leak in case of dhd_bus_init() failure Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Add CONFIG_FIRST_SCAN option Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to Version 4.218.248-17 Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> net: wireless: bcm4329: Update to version 4.218.248-18 - Improve BT-coex to differentiate HID and SCO device during DHCP session - Enforce DTIM=1 for any SoftAP settings to optimize internal memory logic Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
236 lines
7.6 KiB
C
236 lines
7.6 KiB
C
/*
|
|
* Misc utility routines for accessing the SOC Interconnects
|
|
* of Broadcom HNBU chips.
|
|
*
|
|
* Copyright (C) 1999-2010, Broadcom Corporation
|
|
*
|
|
* Unless you and Broadcom execute a separate written software license
|
|
* agreement governing use of this software, this software is licensed to you
|
|
* under the terms of the GNU General Public License version 2 (the "GPL"),
|
|
* available at http://www.broadcom.com/licenses/GPLv2.php, with the
|
|
* following added to such license:
|
|
*
|
|
* As a special exception, the copyright holders of this software give you
|
|
* permission to link this software with independent modules, and to copy and
|
|
* distribute the resulting executable under terms of your choice, provided that
|
|
* you also meet, for each linked independent module, the terms and conditions of
|
|
* the license of that module. An independent module is a module which is not
|
|
* derived from this software. The special exception does not apply to any
|
|
* modifications of the software.
|
|
*
|
|
* Notwithstanding the above, under no circumstances may you combine this
|
|
* software in any way with any other Broadcom software provided under a license
|
|
* other than the GPL, without Broadcom's express prior written consent.
|
|
*
|
|
* $Id: siutils.h,v 13.197.4.2.4.3.8.16 2010/06/23 21:36:05 Exp $
|
|
*/
|
|
|
|
|
|
#ifndef _siutils_h_
|
|
#define _siutils_h_
|
|
|
|
|
|
struct si_pub {
|
|
uint socitype;
|
|
|
|
uint bustype;
|
|
uint buscoretype;
|
|
uint buscorerev;
|
|
uint buscoreidx;
|
|
int ccrev;
|
|
uint32 cccaps;
|
|
int pmurev;
|
|
uint32 pmucaps;
|
|
uint boardtype;
|
|
uint boardvendor;
|
|
uint boardflags;
|
|
uint chip;
|
|
uint chiprev;
|
|
uint chippkg;
|
|
uint32 chipst;
|
|
bool issim;
|
|
uint socirev;
|
|
bool pci_pr32414;
|
|
};
|
|
|
|
#if defined(WLC_HIGH) && !defined(WLC_LOW)
|
|
typedef struct si_pub si_t;
|
|
#else
|
|
typedef const struct si_pub si_t;
|
|
#endif
|
|
|
|
|
|
#define SI_OSH NULL
|
|
|
|
|
|
#define XTAL 0x1
|
|
#define PLL 0x2
|
|
|
|
|
|
#define CLK_FAST 0
|
|
#define CLK_DYNAMIC 2
|
|
|
|
|
|
#define GPIO_DRV_PRIORITY 0
|
|
#define GPIO_APP_PRIORITY 1
|
|
#define GPIO_HI_PRIORITY 2
|
|
|
|
|
|
#define GPIO_PULLUP 0
|
|
#define GPIO_PULLDN 1
|
|
|
|
|
|
#define GPIO_REGEVT 0
|
|
#define GPIO_REGEVT_INTMSK 1
|
|
#define GPIO_REGEVT_INTPOL 2
|
|
|
|
|
|
#define SI_DEVPATH_BUFSZ 16
|
|
|
|
|
|
#define SI_DOATTACH 1
|
|
#define SI_PCIDOWN 2
|
|
#define SI_PCIUP 3
|
|
|
|
#define ISSIM_ENAB(sih) 0
|
|
|
|
|
|
#if defined(BCMPMUCTL)
|
|
#define PMUCTL_ENAB(sih) (BCMPMUCTL)
|
|
#else
|
|
#define PMUCTL_ENAB(sih) ((sih)->cccaps & CC_CAP_PMU)
|
|
#endif
|
|
|
|
|
|
#if defined(BCMPMUCTL) && BCMPMUCTL
|
|
#define CCCTL_ENAB(sih) (0)
|
|
#define CCPLL_ENAB(sih) (0)
|
|
#else
|
|
#define CCCTL_ENAB(sih) ((sih)->cccaps & CC_CAP_PWR_CTL)
|
|
#define CCPLL_ENAB(sih) ((sih)->cccaps & CC_CAP_PLL_MASK)
|
|
#endif
|
|
|
|
typedef void (*gpio_handler_t)(uint32 stat, void *arg);
|
|
|
|
|
|
|
|
extern si_t *si_attach(uint pcidev, osl_t *osh, void *regs, uint bustype,
|
|
void *sdh, char **vars, uint *varsz);
|
|
extern si_t *si_kattach(osl_t *osh);
|
|
extern void si_detach(si_t *sih);
|
|
extern bool si_pci_war16165(si_t *sih);
|
|
|
|
extern uint si_corelist(si_t *sih, uint coreid[]);
|
|
extern uint si_coreid(si_t *sih);
|
|
extern uint si_flag(si_t *sih);
|
|
extern uint si_intflag(si_t *sih);
|
|
extern uint si_coreidx(si_t *sih);
|
|
extern uint si_coreunit(si_t *sih);
|
|
extern uint si_corevendor(si_t *sih);
|
|
extern uint si_corerev(si_t *sih);
|
|
extern void *si_osh(si_t *sih);
|
|
extern void si_setosh(si_t *sih, osl_t *osh);
|
|
extern uint si_corereg(si_t *sih, uint coreidx, uint regoff, uint mask, uint val);
|
|
extern void *si_coreregs(si_t *sih);
|
|
extern void si_write_wrapperreg(si_t *sih, uint32 offset, uint32 val);
|
|
extern uint32 si_core_cflags(si_t *sih, uint32 mask, uint32 val);
|
|
extern void si_core_cflags_wo(si_t *sih, uint32 mask, uint32 val);
|
|
extern uint32 si_core_sflags(si_t *sih, uint32 mask, uint32 val);
|
|
extern bool si_iscoreup(si_t *sih);
|
|
extern uint si_findcoreidx(si_t *sih, uint coreid, uint coreunit);
|
|
extern void *si_setcoreidx(si_t *sih, uint coreidx);
|
|
extern void *si_setcore(si_t *sih, uint coreid, uint coreunit);
|
|
extern void *si_switch_core(si_t *sih, uint coreid, uint *origidx, uint *intr_val);
|
|
extern void si_restore_core(si_t *sih, uint coreid, uint intr_val);
|
|
extern int si_numaddrspaces(si_t *sih);
|
|
extern uint32 si_addrspace(si_t *sih, uint asidx);
|
|
extern uint32 si_addrspacesize(si_t *sih, uint asidx);
|
|
extern int si_corebist(si_t *sih);
|
|
extern void si_core_reset(si_t *sih, uint32 bits, uint32 resetbits);
|
|
extern void si_core_tofixup(si_t *sih);
|
|
extern void si_core_disable(si_t *sih, uint32 bits);
|
|
extern uint32 si_clock_rate(uint32 pll_type, uint32 n, uint32 m);
|
|
extern uint32 si_clock(si_t *sih);
|
|
extern void si_clock_pmu_spuravoid(si_t *sih, bool spuravoid);
|
|
extern uint32 si_alp_clock(si_t *sih);
|
|
extern uint32 si_ilp_clock(si_t *sih);
|
|
extern void si_pci_setup(si_t *sih, uint coremask);
|
|
extern void si_pcmcia_init(si_t *sih);
|
|
extern void si_setint(si_t *sih, int siflag);
|
|
extern bool si_backplane64(si_t *sih);
|
|
extern void si_register_intr_callback(si_t *sih, void *intrsoff_fn, void *intrsrestore_fn,
|
|
void *intrsenabled_fn, void *intr_arg);
|
|
extern void si_deregister_intr_callback(si_t *sih);
|
|
extern void si_clkctl_init(si_t *sih);
|
|
extern uint16 si_clkctl_fast_pwrup_delay(si_t *sih);
|
|
extern bool si_clkctl_cc(si_t *sih, uint mode);
|
|
extern int si_clkctl_xtal(si_t *sih, uint what, bool on);
|
|
extern uint32 si_gpiotimerval(si_t *sih, uint32 mask, uint32 val);
|
|
extern bool si_backplane64(si_t *sih);
|
|
extern void si_btcgpiowar(si_t *sih);
|
|
extern bool si_deviceremoved(si_t *sih);
|
|
extern uint32 si_socram_size(si_t *sih);
|
|
|
|
extern void si_watchdog(si_t *sih, uint ticks);
|
|
extern void si_watchdog_ms(si_t *sih, uint32 ms);
|
|
extern void *si_gpiosetcore(si_t *sih);
|
|
extern uint32 si_gpiocontrol(si_t *sih, uint32 mask, uint32 val, uint8 priority);
|
|
extern uint32 si_gpioouten(si_t *sih, uint32 mask, uint32 val, uint8 priority);
|
|
extern uint32 si_gpioout(si_t *sih, uint32 mask, uint32 val, uint8 priority);
|
|
extern uint32 si_gpioin(si_t *sih);
|
|
extern uint32 si_gpiointpolarity(si_t *sih, uint32 mask, uint32 val, uint8 priority);
|
|
extern uint32 si_gpiointmask(si_t *sih, uint32 mask, uint32 val, uint8 priority);
|
|
extern uint32 si_gpioled(si_t *sih, uint32 mask, uint32 val);
|
|
extern uint32 si_gpioreserve(si_t *sih, uint32 gpio_num, uint8 priority);
|
|
extern uint32 si_gpiorelease(si_t *sih, uint32 gpio_num, uint8 priority);
|
|
extern uint32 si_gpiopull(si_t *sih, bool updown, uint32 mask, uint32 val);
|
|
extern uint32 si_gpioevent(si_t *sih, uint regtype, uint32 mask, uint32 val);
|
|
extern uint32 si_gpio_int_enable(si_t *sih, bool enable);
|
|
|
|
|
|
extern void *si_gpio_handler_register(si_t *sih, uint32 e, bool lev, gpio_handler_t cb, void *arg);
|
|
extern void si_gpio_handler_unregister(si_t *sih, void* gpioh);
|
|
extern void si_gpio_handler_process(si_t *sih);
|
|
|
|
|
|
extern bool si_pci_pmecap(si_t *sih);
|
|
struct osl_info;
|
|
extern bool si_pci_fastpmecap(struct osl_info *osh);
|
|
extern bool si_pci_pmeclr(si_t *sih);
|
|
extern void si_pci_pmeen(si_t *sih);
|
|
extern uint si_pcie_readreg(void *sih, uint addrtype, uint offset);
|
|
|
|
extern void si_sdio_init(si_t *sih);
|
|
|
|
extern uint16 si_d11_devid(si_t *sih);
|
|
extern int si_corepciid(si_t *sih, uint func, uint16 *pcivendor, uint16 *pcidevice,
|
|
uint8 *pciclass, uint8 *pcisubclass, uint8 *pciprogif, uint8 *pciheader);
|
|
|
|
#define si_eci_init(sih) (0)
|
|
#define si_eci_notify_bt(sih, type, val, interrupt) (0)
|
|
|
|
|
|
|
|
extern int si_devpath(si_t *sih, char *path, int size);
|
|
|
|
extern char *si_getdevpathvar(si_t *sih, const char *name);
|
|
extern int si_getdevpathintvar(si_t *sih, const char *name);
|
|
|
|
|
|
extern uint8 si_pcieclkreq(si_t *sih, uint32 mask, uint32 val);
|
|
extern void si_war42780_clkreq(si_t *sih, bool clkreq);
|
|
extern void si_pci_sleep(si_t *sih);
|
|
extern void si_pci_down(si_t *sih);
|
|
extern void si_pci_up(si_t *sih);
|
|
extern void si_pcie_war_ovr_disable(si_t *sih);
|
|
extern void si_pcie_extendL1timer(si_t *sih, bool extend);
|
|
extern int si_pci_fixcfg(si_t *sih);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|