File Index
Files and directories
Sign in
FILE

synth.h

File preview with syntax highlighting.

linux-6.19.14/drivers/dpll/zl3073x/synth.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2
 3#ifndef _ZL3073X_SYNTH_H
 4#define _ZL3073X_SYNTH_H
 5
 6#include <linux/bitfield.h>
 7#include <linux/math64.h>
 8#include <linux/types.h>
 9
10#include "regs.h"
11
12struct zl3073x_dev;
13
14/**
15 * struct zl3073x_synth - synthesizer state
16 * @freq_mult: frequency multiplier
17 * @freq_base: frequency base
18 * @freq_m: frequency numerator
19 * @freq_n: frequency denominator
20 * @ctrl: synth control
21 */
22struct zl3073x_synth {
23	u32	freq_mult;
24	u16	freq_base;
25	u16	freq_m;
26	u16	freq_n;
27	u8	ctrl;
28};
29
30int zl3073x_synth_state_fetch(struct zl3073x_dev *zldev, u8 synth_id);
31
32const struct zl3073x_synth *zl3073x_synth_state_get(struct zl3073x_dev *zldev,
33						    u8 synth_id);
34
35int zl3073x_synth_state_set(struct zl3073x_dev *zldev, u8 synth_id,
36			    const struct zl3073x_synth *synth);
37
38/**
39 * zl3073x_synth_dpll_get - get DPLL ID the synth is driven by
40 * @synth: pointer to synth state
41 *
42 * Return: ID of DPLL the given synthetizer is driven by
43 */
44static inline u8 zl3073x_synth_dpll_get(const struct zl3073x_synth *synth)
45{
46	return FIELD_GET(ZL_SYNTH_CTRL_DPLL_SEL, synth->ctrl);
47}
48
49/**
50 * zl3073x_synth_freq_get - get synth current freq
51 * @synth: pointer to synth state
52 *
53 * Return: frequency of given synthetizer
54 */
55static inline u32 zl3073x_synth_freq_get(const struct zl3073x_synth *synth)
56{
57	return mul_u64_u32_div(synth->freq_base * synth->freq_m,
58			       synth->freq_mult, synth->freq_n);
59}
60
61/**
62 * zl3073x_synth_is_enabled - check if the given synth is enabled
63 * @synth: pointer to synth state
64 *
65 * Return: true if synth is enabled, false otherwise
66 */
67static inline bool zl3073x_synth_is_enabled(const struct zl3073x_synth *synth)
68{
69	return FIELD_GET(ZL_SYNTH_CTRL_EN, synth->ctrl);
70}
71
72#endif /* _ZL3073X_SYNTH_H */
~/ Read-only file preview.