mirror of
https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
synced 2025-09-08 09:08:05 -04:00
110 lines
3.4 KiB
C
110 lines
3.4 KiB
C
/*
|
|
* Copyright (c) 2015 Samsung Electronics Co., Ltd.
|
|
* http://www.samsung.com/
|
|
*
|
|
* EXYNOS - PMU(Power Management Unit) support
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef __EXYNOS_PMU_GNSS_H
|
|
#define __EXYNOS_PMU_GNSS_H __FILE__
|
|
|
|
#include "gnss_prj.h"
|
|
|
|
/* BLK_ALIVE: GNSS related SFRs */
|
|
#define EXYNOS_PMU_GNSS_CTRL_NS 0x0040
|
|
#define EXYNOS_PMU_GNSS_CTRL_S 0x0044
|
|
#define EXYNOS_PMU_GNSS_STAT 0x0048
|
|
#define EXYNOS_PMU_GNSS_DEBUG 0x004C
|
|
#define EXYNOS_PMU_GNSS2AP_MEM_CONFIG 0x0090
|
|
#if !defined(CONFIG_SOC_EXYNOS7870) && !defined(CONFIG_SOC_EXYNOS7880)
|
|
#define EXYNOS_PMU_GNSS2AP_MEM_CONFIG1 0x00A4
|
|
#define EXYNOS_PMU_GNSS2AP_MEM_CONFIG2 0x00BC
|
|
#define EXYNOS_PMU_GNSS2AP_MEM_CONFIG3 0x00C4
|
|
#endif
|
|
#define EXYNOS_PMU_GNSS2AP_MIF0_PERI_ACCESS_CON 0x0094
|
|
#define EXYNOS_PMU_GNSS2AP_MIF1_PERI_ACCESS_CON 0x0098
|
|
#if !defined(CONFIG_SOC_EXYNOS7870)
|
|
#define EXYNOS_PMU_GNSS2AP_MIF2_PERI_ACCESS_CON 0x009C
|
|
#define EXYNOS_PMU_GNSS2AP_MIF3_PERI_ACCESS_CON 0x00A0
|
|
#endif
|
|
#define EXYNOS_PMU_GNSS_BOOT_TEST_RST_CONFIG 0x00A8
|
|
#define EXYNOS_PMU_GNSS2AP_PERI_ACCESS_WIN 0x00AC
|
|
#define EXYNOS_PMU_GNSS_MODAPIF_CONFIG 0x00B0
|
|
#define EXYNOS_PMU_GNSS_QOS 0x00B8
|
|
#define EXYNOS_PMU_CENTRAL_SEQ_GNSS_CONFIGURATION 0x02C0
|
|
#define EXYNOS_PMU_RESET_AHEAD_GNSS_SYS_PWR_REG 0x1174
|
|
#define EXYNOS_PMU_CLEANY_BUS_SYS_PWR_REG 0x11E8
|
|
#define EXYNOS_PMU_LOGIC_RESET_GNSS_SYS_PWR_REG 0x11EC
|
|
#define EXYNOS_PMU_TCXO_GATE_GNSS_SYS_PWR_REG 0x11C4
|
|
#define EXYNOS_PMU_RESET_ASB_GNSS_SYS_PWR_REG 0x11C8
|
|
|
|
/* GNSS PMU */
|
|
/* For EXYNOS_PMU_GNSS_CTRL Register */
|
|
#define GNSS_PWRON BIT(1)
|
|
#define GNSS_RESET_SET BIT(2)
|
|
#define GNSS_START BIT(3)
|
|
#define GNSS_ACTIVE_REQ_EN BIT(5)
|
|
#define GNSS_ACTIVE_REQ_CLR BIT(6)
|
|
#define GNSS_RESET_REQ_EN BIT(7)
|
|
#define GNSS_RESET_REQ_CLR BIT(8)
|
|
#define MASK_GNSS_PWRDN_DONE BIT(9)
|
|
#define RTC_OUT_EN BIT(10)
|
|
#define MASK_SLEEP_START_REQ BIT(12)
|
|
#define SET_SW_SLEEP_START_REQ BIT(13)
|
|
#define GNSS_WAKEUP_REQ_EN BIT(14)
|
|
#define GNSS_WAKEUP_REQ_CLR BIT(15)
|
|
#define CLEANY_BYPASS_END BIT(16)
|
|
#define TCXO_26M_40M_SEL BIT(17)
|
|
|
|
#if !defined(CONFIG_SOC_EXYNOS7870) && !defined(CONFIG_SOC_EXYNOS7880)
|
|
#define MEMSIZE_SHIFT 12
|
|
#define MEMSIZE_OFFSET 0
|
|
#define MEMSIZE_MASK 0xfffff
|
|
#define MEMBASE_ADDR_SHIFT 12
|
|
#define MEMBASE_ADDR_OFFSET 0
|
|
#define MEMBASE_ADDR_MASK 0xffffff
|
|
#else
|
|
#define MEMSIZE_SHIFT 22
|
|
#define MEMSIZE_OFFSET 16
|
|
#define MEMSIZE_MASK 0x1ff
|
|
#define MEMBASE_ADDR_SHIFT 22
|
|
#define MEMBASE_ADDR_OFFSET 0
|
|
#define MEMBASE_ADDR_MASK 0x3fff
|
|
#endif
|
|
|
|
#define SMC_ID 0x82000700
|
|
#define READ_CTRL 0x3
|
|
#define WRITE_CTRL 0x4
|
|
|
|
enum gnss_mode {
|
|
GNSS_POWER_OFF,
|
|
GNSS_POWER_ON,
|
|
GNSS_RESET,
|
|
NUM_GNSS_MODE,
|
|
};
|
|
|
|
enum gnss_int_clear {
|
|
GNSS_INT_WDT_RESET_CLEAR,
|
|
GNSS_INT_ACTIVE_CLEAR,
|
|
GNSS_INT_WAKEUP_CLEAR,
|
|
};
|
|
|
|
enum gnss_tcxo_mode {
|
|
TCXO_SHARED_MODE = 0,
|
|
TCXO_NON_SHARED_MODE = 1,
|
|
};
|
|
|
|
struct gnss_ctl;
|
|
extern int gnss_pmu_init_conf(struct gnss_ctl *);
|
|
extern int gnss_pmu_hold_reset(struct gnss_ctl *);
|
|
extern int gnss_pmu_release_reset(struct gnss_ctl *);
|
|
extern int gnss_pmu_power_on(struct gnss_ctl *, enum gnss_mode mode);
|
|
extern int gnss_pmu_clear_interrupt(struct gnss_ctl *,
|
|
enum gnss_int_clear);
|
|
extern int gnss_change_tcxo_mode(struct gnss_ctl *, enum gnss_tcxo_mode);
|
|
|
|
#endif /* __EXYNOS_PMU_GNSS_H */
|