Lines Matching defs:mxsfb
5 * This code is based on drivers/video/fbdev/mxsfb.c :
76 void mxsfb_enable_axi_clk(struct mxsfb_drm_private *mxsfb)
78 if (mxsfb->clk_axi)
79 clk_prepare_enable(mxsfb->clk_axi);
82 void mxsfb_disable_axi_clk(struct mxsfb_drm_private *mxsfb)
84 if (mxsfb->clk_axi)
85 clk_disable_unprepare(mxsfb->clk_axi);
116 static int mxsfb_attach_bridge(struct mxsfb_drm_private *mxsfb)
118 struct drm_device *drm = mxsfb->drm;
139 ret = drm_bridge_attach(&mxsfb->encoder, bridge, NULL, 0);
143 mxsfb->bridge = bridge;
150 mxsfb->connector = drm_connector_list_iter_next(&iter);
160 struct mxsfb_drm_private *mxsfb;
164 mxsfb = devm_kzalloc(&pdev->dev, sizeof(*mxsfb), GFP_KERNEL);
165 if (!mxsfb)
168 mxsfb->drm = drm;
169 drm->dev_private = mxsfb;
170 mxsfb->devdata = devdata;
173 mxsfb->base = devm_ioremap_resource(drm->dev, res);
174 if (IS_ERR(mxsfb->base))
175 return PTR_ERR(mxsfb->base);
177 mxsfb->clk = devm_clk_get(drm->dev, NULL);
178 if (IS_ERR(mxsfb->clk))
179 return PTR_ERR(mxsfb->clk);
181 mxsfb->clk_axi = devm_clk_get(drm->dev, "axi");
182 if (IS_ERR(mxsfb->clk_axi))
183 mxsfb->clk_axi = NULL;
185 mxsfb->clk_disp_axi = devm_clk_get(drm->dev, "disp_axi");
186 if (IS_ERR(mxsfb->clk_disp_axi))
187 mxsfb->clk_disp_axi = NULL;
198 ret = mxsfb_kms_init(mxsfb);
211 drm_crtc_vblank_off(&mxsfb->crtc);
213 ret = mxsfb_attach_bridge(mxsfb);
268 struct mxsfb_drm_private *mxsfb = drm->dev_private;
270 mxsfb_enable_axi_clk(mxsfb);
273 writel(CTRL1_CUR_FRAME_DONE_IRQ_EN, mxsfb->base + LCDC_CTRL1 + REG_CLR);
274 writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
276 mxsfb_disable_axi_clk(mxsfb);
282 struct mxsfb_drm_private *mxsfb = drm->dev_private;
285 reg = readl(mxsfb->base + LCDC_CTRL1);
288 drm_crtc_handle_vblank(&mxsfb->crtc);
290 writel(CTRL1_CUR_FRAME_DONE_IRQ, mxsfb->base + LCDC_CTRL1 + REG_CLR);
304 .name = "mxsfb-drm",
388 .name = "mxsfb",