/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * Copyright (C) 2015-2016 Intel Corp.
 * (Written by Lance Zhao <lijian.zhao@intel.com> for Intel Corp.)
 * Copyright 2019 Google LLC
 */

#ifndef _ASM_ARCH_PM_H
#define _ASM_ARCH_PM_H

#include <power/acpi_pmc.h>

#define PMC_GPE_SW_31_0	0
#define PMC_GPE_SW_63_32	1
#define PMC_GPE_NW_31_0	3
#define PMC_GPE_NW_63_32	4
#define PMC_GPE_NW_95_64	5
#define PMC_GPE_N_31_0		6
#define PMC_GPE_N_63_32	7
#define PMC_GPE_W_31_0		9

#define IRQ_REG			0x106c
#define SCI_IRQ_SHIFT		24
#define SCI_IRQ_MASK		(0xff << SCI_IRQ_SHIFT)
#define SCIS_IRQ9		9
#define SCIS_IRQ10		10
#define SCIS_IRQ11		11
#define SCIS_IRQ20		20
#define SCIS_IRQ21		21
#define SCIS_IRQ22		22
#define SCIS_IRQ23		23

/* P-state configuration */
#define PSS_MAX_ENTRIES		8
#define PSS_RATIO_STEP		2
#define PSS_LATENCY_TRANSITION	10
#define PSS_LATENCY_BUSMASTER	10

#ifndef __ASSEMBLY__
/* Track power state from reset to log events */
struct __packed chipset_power_state {
	u16 pm1_sts;
	u16 pm1_en;
	u32 pm1_cnt;
	u32 gpe0_sts[GPE0_REG_MAX];
	u32 gpe0_en[GPE0_REG_MAX];
	u16 tco1_sts;
	u16 tco2_sts;
	u32 prsts;
	u32 gen_pmcon1;
	u32 gen_pmcon2;
	u32 gen_pmcon3;
	u32 prev_sleep_state;
};
#endif /* !__ASSEMBLY__ */

#endif