Lines Matching refs:lb
147 enum dc_link_id dc_lb_get_link_id(struct dc_lb *lb) in dc_lb_get_link_id() argument
149 return lb->link; in dc_lb_get_link_id()
152 void dc_lb_pec_dynamic_prim_sel(struct dc_lb *lb, enum dc_link_id prim) in dc_lb_pec_dynamic_prim_sel() argument
157 for (i = 0; i < fixed_sels_num + lb->id; i++) { in dc_lb_pec_dynamic_prim_sel()
159 regmap_write_bits(lb->reg_pec, PIXENGCFG_DYNAMIC, in dc_lb_pec_dynamic_prim_sel()
166 dev_warn(lb->dev, "invalid primary input selection:%d\n", prim); in dc_lb_pec_dynamic_prim_sel()
169 void dc_lb_pec_dynamic_sec_sel(struct dc_lb *lb, enum dc_link_id sec) in dc_lb_pec_dynamic_sec_sel() argument
175 regmap_write_bits(lb->reg_pec, PIXENGCFG_DYNAMIC, in dc_lb_pec_dynamic_sec_sel()
182 dev_warn(lb->dev, "invalid secondary input selection:%d\n", sec); in dc_lb_pec_dynamic_sec_sel()
185 void dc_lb_pec_clken(struct dc_lb *lb, enum dc_pec_clken clken) in dc_lb_pec_clken() argument
187 regmap_write_bits(lb->reg_pec, PIXENGCFG_DYNAMIC, CLKEN_MASK, in dc_lb_pec_clken()
191 static inline void dc_lb_enable_shden(struct dc_lb *lb) in dc_lb_enable_shden() argument
193 regmap_write_bits(lb->reg_cfg, STATICCONTROL, SHDEN, SHDEN); in dc_lb_enable_shden()
196 static inline void dc_lb_shdtoksel(struct dc_lb *lb, enum dc_lb_shadow_sel sel) in dc_lb_shdtoksel() argument
198 regmap_write_bits(lb->reg_cfg, STATICCONTROL, SHDTOKSEL_MASK, in dc_lb_shdtoksel()
202 static inline void dc_lb_shdldsel(struct dc_lb *lb, enum dc_lb_shadow_sel sel) in dc_lb_shdldsel() argument
204 regmap_write_bits(lb->reg_cfg, STATICCONTROL, SHDLDSEL_MASK, in dc_lb_shdldsel()
208 void dc_lb_mode(struct dc_lb *lb, enum dc_lb_mode mode) in dc_lb_mode() argument
210 regmap_write_bits(lb->reg_cfg, CONTROL, CTRL_MODE_MASK, mode); in dc_lb_mode()
213 static inline void dc_lb_blendcontrol(struct dc_lb *lb) in dc_lb_blendcontrol() argument
221 regmap_write(lb->reg_cfg, BLENDCONTROL, val); in dc_lb_blendcontrol()
224 void dc_lb_position(struct dc_lb *lb, int x, int y) in dc_lb_position() argument
226 regmap_write(lb->reg_cfg, POSITION, XPOS(x) | YPOS(y)); in dc_lb_position()
229 int dc_lb_get_id(struct dc_lb *lb) in dc_lb_get_id() argument
231 return lb->id; in dc_lb_get_id()
234 void dc_lb_init(struct dc_lb *lb) in dc_lb_init() argument
236 dc_lb_pec_dynamic_prim_sel(lb, LINK_ID_NONE); in dc_lb_init()
237 dc_lb_pec_dynamic_sec_sel(lb, LINK_ID_NONE); in dc_lb_init()
238 dc_lb_pec_clken(lb, CLKEN_DISABLE); in dc_lb_init()
239 dc_lb_shdldsel(lb, BOTH); in dc_lb_init()
240 dc_lb_shdtoksel(lb, BOTH); in dc_lb_init()
241 dc_lb_blendcontrol(lb); in dc_lb_init()
242 dc_lb_enable_shden(lb); in dc_lb_init()
252 struct dc_lb *lb; in dc_lb_bind() local
254 lb = devm_kzalloc(dev, sizeof(*lb), GFP_KERNEL); in dc_lb_bind()
255 if (!lb) in dc_lb_bind()
266 lb->reg_pec = devm_regmap_init_mmio(dev, base_pec, in dc_lb_bind()
268 if (IS_ERR(lb->reg_pec)) in dc_lb_bind()
269 return PTR_ERR(lb->reg_pec); in dc_lb_bind()
271 lb->reg_cfg = devm_regmap_init_mmio(dev, base_cfg, in dc_lb_bind()
273 if (IS_ERR(lb->reg_cfg)) in dc_lb_bind()
274 return PTR_ERR(lb->reg_cfg); in dc_lb_bind()
276 lb->id = dc_subdev_get_id(dc_lb_info, ARRAY_SIZE(dc_lb_info), res_pec); in dc_lb_bind()
277 if (lb->id < 0) { in dc_lb_bind()
278 dev_err(dev, "failed to get instance number: %d\n", lb->id); in dc_lb_bind()
279 return lb->id; in dc_lb_bind()
282 lb->dev = dev; in dc_lb_bind()
283 lb->link = LINK_ID_LAYERBLEND0 + lb->id; in dc_lb_bind()
285 dc_drm->lb[lb->id] = lb; in dc_lb_bind()