Lines Matching +full:freq +full:- +full:table +full:- +full:hz
1 // SPDX-License-Identifier: GPL-2.0+
58 {148500, 1920, 1080, 60, 11, 49, 3}, /* 1920x1080@60Hz */
59 {141750, 1920, 1080, 60, 11, 78, 5}, /* 1920x1080@60Hz */
60 /* 1920x1080@50Hz */
61 {174500, 1920, 1080, 75, 17, 89, 3}, /* 1920x1080@75Hz */
62 {181250, 2560, 1080, 75, 8, 58, 4}, /* 2560x1080@75Hz */
63 {297000, 2560, 1080, 30, 8, 95, 4}, /* 3840x2160@30Hz */
64 {301992, 1920, 1080, 100, 10, 151, 5}, /* 1920x1080@100Hz */
65 {146250, 1680, 1050, 60, 16, 117, 5}, /* 1680x1050@60Hz */
66 {135000, 1280, 1024, 75, 10, 54, 4}, /* 1280x1024@75Hz */
67 {119000, 1680, 1050, 60, 20, 119, 5}, /* 1680x1050@60Hz */
68 {108000, 1600, 900, 60, 15, 81, 5}, /* 1600x900@60Hz */
69 /* 1280x1024@60Hz */
70 /* 1280x960@60Hz */
71 /* 1152x864@75Hz */
73 {106500, 1440, 900, 60, 19, 81, 4}, /* 1440x900@60Hz */
74 {88750, 1440, 900, 60, 16, 71, 5}, /* 1440x900@60Hz */
75 {83500, 1280, 800, 60, 17, 71, 5}, /* 1280x800@60Hz */
76 {71000, 1280, 800, 60, 20, 71, 5}, /* 1280x800@60Hz */
78 {74250, 1280, 720, 60, 22, 49, 3}, /* 1280x720@60Hz */
79 /* 1280x720@50Hz */
81 {78750, 1024, 768, 75, 16, 63, 5}, /* 1024x768@75Hz */
82 {75000, 1024, 768, 70, 29, 87, 4}, /* 1024x768@70Hz */
83 {65000, 1024, 768, 60, 20, 39, 3}, /* 1024x768@60Hz */
85 {51200, 1024, 600, 60, 25, 64, 5}, /* 1024x600@60Hz */
87 {57284, 832, 624, 75, 24, 55, 4}, /* 832x624@75Hz */
88 {49500, 800, 600, 75, 40, 99, 5}, /* 800x600@75Hz */
89 {50000, 800, 600, 72, 44, 88, 4}, /* 800x600@72Hz */
90 {40000, 800, 600, 60, 30, 36, 3}, /* 800x600@60Hz */
91 {36000, 800, 600, 56, 50, 72, 4}, /* 800x600@56Hz */
92 {31500, 640, 480, 75, 40, 63, 5}, /* 640x480@75Hz */
93 /* 640x480@73Hz */
95 {30240, 640, 480, 67, 62, 75, 4}, /* 640x480@67Hz */
96 {27000, 720, 576, 50, 50, 54, 4}, /* 720x576@60Hz */
97 {25175, 640, 480, 60, 85, 107, 5}, /* 640x480@60Hz */
98 {25200, 640, 480, 60, 50, 63, 5}, /* 640x480@60Hz */
99 /* 720x480@60Hz */
106 iounmap(this->mmio); in lsdc_pixel_pll_free()
108 kfree(this->priv); in lsdc_pixel_pll_free()
122 this->mmio = ioremap(this->reg_base, this->reg_size); in lsdc_pixel_pll_setup()
123 if (!this->mmio) in lsdc_pixel_pll_setup()
124 return -ENOMEM; in lsdc_pixel_pll_setup()
128 iounmap(this->mmio); in lsdc_pixel_pll_setup()
129 return -ENOMEM; in lsdc_pixel_pll_setup()
132 pparms->ref_clock = LSDC_PLL_REF_CLK_KHZ; in lsdc_pixel_pll_setup()
134 this->priv = pparms; in lsdc_pixel_pll_setup()
136 return drmm_add_action_or_reset(this->ddev, lsdc_pixel_pll_free, this); in lsdc_pixel_pll_setup()
140 * Find a set of pll parameters from a static local table which avoid
147 * Return 0 if success, return -1 if not found.
160 if (clock == pt->clock) { in lsdc_pixpll_find()
161 pout->div_ref = pt->div_ref; in lsdc_pixpll_find()
162 pout->loopc = pt->loopc; in lsdc_pixpll_find()
163 pout->div_out = pt->div_out; in lsdc_pixpll_find()
169 drm_dbg_kms(this->ddev, "pixel clock %u: miss\n", clock); in lsdc_pixpll_find()
171 return -1; in lsdc_pixpll_find()
196 struct lsdc_pixpll_parms *pparms = this->priv; in lsdc_pixel_pll_compute()
197 unsigned int refclk = pparms->ref_clock; in lsdc_pixel_pll_compute()
219 diff = clock - computed; in lsdc_pixel_pll_compute()
221 diff = computed - clock; in lsdc_pixel_pll_compute()
225 pparms->div_ref = div_ref; in lsdc_pixel_pll_compute()
226 pparms->div_out = div_out; in lsdc_pixel_pll_compute()
227 pparms->loopc = loopc; in lsdc_pixel_pll_compute()
244 drm_dbg(this->ddev, "can't find suitable params for %u khz\n", clock); in lsdc_pixel_pll_compute()
255 dst->d = readq(this->mmio); in __pixpll_rreg()
257 dst->w[0] = readl(this->mmio); in __pixpll_rreg()
258 dst->w[1] = readl(this->mmio + 4); in __pixpll_rreg()
266 writeq(src->d, this->mmio); in __pixpll_wreg()
268 writel(src->w[0], this->mmio); in __pixpll_wreg()
269 writel(src->w[1], this->mmio + 4); in __pixpll_wreg()
357 pixpll_reg.bitmap.div_ref = p->div_ref; in __pixpll_ops_set_param()
358 pixpll_reg.bitmap.loopc = p->loopc; in __pixpll_ops_set_param()
359 pixpll_reg.bitmap.div_out = p->div_out; in __pixpll_ops_set_param()
389 drm_dbg(this->ddev, "%u loop waited\n", counter); in __pixpll_ops_wait_locked()
430 struct lsdc_pixpll_parms *ppar = this->priv; in lsdc_pixpll_get_freq()
432 unsigned int freq; in lsdc_pixpll_get_freq() local
436 ppar->div_ref = pix_pll_reg.bitmap.div_ref; in lsdc_pixpll_get_freq()
437 ppar->loopc = pix_pll_reg.bitmap.loopc; in lsdc_pixpll_get_freq()
438 ppar->div_out = pix_pll_reg.bitmap.div_out; in lsdc_pixpll_get_freq()
440 freq = ppar->ref_clock / ppar->div_ref * ppar->loopc / ppar->div_out; in lsdc_pixpll_get_freq()
442 return freq; in lsdc_pixpll_get_freq()
448 struct lsdc_pixpll_parms *parms = this->priv; in lsdc_pixpll_print()
451 parms->div_ref, parms->loopc, parms->div_out); in lsdc_pixpll_print()
474 const struct lsdc_desc *descp = ldev->descp; in lsdc_pixpll_init()
477 this->ddev = ddev; in lsdc_pixpll_init()
478 this->reg_size = 8; in lsdc_pixpll_init()
479 this->reg_base = gfx->conf_reg_base + gfx->pixpll[index].reg_offset; in lsdc_pixpll_init()
480 this->funcs = &__pixpll_default_funcs; in lsdc_pixpll_init()
482 return this->funcs->setup(this); in lsdc_pixpll_init()