diff --git a/drivers/soc/rockchip/Kconfig b/drivers/soc/rockchip/Kconfig index b7c1bf17f436..53fa90da72c2 100644 --- a/drivers/soc/rockchip/Kconfig +++ b/drivers/soc/rockchip/Kconfig @@ -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) diff --git a/drivers/soc/rockchip/Makefile b/drivers/soc/rockchip/Makefile index 9b6fb071213a..4e256ce633c9 100644 --- a/drivers/soc/rockchip/Makefile +++ b/drivers/soc/rockchip/Makefile @@ -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 diff --git a/drivers/soc/rockchip/rockchip_amp.c b/drivers/soc/rockchip/rockchip_amp.c new file mode 100644 index 000000000000..e3defc225d4c --- /dev/null +++ b/drivers/soc/rockchip/rockchip_amp.c @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Rockchip AMP support. + * + * Copyright (c) 2021 Rockchip Electronics Co. Ltd. + * Author: Tony Xie + */ + +#include +#include +#include +#include + +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"); +MODULE_LICENSE("GPL v2");