audio-lnx: Add latest snapshot for audio drivers.

Propagate the changes based on latest snapshot
for audio kernel source tree at below cutoff of
kernel msm-4.9 -
(040750bfa78 -
 "Revert "ARM: dts: msm: Add DT node for aop-qmp
  clock controller on SDM845 v2"")

CRs-Fixed: 2104096
Change-Id: I0927c40b3a188dbf892e7ec4c1c7810953724929
Signed-off-by: Laxminath Kasam <lkasam@codeaurora.org>
此提交包含在:
Laxminath Kasam
2017-08-28 17:35:04 +05:30
父節點 8b3bdea209
當前提交 8f7ccc2e6f
共有 28 個檔案被更改,包括 177 行新增113 行删除

查看文件

@@ -52,6 +52,8 @@ static int phyirq_to_virq(
struct wcd9xxx_core_resource *wcd9xxx_res, int irq);
static unsigned int wcd9xxx_irq_get_upstream_irq(
struct wcd9xxx_core_resource *wcd9xxx_res);
static void wcd9xxx_irq_put_downstream_irq(
struct wcd9xxx_core_resource *wcd9xxx_res);
static void wcd9xxx_irq_put_upstream_irq(
struct wcd9xxx_core_resource *wcd9xxx_res);
static int wcd9xxx_map_irq(
@@ -632,6 +634,7 @@ void wcd9xxx_irq_exit(struct wcd9xxx_core_resource *wcd9xxx_res)
disable_irq_wake(wcd9xxx_res->irq);
free_irq(wcd9xxx_res->irq, wcd9xxx_res);
wcd9xxx_res->irq = 0;
wcd9xxx_irq_put_downstream_irq(wcd9xxx_res);
wcd9xxx_irq_put_upstream_irq(wcd9xxx_res);
}
mutex_destroy(&wcd9xxx_res->irq_lock);
@@ -754,6 +757,29 @@ static unsigned int wcd9xxx_irq_get_upstream_irq(
return data->irq;
}
static void wcd9xxx_irq_put_downstream_irq(
struct wcd9xxx_core_resource *wcd9xxx_res)
{
int irq, virq, ret;
/*
* IRQ migration hits error if the chip data and handles
* are not made NULL. make associated data and handles
* to NULL at irq_exit
*/
for (irq = 0; irq < wcd9xxx_res->num_irqs; irq++) {
virq = wcd9xxx_map_irq(wcd9xxx_res, irq);
pr_debug("%s: irq %d -> %d\n", __func__, irq, virq);
ret = irq_set_chip_data(virq, NULL);
if (ret) {
pr_err("%s: Failed to configure irq %d (%d)\n",
__func__, irq, ret);
return;
}
irq_set_chip_and_handler(virq, NULL, NULL);
}
}
static void wcd9xxx_irq_put_upstream_irq(
struct wcd9xxx_core_resource *wcd9xxx_res)
{
@@ -821,7 +847,6 @@ static int wcd9xxx_irq_remove(struct platform_device *pdev)
wmb();
irq_domain_remove(data->domain);
kfree(data);
domain->host_data = NULL;
return 0;
}