Files
orangepi-5-plus-kernel/external/cache/sources/wl/include/saverestore.h
2026-02-07 20:22:48 +08:00

98 lines
3.0 KiB
C

/*
* Header file for save-restore functionality in driver
*
* Copyright (C) 2012, Broadcom Corporation
* All Rights Reserved.
*
* This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
* the contents of this file may not be disclosed to third parties, copied
* or duplicated in any form, in whole or in part, without the prior
* written permission of Broadcom Corporation.
*
* $Id: Exp $
*/
#ifndef _SAVERESTORE_H
#define _SAVERESTORE_H
/* WL_ENAB_RUNTIME_CHECK may be set based upon the #define below (for ROM builds). It may also
* be defined via makefiles (e.g. ROM auto abandon unoptimized compiles).
*/
#if defined(BCMROMBUILD)
#ifndef WL_ENAB_RUNTIME_CHECK
#define WL_ENAB_RUNTIME_CHECK
#endif
#endif /* BCMROMBUILD */
/* SAVERESTORE Support */
#ifdef SAVERESTORE
extern bool _sr;
#if defined(WL_ENAB_RUNTIME_CHECK) || !defined(DONGLEBUILD)
#define SR_ENAB() (_sr)
#elif defined(SAVERESTORE_DISABLED)
#define SR_ENAB() (0)
#else
#define SR_ENAB() (1)
#endif
#else
#define SR_ENAB() (0)
#endif /* SAVERESTORE */
/* BANK size is calculated in the units of 32bit WORDS */
#define SRCTL_BANK_SIZE(sr_cntrl) ((((sr_cntrl & 0x7F0) >> 4) + 1) << 8)
#define SRCTL_BANK_NUM(sr_cntrl) (sr_cntrl & 0xF)
#define SRCTL_EXP_MEM_SIZE(chipid) (chipid == BCM43239_CHIP_ID ? (24 << 8) : (48 << 8))
#define SR_HOST 0
#define SR_ENGINE 1
#ifdef SAVERESTORE
typedef enum {
SR_HSIC_OOB_SHALLOW_WAKE_MODE = 0,
SR_HSIC_OOB_SHALLOW_SLEEP_MODE
} hsic_sr_module_t;
bool hsic_sr_save(void *arg);
#endif /* defined(SAVERESTORE) */
extern CONST uint32 sr_source_code[];
extern CONST uint sr_source_codesz;
typedef bool (*sr_save_callback_t)(void* arg);
typedef void (*sr_restore_callback_t)(void* arg);
/* Function prototypes */
void sr_download_firmware(si_t *si_h);
int sr_engine_enable(si_t *si_h, bool oper, bool enable);
int sr_pll_toggle(si_t *si_h, bool enable);
int sr_update_srfast_dependency(si_t *sih, bool enable);
uint32 sr_chipcontrol(si_t *si_h, uint32 mask, uint32 val);
void sr_save_restore_init(si_t *si_h);
uint32 sr_mem_access(si_t *sih, int op, uint32 addr, uint32 data);
uint32 sr_register_save(si_t *sih, sr_save_callback_t cb, void *arg);
uint32 sr_register_restore(si_t *sih, sr_restore_callback_t cb, void *arg);
void sr_process_save(si_t *sih);
void sr_process_restore(si_t *sih);
int sr_gpio_oobwake(si_t *si_h, bool enable);
int sr_uart_oobwake(si_t *si_h, bool enable);
int sr_uart_oobwake_irq_ack(si_t *sih);
void sr_wakeup_workaround(si_t *sih);
uint32 sr_get_cur_minresmask(si_t *sih);
#ifdef SAVERESTORE
bool sr_cap(si_t *sih);
bool sr_is_wakeup_from_deep_sleep(void);
bool sr_is_wakeup_from_deep_sleep_bit28_check(void);
void sr_wokeup_from_deep_sleep(bool state);
void sr_force_deep_sleep_bit28_check(bool state);
#else
#define sr_cap(a) (FALSE)
#define sr_is_wakeup_from_deep_sleep() (FALSE)
#define sr_is_wakeup_from_deep_sleep_bit28_check() (FALSE)
#define sr_wokeup_from_deep_sleep(state) (FALSE)
#define sr_force_deep_sleep_bit28_check(state) (FALSE)
#endif
#endif /* _SAVERESTORE_H */