Lines Matching refs:rgrp
37 u32 rcar_du_group_read(struct rcar_du_group *rgrp, u32 reg) in rcar_du_group_read() argument
39 return rcar_du_read(rgrp->dev, rgrp->mmio_offset + reg); in rcar_du_group_read()
42 void rcar_du_group_write(struct rcar_du_group *rgrp, u32 reg, u32 data) in rcar_du_group_write() argument
44 rcar_du_write(rgrp->dev, rgrp->mmio_offset + reg, data); in rcar_du_group_write()
47 static void rcar_du_group_setup_defr8(struct rcar_du_group *rgrp) in rcar_du_group_setup_defr8() argument
54 if (rgrp->dev->info->routes[RCAR_DU_OUTPUT_DPAD0].possible_crtcs > 1 && in rcar_du_group_setup_defr8()
55 rgrp->index == 0) in rcar_du_group_setup_defr8()
56 defr8 |= DEFR8_DRGBS_DU(rgrp->dev->dpad0_source); in rcar_du_group_setup_defr8()
58 rcar_du_group_write(rgrp, DEFR8, defr8); in rcar_du_group_setup_defr8()
61 static void rcar_du_group_setup(struct rcar_du_group *rgrp) in rcar_du_group_setup() argument
64 rcar_du_group_write(rgrp, DEFR, DEFR_CODE | DEFR_DEFE); in rcar_du_group_setup()
65 rcar_du_group_write(rgrp, DEFR2, DEFR2_CODE | DEFR2_DEFE2G); in rcar_du_group_setup()
66 rcar_du_group_write(rgrp, DEFR3, DEFR3_CODE | DEFR3_DEFE3); in rcar_du_group_setup()
67 rcar_du_group_write(rgrp, DEFR4, DEFR4_CODE); in rcar_du_group_setup()
68 rcar_du_group_write(rgrp, DEFR5, DEFR5_CODE | DEFR5_DEFE5); in rcar_du_group_setup()
70 if (rcar_du_has(rgrp->dev, RCAR_DU_FEATURE_EXT_CTRL_REGS)) { in rcar_du_group_setup()
71 rcar_du_group_setup_defr8(rgrp); in rcar_du_group_setup()
76 rcar_du_group_write(rgrp, DIDSR, DIDSR_CODE | in rcar_du_group_setup()
88 rcar_du_group_write(rgrp, DORCR, DORCR_PG1D_DS1 | DORCR_DPRS); in rcar_du_group_setup()
91 mutex_lock(&rgrp->lock); in rcar_du_group_setup()
92 rcar_du_group_write(rgrp, DPTSR, (rgrp->dptsr_planes << 16) | in rcar_du_group_setup()
93 rgrp->dptsr_planes); in rcar_du_group_setup()
94 mutex_unlock(&rgrp->lock); in rcar_du_group_setup()
107 int rcar_du_group_get(struct rcar_du_group *rgrp) in rcar_du_group_get() argument
109 if (rgrp->use_count) in rcar_du_group_get()
112 rcar_du_group_setup(rgrp); in rcar_du_group_get()
115 rgrp->use_count++; in rcar_du_group_get()
124 void rcar_du_group_put(struct rcar_du_group *rgrp) in rcar_du_group_put() argument
126 --rgrp->use_count; in rcar_du_group_put()
129 static void __rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool start) in __rcar_du_group_start_stop() argument
131 rcar_du_group_write(rgrp, DSYSR, in __rcar_du_group_start_stop()
132 (rcar_du_group_read(rgrp, DSYSR) & ~(DSYSR_DRES | DSYSR_DEN)) | in __rcar_du_group_start_stop()
136 void rcar_du_group_start_stop(struct rcar_du_group *rgrp, bool start) in rcar_du_group_start_stop() argument
150 if (rgrp->used_crtcs++ != 0) in rcar_du_group_start_stop()
151 __rcar_du_group_start_stop(rgrp, false); in rcar_du_group_start_stop()
152 __rcar_du_group_start_stop(rgrp, true); in rcar_du_group_start_stop()
154 if (--rgrp->used_crtcs == 0) in rcar_du_group_start_stop()
155 __rcar_du_group_start_stop(rgrp, false); in rcar_du_group_start_stop()
159 void rcar_du_group_restart(struct rcar_du_group *rgrp) in rcar_du_group_restart() argument
161 __rcar_du_group_start_stop(rgrp, false); in rcar_du_group_restart()
162 __rcar_du_group_start_stop(rgrp, true); in rcar_du_group_restart()
188 int rcar_du_group_set_routing(struct rcar_du_group *rgrp) in rcar_du_group_set_routing() argument
190 struct rcar_du_crtc *crtc0 = &rgrp->dev->crtcs[rgrp->index * 2]; in rcar_du_group_set_routing()
191 u32 dorcr = rcar_du_group_read(rgrp, DORCR); in rcar_du_group_set_routing()
204 rcar_du_group_write(rgrp, DORCR, dorcr); in rcar_du_group_set_routing()
206 return rcar_du_set_dpad0_routing(rgrp->dev); in rcar_du_group_set_routing()