summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@kernel.org>2025-11-13 19:37:27 -0800
committerStephen Boyd <sboyd@kernel.org>2025-11-13 19:37:27 -0800
commit44244194e114b01368fd76dec2577755ead526b8 (patch)
tree5d96bc0a3ecaaa3d9df312e235693058495f0cf3 /include/linux
parent3a8660878839faadb4f1a6dd72c3179c1df56787 (diff)
parent6837c006d4e72d6add451411bcf407e0dea4ad25 (diff)
Merge tag 'samsung-drivers-firmware-clk-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into clk-samsung
Pull Samsung clk driver updates from Krzysztof Kozlowski: Extend Samsung ACPM (Alive Clock and Power Manager) firmware drivers: - Add support for passing DVFS (Dynamic Voltage and Frequency) messages to configure the clocks in ACPM device. - Add Exynos ACPM clock driver, which exposes to Linux several clocks handled by the ACPM (firmware) * tag 'samsung-drivers-firmware-clk-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux: firmware: exynos-acpm: add empty method to allow compile test MAINTAINERS: add ACPM clock bindings and driver clk: samsung: add Exynos ACPM clock driver firmware: exynos-acpm: register ACPM clocks pdev firmware: exynos-acpm: add DVFS protocol dt-bindings: firmware: google,gs101-acpm-ipc: add ACPM clocks
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/firmware/samsung/exynos-acpm-protocol.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/firmware/samsung/exynos-acpm-protocol.h b/include/linux/firmware/samsung/exynos-acpm-protocol.h
index f628bf1862c2..2091da965a5a 100644
--- a/include/linux/firmware/samsung/exynos-acpm-protocol.h
+++ b/include/linux/firmware/samsung/exynos-acpm-protocol.h
@@ -13,6 +13,15 @@
struct acpm_handle;
struct device_node;
+struct acpm_dvfs_ops {
+ int (*set_rate)(const struct acpm_handle *handle,
+ unsigned int acpm_chan_id, unsigned int clk_id,
+ unsigned long rate);
+ unsigned long (*get_rate)(const struct acpm_handle *handle,
+ unsigned int acpm_chan_id,
+ unsigned int clk_id);
+};
+
struct acpm_pmic_ops {
int (*read_reg)(const struct acpm_handle *handle,
unsigned int acpm_chan_id, u8 type, u8 reg, u8 chan,
@@ -32,6 +41,7 @@ struct acpm_pmic_ops {
};
struct acpm_ops {
+ struct acpm_dvfs_ops dvfs_ops;
struct acpm_pmic_ops pmic_ops;
};
@@ -45,7 +55,16 @@ struct acpm_handle {
struct device;
+#if IS_ENABLED(CONFIG_EXYNOS_ACPM_PROTOCOL)
const struct acpm_handle *devm_acpm_get_by_node(struct device *dev,
struct device_node *np);
+#else
+
+static inline const struct acpm_handle *devm_acpm_get_by_node(struct device *dev,
+ struct device_node *np)
+{
+ return NULL;
+}
+#endif
#endif /* __EXYNOS_ACPM_PROTOCOL_H */