aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/bcmdhd/siutils_priv.h
diff options
context:
space:
mode:
authorSimon Shields <keepcalm444@gmail.com>2016-02-02 18:50:31 +1100
committerSimon Shields <keepcalm444@gmail.com>2016-02-07 13:11:19 -0800
commitab9d1a800a5a963e99f34c5f6fe62be33293ff80 (patch)
treea724afad2417c8136e2b4906d9938fe2af201261 /drivers/net/wireless/bcmdhd/siutils_priv.h
parent43eae3bb1ab429b1b88bd8c8558b685987f09521 (diff)
downloadkernel_samsung_smdk4412-ab9d1a800a5a963e99f34c5f6fe62be33293ff80.zip
kernel_samsung_smdk4412-ab9d1a800a5a963e99f34c5f6fe62be33293ff80.tar.gz
kernel_samsung_smdk4412-ab9d1a800a5a963e99f34c5f6fe62be33293ff80.tar.bz2
bcmdhd: update from i9305 source drop
Change-Id: I9ca02d8460a92d6664072253f4204d61f01df49b
Diffstat (limited to 'drivers/net/wireless/bcmdhd/siutils_priv.h')
-rw-r--r--drivers/net/wireless/bcmdhd/siutils_priv.h57
1 files changed, 41 insertions, 16 deletions
diff --git a/drivers/net/wireless/bcmdhd/siutils_priv.h b/drivers/net/wireless/bcmdhd/siutils_priv.h
index 1ae06ba..a7d8ffc 100644
--- a/drivers/net/wireless/bcmdhd/siutils_priv.h
+++ b/drivers/net/wireless/bcmdhd/siutils_priv.h
@@ -1,7 +1,7 @@
/*
* Include file private to the SOC Interconnect support files.
*
- * Copyright (C) 1999-2012, Broadcom Corporation
+ * Copyright (C) 1999-2014, Broadcom Corporation
*
* Unless you and Broadcom execute a separate written software license
* agreement governing use of this software, this software is licensed to you
@@ -21,7 +21,7 @@
* 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_priv.h 348394 2012-08-01 18:38:50Z $
+ * $Id: siutils_priv.h 431423 2013-10-23 16:07:35Z $
*/
#ifndef _siutils_priv_h_
@@ -51,6 +51,35 @@ typedef struct gpioh_item {
struct gpioh_item *next;
} gpioh_item_t;
+
+#define SI_GPIO_MAX 16
+
+typedef struct gci_gpio_item {
+ void *arg;
+ uint8 gci_gpio;
+ uint8 status;
+ gci_gpio_handler_t handler;
+ struct gci_gpio_item *next;
+} gci_gpio_item_t;
+
+
+typedef struct si_cores_info {
+ void *regs[SI_MAXCORES]; /* other regs va */
+
+ uint coreid[SI_MAXCORES]; /* id of each core */
+ uint32 coresba[SI_MAXCORES]; /* backplane address of each core */
+ void *regs2[SI_MAXCORES]; /* va of each core second register set (usbh20) */
+ uint32 coresba2[SI_MAXCORES]; /* address of each core second register set (usbh20) */
+ uint32 coresba_size[SI_MAXCORES]; /* backplane address space size */
+ uint32 coresba2_size[SI_MAXCORES]; /* second address space size */
+
+ void *wrappers[SI_MAXCORES]; /* other cores wrapper va */
+ uint32 wrapba[SI_MAXCORES]; /* address of controlling wrapper */
+
+ uint32 cia[SI_MAXCORES]; /* erom cia entry for each core */
+ uint32 cib[SI_MAXCORES]; /* erom cia entry for each core */
+} si_cores_info_t;
+
/* misc si info needed by some of the routines */
typedef struct si_info {
struct si_pub pub; /* back plane public state (must be first field) */
@@ -74,27 +103,20 @@ typedef struct si_info {
uint varsz;
void *curmap; /* current regs va */
- void *regs[SI_MAXCORES]; /* other regs va */
uint curidx; /* current core index */
uint numcores; /* # discovered cores */
- uint coreid[SI_MAXCORES]; /* id of each core */
- uint32 coresba[SI_MAXCORES]; /* backplane address of each core */
- void *regs2[SI_MAXCORES]; /* va of each core second register set (usbh20) */
- uint32 coresba2[SI_MAXCORES]; /* address of each core second register set (usbh20) */
- uint32 coresba_size[SI_MAXCORES]; /* backplane address space size */
- uint32 coresba2_size[SI_MAXCORES]; /* second address space size */
void *curwrap; /* current wrapper va */
- void *wrappers[SI_MAXCORES]; /* other cores wrapper va */
- uint32 wrapba[SI_MAXCORES]; /* address of controlling wrapper */
- uint32 cia[SI_MAXCORES]; /* erom cia entry for each core */
- uint32 cib[SI_MAXCORES]; /* erom cia entry for each core */
uint32 oob_router; /* oob router registers for axi */
+
+ void *cores_info;
+ gci_gpio_item_t *gci_gpio_head; /* gci gpio interrupts head */
} si_info_t;
-#define SI_INFO(sih) (si_info_t *)(uintptr)sih
+
+#define SI_INFO(sih) ((si_info_t *)(uintptr)sih)
#define GOODCOREADDR(x, b) (((x) >= (b)) && ((x) < ((b) + SI_MAXCORES * SI_CORE_SIZE)) && \
ISALIGNED((x), SI_CORE_SIZE))
@@ -129,10 +151,10 @@ typedef struct si_info {
* after core switching to avoid invalid register accesss inside ISR.
*/
#define INTR_OFF(si, intr_val) \
- if ((si)->intrsoff_fn && (si)->coreid[(si)->curidx] == (si)->dev_coreid) { \
+ if ((si)->intrsoff_fn && (cores_info)->coreid[(si)->curidx] == (si)->dev_coreid) { \
intr_val = (*(si)->intrsoff_fn)((si)->intr_arg); }
#define INTR_RESTORE(si, intr_val) \
- if ((si)->intrsrestore_fn && (si)->coreid[(si)->curidx] == (si)->dev_coreid) { \
+ if ((si)->intrsrestore_fn && (cores_info)->coreid[(si)->curidx] == (si)->dev_coreid) { \
(*(si)->intrsrestore_fn)((si)->intr_arg, intr_val); }
/* dynamic clock control defines */
@@ -170,6 +192,7 @@ extern void sb_setint(si_t *sih, int siflag);
extern uint sb_corevendor(si_t *sih);
extern uint sb_corerev(si_t *sih);
extern uint sb_corereg(si_t *sih, uint coreidx, uint regoff, uint mask, uint val);
+extern uint32 *sb_corereg_addr(si_t *sih, uint coreidx, uint regoff);
extern bool sb_iscoreup(si_t *sih);
extern void *sb_setcoreidx(si_t *sih, uint coreidx);
extern uint32 sb_core_cflags(si_t *sih, uint32 mask, uint32 val);
@@ -204,10 +227,12 @@ extern si_t *ai_kattach(osl_t *osh);
extern void ai_scan(si_t *sih, void *regs, uint devid);
extern uint ai_flag(si_t *sih);
+extern uint ai_flag_alt(si_t *sih);
extern void ai_setint(si_t *sih, int siflag);
extern uint ai_coreidx(si_t *sih);
extern uint ai_corevendor(si_t *sih);
extern uint ai_corerev(si_t *sih);
+extern uint32 *ai_corereg_addr(si_t *sih, uint coreidx, uint regoff);
extern bool ai_iscoreup(si_t *sih);
extern void *ai_setcoreidx(si_t *sih, uint coreidx);
extern uint32 ai_core_cflags(si_t *sih, uint32 mask, uint32 val);