Lines Matching refs:rgrp

33 u32 rcar_du_group_read(struct rcar_du_group *rgrp, u32 reg)  in rcar_du_group_read()  argument
35 return rcar_du_read(rgrp->dev, rgrp->mmio_offset + reg); in rcar_du_group_read()
38 void rcar_du_group_write(struct rcar_du_group *rgrp, u32 reg, u32 data) in rcar_du_group_write() argument
40 rcar_du_write(rgrp->dev, rgrp->mmio_offset + reg, data); in rcar_du_group_write()
43 static void rcar_du_group_setup_pins(struct rcar_du_group *rgrp) in rcar_du_group_setup_pins() argument
47 if (rgrp->channels_mask & BIT(0)) in rcar_du_group_setup_pins()
50 if (rgrp->channels_mask & BIT(1)) in rcar_du_group_setup_pins()
53 rcar_du_group_write(rgrp, DEFR6, defr6); in rcar_du_group_setup_pins()
56 static void rcar_du_group_setup_defr8(struct rcar_du_group *rgrp) in rcar_du_group_setup_defr8() argument
58 struct rcar_du_device *rcdu = rgrp->dev; in rcar_du_group_setup_defr8()
69 if (rgrp->index == 0) { in rcar_du_group_setup_defr8()
71 if (rgrp->dev->vspd1_sink == 2) in rcar_du_group_setup_defr8()
80 if (rgrp->index == rcdu->dpad0_source / 2) in rcar_du_group_setup_defr8()
84 rcar_du_group_write(rgrp, DEFR8, defr8); in rcar_du_group_setup_defr8()
87 static void rcar_du_group_setup_didsr(struct rcar_du_group *rgrp) in rcar_du_group_setup_didsr() argument
89 struct rcar_du_device *rcdu = rgrp->dev; in rcar_du_group_setup_didsr()
103 if (rcdu->info->gen < 3 && rgrp->index == 0) { in rcar_du_group_setup_didsr()
110 } else if (rcdu->info->gen >= 3 && rgrp->num_crtcs > 1) { in rcar_du_group_setup_didsr()
115 rcrtc = &rcdu->crtcs[rgrp->index * 2]; in rcar_du_group_setup_didsr()
116 num_crtcs = rgrp->num_crtcs; in rcar_du_group_setup_didsr()
134 rcar_du_group_write(rgrp, DIDSR, didsr); in rcar_du_group_setup_didsr()
137 static void rcar_du_group_setup(struct rcar_du_group *rgrp) in rcar_du_group_setup() argument
139 struct rcar_du_device *rcdu = rgrp->dev; in rcar_du_group_setup()
144 rcar_du_group_write(rgrp, DEFR, DEFR_CODE | DEFR_DEFE); in rcar_du_group_setup()
146 rcar_du_group_write(rgrp, DEFR2, DEFR2_CODE | DEFR2_DEFE2G); in rcar_du_group_setup()
147 rcar_du_group_write(rgrp, DEFR3, DEFR3_CODE | DEFR3_DEFE3); in rcar_du_group_setup()
148 rcar_du_group_write(rgrp, DEFR4, DEFR4_CODE); in rcar_du_group_setup()
150 rcar_du_group_write(rgrp, DEFR5, DEFR5_CODE | DEFR5_DEFE5); in rcar_du_group_setup()
153 rcar_du_group_setup_pins(rgrp); in rcar_du_group_setup()
161 defr7 |= (rgrp->cmms_mask & BIT(1) ? DEFR7_CMME1 : 0) | in rcar_du_group_setup()
162 (rgrp->cmms_mask & BIT(0) ? DEFR7_CMME0 : 0); in rcar_du_group_setup()
163 rcar_du_group_write(rgrp, DEFR7, defr7); in rcar_du_group_setup()
168 rcar_du_group_setup_defr8(rgrp); in rcar_du_group_setup()
169 rcar_du_group_setup_didsr(rgrp); in rcar_du_group_setup()
173 rcar_du_group_write(rgrp, DEFR10, DEFR10_CODE | DEFR10_DEFE10); in rcar_du_group_setup()
184 if (rcdu->info->gen >= 3 && rgrp->num_crtcs == 1) in rcar_du_group_setup()
186 rcar_du_group_write(rgrp, DORCR, dorcr); in rcar_du_group_setup()
189 mutex_lock(&rgrp->lock); in rcar_du_group_setup()
190 rcar_du_group_write(rgrp, DPTSR, (rgrp->dptsr_planes << 16) | in rcar_du_group_setup()
191 rgrp->dptsr_planes); in rcar_du_group_setup()
192 mutex_unlock(&rgrp->lock); in rcar_du_group_setup()
205 int rcar_du_group_get(struct rcar_du_group *rgrp) in rcar_du_group_get() argument
207 if (rgrp->use_count) in rcar_du_group_get()
210 rcar_du_group_setup(rgrp); in rcar_du_group_get()
213 rgrp->use_count++; in rcar_du_group_get()
222 void rcar_du_group_put(struct rcar_du_group *rgrp) in rcar_du_group_put() argument
224 --rgrp->use_count; in rcar_du_group_put()
227 static void __rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool start) in __rcar_du_group_start_stop() argument
229 struct rcar_du_device *rcdu = rgrp->dev; in __rcar_du_group_start_stop()
239 if (rcdu->info->channels_mask & BIT(rgrp->index * 2)) { in __rcar_du_group_start_stop()
240 struct rcar_du_crtc *rcrtc = &rgrp->dev->crtcs[rgrp->index * 2]; in __rcar_du_group_start_stop()
245 rcar_du_group_write(rgrp, DSYSR, in __rcar_du_group_start_stop()
250 void rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool start) in rcar_du_group_start_stop() argument
265 if (rgrp->used_crtcs++ != 0) in rcar_du_group_start_stop()
266 __rcar_du_group_start_stop(rgrp, false); in rcar_du_group_start_stop()
267 __rcar_du_group_start_stop(rgrp, true); in rcar_du_group_start_stop()
269 if (--rgrp->used_crtcs == 0) in rcar_du_group_start_stop()
270 __rcar_du_group_start_stop(rgrp, false); in rcar_du_group_start_stop()
274 void rcar_du_group_restart(struct rcar_du_group *rgrp) in rcar_du_group_restart() argument
276 rgrp->need_restart = false; in rcar_du_group_restart()
278 __rcar_du_group_start_stop(rgrp, false); in rcar_du_group_restart()
279 __rcar_du_group_start_stop(rgrp, true); in rcar_du_group_restart()
284 struct rcar_du_group *rgrp; in rcar_du_set_dpad0_vsp1_routing() local
300 rgrp = &rcdu->groups[index]; in rcar_du_set_dpad0_vsp1_routing()
307 rcar_du_group_setup_defr8(rgrp); in rcar_du_set_dpad0_vsp1_routing()
314 static void rcar_du_group_set_dpad_levels(struct rcar_du_group *rgrp) in rcar_du_group_set_dpad_levels() argument
324 struct rcar_du_device *rcdu = rgrp->dev; in rcar_du_group_set_dpad_levels()
341 for (i = 0; i < rgrp->num_crtcs; ++i) { in rcar_du_group_set_dpad_levels()
345 rcrtc = &rcdu->crtcs[rgrp->index * 2 + i]; in rcar_du_group_set_dpad_levels()
352 rcar_du_group_write(rgrp, DOFLR, doflr); in rcar_du_group_set_dpad_levels()
355 int rcar_du_group_set_routing(struct rcar_du_group *rgrp) in rcar_du_group_set_routing() argument
357 struct rcar_du_device *rcdu = rgrp->dev; in rcar_du_group_set_routing()
358 u32 dorcr = rcar_du_group_read(rgrp, DORCR); in rcar_du_group_set_routing()
367 if (rcdu->dpad1_source == rgrp->index * 2) in rcar_du_group_set_routing()
372 rcar_du_group_write(rgrp, DORCR, dorcr); in rcar_du_group_set_routing()
374 rcar_du_group_set_dpad_levels(rgrp); in rcar_du_group_set_routing()
376 return rcar_du_set_dpad0_vsp1_routing(rgrp->dev); in rcar_du_group_set_routing()