mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
pinctrl: qcom: lpass-lpi: Enable runtime PM hooks on LPASS LPI SoCs
The LPASS LPI core conversion to PM clock framework relies on variant drivers wiring runtime PM callbacks. Hook up runtime PM callbacks for the LPASS LPI variant drivers touched in this patch so they are prepared for the shared core conversion. This commit is a preparatory NOP on its own, as runtime PM is still disabled on these devices until the following core conversion patch. This is a mechanical per-variant driver update that relies on the same generic PM clock flow (of_pm_clk_add_clks() + pm_clk_suspend/ pm_clk_resume()) and DT-provided clocks. Runtime behavior was validated on Kodiak (sc7280). Suggested-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Signed-off-by: Ajay Kumar Nandam <ajay.nandam@oss.qualcomm.com> Signed-off-by: Linus Walleij <linusw@kernel.org>
This commit is contained in:
parent
be3ee6e671
commit
f0c565076d
|
|
@ -7,6 +7,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -203,10 +205,15 @@ static const struct of_device_id lpi_pinctrl_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-milos-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -129,20 +131,25 @@ static const struct lpi_pinctrl_variant_data sc7280_lpi_data = {
|
|||
|
||||
static const struct of_device_id lpi_pinctrl_of_match[] = {
|
||||
{
|
||||
.compatible = "qcom,sc7280-lpass-lpi-pinctrl",
|
||||
.data = &sc7280_lpi_data,
|
||||
.compatible = "qcom,sc7280-lpass-lpi-pinctrl",
|
||||
.data = &sc7280_lpi_data,
|
||||
}, {
|
||||
.compatible = "qcom,sm8350-lpass-lpi-pinctrl",
|
||||
.data = &sc7280_lpi_data,
|
||||
.compatible = "qcom,sm8350-lpass-lpi-pinctrl",
|
||||
.data = &sc7280_lpi_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sc7280-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.name = "qcom-sc7280-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -166,17 +168,22 @@ static const struct lpi_pinctrl_variant_data sc8280xp_lpi_data = {
|
|||
|
||||
static const struct of_device_id lpi_pinctrl_of_match[] = {
|
||||
{
|
||||
.compatible = "qcom,sc8280xp-lpass-lpi-pinctrl",
|
||||
.data = &sc8280xp_lpi_data,
|
||||
.compatible = "qcom,sc8280xp-lpass-lpi-pinctrl",
|
||||
.data = &sc8280xp_lpi_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sc8280xp-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.name = "qcom-sc8280xp-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/pinctrl/pinctrl.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
|
@ -145,10 +147,15 @@ static const struct of_device_id sdm660_lpi_pinctrl_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, sdm660_lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver sdm660_lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sdm660-lpass-lpi-pinctrl",
|
||||
.of_match_table = sdm660_lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/pinctrl/pinctrl.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
|
@ -151,10 +153,15 @@ static const struct of_device_id sdm670_lpi_pinctrl_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, sdm670_lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver sdm670_lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sdm670-lpass-lpi-pinctrl",
|
||||
.of_match_table = sdm670_lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -221,10 +223,15 @@ static const struct of_device_id lpi_pinctrl_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sm4250-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -141,10 +143,15 @@ static const struct of_device_id lpi_pinctrl_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sm6115-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -135,10 +137,15 @@ static const struct of_device_id lpi_pinctrl_of_match[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sm6350-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -127,17 +129,22 @@ static const struct lpi_pinctrl_variant_data sm8250_lpi_data = {
|
|||
|
||||
static const struct of_device_id lpi_pinctrl_of_match[] = {
|
||||
{
|
||||
.compatible = "qcom,sm8250-lpass-lpi-pinctrl",
|
||||
.data = &sm8250_lpi_data,
|
||||
.compatible = "qcom,sm8250-lpass-lpi-pinctrl",
|
||||
.data = &sm8250_lpi_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sm8250-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.name = "qcom-sm8250-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -195,17 +197,22 @@ static const struct lpi_pinctrl_variant_data sm8450_lpi_data = {
|
|||
|
||||
static const struct of_device_id lpi_pinctrl_of_match[] = {
|
||||
{
|
||||
.compatible = "qcom,sm8450-lpass-lpi-pinctrl",
|
||||
.data = &sm8450_lpi_data,
|
||||
.compatible = "qcom,sm8450-lpass-lpi-pinctrl",
|
||||
.data = &sm8450_lpi_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sm8450-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.name = "qcom-sm8450-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -203,17 +205,22 @@ static const struct lpi_pinctrl_variant_data sm8550_lpi_data = {
|
|||
|
||||
static const struct of_device_id lpi_pinctrl_of_match[] = {
|
||||
{
|
||||
.compatible = "qcom,sm8550-lpass-lpi-pinctrl",
|
||||
.data = &sm8550_lpi_data,
|
||||
.compatible = "qcom,sm8550-lpass-lpi-pinctrl",
|
||||
.data = &sm8550_lpi_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sm8550-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.name = "qcom-sm8550-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include <linux/gpio/driver.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_clock.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
|
||||
#include "pinctrl-lpass-lpi.h"
|
||||
|
||||
|
|
@ -210,17 +212,22 @@ static const struct lpi_pinctrl_variant_data sm8650_lpi_data = {
|
|||
|
||||
static const struct of_device_id lpi_pinctrl_of_match[] = {
|
||||
{
|
||||
.compatible = "qcom,sm8650-lpass-lpi-pinctrl",
|
||||
.data = &sm8650_lpi_data,
|
||||
.compatible = "qcom,sm8650-lpass-lpi-pinctrl",
|
||||
.data = &sm8650_lpi_data,
|
||||
},
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lpi_pinctrl_of_match);
|
||||
|
||||
static const struct dev_pm_ops lpi_pinctrl_pm_ops = {
|
||||
RUNTIME_PM_OPS(pm_clk_suspend, pm_clk_resume, NULL)
|
||||
};
|
||||
|
||||
static struct platform_driver lpi_pinctrl_driver = {
|
||||
.driver = {
|
||||
.name = "qcom-sm8650-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.name = "qcom-sm8650-lpass-lpi-pinctrl",
|
||||
.of_match_table = lpi_pinctrl_of_match,
|
||||
.pm = pm_ptr(&lpi_pinctrl_pm_ops),
|
||||
},
|
||||
.probe = lpi_pinctrl_probe,
|
||||
.remove = lpi_pinctrl_remove,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user