diff options
author | Simon Shields <keepcalm444@gmail.com> | 2016-02-02 18:50:31 +1100 |
---|---|---|
committer | Simon Shields <keepcalm444@gmail.com> | 2016-02-07 13:11:19 -0800 |
commit | ab9d1a800a5a963e99f34c5f6fe62be33293ff80 (patch) | |
tree | a724afad2417c8136e2b4906d9938fe2af201261 /drivers/net/wireless/bcmdhd/siutils_priv.h | |
parent | 43eae3bb1ab429b1b88bd8c8558b685987f09521 (diff) | |
download | kernel_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.h | 57 |
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); |