blob: 85c25b5622a007f51dd01c2f229d29bb6194b46a [file] [log] [blame]
/*
* intel_soc_mdfld.h
* Copyright (c) 2012, Intel Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#ifdef CONFIG_REMOVEME_INTEL_REMOVEME_ATOM_MDFLD_POWER
#define PM_SUPPORT 0x21
#define ISP_POS 7
#define ISP_SUB_CLASS 0x80
#define C6_OFFLOAD_REG_ADDR 0xffd01ffc
#define PMU_MISC_SET_TIMEOUT 50 /* 50usec timeout */
#define PMU_C6OFFLOAD_ACCESS_TIMEOUT 1500 /* 1.5msecs timeout */
#define PMU1_MAX_DEVS 8
#define PMU2_MAX_DEVS 55
#define GFX_LSS_INDEX 1
#define PMU_SDIO0_LSS_00 0
#define PMU_EMMC0_LSS_01 1
#define PMU_AONT_LSS_02 2
#define PMU_HSI_LSS_03 3
#define PMU_SECURITY_LSS_04 4
#define PMU_EMMC1_LSS_05 5
#define PMU_USB_OTG_LSS_06 6
#define PMU_USB_HSIC_LSS_07 7
#define PMU_AUDIO_ENGINE_LSS_08 8
#define PMU_AUDIO_DMA_LSS_09 9
#define PMU_SRAM_LSS_10 10
#define PMU_SRAM_LSS_11 11
#define PMU_SRAM_LSS_12 12
#define PMU_SRAM_LSS_13 13
#define PMU_SDIO2_LSS_14 14
#define PMU_PTI_DAFCA_LSS_15 15
#define PMU_SC_DMA_LSS_16 16
#define PMU_SPIO_LSS_17 17
#define PMU_SPI1_LSS_18 18
#define PMU_SPI2_LSS_19 19
#define PMU_I2C0_LSS_20 20
#define PMU_I2C1_LSS_21 21
#define PMU_MAIN_FABRIC_LSS_22 22
#define PMU_SEC_FABRIC_LSS_23 23
#define PMU_SC_FABRIC_LSS_24 24
#define PMU_AUDIO_RAM_LSS_25 25
#define PMU_SCU_ROM_LSS_26 26
#define PMU_I2C2_LSS_27 27
#define PMU_SSC_LSS_28 28
#define PMU_SECURITY_LSS_29 29
#define PMU_SDIO1_LSS_30 30
#define PMU_SCU_RAM0_LSS_31 31
#define PMU_SCU_RAM1_LSS_32 32
#define PMU_I2C3_LSS_33 33
#define PMU_I2C4_LSS_34 34
#define PMU_I2C5_LSS_35 35
#define PMU_SPI3_LSS_36 36
#define PMU_GPIO1_LSS_37 37
#define PMU_PWR_BUTTON_LSS_38 38
#define PMU_GPIO0_LSS_39 39
#define PMU_KEYBRD_LSS_40 40
#define PMU_UART2_LSS_41 41
#define PMU_ADC_LSS_42 42
#define PMU_CHARGER_LSS_43 43
#define PMU_SEC_TAPC_LSS_44 44
#define PMU_RTC_LSS_45 45
#define PMU_GPI_LSS_46 46
#define PMU_HDMI_VREG_LSS_47 47
#define PMU_RESERVED_LSS_48 48
#define PMU_AUDIO_SLIM1_LSS_49 49
#define PMU_RESET_LSS_50 50
#define PMU_AUDIO_SSP0_LSS_51 51
#define PMU_AUDIO_SSP1_LSS_52 52
#define PMU_IOSF_OCP_BRG_LSS_53 53
#define PMU_GP_DMA_LSS_54 54
#define PMU_SVID_LSS_55 55
#define PMU_SOC_FUSE_LSS_56 56
#define PMU_RSVD3_LSS_57 57
#define PMU_RSVD4_LSS_58 58
#define PMU_RSVD5_LSS_59 59
#define PMU_RSVD6_LSS_60 60
#define PMU_RSVD7_LSS_61 61
#define PMU_RSVD8_LSS_62 62
#define PMU_RSVD9_LSS_63 63
#define PMU_MAX_LSS 63
#define PMU_LSS_IN_FIRST_DWORD 32
#define EMMC0_LSS PMU_EMMC0_LSS_01
#define S0IX_TARGET_SSS0_MASK ( \
SSMSK(D0I3_MASK, PMU_SDIO0_LSS_00) | \
SSMSK(D0I3_MASK, PMU_EMMC0_LSS_01) | \
SSMSK(D0I3_MASK, PMU_HSI_LSS_03) | \
SSMSK(D0I3_MASK, PMU_SECURITY_LSS_04) | \
SSMSK(D0I3_MASK, PMU_EMMC1_LSS_05) | \
SSMSK(D0I3_MASK, PMU_USB_OTG_LSS_06) | \
SSMSK(D0I3_MASK, PMU_AUDIO_ENGINE_LSS_08) | \
SSMSK(D0I3_MASK, PMU_AUDIO_DMA_LSS_09) | \
SSMSK(D0I3_MASK, PMU_SDIO2_LSS_14))
#define S0IX_TARGET_SSS1_MASK ( \
SSMSK(D0I3_MASK, PMU_SPI1_LSS_18-16) | \
SSMSK(D0I3_MASK, PMU_I2C0_LSS_20-16) | \
SSMSK(D0I3_MASK, PMU_I2C1_LSS_21-16) | \
SSMSK(D0I3_MASK, PMU_I2C2_LSS_27-16) | \
SSMSK(D0I3_MASK, PMU_SDIO1_LSS_30-16))
#define S0IX_TARGET_SSS2_MASK ( \
SSMSK(D0I3_MASK, PMU_I2C3_LSS_33-32) | \
SSMSK(D0I3_MASK, PMU_I2C4_LSS_34-32) | \
SSMSK(D0I3_MASK, PMU_I2C5_LSS_35-32) | \
SSMSK(D0I3_MASK, PMU_SPI3_LSS_36-32) | \
SSMSK(D0I3_MASK, PMU_UART2_LSS_41-32))
#define S0IX_TARGET_SSS3_MASK ( \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP0_LSS_51-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP1_LSS_52-48))
#define S0IX_TARGET_SSS0 ( \
SSMSK(D0I3_MASK, PMU_SDIO0_LSS_00) | \
SSMSK(D0I3_MASK, PMU_EMMC0_LSS_01) | \
SSMSK(D0I3_MASK, PMU_HSI_LSS_03) | \
SSMSK(D0I2_MASK, PMU_SECURITY_LSS_04) | \
SSMSK(D0I3_MASK, PMU_EMMC1_LSS_05) | \
SSMSK(D0I1_MASK, PMU_USB_OTG_LSS_06) | \
SSMSK(D0I3_MASK, PMU_AUDIO_ENGINE_LSS_08) | \
SSMSK(D0I3_MASK, PMU_AUDIO_DMA_LSS_09) | \
SSMSK(D0I3_MASK, PMU_SDIO2_LSS_14))
#define S0IX_TARGET_SSS1 ( \
SSMSK(D0I3_MASK, PMU_SPI1_LSS_18-16) | \
SSMSK(D0I3_MASK, PMU_I2C0_LSS_20-16) | \
SSMSK(D0I3_MASK, PMU_I2C1_LSS_21-16) | \
SSMSK(D0I3_MASK, PMU_I2C2_LSS_27-16) | \
SSMSK(D0I3_MASK, PMU_SDIO1_LSS_30-16))
#define S0IX_TARGET_SSS2 ( \
SSMSK(D0I3_MASK, PMU_I2C3_LSS_33-32) | \
SSMSK(D0I3_MASK, PMU_I2C4_LSS_34-32) | \
SSMSK(D0I3_MASK, PMU_I2C5_LSS_35-32) | \
SSMSK(D0I3_MASK, PMU_SPI3_LSS_36-32) | \
SSMSK(D0I1_MASK, PMU_UART2_LSS_41-32))
#define S0IX_TARGET_SSS3 ( \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP0_LSS_51-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP1_LSS_52-48))
#define LPMP3_TARGET_SSS0_MASK ( \
SSMSK(D0I3_MASK, PMU_SDIO0_LSS_00) | \
SSMSK(D0I3_MASK, PMU_EMMC0_LSS_01) | \
SSMSK(D0I3_MASK, PMU_HSI_LSS_03) | \
SSMSK(D0I3_MASK, PMU_SECURITY_LSS_04) | \
SSMSK(D0I3_MASK, PMU_EMMC1_LSS_05) | \
SSMSK(D0I3_MASK, PMU_USB_OTG_LSS_06) | \
SSMSK(D0I3_MASK, PMU_AUDIO_ENGINE_LSS_08) | \
SSMSK(D0I3_MASK, PMU_AUDIO_DMA_LSS_09) | \
SSMSK(D0I3_MASK, PMU_SDIO2_LSS_14))
#define LPMP3_TARGET_SSS1_MASK ( \
SSMSK(D0I3_MASK, PMU_SPI1_LSS_18-16) | \
SSMSK(D0I3_MASK, PMU_I2C0_LSS_20-16) | \
SSMSK(D0I3_MASK, PMU_I2C1_LSS_21-16) | \
SSMSK(D0I3_MASK, PMU_I2C2_LSS_27-16) | \
SSMSK(D0I3_MASK, PMU_SDIO1_LSS_30-16))
#define LPMP3_TARGET_SSS2_MASK ( \
SSMSK(D0I3_MASK, PMU_I2C3_LSS_33-32) | \
SSMSK(D0I3_MASK, PMU_I2C4_LSS_34-32) | \
SSMSK(D0I3_MASK, PMU_I2C5_LSS_35-32) | \
SSMSK(D0I3_MASK, PMU_SPI3_LSS_36-32) | \
SSMSK(D0I3_MASK, PMU_UART2_LSS_41-32))
#define LPMP3_TARGET_SSS3_MASK ( \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP0_LSS_51-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP1_LSS_52-48))
#define LPMP3_TARGET_SSS0 ( \
SSMSK(D0I3_MASK, PMU_SDIO0_LSS_00) | \
SSMSK(D0I3_MASK, PMU_EMMC0_LSS_01) | \
SSMSK(D0I3_MASK, PMU_HSI_LSS_03) | \
SSMSK(D0I2_MASK, PMU_SECURITY_LSS_04) | \
SSMSK(D0I3_MASK, PMU_EMMC1_LSS_05) | \
SSMSK(D0I1_MASK, PMU_USB_OTG_LSS_06) | \
SSMSK(D0I0_MASK, PMU_AUDIO_ENGINE_LSS_08) | \
SSMSK(D0I3_MASK, PMU_AUDIO_DMA_LSS_09) | \
SSMSK(D0I3_MASK, PMU_SDIO2_LSS_14))
#define LPMP3_TARGET_SSS1 ( \
SSMSK(D0I3_MASK, PMU_SPI1_LSS_18-16) | \
SSMSK(D0I3_MASK, PMU_I2C0_LSS_20-16) | \
SSMSK(D0I3_MASK, PMU_I2C1_LSS_21-16) | \
SSMSK(D0I3_MASK, PMU_I2C2_LSS_27-16) | \
SSMSK(D0I3_MASK, PMU_SDIO1_LSS_30-16))
#define LPMP3_TARGET_SSS2 ( \
SSMSK(D0I3_MASK, PMU_I2C3_LSS_33-32) | \
SSMSK(D0I3_MASK, PMU_I2C4_LSS_34-32) | \
SSMSK(D0I3_MASK, PMU_I2C5_LSS_35-32) | \
SSMSK(D0I3_MASK, PMU_SPI3_LSS_36-32) | \
SSMSK(D0I1_MASK, PMU_UART2_LSS_41-32))
#define LPMP3_TARGET_SSS3 ( \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP0_LSS_51-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP1_LSS_52-48))
#define IGNORE_SSS0 ( \
SSMSK(D0I3_MASK, PMU_USB_HSIC_LSS_07) | \
SSMSK(D0I3_MASK, PMU_SRAM_LSS_10) | \
SSMSK(D0I3_MASK, PMU_SRAM_LSS_11) | \
SSMSK(D0I3_MASK, PMU_SRAM_LSS_12) | \
SSMSK(D0I3_MASK, PMU_SRAM_LSS_13) | \
SSMSK(D0I3_MASK, PMU_PTI_DAFCA_LSS_15))
#define IGNORE_SSS1 ( \
SSMSK(D0I3_MASK, PMU_SC_DMA_LSS_16-16) | \
SSMSK(D0I3_MASK, PMU_SPIO_LSS_17-16) | \
SSMSK(D0I3_MASK, PMU_MAIN_FABRIC_LSS_22-16) | \
SSMSK(D0I3_MASK, PMU_SEC_FABRIC_LSS_23-16) | \
SSMSK(D0I3_MASK, PMU_SC_FABRIC_LSS_24-16) | \
SSMSK(D0I3_MASK, PMU_SCU_ROM_LSS_26-16) | \
SSMSK(D0I3_MASK, PMU_SSC_LSS_28-16) | \
SSMSK(D0I3_MASK, PMU_SECURITY_LSS_29-16) | \
SSMSK(D0I3_MASK, PMU_SCU_RAM0_LSS_31-16))
#define IGNORE_SSS2 ( \
SSMSK(D0I3_MASK, PMU_SCU_RAM1_LSS_32-32) | \
SSMSK(D0I3_MASK, PMU_GPIO1_LSS_37-32) | \
SSMSK(D0I3_MASK, PMU_PWR_BUTTON_LSS_38-32) | \
SSMSK(D0I3_MASK, PMU_GPIO0_LSS_39-32) | \
SSMSK(D0I3_MASK, PMU_ADC_LSS_42-32) | \
SSMSK(D0I3_MASK, PMU_CHARGER_LSS_43-32) | \
SSMSK(D0I3_MASK, PMU_SEC_TAPC_LSS_44-32) | \
SSMSK(D0I3_MASK, PMU_RTC_LSS_45-32) | \
SSMSK(D0I3_MASK, PMU_GPI_LSS_46-32) | \
SSMSK(D0I3_MASK, PMU_HDMI_VREG_LSS_47-32))
#define IGNORE_SSS3 ( \
SSMSK(D0I3_MASK, PMU_IOSF_OCP_BRG_LSS_53-48) | \
SSMSK(D0I3_MASK, PMU_SVID_LSS_55-48) | \
SSMSK(D0I3_MASK, PMU_SOC_FUSE_LSS_56-48) | \
SSMSK(D0I3_MASK, PMU_RSVD3_LSS_57-48) | \
SSMSK(D0I3_MASK, PMU_RSVD4_LSS_58-48) | \
SSMSK(D0I3_MASK, PMU_RSVD5_LSS_59-48) | \
SSMSK(D0I3_MASK, PMU_RSVD6_LSS_60-48) | \
SSMSK(D0I3_MASK, PMU_RSVD7_LSS_61-48) | \
SSMSK(D0I3_MASK, PMU_RSVD8_LSS_62-48) | \
SSMSK(D0I3_MASK, PMU_RSVD9_LSS_63-48))
#define IGNORE_S3_WKC0 SSWKC(PMU_AONT_LSS_02)
#define IGNORE_S3_WKC1 SSWKC(PMU_ADC_LSS_42-32)
#define S0I3_SSS0 ( \
SSMSK(D0I3_MASK, PMU_SDIO0_LSS_00) | \
SSMSK(D0I3_MASK, PMU_EMMC0_LSS_01) | \
SSMSK(D0I3_MASK, PMU_AONT_LSS_02) | \
SSMSK(D0I3_MASK, PMU_HSI_LSS_03) | \
SSMSK(D0I2_MASK, PMU_SECURITY_LSS_04) | \
SSMSK(D0I3_MASK, PMU_EMMC1_LSS_05) | \
SSMSK(D0I1_MASK, PMU_USB_OTG_LSS_06) | \
SSMSK(D0I1_MASK, PMU_USB_HSIC_LSS_07) | \
SSMSK(D0I3_MASK, PMU_AUDIO_ENGINE_LSS_08) | \
SSMSK(D0I3_MASK, PMU_AUDIO_DMA_LSS_09) | \
SSMSK(D0I3_MASK, PMU_SRAM_LSS_12) | \
SSMSK(D0I3_MASK, PMU_SRAM_LSS_13) | \
SSMSK(D0I3_MASK, PMU_SDIO2_LSS_14))
#define S0I3_SSS1 ( \
SSMSK(D0I3_MASK, PMU_SPI1_LSS_18-16) | \
SSMSK(D0I3_MASK, PMU_SPI2_LSS_19-16) | \
SSMSK(D0I3_MASK, PMU_I2C0_LSS_20-16) | \
SSMSK(D0I3_MASK, PMU_I2C1_LSS_21-16) | \
SSMSK(D0I3_MASK, PMU_AUDIO_RAM_LSS_25-16) | \
SSMSK(D0I3_MASK, PMU_I2C2_LSS_27-16) | \
SSMSK(D0I3_MASK, PMU_SDIO1_LSS_30-16))
#define S0I3_SSS2 ( \
SSMSK(D0I3_MASK, PMU_I2C3_LSS_33-32) | \
SSMSK(D0I3_MASK, PMU_I2C4_LSS_34-32) | \
SSMSK(D0I3_MASK, PMU_I2C5_LSS_35-32) | \
SSMSK(D0I3_MASK, PMU_SPI3_LSS_36-32) | \
SSMSK(D0I3_MASK, PMU_GPIO1_LSS_37-32) | \
SSMSK(D0I3_MASK, PMU_PWR_BUTTON_LSS_38-32) | \
SSMSK(D0I3_MASK, PMU_KEYBRD_LSS_40-32) | \
SSMSK(D0I1_MASK, PMU_UART2_LSS_41-32))
#define S0I3_SSS3 ( \
SSMSK(D0I3_MASK, PMU_AUDIO_SLIM1_LSS_49-48) | \
SSMSK(D0I3_MASK, PMU_RESET_LSS_50-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP0_LSS_51-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP1_LSS_52-48) | \
SSMSK(D0I3_MASK, PMU_GP_DMA_LSS_54-48))
#define S0I1_SSS0 S0I3_SSS0
#define S0I1_SSS1 S0I3_SSS1
#define S0I1_SSS2 S0I3_SSS2
#define S0I1_SSS3 S0I3_SSS3
#define LPMP3_SSS0 ( \
SSMSK(D0I3_MASK, PMU_SDIO0_LSS_00) | \
SSMSK(D0I3_MASK, PMU_EMMC0_LSS_01) | \
SSMSK(D0I3_MASK, PMU_AONT_LSS_02) | \
SSMSK(D0I3_MASK, PMU_HSI_LSS_03) | \
SSMSK(D0I2_MASK, PMU_SECURITY_LSS_04) | \
SSMSK(D0I3_MASK, PMU_EMMC1_LSS_05) | \
SSMSK(D0I1_MASK, PMU_USB_OTG_LSS_06) | \
SSMSK(D0I1_MASK, PMU_USB_HSIC_LSS_07) | \
SSMSK(D0I3_MASK, PMU_SDIO2_LSS_14))
#define LPMP3_SSS1 ( \
SSMSK(D0I3_MASK, PMU_SPI1_LSS_18-16) | \
SSMSK(D0I3_MASK, PMU_SPI2_LSS_19-16) | \
SSMSK(D0I3_MASK, PMU_I2C0_LSS_20-16) | \
SSMSK(D0I3_MASK, PMU_I2C1_LSS_21-16) | \
SSMSK(D0I3_MASK, PMU_I2C2_LSS_27-16) | \
SSMSK(D0I3_MASK, PMU_SDIO1_LSS_30-16))
#define LPMP3_SSS2 ( \
SSMSK(D0I3_MASK, PMU_I2C3_LSS_33-32) | \
SSMSK(D0I3_MASK, PMU_I2C4_LSS_34-32) | \
SSMSK(D0I3_MASK, PMU_I2C5_LSS_35-32) | \
SSMSK(D0I3_MASK, PMU_SPI3_LSS_36-32) | \
SSMSK(D0I3_MASK, PMU_GPIO1_LSS_37-32) | \
SSMSK(D0I3_MASK, PMU_PWR_BUTTON_LSS_38-32) | \
SSMSK(D0I3_MASK, PMU_KEYBRD_LSS_40-32) | \
SSMSK(D0I1_MASK, PMU_UART2_LSS_41-32))
#define LPMP3_SSS3 ( \
SSMSK(D0I3_MASK, PMU_AUDIO_SLIM1_LSS_49-48) | \
SSMSK(D0I3_MASK, PMU_RESET_LSS_50-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP0_LSS_51-48) | \
SSMSK(D0I3_MASK, PMU_AUDIO_SSP1_LSS_52-48) | \
SSMSK(D0I3_MASK, PMU_GP_DMA_LSS_54-48))
extern void pmu_set_s0ix_possible(int state);
extern void log_wakeup_irq(void);
extern void s0ix_complete(void);
extern int mdfld_clv_nc_set_power_state(int, int, int, int *);
#endif