1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright (C) 2023 Loongson Technology Corporation Limited
4 */
5
6#ifndef __LSDC_GFXPLL_H__
7#define __LSDC_GFXPLL_H__
8
9#include <drm/drm_device.h>
10
11struct loongson_gfxpll;
12
13struct loongson_gfxpll_parms {
14 unsigned int ref_clock;
15 unsigned int div_ref;
16 unsigned int loopc;
17 unsigned int div_out_dc;
18 unsigned int div_out_gmc;
19 unsigned int div_out_gpu;
20};
21
22struct loongson_gfxpll_funcs {
23 int (*init)(struct loongson_gfxpll * const this);
24
25 int (*update)(struct loongson_gfxpll * const this,
26 struct loongson_gfxpll_parms const *pin);
27
28 void (*get_rates)(struct loongson_gfxpll * const this,
29 unsigned int *dc, unsigned int *gmc, unsigned int *gpu);
30
31 void (*print)(struct loongson_gfxpll * const this,
32 struct drm_printer *printer, bool verbose);
33};
34
35struct loongson_gfxpll {
36 struct drm_device *ddev;
37 void __iomem *mmio;
38
39 /* PLL register offset */
40 u32 reg_base;
41 /* PLL register size in bytes */
42 u32 reg_size;
43
44 const struct loongson_gfxpll_funcs *funcs;
45
46 struct loongson_gfxpll_parms parms;
47};
48
49int loongson_gfxpll_create(struct drm_device *ddev,
50 struct loongson_gfxpll **ppout);
51
52#endif
53

source code of linux/drivers/gpu/drm/loongson/lsdc_gfxpll.h