qcacmn: add wake_irq_type in HIF for power management
Add wake_irq_type in HIF layer for power management, this helps in deciding to enable sync-up between runtime suspend and wow resume in case of moselle. Change-Id: I23a4d02d3ae7ec543a28174461996b84b18fd95d CRs-Fixed: 2851265
This commit is contained in:

committed by
snandini

parent
8db987a33c
commit
bae1042f1c
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -942,6 +942,26 @@ void hif_enable_ce_latency_stats(struct hif_opaque_softc *hif_ctx,
|
|||||||
void hif_display_stats(struct hif_opaque_softc *hif_ctx);
|
void hif_display_stats(struct hif_opaque_softc *hif_ctx);
|
||||||
void hif_clear_stats(struct hif_opaque_softc *hif_ctx);
|
void hif_clear_stats(struct hif_opaque_softc *hif_ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum hif_pm_wake_irq_type - Wake interrupt type for Power Management
|
||||||
|
* HIF_PM_INVALID_WAKE: Wake irq is invalid or not configured
|
||||||
|
* HIF_PM_MSI_WAKE: Wake irq is MSI interrupt
|
||||||
|
* HIF_PM_CE_WAKE: Wake irq is CE interrupt
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
HIF_PM_INVALID_WAKE,
|
||||||
|
HIF_PM_MSI_WAKE,
|
||||||
|
HIF_PM_CE_WAKE,
|
||||||
|
} hif_pm_wake_irq_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hif_pm_get_wake_irq_type - Get wake irq type for Power Management
|
||||||
|
* @hif_ctx: HIF context
|
||||||
|
*
|
||||||
|
* Return: enum hif_pm_wake_irq_type
|
||||||
|
*/
|
||||||
|
hif_pm_wake_irq_type hif_pm_get_wake_irq_type(struct hif_opaque_softc *hif_ctx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum wlan_rtpm_dbgid - runtime pm put/get debug id
|
* enum wlan_rtpm_dbgid - runtime pm put/get debug id
|
||||||
* @RTPM_ID_RESVERD: Reserved
|
* @RTPM_ID_RESVERD: Reserved
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -1710,6 +1710,13 @@ void hif_ramdump_handler(struct hif_opaque_softc *scn)
|
|||||||
hif_usb_ramdump_handler(scn);
|
hif_usb_ramdump_handler(scn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hif_pm_wake_irq_type hif_pm_get_wake_irq_type(struct hif_opaque_softc *hif_ctx)
|
||||||
|
{
|
||||||
|
struct hif_softc *scn = HIF_GET_SOFTC(hif_ctx);
|
||||||
|
|
||||||
|
return scn->wake_irq_type;
|
||||||
|
}
|
||||||
|
|
||||||
irqreturn_t hif_wake_interrupt_handler(int irq, void *context)
|
irqreturn_t hif_wake_interrupt_handler(int irq, void *context)
|
||||||
{
|
{
|
||||||
struct hif_softc *scn = context;
|
struct hif_softc *scn = context;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -230,6 +230,7 @@ struct hif_softc {
|
|||||||
uint32_t hif_attribute;
|
uint32_t hif_attribute;
|
||||||
int wake_irq;
|
int wake_irq;
|
||||||
int disable_wake_irq;
|
int disable_wake_irq;
|
||||||
|
hif_pm_wake_irq_type wake_irq_type;
|
||||||
void (*initial_wakeup_cb)(void *);
|
void (*initial_wakeup_cb)(void *);
|
||||||
void *initial_wakeup_priv;
|
void *initial_wakeup_priv;
|
||||||
#ifdef REMOVE_PKT_LOG
|
#ifdef REMOVE_PKT_LOG
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for any
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||||||
* purpose with or without fee is hereby granted, provided that the above
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
@@ -150,6 +150,7 @@ int hif_ipci_bus_configure(struct hif_softc *hif_sc)
|
|||||||
goto unconfig_ce;
|
goto unconfig_ce;
|
||||||
|
|
||||||
hif_sc->wake_irq = hif_ce_msi_map_ce_to_irq(hif_sc, wake_ce_id);
|
hif_sc->wake_irq = hif_ce_msi_map_ce_to_irq(hif_sc, wake_ce_id);
|
||||||
|
hif_sc->wake_irq_type = HIF_PM_CE_WAKE;
|
||||||
|
|
||||||
hif_info("expecting wake from ce %d, irq %d",
|
hif_info("expecting wake from ce %d, irq %d",
|
||||||
wake_ce_id, hif_sc->wake_irq);
|
wake_ce_id, hif_sc->wake_irq);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -2933,6 +2933,7 @@ static int hif_ce_msi_configure_irq(struct hif_softc *scn)
|
|||||||
|
|
||||||
scn->wake_irq = pld_get_msi_irq(scn->qdf_dev->dev,
|
scn->wake_irq = pld_get_msi_irq(scn->qdf_dev->dev,
|
||||||
msi_irq_start);
|
msi_irq_start);
|
||||||
|
scn->wake_irq_type = HIF_PM_MSI_WAKE;
|
||||||
|
|
||||||
ret = pfrm_request_irq(scn->qdf_dev->dev, scn->wake_irq,
|
ret = pfrm_request_irq(scn->qdf_dev->dev, scn->wake_irq,
|
||||||
hif_wake_interrupt_handler,
|
hif_wake_interrupt_handler,
|
||||||
@@ -2994,6 +2995,7 @@ free_wake_irq:
|
|||||||
pfrm_free_irq(scn->qdf_dev->dev,
|
pfrm_free_irq(scn->qdf_dev->dev,
|
||||||
scn->wake_irq, scn->qdf_dev->dev);
|
scn->wake_irq, scn->qdf_dev->dev);
|
||||||
scn->wake_irq = 0;
|
scn->wake_irq = 0;
|
||||||
|
scn->wake_irq_type = HIF_PM_INVALID_WAKE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2015-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -180,6 +180,7 @@ int hif_snoc_bus_configure(struct hif_softc *scn)
|
|||||||
goto unconfig_ce;
|
goto unconfig_ce;
|
||||||
|
|
||||||
scn->wake_irq = pld_get_irq(scn->qdf_dev->dev, wake_ce_id);
|
scn->wake_irq = pld_get_irq(scn->qdf_dev->dev, wake_ce_id);
|
||||||
|
scn->wake_irq_type = HIF_PM_CE_WAKE;
|
||||||
|
|
||||||
hif_info("expecting wake from ce %d, irq %d",
|
hif_info("expecting wake from ce %d, irq %d",
|
||||||
wake_ce_id, scn->wake_irq);
|
wake_ce_id, scn->wake_irq);
|
||||||
|
Reference in New Issue
Block a user