Lines Matching defs:vdi
45 static inline u32 ipu_vdi_read(struct ipu_vdi *vdi, unsigned int offset)
47 return readl(vdi->base + offset);
50 static inline void ipu_vdi_write(struct ipu_vdi *vdi, u32 value,
53 writel(value, vdi->base + offset);
56 void ipu_vdi_set_field_order(struct ipu_vdi *vdi, v4l2_std_id std, u32 field)
78 spin_lock_irqsave(&vdi->lock, flags);
80 reg = ipu_vdi_read(vdi, VDI_C);
85 ipu_vdi_write(vdi, reg, VDI_C);
87 spin_unlock_irqrestore(&vdi->lock, flags);
91 void ipu_vdi_set_motion(struct ipu_vdi *vdi, enum ipu_motion_sel motion_sel)
96 spin_lock_irqsave(&vdi->lock, flags);
98 reg = ipu_vdi_read(vdi, VDI_C);
114 ipu_vdi_write(vdi, reg, VDI_C);
116 spin_unlock_irqrestore(&vdi->lock, flags);
120 void ipu_vdi_setup(struct ipu_vdi *vdi, u32 code, int xres, int yres)
125 spin_lock_irqsave(&vdi->lock, flags);
128 ipu_vdi_write(vdi, reg, VDI_FSIZE);
142 reg = ipu_vdi_read(vdi, VDI_C);
147 ipu_vdi_write(vdi, reg, VDI_C);
149 spin_unlock_irqrestore(&vdi->lock, flags);
153 void ipu_vdi_unsetup(struct ipu_vdi *vdi)
157 spin_lock_irqsave(&vdi->lock, flags);
158 ipu_vdi_write(vdi, 0, VDI_FSIZE);
159 ipu_vdi_write(vdi, 0, VDI_C);
160 spin_unlock_irqrestore(&vdi->lock, flags);
164 int ipu_vdi_enable(struct ipu_vdi *vdi)
168 spin_lock_irqsave(&vdi->lock, flags);
170 if (!vdi->use_count)
171 ipu_module_enable(vdi->ipu, vdi->module);
173 vdi->use_count++;
175 spin_unlock_irqrestore(&vdi->lock, flags);
181 int ipu_vdi_disable(struct ipu_vdi *vdi)
185 spin_lock_irqsave(&vdi->lock, flags);
187 if (vdi->use_count) {
188 if (!--vdi->use_count)
189 ipu_module_disable(vdi->ipu, vdi->module);
192 spin_unlock_irqrestore(&vdi->lock, flags);
204 void ipu_vdi_put(struct ipu_vdi *vdi)
212 struct ipu_vdi *vdi;
214 vdi = devm_kzalloc(dev, sizeof(*vdi), GFP_KERNEL);
215 if (!vdi)
218 ipu->vdi_priv = vdi;
220 spin_lock_init(&vdi->lock);
221 vdi->module = module;
222 vdi->base = devm_ioremap(dev, base, PAGE_SIZE);
223 if (!vdi->base)
226 dev_dbg(dev, "VDI base: 0x%08lx remapped to %p\n", base, vdi->base);
227 vdi->ipu = ipu;