Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17c997bb authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "soc: qcom: pil-loaders: move pil loading of ADSP & SLPI to workqueue"

parents e62a5917 fa66d014
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -26,6 +26,8 @@
#include <linux/err.h>
#include <linux/delay.h>
#include <linux/sysfs.h>
#include <linux/workqueue.h>

#include <soc/qcom/subsystem_restart.h>

#define IMAGE_LOAD_CMD 1
@@ -110,10 +112,11 @@ static struct attribute *attrs[] = {
};

static struct platform_device *slpi_private;
static struct work_struct slpi_ldr_work;

static void slpi_loader_do(struct platform_device *pdev)
static void slpi_load_fw(struct work_struct *slpi_ldr_work)
{

	struct platform_device *pdev = slpi_private;
	struct slpi_loader_private *priv = NULL;

	if (!pdev) {
@@ -148,6 +151,12 @@ fail:
	dev_err(&pdev->dev, "%s: SLPI image loading failed\n", __func__);
}

static void slpi_loader_do(struct platform_device *pdev)
{
	dev_info(&pdev->dev, "%s: scheduling work to load SLPI fw\n", __func__);
	schedule_work(&slpi_ldr_work);
}

static void slpi_loader_unload(struct platform_device *pdev)
{
	struct slpi_loader_private *priv = NULL;
@@ -426,6 +435,8 @@ static int sensors_ssc_probe(struct platform_device *pdev)
		goto cdev_add_err;
	}

	INIT_WORK(&slpi_ldr_work, slpi_load_fw);

	return 0;

cdev_add_err:
+14 −3
Original line number Diff line number Diff line
/*
 * Copyright (c) 2012-2014,2016 The Linux Foundation. All rights reserved.
 * Copyright (c) 2012-2014, 2016,
 * 2017, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -20,6 +21,8 @@
#include <linux/qdsp6v2/apr.h>
#include <linux/of_device.h>
#include <linux/sysfs.h>
#include <linux/workqueue.h>

#include <soc/qcom/subsystem_restart.h>

#define Q6_PIL_GET_DELAY_MS 100
@@ -44,12 +47,13 @@ static struct attribute *attrs[] = {
	NULL,
};

static struct work_struct adsp_ldr_work;
static struct platform_device *adsp_private;
static void adsp_loader_unload(struct platform_device *pdev);

static void adsp_loader_do(struct platform_device *pdev)
static void adsp_load_fw(struct work_struct *adsp_ldr_work)
{

	struct platform_device *pdev = adsp_private;
	struct adsp_loader_private *priv = NULL;

	const char *adsp_dt = "qcom,adsp-state";
@@ -146,6 +150,11 @@ fail:
	return;
}

static void adsp_loader_do(struct platform_device *pdev)
{
	dev_info(&pdev->dev, "%s: scheduling work to load ADSP fw\n", __func__);
	schedule_work(&adsp_ldr_work);
}

static ssize_t adsp_boot_store(struct kobject *kobj,
	struct kobj_attribute *attr,
@@ -270,6 +279,8 @@ static int adsp_loader_probe(struct platform_device *pdev)
		return ret;
	}

	INIT_WORK(&adsp_ldr_work, adsp_load_fw);

	return 0;
}