Lines Matching refs:arcpgu

61 static inline void arc_pgu_write(struct arcpgu_drm_private *arcpgu,  in arc_pgu_write()  argument
64 iowrite32(value, arcpgu->regs + reg); in arc_pgu_write()
67 static inline u32 arc_pgu_read(struct arcpgu_drm_private *arcpgu, in arc_pgu_read() argument
70 return ioread32(arcpgu->regs + reg); in arc_pgu_read()
116 static void arc_pgu_set_pxl_fmt(struct arcpgu_drm_private *arcpgu) in arc_pgu_set_pxl_fmt() argument
118 const struct drm_framebuffer *fb = arcpgu->pipe.plane.state->fb; in arc_pgu_set_pxl_fmt()
132 reg_ctrl = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL); in arc_pgu_set_pxl_fmt()
137 arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, reg_ctrl); in arc_pgu_set_pxl_fmt()
143 struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe); in arc_pgu_mode_valid() local
147 rate = clk_round_rate(arcpgu->clk, clk_rate); in arc_pgu_mode_valid()
154 static void arc_pgu_mode_set(struct arcpgu_drm_private *arcpgu) in arc_pgu_mode_set() argument
156 struct drm_display_mode *m = &arcpgu->pipe.crtc.state->adjusted_mode; in arc_pgu_mode_set()
159 arc_pgu_write(arcpgu, ARCPGU_REG_FMT, in arc_pgu_mode_set()
162 arc_pgu_write(arcpgu, ARCPGU_REG_HSYNC, in arc_pgu_mode_set()
166 arc_pgu_write(arcpgu, ARCPGU_REG_VSYNC, in arc_pgu_mode_set()
170 arc_pgu_write(arcpgu, ARCPGU_REG_ACTIVE, in arc_pgu_mode_set()
174 val = arc_pgu_read(arcpgu, ARCPGU_REG_CTRL); in arc_pgu_mode_set()
186 arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, val); in arc_pgu_mode_set()
187 arc_pgu_write(arcpgu, ARCPGU_REG_STRIDE, 0); in arc_pgu_mode_set()
188 arc_pgu_write(arcpgu, ARCPGU_REG_START_SET, 1); in arc_pgu_mode_set()
190 arc_pgu_set_pxl_fmt(arcpgu); in arc_pgu_mode_set()
192 clk_set_rate(arcpgu->clk, m->crtc_clock * 1000); in arc_pgu_mode_set()
199 struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe); in arc_pgu_enable() local
201 arc_pgu_mode_set(arcpgu); in arc_pgu_enable()
203 clk_prepare_enable(arcpgu->clk); in arc_pgu_enable()
204 arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, in arc_pgu_enable()
205 arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) | in arc_pgu_enable()
211 struct arcpgu_drm_private *arcpgu = pipe_to_arcpgu_priv(pipe); in arc_pgu_disable() local
213 clk_disable_unprepare(arcpgu->clk); in arc_pgu_disable()
214 arc_pgu_write(arcpgu, ARCPGU_REG_CTRL, in arc_pgu_disable()
215 arc_pgu_read(arcpgu, ARCPGU_REG_CTRL) & in arc_pgu_disable()
222 struct arcpgu_drm_private *arcpgu; in arc_pgu_update() local
228 arcpgu = pipe_to_arcpgu_priv(pipe); in arc_pgu_update()
230 arc_pgu_write(arcpgu, ARCPGU_REG_BUF0_ADDR, gem->dma_addr); in arc_pgu_update()
248 static int arcpgu_load(struct arcpgu_drm_private *arcpgu) in arcpgu_load() argument
250 struct platform_device *pdev = to_platform_device(arcpgu->drm.dev); in arcpgu_load()
253 struct drm_device *drm = &arcpgu->drm; in arcpgu_load()
257 arcpgu->clk = devm_clk_get(drm->dev, "pxlclk"); in arcpgu_load()
258 if (IS_ERR(arcpgu->clk)) in arcpgu_load()
259 return PTR_ERR(arcpgu->clk); in arcpgu_load()
272 arcpgu->regs = devm_ioremap_resource(&pdev->dev, res); in arcpgu_load()
273 if (IS_ERR(arcpgu->regs)) in arcpgu_load()
274 return PTR_ERR(arcpgu->regs); in arcpgu_load()
277 arc_pgu_read(arcpgu, ARCPGU_REG_ID)); in arcpgu_load()
296 connector = &arcpgu->sim_conn; in arcpgu_load()
303 ret = drm_simple_display_pipe_init(drm, &arcpgu->pipe, &arc_pgu_pipe_funcs, in arcpgu_load()
318 ret = drm_simple_display_pipe_attach_bridge(&arcpgu->pipe, bridge); in arcpgu_load()
343 struct arcpgu_drm_private *arcpgu = dev_to_arcpgu(drm); in arcpgu_show_pxlclock() local
344 unsigned long clkrate = clk_get_rate(arcpgu->clk); in arcpgu_show_pxlclock()
345 unsigned long mode_clock = arcpgu->pipe.crtc.mode.crtc_clock * 1000; in arcpgu_show_pxlclock()
381 struct arcpgu_drm_private *arcpgu; in arcpgu_probe() local
384 arcpgu = devm_drm_dev_alloc(&pdev->dev, &arcpgu_drm_driver, in arcpgu_probe()
386 if (IS_ERR(arcpgu)) in arcpgu_probe()
387 return PTR_ERR(arcpgu); in arcpgu_probe()
389 ret = arcpgu_load(arcpgu); in arcpgu_probe()
393 ret = drm_dev_register(&arcpgu->drm, 0); in arcpgu_probe()
397 drm_fbdev_dma_setup(&arcpgu->drm, 16); in arcpgu_probe()
402 arcpgu_unload(&arcpgu->drm); in arcpgu_probe()