Lines Matching refs:lvds
36 static void rcar_lvds_write(struct rcar_du_lvdsenc *lvds, u32 reg, u32 data) in rcar_lvds_write() argument
38 iowrite32(data, lvds->mmio + reg); in rcar_lvds_write()
41 static int rcar_du_lvdsenc_start(struct rcar_du_lvdsenc *lvds, in rcar_du_lvdsenc_start() argument
51 if (lvds->enabled) in rcar_du_lvdsenc_start()
54 ret = clk_prepare_enable(lvds->clock); in rcar_du_lvdsenc_start()
68 rcar_lvds_write(lvds, LVDPLLCR, pllcr); in rcar_du_lvdsenc_start()
77 rcar_lvds_write(lvds, LVDCTRCR, LVDCTRCR_CTR3SEL_ZERO | in rcar_du_lvdsenc_start()
81 if (rcar_du_needs(lvds->dev, RCAR_DU_QUIRK_LVDS_LANES)) in rcar_du_lvdsenc_start()
88 rcar_lvds_write(lvds, LVDCHCR, lvdhcr); in rcar_du_lvdsenc_start()
96 rcar_lvds_write(lvds, LVDCR0, lvdcr0); in rcar_du_lvdsenc_start()
99 rcar_lvds_write(lvds, LVDCR1, LVDCR1_CHSTBY(3) | LVDCR1_CHSTBY(2) | in rcar_du_lvdsenc_start()
106 rcar_lvds_write(lvds, LVDCR0, lvdcr0); in rcar_du_lvdsenc_start()
111 rcar_lvds_write(lvds, LVDCR0, lvdcr0); in rcar_du_lvdsenc_start()
113 lvds->enabled = true; in rcar_du_lvdsenc_start()
117 static void rcar_du_lvdsenc_stop(struct rcar_du_lvdsenc *lvds) in rcar_du_lvdsenc_stop() argument
119 if (!lvds->enabled) in rcar_du_lvdsenc_stop()
122 rcar_lvds_write(lvds, LVDCR0, 0); in rcar_du_lvdsenc_stop()
123 rcar_lvds_write(lvds, LVDCR1, 0); in rcar_du_lvdsenc_stop()
125 clk_disable_unprepare(lvds->clock); in rcar_du_lvdsenc_stop()
127 lvds->enabled = false; in rcar_du_lvdsenc_stop()
130 int rcar_du_lvdsenc_enable(struct rcar_du_lvdsenc *lvds, struct drm_crtc *crtc, in rcar_du_lvdsenc_enable() argument
134 rcar_du_lvdsenc_stop(lvds); in rcar_du_lvdsenc_enable()
138 return rcar_du_lvdsenc_start(lvds, rcrtc); in rcar_du_lvdsenc_enable()
143 static int rcar_du_lvdsenc_get_resources(struct rcar_du_lvdsenc *lvds, in rcar_du_lvdsenc_get_resources() argument
149 sprintf(name, "lvds.%u", lvds->index); in rcar_du_lvdsenc_get_resources()
152 lvds->mmio = devm_ioremap_resource(&pdev->dev, mem); in rcar_du_lvdsenc_get_resources()
153 if (IS_ERR(lvds->mmio)) in rcar_du_lvdsenc_get_resources()
154 return PTR_ERR(lvds->mmio); in rcar_du_lvdsenc_get_resources()
156 lvds->clock = devm_clk_get(&pdev->dev, name); in rcar_du_lvdsenc_get_resources()
157 if (IS_ERR(lvds->clock)) { in rcar_du_lvdsenc_get_resources()
159 return PTR_ERR(lvds->clock); in rcar_du_lvdsenc_get_resources()
168 struct rcar_du_lvdsenc *lvds; in rcar_du_lvdsenc_init() local
173 lvds = devm_kzalloc(&pdev->dev, sizeof(*lvds), GFP_KERNEL); in rcar_du_lvdsenc_init()
174 if (lvds == NULL) { in rcar_du_lvdsenc_init()
179 lvds->dev = rcdu; in rcar_du_lvdsenc_init()
180 lvds->index = i; in rcar_du_lvdsenc_init()
181 lvds->input = i ? RCAR_LVDS_INPUT_DU1 : RCAR_LVDS_INPUT_DU0; in rcar_du_lvdsenc_init()
182 lvds->enabled = false; in rcar_du_lvdsenc_init()
184 ret = rcar_du_lvdsenc_get_resources(lvds, pdev); in rcar_du_lvdsenc_init()
188 rcdu->lvds[i] = lvds; in rcar_du_lvdsenc_init()