mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
soc: rockchip: amp: support amp driver
1.Protect clock and iomux resources used by AMP. 2.Support RK3568 AMP. Signed-off-by: Steven Liu <steven.liu@rock-chips.com> Change-Id: If53e893fac916217bfa5618350b1706b742b34e7
This commit is contained in:
@@ -14,6 +14,12 @@ config ANDROID_VERSION
|
||||
The version of Android kernel supported.
|
||||
The value is 0xAABBCCRR, corresponding to Android A.B.C release R
|
||||
|
||||
config ROCKCHIP_AMP
|
||||
tristate "Rockchip AMP support"
|
||||
help
|
||||
Say y here to enable Rockchip AMP support.
|
||||
This option protects resources used by AMP.
|
||||
|
||||
config ROCKCHIP_CPUINFO
|
||||
tristate "Rockchip cpuinfo support"
|
||||
depends on (ROCKCHIP_EFUSE || ROCKCHIP_OTP) && (ARM64 || ARM)
|
||||
|
||||
@@ -14,6 +14,7 @@ obj-$(CONFIG_ROCKCHIP_IPA) += rockchip_ipa.o
|
||||
obj-$(CONFIG_ROCKCHIP_OPP) += rockchip_opp_select.o
|
||||
obj-$(CONFIG_ROCKCHIP_PVTM) += rockchip_pvtm.o
|
||||
obj-$(CONFIG_ROCKCHIP_RAMDISK) += rockchip_ramdisk.o
|
||||
obj-$(CONFIG_ROCKCHIP_AMP) += rockchip_amp.o
|
||||
obj-$(CONFIG_ROCKCHIP_SUSPEND_MODE) += rockchip_pm_config.o
|
||||
obj-$(CONFIG_ROCKCHIP_SYSTEM_MONITOR) += rockchip_system_monitor.o
|
||||
obj-$(CONFIG_ROCKCHIP_THUNDER_BOOT_CRYPTO) += rockchip_thunderboot_crypto.o
|
||||
|
||||
50
drivers/soc/rockchip/rockchip_amp.c
Normal file
50
drivers/soc/rockchip/rockchip_amp.c
Normal file
@@ -0,0 +1,50 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Rockchip AMP support.
|
||||
*
|
||||
* Copyright (c) 2021 Rockchip Electronics Co. Ltd.
|
||||
* Author: Tony Xie <tony.xie@rock-chips.com>
|
||||
*/
|
||||
|
||||
#include <linux/clk.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
static const struct of_device_id rockchip_amp_match[] = {
|
||||
{
|
||||
.compatible = "rockchip,rk3568-amp",
|
||||
},
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, rockchip_amp_match);
|
||||
|
||||
static int rockchip_amp_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct clk_bulk_data *clks;
|
||||
int num_clks;
|
||||
int ret;
|
||||
|
||||
num_clks = devm_clk_bulk_get_all(&pdev->dev, &clks);
|
||||
if (num_clks < 1)
|
||||
return -ENODEV;
|
||||
ret = clk_bulk_prepare_enable(num_clks, clks);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev, "failed to prepare enable clks: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver rockchip_amp_driver = {
|
||||
.probe = rockchip_amp_probe,
|
||||
.driver = {
|
||||
.name = "rockchip-amp",
|
||||
.of_match_table = rockchip_amp_match,
|
||||
},
|
||||
};
|
||||
module_platform_driver(rockchip_amp_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Rockchip AMP driver");
|
||||
MODULE_AUTHOR("Tony xie<tony.xie@rock-chips.com>");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
Reference in New Issue
Block a user