Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/drivers/dpll/zl3073x/dpll.h
51342 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#ifndef _ZL3073X_DPLL_H
4
#define _ZL3073X_DPLL_H
5
6
#include <linux/dpll.h>
7
#include <linux/list.h>
8
9
#include "core.h"
10
11
/**
12
* struct zl3073x_dpll - ZL3073x DPLL sub-device structure
13
* @list: this DPLL list entry
14
* @dev: pointer to multi-function parent device
15
* @id: DPLL index
16
* @refsel_mode: reference selection mode
17
* @forced_ref: selected reference in forced reference lock mode
18
* @check_count: periodic check counter
19
* @phase_monitor: is phase offset monitor enabled
20
* @dpll_dev: pointer to registered DPLL device
21
* @tracker: tracking object for the acquired reference
22
* @lock_status: last saved DPLL lock status
23
* @pins: list of pins
24
* @change_work: device change notification work
25
*/
26
struct zl3073x_dpll {
27
struct list_head list;
28
struct zl3073x_dev *dev;
29
u8 id;
30
u8 refsel_mode;
31
u8 forced_ref;
32
u8 check_count;
33
bool phase_monitor;
34
struct dpll_device *dpll_dev;
35
dpll_tracker tracker;
36
enum dpll_lock_status lock_status;
37
struct list_head pins;
38
struct work_struct change_work;
39
};
40
41
struct zl3073x_dpll *zl3073x_dpll_alloc(struct zl3073x_dev *zldev, u8 ch);
42
void zl3073x_dpll_free(struct zl3073x_dpll *zldpll);
43
44
int zl3073x_dpll_register(struct zl3073x_dpll *zldpll);
45
void zl3073x_dpll_unregister(struct zl3073x_dpll *zldpll);
46
47
int zl3073x_dpll_init_fine_phase_adjust(struct zl3073x_dev *zldev);
48
void zl3073x_dpll_changes_check(struct zl3073x_dpll *zldpll);
49
50
#endif /* _ZL3073X_DPLL_H */
51
52