| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /* SPDX-License-Identifier: GPL-2.0+ */
- /*
- * Copyright (C) 2023 Loongson Technology Corporation Limited
- */
- #ifndef __LSDC_GFXPLL_H__
- #define __LSDC_GFXPLL_H__
- #include <drm/drm_device.h>
- struct loongson_gfxpll;
- struct loongson_gfxpll_parms {
- unsigned int ref_clock;
- unsigned int div_ref;
- unsigned int loopc;
- unsigned int div_out_dc;
- unsigned int div_out_gmc;
- unsigned int div_out_gpu;
- };
- struct loongson_gfxpll_funcs {
- int (*init)(struct loongson_gfxpll * const this);
- int (*update)(struct loongson_gfxpll * const this,
- struct loongson_gfxpll_parms const *pin);
- void (*get_rates)(struct loongson_gfxpll * const this,
- unsigned int *dc, unsigned int *gmc, unsigned int *gpu);
- void (*print)(struct loongson_gfxpll * const this,
- struct drm_printer *printer, bool verbose);
- };
- struct loongson_gfxpll {
- struct drm_device *ddev;
- void __iomem *mmio;
- /* PLL register offset */
- u32 reg_base;
- /* PLL register size in bytes */
- u32 reg_size;
- const struct loongson_gfxpll_funcs *funcs;
- struct loongson_gfxpll_parms parms;
- };
- int loongson_gfxpll_create(struct drm_device *ddev,
- struct loongson_gfxpll **ppout);
- #endif
|