• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * HND SiliconBackplane PMU support.
4  *
5  * Copyright (C) 1999-2019, Broadcom.
6  *
7  *      Unless you and Broadcom execute a separate written software license
8  * agreement governing use of this software, this software is licensed to you
9  * under the terms of the GNU General Public License version 2 (the "GPL"),
10  * available at http://www.broadcom.com/licenses/GPLv2.php, with the
11  * following added to such license:
12  *
13  *      As a special exception, the copyright holders of this software give you
14  * permission to link this software with independent modules, and to copy and
15  * distribute the resulting executable under terms of your choice, provided that
16  * you also meet, for each linked independent module, the terms and conditions of
17  * the license of that module.  An independent module is a module which is not
18  * derived from this software.  The special exception does not apply to any
19  * modifications of the software.
20  *
21  *      Notwithstanding the above, under no circumstances may you combine this
22  * software in any way with any other Broadcom software provided under a license
23  * other than the GPL, without Broadcom's express prior written consent.
24  *
25  *
26  * <<Broadcom-WL-IPTag/Open:>>
27  *
28  * $Id: hndpmu.h 546588 2015-04-13 09:24:52Z $
29  */
30 
31 #ifndef _hndlhl_h_
32 #define _hndlhl_h_
33 
34 enum {
35 	LHL_MAC_TIMER = 0,
36 	LHL_ARM_TIMER = 1
37 };
38 
39 typedef struct {
40 	uint16 offset;
41 	uint32 mask;
42 	uint32 val;
43 } lhl_reg_set_t;
44 
45 #define LHL_REG_OFF(reg) OFFSETOF(gciregs_t, reg)
46 
47 extern void si_lhl_timer_config(si_t *sih, osl_t *osh, int timer_type);
48 extern void si_lhl_timer_enable(si_t *sih);
49 
50 extern void si_lhl_setup(si_t *sih, osl_t *osh);
51 extern void si_lhl_enable(si_t *sih, osl_t *osh, bool enable);
52 extern void si_lhl_ilp_config(si_t *sih, osl_t *osh, uint32 ilp_period);
53 extern void si_lhl_enable_sdio_wakeup(si_t *sih, osl_t *osh);
54 extern void si_lhl_disable_sdio_wakeup(si_t *sih);
55 extern int si_lhl_set_lpoclk(si_t *sih, osl_t *osh, uint32 lpo_force);
56 extern void si_set_lv_sleep_mode_lhl_config_4369(si_t *sih);
57 
58 #define HIB_EXT_WAKEUP_CAP(sih)  (BCM4347_CHIP(sih->chip))
59 
60 #define LHL_IS_PSMODE_0(sih)  (si_lhl_ps_mode(sih) == LHL_PS_MODE_0)
61 #define LHL_IS_PSMODE_1(sih)  (si_lhl_ps_mode(sih) == LHL_PS_MODE_1)
62 #endif /* _hndlhl_h_ */
63