Home | History | Annotate | Download | only in sys
      1 /*
      2  * Header file describing the internal (inter-module) DHD interfaces.
      3  *
      4  * Provides type definitions and function prototypes used to link the
      5  * DHD OS, bus, and protocol modules.
      6  *
      7  * Copyright (C) 1999-2009, Broadcom Corporation
      8  *
      9  *      Unless you and Broadcom execute a separate written software license
     10  * agreement governing use of this software, this software is licensed to you
     11  * under the terms of the GNU General Public License version 2 (the "GPL"),
     12  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
     13  * following added to such license:
     14  *
     15  *      As a special exception, the copyright holders of this software give you
     16  * permission to link this software with independent modules, and to copy and
     17  * distribute the resulting executable under terms of your choice, provided that
     18  * you also meet, for each linked independent module, the terms and conditions of
     19  * the license of that module.  An independent module is a module which is not
     20  * derived from this software.  The special exception does not apply to any
     21  * modifications of the software.
     22  *
     23  *      Notwithstanding the above, under no circumstances may you combine this
     24  * software in any way with any other Broadcom software provided under a license
     25  * other than the GPL, without Broadcom's express prior written consent.
     26  *
     27  * $Id: dhd_bus.h,v 1.4.6.3.2.3.6.5 2009/06/02 21:56:30 Exp $
     28  */
     29 
     30 #ifndef _dhd_bus_h_
     31 #define _dhd_bus_h_
     32 
     33 /*
     34  * Exported from dhd bus module (dhd_usb, dhd_sdio)
     35  */
     36 
     37 /* Indicate (dis)interest in finding dongles. */
     38 extern int dhd_bus_register(void);
     39 extern void dhd_bus_unregister(void);
     40 
     41 /* Download firmware image and nvram image */
     42 extern bool dhd_bus_download_firmware(struct dhd_bus *bus, osl_t *osh,
     43 	char *fw_path, char *nv_path);
     44 
     45 /* Stop bus module: clear pending frames, disable data flow */
     46 extern void dhd_bus_stop(struct dhd_bus *bus, bool enforce_mutex);
     47 
     48 /* Initialize bus module: prepare for communication w/dongle */
     49 extern int dhd_bus_init(dhd_pub_t *dhdp, bool enforce_mutex);
     50 
     51 /* Send a data frame to the dongle.  Callee disposes of txp. */
     52 extern int dhd_bus_txdata(struct dhd_bus *bus, void *txp);
     53 
     54 /* Send/receive a control message to/from the dongle.
     55  * Expects caller to enforce a single outstanding transaction.
     56  */
     57 extern int dhd_bus_txctl(struct dhd_bus *bus, uchar *msg, uint msglen);
     58 extern int dhd_bus_rxctl(struct dhd_bus *bus, uchar *msg, uint msglen);
     59 
     60 /* Watchdog timer function */
     61 extern bool dhd_bus_watchdog(dhd_pub_t *dhd);
     62 
     63 
     64 /* Deferred processing for the bus, return TRUE requests reschedule */
     65 extern bool dhd_bus_dpc(struct dhd_bus *bus);
     66 extern void dhd_bus_isr(bool * InterruptRecognized, bool * QueueMiniportHandleInterrupt, void *arg);
     67 
     68 
     69 /* Check for and handle local prot-specific iovar commands */
     70 extern int dhd_bus_iovar_op(dhd_pub_t *dhdp, const char *name,
     71                             void *params, int plen, void *arg, int len, bool set);
     72 
     73 /* Add bus dump output to a buffer */
     74 extern void dhd_bus_dump(dhd_pub_t *dhdp, struct bcmstrbuf *strbuf);
     75 
     76 /* Clear any bus counters */
     77 extern void dhd_bus_clearcounts(dhd_pub_t *dhdp);
     78 
     79 /* return the dongle chipid */
     80 extern uint dhd_bus_chip(struct dhd_bus *bus);
     81 
     82 /* Set user-specified nvram parameters. */
     83 extern void dhd_bus_set_nvram_params(struct dhd_bus * bus, const char *nvram_params);
     84 
     85 extern void *dhd_bus_pub(struct dhd_bus *bus);
     86 extern void *dhd_bus_txq(struct dhd_bus *bus);
     87 extern uint dhd_bus_hdrlen(struct dhd_bus *bus);
     88 
     89 #endif /* _dhd_bus_h_ */
     90