162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright(c) 2015-2017 Intel Corporation. 462306a36Sopenharmony_ci */ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#ifndef _ASPM_H 762306a36Sopenharmony_ci#define _ASPM_H 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include "hfi.h" 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciextern uint aspm_mode; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cienum aspm_mode { 1462306a36Sopenharmony_ci ASPM_MODE_DISABLED = 0, /* ASPM always disabled, performance mode */ 1562306a36Sopenharmony_ci ASPM_MODE_ENABLED = 1, /* ASPM always enabled, power saving mode */ 1662306a36Sopenharmony_ci ASPM_MODE_DYNAMIC = 2, /* ASPM enabled/disabled dynamically */ 1762306a36Sopenharmony_ci}; 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_civoid aspm_init(struct hfi1_devdata *dd); 2062306a36Sopenharmony_civoid aspm_exit(struct hfi1_devdata *dd); 2162306a36Sopenharmony_civoid aspm_hw_disable_l1(struct hfi1_devdata *dd); 2262306a36Sopenharmony_civoid __aspm_ctx_disable(struct hfi1_ctxtdata *rcd); 2362306a36Sopenharmony_civoid aspm_disable_all(struct hfi1_devdata *dd); 2462306a36Sopenharmony_civoid aspm_enable_all(struct hfi1_devdata *dd); 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistatic inline void aspm_ctx_disable(struct hfi1_ctxtdata *rcd) 2762306a36Sopenharmony_ci{ 2862306a36Sopenharmony_ci /* Quickest exit for minimum impact */ 2962306a36Sopenharmony_ci if (likely(!rcd->aspm_intr_supported)) 3062306a36Sopenharmony_ci return; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci __aspm_ctx_disable(rcd); 3362306a36Sopenharmony_ci} 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#endif /* _ASPM_H */ 36