mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 22:40:54 -04:00
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:
parent
46b8090f85
commit
cd4e0368a7
6 changed files with 38 additions and 6 deletions
|
|
@ -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 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_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
|
||||
* @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
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -1706,6 +1706,13 @@ void hif_ramdump_handler(struct hif_opaque_softc *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)
|
||||
{
|
||||
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
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -230,6 +230,7 @@ struct hif_softc {
|
|||
uint32_t hif_attribute;
|
||||
int wake_irq;
|
||||
int disable_wake_irq;
|
||||
hif_pm_wake_irq_type wake_irq_type;
|
||||
void (*initial_wakeup_cb)(void *);
|
||||
void *initial_wakeup_priv;
|
||||
#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
|
||||
* 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;
|
||||
|
||||
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",
|
||||
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
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -2875,6 +2875,7 @@ static int hif_ce_msi_configure_irq(struct hif_softc *scn)
|
|||
|
||||
scn->wake_irq = pld_get_msi_irq(scn->qdf_dev->dev,
|
||||
msi_irq_start);
|
||||
scn->wake_irq_type = HIF_PM_MSI_WAKE;
|
||||
|
||||
ret = pfrm_request_irq(scn->qdf_dev->dev, scn->wake_irq,
|
||||
hif_wake_interrupt_handler,
|
||||
|
|
@ -2948,6 +2949,7 @@ free_wake_irq:
|
|||
pfrm_free_irq(scn->qdf_dev->dev,
|
||||
scn->wake_irq, scn->qdf_dev->dev);
|
||||
scn->wake_irq = 0;
|
||||
scn->wake_irq_type = HIF_PM_INVALID_WAKE;
|
||||
}
|
||||
|
||||
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
|
||||
* 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;
|
||||
|
||||
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",
|
||||
wake_ce_id, scn->wake_irq);
|
||||
|
|
|
|||
Loading…
Reference in a new issue