Lines Matching refs:vdi
54 static inline u32 ipu_vdi_read(struct ipu_vdi *vdi, unsigned int offset) in ipu_vdi_read() argument
56 return readl(vdi->base + offset); in ipu_vdi_read()
59 static inline void ipu_vdi_write(struct ipu_vdi *vdi, u32 value, in ipu_vdi_write() argument
62 writel(value, vdi->base + offset); in ipu_vdi_write()
65 void ipu_vdi_set_field_order(struct ipu_vdi *vdi, v4l2_std_id std, u32 field) in ipu_vdi_set_field_order() argument
87 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_set_field_order()
89 reg = ipu_vdi_read(vdi, VDI_C); in ipu_vdi_set_field_order()
94 ipu_vdi_write(vdi, reg, VDI_C); in ipu_vdi_set_field_order()
96 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_set_field_order()
100 void ipu_vdi_set_motion(struct ipu_vdi *vdi, enum ipu_motion_sel motion_sel) in ipu_vdi_set_motion() argument
105 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_set_motion()
107 reg = ipu_vdi_read(vdi, VDI_C); in ipu_vdi_set_motion()
123 ipu_vdi_write(vdi, reg, VDI_C); in ipu_vdi_set_motion()
125 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_set_motion()
129 void ipu_vdi_setup(struct ipu_vdi *vdi, u32 code, int xres, int yres) in ipu_vdi_setup() argument
134 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_setup()
137 ipu_vdi_write(vdi, reg, VDI_FSIZE); in ipu_vdi_setup()
151 reg = ipu_vdi_read(vdi, VDI_C); in ipu_vdi_setup()
156 ipu_vdi_write(vdi, reg, VDI_C); in ipu_vdi_setup()
158 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_setup()
162 void ipu_vdi_unsetup(struct ipu_vdi *vdi) in ipu_vdi_unsetup() argument
166 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_unsetup()
167 ipu_vdi_write(vdi, 0, VDI_FSIZE); in ipu_vdi_unsetup()
168 ipu_vdi_write(vdi, 0, VDI_C); in ipu_vdi_unsetup()
169 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_unsetup()
173 int ipu_vdi_enable(struct ipu_vdi *vdi) in ipu_vdi_enable() argument
177 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_enable()
179 if (!vdi->use_count) in ipu_vdi_enable()
180 ipu_module_enable(vdi->ipu, vdi->module); in ipu_vdi_enable()
182 vdi->use_count++; in ipu_vdi_enable()
184 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_enable()
190 int ipu_vdi_disable(struct ipu_vdi *vdi) in ipu_vdi_disable() argument
194 spin_lock_irqsave(&vdi->lock, flags); in ipu_vdi_disable()
196 if (vdi->use_count) { in ipu_vdi_disable()
197 if (!--vdi->use_count) in ipu_vdi_disable()
198 ipu_module_disable(vdi->ipu, vdi->module); in ipu_vdi_disable()
201 spin_unlock_irqrestore(&vdi->lock, flags); in ipu_vdi_disable()
213 void ipu_vdi_put(struct ipu_vdi *vdi) in ipu_vdi_put() argument
221 struct ipu_vdi *vdi; in ipu_vdi_init() local
223 vdi = devm_kzalloc(dev, sizeof(*vdi), GFP_KERNEL); in ipu_vdi_init()
224 if (!vdi) in ipu_vdi_init()
227 ipu->vdi_priv = vdi; in ipu_vdi_init()
229 spin_lock_init(&vdi->lock); in ipu_vdi_init()
230 vdi->module = module; in ipu_vdi_init()
231 vdi->base = devm_ioremap(dev, base, PAGE_SIZE); in ipu_vdi_init()
232 if (!vdi->base) in ipu_vdi_init()
235 dev_dbg(dev, "VDI base: 0x%08lx remapped to %p\n", base, vdi->base); in ipu_vdi_init()
236 vdi->ipu = ipu; in ipu_vdi_init()